diff --git a/ignition/deployments/chain-501/artifacts/RefactorCancellationModule#BookingTokenImpl.dbg.json b/ignition/deployments/chain-501/artifacts/RefactorCancellationModule#BookingTokenImpl.dbg.json new file mode 100644 index 0000000..19aeb90 --- /dev/null +++ b/ignition/deployments/chain-501/artifacts/RefactorCancellationModule#BookingTokenImpl.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../build-info/c929040ed782d5f1fe9b972f02b44da8.json" +} \ No newline at end of file diff --git a/ignition/deployments/chain-501/artifacts/RefactorCancellationModule#BookingTokenImpl.json b/ignition/deployments/chain-501/artifacts/RefactorCancellationModule#BookingTokenImpl.json new file mode 100644 index 0000000..aa4dd20 --- /dev/null +++ b/ignition/deployments/chain-501/artifacts/RefactorCancellationModule#BookingTokenImpl.json @@ -0,0 +1,2036 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "BookingToken", + "sourceName": "contracts/booking-token/BookingToken.sol", + "abi": [ + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + } + ], + "name": "AddressEmptyCode", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "CancellationProposalExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "ERC1967InvalidImplementation", + "type": "error" + }, + { + "inputs": [], + "name": "ERC1967NonPayable", + "type": "error" + }, + { + "inputs": [], + "name": "ERC721EnumerableForbiddenBatchMint", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC721IncorrectOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721InsufficientApproval", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC721InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "ERC721InvalidOperator", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC721InvalidOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC721InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC721InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721NonexistentToken", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "ERC721OutOfBoundsIndex", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "expirationTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minExpirationTimestampDiff", + "type": "uint256" + } + ], + "name": "ExpirationTimestampTooSoon", + "type": "error" + }, + { + "inputs": [], + "name": "FailedCall", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reservationPrice", + "type": "uint256" + } + ], + "name": "IncorrectPrice", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "existing", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "checked", + "type": "uint256" + } + ], + "name": "IncorrectRefundAmount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "paymentToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "allowance", + "type": "uint256" + } + ], + "name": "InsufficientAllowance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "enum CancellationProposalStatus", + "name": "status", + "type": "uint8" + } + ], + "name": "InvalidCancellationProposalStatus", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "enum BookingToken.BookingStatus", + "name": "status", + "type": "uint8" + } + ], + "name": "InvalidTokenStatus", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "NotCMAccount", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "inputs": [], + "name": "NotOwnerOrSupplier", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "OnlyCurrentProposerCanWithdrawCancellation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "OnlySupplierCanFinalizeCancellation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "OwnerNotAcceptedCancellation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ProposerCanNotRejectCancellation", + "type": "error" + }, + { + "inputs": [], + "name": "ReentrancyGuardReentrantCall", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expirationTimestamp", + "type": "uint256" + } + ], + "name": "ReservationExpired", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "reservedFor", + "type": "address" + }, + { + "internalType": "address", + "name": "buyer", + "type": "address" + } + ], + "name": "ReservationMismatch", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "SafeERC20FailedOperation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "supplier", + "type": "address" + } + ], + "name": "SupplierIsNotOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "reservedFor", + "type": "address" + } + ], + "name": "TokenIsReserved", + "type": "error" + }, + { + "inputs": [], + "name": "UUPSUnauthorizedCallContext", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "slot", + "type": "bytes32" + } + ], + "name": "UUPSUnsupportedProxiableUUID", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "UnexpectedNativePayment", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "offchainPaymentCurrency", + "type": "uint256" + } + ], + "name": "UnexpectedOffchainPaymentCurrency", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_fromTokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_toTokenId", + "type": "uint256" + } + ], + "name": "BatchMetadataUpdate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "CancellationFinalized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "initialProposer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "currentProposer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "refundAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bool", + "name": "ownerAccepted", + "type": "bool" + }, + { + "indexed": false, + "internalType": "bool", + "name": "supplierAccepted", + "type": "bool" + }, + { + "indexed": false, + "internalType": "uint32", + "name": "timesCountered", + "type": "uint32" + }, + { + "indexed": false, + "internalType": "uint32", + "name": "timesRejected", + "type": "uint32" + } + ], + "name": "CancellationPending", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "cancellationReason", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "cancellationReasonVersion", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "rejectionReason", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "rejectionVersion", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "counterReason", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "counterVersion", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "withdrawalReason", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "withdrawalVersion", + "type": "uint16" + } + ], + "name": "CancellationReasons", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "rejectionReason", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "rejectionVersion", + "type": "uint16" + } + ], + "name": "CancellationRejected", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "withdrawalReason", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "withdrawalVersion", + "type": "uint16" + } + ], + "name": "CancellationWithdrawn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "MetadataUpdate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "buyer", + "type": "address" + } + ], + "name": "TokenBought", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "TokenReservationExpired", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "reservedFor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "supplier", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "expirationTimestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "price", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "contract IERC20", + "name": "paymentToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "offchainPaymentCurrency", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bool", + "name": "cancellable", + "type": "bool" + } + ], + "name": "TokenReserved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MIN_EXPIRATION_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "NATIVE_PAYMENT", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "OFFCHAIN_PAYMENT", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UPGRADER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UPGRADE_INTERFACE_VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "refundAmount", + "type": "uint256" + } + ], + "name": "acceptCancellation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "buyReservedToken", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "refundAmount", + "type": "uint256" + }, + { + "internalType": "uint16", + "name": "counterReason", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "counterReasonVersion", + "type": "uint16" + } + ], + "name": "counterCancellation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "checkRefundAmount", + "type": "uint256" + } + ], + "name": "finalizeCancellation", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getBookingStatus", + "outputs": [ + { + "internalType": "enum BookingToken.BookingStatus", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getCancellationProposal", + "outputs": [ + { + "internalType": "enum CancellationProposalStatus", + "name": "", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "refundAmount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "initialProposer", + "type": "address" + }, + { + "internalType": "address", + "name": "currentProposer", + "type": "address" + }, + { + "internalType": "bool", + "name": "ownerAccepted", + "type": "bool" + }, + { + "internalType": "bool", + "name": "supplierAccepted", + "type": "bool" + }, + { + "internalType": "uint32", + "name": "timesCountered", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "timesRejected", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getCancellationReasons", + "outputs": [ + { + "internalType": "uint16", + "name": "cancellationReason", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "cancellationVersion", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "rejectionReason", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "rejectionVersion", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "counterReason", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "counterVersion", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "withdrawalReason", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "withdrawalVersion", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getManagerAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getMinExpirationTimestampDiff", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getReservationPaymentToken", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "paymentToken", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getReservationPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + }, + { + "internalType": "contract IERC20", + "name": "paymentToken", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "manager", + "type": "address" + }, + { + "internalType": "address", + "name": "defaultAdmin", + "type": "address" + }, + { + "internalType": "address", + "name": "upgrader", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "refundAmount", + "type": "uint256" + }, + { + "internalType": "uint16", + "name": "cancellationReason", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "cancellationReasonVersion", + "type": "uint16" + } + ], + "name": "initiateCancellation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isCMAccount", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "isCancellable", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "recordExpiration", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "newName", + "type": "string" + }, + { + "internalType": "string", + "name": "newSymbol", + "type": "string" + } + ], + "name": "reinitializeV2", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint16", + "name": "rejectionReason", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "rejectionReasonVersion", + "type": "uint16" + } + ], + "name": "rejectCancellation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "callerConfirmation", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "reservedFor", + "type": "address" + }, + { + "internalType": "string", + "name": "uri", + "type": "string" + }, + { + "internalType": "uint256", + "name": "expirationTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + }, + { + "internalType": "contract IERC20", + "name": "paymentToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "offchainPaymentCurrency", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "cancellable", + "type": "bool" + } + ], + "name": "safeMintWithReservation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "manager", + "type": "address" + } + ], + "name": "setManagerAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "minExpirationTimestampDiff", + "type": "uint256" + } + ], + "name": "setMinExpirationTimestampDiff", + "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": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "version", + "outputs": [ + { + "internalType": "uint16", + "name": "major", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "minor", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "patch", + "type": "uint16" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint16", + "name": "withdrawalReason", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "withdrawalReasonVersion", + "type": "uint16" + } + ], + "name": "withdrawCancellation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60a06040523060805234801561001457600080fd5b506080516149da61003e6000396000818161224b0152818161227401526123be01526149da6000f3fe60806040526004361061024e5760003560e01c80624fdd3c1461025357806301ffc9a71461028a57806306fdde03146102ba578063081812fc146102dc578063095ea7b3146103095780630e75c1a81461032b57806312b357b51461034e57806318160ddd1461036e5780631c54f0f71461038357806323b872dd14610396578063248a9ca3146103b65780632a119380146103d65780632d3a6329146103f65780632edf5e2c146104165780632f2ff15d146104385780632f745c591461045857806336568abe146104785780633c15b31c1461049857806341431908146104c557806342842e0e146104e55780634f1ef286146105055780634f6ccce714610518578063516a82b81461053857806352d1902d1461055857806354fd4d501461056d5780636352211e1461059a57806370a08231146105ba57806374aa2048146105da57806374fe60e9146105fa57806391d148541461061a57806391da124c1461063a57806395d89b411461065a57806396591edd1461066f578063a0f07c7414610682578063a217fddf14610697578063a22cb465146106ac578063a9bc55a2146106cc578063ad3cb1cc14610700578063b191d09214610731578063b88d4fde14610751578063bb520b4714610771578063be667188146107a5578063bfb26c06146107c5578063c0c53b8b146107da578063c162d7da146107fa578063c87b56dd1461080f578063d547741f1461082f578063db2b26821461084f578063e5a6725c1461086f578063e985e9c51461088f578063f72c0d8b146108af578063f7e45f09146108d1575b600080fd5b34801561025f57600080fd5b5061027361026e366004613eed565b6108f1565b604051610281929190613f06565b60405180910390f35b34801561029657600080fd5b506102aa6102a5366004613f33565b61092e565b6040519015158152602001610281565b3480156102c657600080fd5b506102cf61093f565b6040516102819190613fa0565b3480156102e857600080fd5b506102fc6102f7366004613eed565b6109e0565b6040516102819190613fb3565b34801561031557600080fd5b50610329610324366004613fdc565b6109f5565b005b34801561033757600080fd5b50610340610a04565b604051908152602001610281565b34801561035a57600080fd5b506102aa610369366004614008565b610a19565b34801561037a57600080fd5b50610340610a8f565b610329610391366004614025565b610a9a565b3480156103a257600080fd5b506103296103b1366004614047565b610b9c565b3480156103c257600080fd5b506103406103d1366004613eed565b610bb5565b3480156103e257600080fd5b506103296103f136600461409f565b610bd5565b34801561040257600080fd5b506102aa610411366004613eed565b610c8a565b34801561042257600080fd5b5061034060008051602061496583398151915281565b34801561044457600080fd5b506103296104533660046140db565b610cb0565b34801561046457600080fd5b50610340610473366004613fdc565b610cd2565b34801561048457600080fd5b506103296104933660046140db565b610d34565b3480156104a457600080fd5b506104b86104b3366004613eed565b610d67565b604051610281919061413f565b3480156104d157600080fd5b506103296104e0366004614008565b610d8a565b3480156104f157600080fd5b50610329610500366004614047565b610dc2565b6103296105133660046141f4565b610ddd565b34801561052457600080fd5b50610340610533366004613eed565b610df8565b34801561054457600080fd5b50610329610553366004613eed565b610e59565b34801561056457600080fd5b50610340610e86565b34801561057957600080fd5b50604080516001815260006020820181905291810191909152606001610281565b3480156105a657600080fd5b506102fc6105b5366004613eed565b610ea3565b3480156105c657600080fd5b506103406105d5366004614008565b610eae565b3480156105e657600080fd5b506103296105f5366004614243565b610f06565b34801561060657600080fd5b5061032961061536600461409f565b610fb3565b34801561062657600080fd5b506102aa6106353660046140db565b61105f565b34801561064657600080fd5b50610329610655366004614289565b611095565b34801561066657600080fd5b506102cf611152565b61032961067d366004613eed565b61116f565b34801561068e57600080fd5b506102fc600081565b3480156106a357600080fd5b50610340600081565b3480156106b857600080fd5b506103296106c73660046142f0565b611329565b3480156106d857600080fd5b506106ec6106e7366004613eed565b611334565b60405161028198979695949392919061431e565b34801561070c57600080fd5b506102cf604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561073d57600080fd5b506102fc61074c366004613eed565b6113ba565b34801561075d57600080fd5b5061032961076c366004614363565b6113e6565b34801561077d57600080fd5b5061079161078c366004613eed565b6113fe565b6040516102819897969594939291906143ce565b3480156107b157600080fd5b506103296107c0366004614025565b61147a565b3480156107d157600080fd5b506102fc600181565b3480156107e657600080fd5b506103296107f5366004614426565b61152d565b34801561080657600080fd5b506102fc6116cc565b34801561081b57600080fd5b506102cf61082a366004613eed565b6116e7565b34801561083b57600080fd5b5061032961084a3660046140db565b6116f2565b34801561085b57600080fd5b5061032961086a366004614471565b61170e565b34801561087b57600080fd5b5061032961088a366004613eed565b611861565b34801561089b57600080fd5b506102aa6108aa366004614504565b611969565b3480156108bb57600080fd5b5061034060008051602061492583398151915281565b3480156108dd57600080fd5b506103296108ec366004614243565b6119a8565b60008060006108fe611a55565b6000948552600390810160205260409094209384015460049094015493946001600160a01b039094169392505050565b600061093982611a79565b92915050565b6060600061094b611a9e565b905080600001805461095c90614532565b80601f016020809104026020016040519081016040528092919081815260200182805461098890614532565b80156109d55780601f106109aa576101008083540402835291602001916109d5565b820191906000526020600020905b8154815290600101906020018083116109b857829003601f168201915b505050505091505090565b60006109eb82611ac2565b5061093982611afa565b610a00828233611b23565b5050565b600080610a0f611a55565b6002015492915050565b6000610a236116cc565b6001600160a01b03166312b357b5836040518263ffffffff1660e01b8152600401610a4e9190613fb3565b602060405180830381865afa158015610a6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610939919061456c565b600080610a0f611b30565b33610aa481611b54565b6000610aaf84611ac2565b90506000610abb611a55565b905060036000868152600480840160205260409091205460ff1690811115610ae557610ae561410b565b14610b25576000858152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c92889260ff9091169101614589565b60405180910390fd5b60008581526003820160205260408120600101546001600160a01b031690610b4e828888611b7c565b600088815260038501602090815260408083206004908101548189019093529220805460ff19169092179091559091506001600160a01b0316610b92818387611ce4565b5050505050505050565b610ba581611d92565b610bb0838383611f46565b505050565b600080610bc0611fb7565b60009384526020525050604090206001015490565b33610bdf81611b54565b6000610bea85611ac2565b90506000610bf6611a55565b905060036000878152600480840160205260409091205460ff1690811115610c2057610c2061410b565b14610c57576000868152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c92899260ff9091169101614589565b60008681526003820160205260409020600101546001600160a01b0316610c818382898989611fdb565b50505050505050565b600080610c95611a55565b60009384526003016020525050604090206006015460ff1690565b610cb982610bb5565b610cc28161211d565b610ccc8383612127565b50505050565b600080610cdd611b30565b9050610ce884610eae565b8310610d0b57838360405163295f44f760e21b8152600401610b1c9291906145a6565b6001600160a01b0384166000908152602091825260408082208583529092522054905092915050565b6001600160a01b0381163314610d5d5760405163334bd91960e11b815260040160405180910390fd5b610bb082826121c8565b600080610d72611a55565b60009384526004016020525050604090205460ff1690565b6000610d958161211d565b6000610d9f611a55565b80546001600160a01b0319166001600160a01b0394909416939093179092555050565b610bb0838383604051806020016040528060008152506113e6565b610de5612240565b610dee826122e7565b610a0082826122ff565b600080610e03611b30565b9050610e0d610a8f565b8310610e315760008360405163295f44f760e21b8152600401610b1c9291906145a6565b806002018381548110610e4657610e466145bf565b9060005260206000200154915050919050565b600080516020614965833981519152610e718161211d565b6000610e7b611a55565b600201929092555050565b6000610e906123b3565b5060008051602061494583398151915290565b600061093982611ac2565b600080610eb9611a9e565b90506001600160a01b038316610ee55760006040516322718ad960e21b8152600401610b1c9190613fb3565b6001600160a01b039092166000908152600390920160205250604090205490565b33610f1081611b54565b6000610f1b86611ac2565b90506000610f27611a55565b905060036000888152600480840160205260409091205460ff1690811115610f5157610f5161410b565b14610f88576000878152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c928a9260ff9091169101614589565b60008781526003820160205260409020600101546001600160a01b0316610b9283828a8a8a8a6123fc565b33610fbd81611b54565b6000610fc885611ac2565b90506000610fd4611a55565b905060036000878152600480840160205260409091205460ff1690811115610ffe57610ffe61410b565b14611035576000868152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c92899260ff9091169101614589565b60008681526003820160205260409020600101546001600160a01b0316610c818382898989612635565b60008061106a611fb7565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b600260006110a1612793565b8054909150600160401b900460ff16806110c8575080546001600160401b03808416911610155b156110e65760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160481b0319166001600160401b03831617600160401b17815560006111108161211d565b61111a85856127b7565b50805460ff60401b191681556040516000805160206148e5833981519152906111449084906145d5565b60405180910390a150505050565b6060600061115e611a9e565b905080600101805461095c90614532565b6111776127c9565b3361118181611b54565b600061118b611a55565b600084815260038083016020908152604092839020835160e08101855281546001600160a01b03908116808352600184015482169483019490945260028301549582019590955292810154606084015260048101549093166080830152600583015460a083015260069092015460ff16151560c08201529192503314611238578051604051632663a9c560e11b81526001600160a01b039091166004820152336024820152604401610b1c565b80604001514211156112655783816040015160405163293d73b760e11b8152600401610b1c9291906145e9565b600061127085610ea3565b905081602001516001600160a01b0316816001600160a01b0316146112af57602082015160405163103d145960e31b8152610b1c918791600401613f06565b6112be826020015133876127ff565b6112d5826080015183606001518460200151611ce4565b6000858152600484016020526040808220805460ff1916600317905551339187917fa751fb02c318279a22135a408663ae08ea45eafa950a4351c14ae543cbb950409190a35050505061132661289b565b50565b610a003383836128ac565b600080600080600080600080600061134a612951565b60009a8b5260205250506040909720600281015460039091015461ffff600160c81b830481169a600160d81b840482169a50600160e81b90930481169850808216975062010000820481169650600160201b820481169550600160301b820481169450600160401b909104169150565b6000806113c5611a55565b6000938452600301602052505060409020600401546001600160a01b031690565b6113f1848484610b9c565b610ccc3385858585612975565b6000806000806000806000806000611414612951565b60009a8b52602052505060409097206002810154815460019092015460ff600160c01b80840482169c949b506001600160a01b038084169b5084169950820481169750600160c81b820416955063ffffffff600160a01b91829004811695509104169150565b3361148481611b54565b600061148f84611ac2565b9050600061149b611a55565b905060036000868152600480840160205260409091205460ff16908111156114c5576114c561410b565b146114fc576000858152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c92889260ff9091169101614589565b60008581526003820160205260409020600101546001600160a01b031661152583828888612a8c565b505050505050565b6000611537612793565b805490915060ff600160401b82041615906001600160401b031660008115801561155e5750825b90506000826001600160401b0316600114801561157a5750303b155b905081158015611588575080155b156115a65760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b031916600117855583156115cf57845460ff60401b1916600160401b1785555b6116196040518060400160405280600c81526020016b2137b7b5b4b733aa37b5b2b760a11b815250604051806040016040528060048152602001630545249560e41b8152506127b7565b611621612c6a565b611629612c6a565b611631612c6a565b611639612c6a565b611644600088612127565b5061165d60008051602061492583398151915287612127565b506000611668611a55565b80546001600160a01b0319166001600160a01b038b16178155603c600290910155508315610b9257845460ff60401b191685556040516000805160206148e5833981519152906116ba906001906145d5565b60405180910390a15050505050505050565b6000806116d7611a55565b546001600160a01b031692915050565b606061093982612c72565b6116fb82610bb5565b6117048161211d565b610ccc83836121c8565b3361171881611b54565b61172188611b54565b600061172b611a55565b600281015490915061173d814261460d565b8811611760578781604051630999f7d760e41b8152600401610b1c9291906145e9565b60008511801561177a57506001600160a01b038616600114155b1561179b57604051638fe757e760e01b815260048101869052602401610b1c565b600182018054600091826117ae83614620565b9190505590506117be3382612d92565b6117c8818b612dac565b6117d8818c338c8c8c8c8c612e0a565b6000818152600484016020908152604091829020805460ff1916600117905581518b81529081018a90526001600160a01b0389811682840152606082018990528715156080830152915133928e169184917f1424af4f4cb40d8a1a2d00b2324cb122ba73eac426f98b62c33ff31ca045f0679160a0908290030190a45050505050505050505050565b600061186b611a55565b6000838152600382016020908152604080832060048501909252909120549192509060ff1660028160048111156118a4576118a461410b565b14806118c1575060038160048111156118bf576118bf61410b565b145b806118dd575060048160048111156118db576118db61410b565b145b156118ff57838160405163e4e3b53b60e01b8152600401610b1c929190614589565b8160020154421115611940576000848152600484016020526040808220805460ff1916600217905551859160008051602061490583398151915291a2610ccc565b815460405163d4cde2af60e01b8152610b1c9186916001600160a01b0390911690600401613f06565b600080611974611a9e565b6001600160a01b03948516600090815260059190910160209081526040808320959096168252939093525050205460ff1690565b336119b281611b54565b60006119bd86611ac2565b905060006119c9611a55565b905060036000888152600480840160205260409091205460ff16908111156119f3576119f361410b565b14611a2a576000878152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c928a9260ff9091169101614589565b60008781526003820160205260409020600101546001600160a01b0316610b9283828a8a8a8a612edc565b7f9db9d405bf15683ce835607b1f0b423dc1484d44bb9d5af64a483fa4afd8290090565b60006001600160e01b03198216637965db0b60e01b14806109395750610939826131e6565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930090565b600080611ace8361320b565b90506001600160a01b03811661093957604051637e27328960e01b815260048101849052602401610b1c565b600080611b05611a9e565b6000938452600401602052505060409020546001600160a01b031690565b610bb08383836001613234565b7f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed0090565b611b5d81610a19565b6113265780604051638014575360e01b8152600401610b1c9190613fb3565b6000336001600160a01b03851614611baa57604051636c83fb1b60e01b815260048101849052602401610b1c565b6000611bb4612951565b600085815260209190915260409020905060016002820154600160c01b900460ff166004811115611be757611be761410b565b14611c1a57838160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b80548314611c4157805460405163cc45283760e01b8152610b1c9186918690600401614639565b6001810154600160c01b900460ff16611c705760405163c84052f960e01b815260048101859052602401610b1c565b6001810154600160c81b900460ff16611c995760018101805460ff60c81b1916600160c81b1790555b60028101805460ff60c01b1916600160c21b17905560405184907f17c3690813e5ff9135b87fd91848109978b23db8e471498d18886560da7f286790600090a25490505b9392505050565b6001600160a01b038316611d2957813414611d16573482604051630145611560e21b8152600401610b1c9291906145e9565b610bb06001600160a01b0382163461333e565b6000196001600160a01b03841601611d5c573415610bb0576040516347d6729960e01b8152346004820152602401610b1c565b3415611d7d576040516347d6729960e01b8152346004820152602401610b1c565b610bb06001600160a01b0384163383856133d7565b6000611d9c611a55565b600083815260048201602052604081205491925060ff9091169080611dc085613431565b90925090506001826004811115611dd957611dd961410b565b03611e3a576000611de986611ac2565b60008781526003870160205260409020600101549091506001600160a01b039081169083163314611e2857611e2382828960636001612635565b611e37565b611e3782828960636001611fdb565b50505b6003836004811115611e4e57611e4e61410b565b1480611e6b57506002836004811115611e6957611e6961410b565b145b80611e8757506000836004811115611e8557611e8561410b565b145b15611e93575050505050565b6004836004811115611ea757611ea761410b565b03611ec957848360405163e4e3b53b60e01b8152600401610b1c929190614589565b600085815260038501602052604090206002810154421115611f1d576000868152600486016020526040808220805460ff1916600217905551879160008051602061490583398151915291a2505050505050565b805460405163d4cde2af60e01b8152610b1c9188916001600160a01b0390911690600401613f06565b6001600160a01b038216611f70576000604051633250574960e11b8152600401610b1c9190613fb3565b6000611f7d838333613485565b9050836001600160a01b0316816001600160a01b031614610ccc578382826040516364283d7b60e01b8152600401610b1c9392919061464f565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b8484611fe7828261349a565b6000611ff1612951565b600087815260209190915260409020905060016002820154600160c01b900460ff1660048111156120245761202461410b565b1461205757858160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b60028101546001600160a01b0316331461208757604051631186fdbd60e31b815260048101879052602401610b1c565b6003808201805461ffff878116600160401b0261ffff60401b19918a16600160301b029190911663ffffffff60301b199092169190911717905560028201805460ff60c01b1916600160c01b830217905550857f48e256ce3da490e3bbba80f056bb54ec3d7264f8ad7d152b77bf8c2eca3db5a5868660405161210b929190614672565b60405180910390a25050505050505050565b61132681336134da565b600080612132611fb7565b905061213e848461105f565b6121be576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556121743390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610939565b6000915050610939565b6000806121d3611fb7565b90506121df848461105f565b156121be576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610939565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806122c757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166122bb600080516020614945833981519152546001600160a01b031690565b6001600160a01b031614155b156122e55760405163703e46dd60e11b815260040160405180910390fd5b565b600080516020614925833981519152610a008161211d565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612359575060408051601f3d908101601f1916820190925261235691810190614687565b60015b6123785781604051634c9c8ce360e01b8152600401610b1c9190613fb3565b60008051602061494583398151915281146123a957604051632a87526960e21b815260048101829052602401610b1c565b610bb08383613505565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146122e55760405163703e46dd60e11b815260040160405180910390fd5b8585612408828261349a565b6000612412612951565b600088815260209190915260409020905060016002820154600160c01b900460ff1660048111156124455761244561410b565b1461247857868160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b858155600281018054336001600160a01b0319909116811790915560018201805461ffff60c01b19166001600160a01b038c81168414600160c01b0260ff60c81b191691909117908b16909214600160c81b029190911780825560038301805465ffffffff000019166201000061ffff8a81169190910261ffff60201b191691909117600160201b91891691909102179055600160a01b900463ffffffff16906014612523836146a0565b82546101009290920a63ffffffff8181021990931691831602179091556002830154600184015484546040516001600160a01b0380851696508316948d946000805160206148c5833981519152946125a39493600160c01b820460ff90811694600160c81b840490911693600160a01b93849004821693900416906146c3565b60405180910390a4600281015460038201546040518992600080516020614985833981519152926126229261ffff600160c81b8404811693600160d81b8104821693600160e81b90910482169281831692620100008304811692600160201b8104821692600160301b8204831692600160401b9092049091169061431e565b60405180910390a2505050505050505050565b8484612641828261349a565b600061264b612951565b600087815260209190915260409020905060016002820154600160c01b900460ff16600481111561267e5761267e61410b565b146126b157858160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b60028101546001600160a01b031633036126e157604051633060d8f760e21b815260048101879052602401610b1c565b60028101805460038301805461ffff88811661ffff19909216919091179091558716600160e81b0260ff60c01b191666ffff00000000ff60c01b1990911617600160c11b17808255600160a01b900463ffffffff16906014612742836146a0565b91906101000a81548163ffffffff021916908363ffffffff16021790555050857fab78ba855f2fdb28beb212a9b3f41a33cda034729848cd452f0cc96528c23a80868660405161210b929190614672565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b6127bf61355b565b610a008282613580565b60006127d36135ae565b8054909150600119016127f957604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b6001600160a01b038216612829576000604051633250574960e11b8152600401610b1c9190613fb3565b600061283783836000613485565b90506001600160a01b03811661286357604051637e27328960e01b815260048101839052602401610b1c565b836001600160a01b0316816001600160a01b031614610ccc578382826040516364283d7b60e01b8152600401610b1c9392919061464f565b60006128a56135ae565b6001905550565b60006128b6611a9e565b90506001600160a01b0383166128e15782604051630b61174360e31b8152600401610b1c9190613fb3565b6001600160a01b038481166000818152600584016020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b7f0b8fb32ffc7043fda9e0ee2bcb4236acf95ab448752c73eff6cc7f2640ff850090565b6001600160a01b0383163b15612a8557604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906129b79088908890879087906004016146ef565b6020604051808303816000875af19250505080156129f2575060408051601f3d908101601f191682019092526129ef9181019061472c565b60015b612a52573d808015612a20576040519150601f19603f3d011682016040523d82523d6000602084013e612a25565b606091505b508051600003612a4a5783604051633250574960e11b8152600401610b1c9190613fb3565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b146115255783604051633250574960e11b8152600401610b1c9190613fb3565b5050505050565b8383612a98828261349a565b6000612aa2612951565b600086815260209190915260409020905060016002820154600160c01b900460ff166004811115612ad557612ad561410b565b14612b0857848160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b80548414612b2f57805460405163cc45283760e01b8152610b1c9187918790600401614639565b6001600160a01b0387163303612b595760018101805460ff60c01b1916600160c01b179055612b6f565b60018101805460ff60c81b1916600160c81b1790555b6002810154600182015482546040516001600160a01b0380851694908416938a936000805160206148c583398151915293612bda93919260ff600160c01b8204811693600160c81b83049091169263ffffffff600160a01b93849004811693909204909116906146c3565b60405180910390a460028101546003820154604051879260008051602061498583398151915292612c599261ffff600160c81b8404811693600160d81b8104821693600160e81b90910482169281831692620100008304811692600160201b8104821692600160301b8204831692600160401b9092049091169061431e565b60405180910390a250505050505050565b6122e561355b565b60606000612c7e6135d2565b9050612c8983611ac2565b5060008381526020829052604081208054612ca390614532565b80601f0160208091040260200160405190810160405280929190818152602001828054612ccf90614532565b8015612d1c5780601f10612cf157610100808354040283529160200191612d1c565b820191906000526020600020905b815481529060010190602001808311612cff57829003601f168201915b505050505090506000612d3a60408051602081019091526000815290565b90508051600003612d4d57509392505050565b815115612d80578082604051602001612d67929190614749565b6040516020818303038152906040529350505050919050565b612d89856135f6565b95945050505050565b610a0082826040518060200160405280600081525061366a565b6000612db66135d2565b6000848152602082905260409020909150612dd183826147c0565b506040518381527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a1505050565b6000612e14611a55565b6040805160e0810182526001600160a01b039a8b168152988a166020808b019182528a8301998a5260608b01988952968b1660808b0190815260a08b0196875294151560c08b0190815260009c8d5260039384019097529a20975188546001600160a01b0319908116918b1691909117895599516001890180548c16918b169190911790559551600288015550925193850193909355905160048401805490961694169390931790935591516005830155516006909101805460ff1916911515919091179055565b8585612ee8828261349a565b6000612ef2612951565b600088815260209190915260409020905060046002820154600160c01b900460ff166004811115612f2557612f2561410b565b1480612f50575060016002820154600160c01b900460ff166004811115612f4e57612f4e61410b565b145b15612f8357868160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b60006002820154600160c01b900460ff166004811115612fa557612fa561410b565b03612fbf576001810180546001600160a01b031916331790555b338160020160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550858160000181905550886001600160a01b0316336001600160a01b0316148160010160186101000a81548160ff021916908315150217905550876001600160a01b0316336001600160a01b0316148160010160196101000a81548160ff021916908315150217905550848160020160196101000a81548161ffff021916908361ffff1602179055508381600201601b6101000a81548161ffff021916908361ffff160217905550600081600201601d6101000a81548161ffff021916908361ffff16021790555060008160030160006101000a81548161ffff021916908361ffff16021790555060008160030160026101000a81548161ffff021916908361ffff16021790555060008160030160046101000a81548161ffff021916908361ffff16021790555060008160030160066101000a81548161ffff021916908361ffff16021790555060008160030160086101000a81548161ffff021916908361ffff16021790555060018160020160186101000a81548160ff021916908360048111156131765761317661410b565b02179055506002810154600182015482546040516001600160a01b0380851694908416938c936000805160206148c5833981519152936125a393919260ff600160c01b8204811693600160c81b83049091169263ffffffff600160a01b93849004811693909204909116906146c3565b60006001600160e01b03198216632483248360e11b1480610939575061093982613682565b600080613216611a9e565b6000938452600201602052505060409020546001600160a01b031690565b600061323e611a9e565b9050818061325457506001600160a01b03831615155b1561330d57600061326485611ac2565b90506001600160a01b038416158015906132905750836001600160a01b0316816001600160a01b031614155b80156132a357506132a18185611969565b155b156132c3578360405163a9fbf51f60e01b8152600401610b1c9190613fb3565b821561330b5784866001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b600093845260040160205250506040902080546001600160a01b0319166001600160a01b0392909216919091179055565b8047101561336357478160405163cf47918160e01b8152600401610b1c9291906145e9565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146133b0576040519150601f19603f3d011682016040523d82523d6000602084013e6133b5565b606091505b5050905080610bb05760405163d6bda27560e01b815260040160405180910390fd5b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ccc9085906136a7565b60008061343c612951565b60008481526020919091526040902060020154600160c01b900460ff16613461612951565b600094855260205260409093206002015492936001600160a01b0390931692915050565b600061349284848461370f565b949350505050565b336001600160a01b038316148015906134bc5750336001600160a01b03821614155b15610a0057604051634793d28160e01b815260040160405180910390fd5b6134e4828261105f565b610a0057808260405163e2517d3f60e01b8152600401610b1c9291906145a6565b61350e8261379d565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561355357610bb082826137f9565b610a00613866565b613563613885565b6122e557604051631afcd79f60e31b815260040160405180910390fd5b61358861355b565b6000613592611a9e565b90508061359f84826147c0565b5060018101610ccc83826147c0565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b7f0542a41881ee128a365a727b282c86fa859579490b9bb45aab8503648c8e790090565b606061360182611ac2565b50600061361960408051602081019091526000815290565b905060008151116136395760405180602001604052806000815250611cdd565b806136438461389f565b604051602001613654929190614749565b6040516020818303038152906040529392505050565b6136748383613931565b610bb0336000858585612975565b60006001600160e01b0319821663780e9d6360e01b1480610939575061093982613996565b600080602060008451602086016000885af1806136ca576040513d6000823e3d81fd5b50506000513d915081156136e25780600114156136ef565b6001600160a01b0384163b155b15610ccc5783604051635274afe760e01b8152600401610b1c9190613fb3565b60008061371d8585856139e6565b90506001600160a01b03811661373b5761373684613aed565b61375e565b846001600160a01b0316816001600160a01b03161461375e5761375e8185613b26565b6001600160a01b03851661377a5761377584613bbf565b613492565b846001600160a01b0316816001600160a01b031614613492576134928585613c88565b806001600160a01b03163b6000036137ca5780604051634c9c8ce360e01b8152600401610b1c9190613fb3565b60008051602061494583398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051613816919061487f565b600060405180830381855af49150503d8060008114613851576040519150601f19603f3d011682016040523d82523d6000602084013e613856565b606091505b5091509150612d89858383613ce0565b34156122e55760405163b398979f60e01b815260040160405180910390fd5b600061388f612793565b54600160401b900460ff16919050565b606060006138ac83613d33565b60010190506000816001600160401b038111156138cb576138cb614152565b6040519080825280601f01601f1916602001820160405280156138f5576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846138ff57509392505050565b6001600160a01b03821661395b576000604051633250574960e11b8152600401610b1c9190613fb3565b600061396983836000613485565b90506001600160a01b03811615610bb05760006040516339e3563760e11b8152600401610b1c9190613fb3565b60006001600160e01b031982166380ac58cd60e01b14806139c757506001600160e01b03198216635b5e139f60e01b145b8061093957506301ffc9a760e01b6001600160e01b0319831614610939565b6000806139f1611a9e565b905060006139fe8561320b565b90506001600160a01b03841615613a1a57613a1a818587613e09565b6001600160a01b03811615613a5a57613a37600086600080613234565b6001600160a01b0381166000908152600383016020526040902080546000190190555b6001600160a01b03861615613a8b576001600160a01b03861660009081526003830160205260409020805460010190555b600085815260028301602052604080822080546001600160a01b0319166001600160a01b038a811691821790925591518893918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a495945050505050565b6000613af7611b30565b600281018054600085815260039093016020908152604084208290556001820183559183529120019190915550565b6000613b30611b30565b90506000613b3d84610eae565b60008481526001840160209081526040808320546001600160a01b03891684529186905290912091925090818314613b97576000838152602082815260408083205485845281842081905583526001870190915290208290555b6000948552600190930160209081526040808620869055928552929092528220919091555050565b6000613bc9611b30565b6002810154909150600090613be09060019061489b565b6000848152600384016020526040812054600285018054939450909284908110613c0c57613c0c6145bf565b9060005260206000200154905080846002018381548110613c2f57613c2f6145bf565b600091825260208083209091019290925582815260038601909152604080822084905586825281205560028401805480613c6b57613c6b6148ae565b600190038181906000526020600020016000905590555050505050565b6000613c92611b30565b905060006001613ca185610eae565b613cab919061489b565b6001600160a01b0390941660009081526020838152604080832087845282528083208690559482526001909301909252502055565b606082613cf557613cf082613e5f565b611cdd565b8151158015613d0c57506001600160a01b0384163b155b15613d2c5783604051639996b31560e01b8152600401610b1c9190613fb3565b5080611cdd565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310613d725772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b8310613d9c576904ee2d6d415b85acef8160201b830492506020015b662386f26fc100008310613dba57662386f26fc10000830492506010015b6305f5e1008310613dd2576305f5e100830492506008015b6127108310613de657612710830492506004015b60648310613df8576064830492506002015b600a83106109395760010192915050565b613e14838383613e88565b610bb0576001600160a01b038316613e4257604051637e27328960e01b815260048101829052602401610b1c565b818160405163177e802f60e01b8152600401610b1c9291906145a6565b805115613e6f5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b60006001600160a01b038316158015906134925750826001600160a01b0316846001600160a01b03161480613ec25750613ec28484611969565b806134925750826001600160a01b0316613edb83611afa565b6001600160a01b031614949350505050565b600060208284031215613eff57600080fd5b5035919050565b9182526001600160a01b0316602082015260400190565b6001600160e01b03198116811461132657600080fd5b600060208284031215613f4557600080fd5b8135611cdd81613f1d565b60005b83811015613f6b578181015183820152602001613f53565b50506000910152565b60008151808452613f8c816020860160208601613f50565b601f01601f19169290920160200192915050565b602081526000611cdd6020830184613f74565b6001600160a01b0391909116815260200190565b6001600160a01b038116811461132657600080fd5b60008060408385031215613fef57600080fd5b8235613ffa81613fc7565b946020939093013593505050565b60006020828403121561401a57600080fd5b8135611cdd81613fc7565b6000806040838503121561403857600080fd5b50508035926020909101359150565b60008060006060848603121561405c57600080fd5b833561406781613fc7565b9250602084013561407781613fc7565b929592945050506040919091013590565b803561ffff8116811461409a57600080fd5b919050565b6000806000606084860312156140b457600080fd5b833592506140c460208501614088565b91506140d260408501614088565b90509250925092565b600080604083850312156140ee57600080fd5b82359150602083013561410081613fc7565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b6005811061132657634e487b7160e01b600052602160045260246000fd5b6020810161414c83614121565b91905290565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261417957600080fd5b81356001600160401b038082111561419357614193614152565b604051601f8301601f19908116603f011681019082821181831017156141bb576141bb614152565b816040528381528660208588010111156141d457600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561420757600080fd5b823561421281613fc7565b915060208301356001600160401b0381111561422d57600080fd5b61423985828601614168565b9150509250929050565b6000806000806080858703121561425957600080fd5b843593506020850135925061427060408601614088565b915061427e60608601614088565b905092959194509250565b6000806040838503121561429c57600080fd5b82356001600160401b03808211156142b357600080fd5b6142bf86838701614168565b935060208501359150808211156142d557600080fd5b5061423985828601614168565b801515811461132657600080fd5b6000806040838503121561430357600080fd5b823561430e81613fc7565b91506020830135614100816142e2565b61ffff98891681529688166020880152948716604087015292861660608601529085166080850152841660a0840152831660c083015290911660e08201526101000190565b6000806000806080858703121561437957600080fd5b843561438481613fc7565b9350602085013561439481613fc7565b92506040850135915060608501356001600160401b038111156143b657600080fd5b6143c287828801614168565b91505092959194509250565b61010081016143dc8a614121565b98815260208101979097526001600160a01b0395861660408801529390941660608601529015156080850152151560a084015263ffffffff91821660c08401521660e09091015290565b60008060006060848603121561443b57600080fd5b833561444681613fc7565b9250602084013561445681613fc7565b9150604084013561446681613fc7565b809150509250925092565b600080600080600080600060e0888a03121561448c57600080fd5b873561449781613fc7565b965060208801356001600160401b038111156144b257600080fd5b6144be8a828b01614168565b965050604088013594506060880135935060808801356144dd81613fc7565b925060a0880135915060c08801356144f4816142e2565b8091505092959891949750929550565b6000806040838503121561451757600080fd5b823561452281613fc7565b9150602083013561410081613fc7565b600181811c9082168061454657607f821691505b60208210810361456657634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561457e57600080fd5b8151611cdd816142e2565b8281526040810161459983614121565b8260208301529392505050565b6001600160a01b03929092168252602082015260400190565b634e487b7160e01b600052603260045260246000fd5b6001600160401b0391909116815260200190565b918252602082015260400190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610939576109396145f7565b600060018201614632576146326145f7565b5060010190565b9283526020830191909152604082015260600190565b6001600160a01b0393841681526020810192909252909116604082015260600190565b61ffff92831681529116602082015260400190565b60006020828403121561469957600080fd5b5051919050565b600063ffffffff8083168181036146b9576146b96145f7565b6001019392505050565b9485529215156020850152901515604084015263ffffffff908116606084015216608082015260a00190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061472290830184613f74565b9695505050505050565b60006020828403121561473e57600080fd5b8151611cdd81613f1d565b6000835161475b818460208801613f50565b83519083019061476f818360208801613f50565b01949350505050565b601f821115610bb0576000816000526020600020601f850160051c810160208610156147a15750805b601f850160051c820191505b81811015611525578281556001016147ad565b81516001600160401b038111156147d9576147d9614152565b6147ed816147e78454614532565b84614778565b602080601f831160018114614822576000841561480a5750858301515b600019600386901b1c1916600185901b178555611525565b600085815260208120601f198616915b8281101561485157888601518255948401946001909101908401614832565b508582101561486f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008251614891818460208701613f50565b9190910192915050565b81810381811115610939576109396145f7565b634e487b7160e01b600052603160045260246000fdfe6aafaf6639750382d6dc665bc6a3c73d54e2076a8739a69c860a2314032eb981c7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2c47ab59d5c41a0220b594ece6f7e87863b07f8b33579130f3a59b31d8f7b6eed189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc3ae8648b97d3fd425d26286fc6bb1d50724a93a6a5763921dd2b90405a83b4a4ade2ce8b39037f5140109f53fef47c0491427b8b785ab83d35aa2931295cb790a26469706673582212205ff1ab7ed04f3284c48eefd9c84ebe5b019c0853e20741ae588d1e84fa8d725b64736f6c63430008180033", + "deployedBytecode": "0x60806040526004361061024e5760003560e01c80624fdd3c1461025357806301ffc9a71461028a57806306fdde03146102ba578063081812fc146102dc578063095ea7b3146103095780630e75c1a81461032b57806312b357b51461034e57806318160ddd1461036e5780631c54f0f71461038357806323b872dd14610396578063248a9ca3146103b65780632a119380146103d65780632d3a6329146103f65780632edf5e2c146104165780632f2ff15d146104385780632f745c591461045857806336568abe146104785780633c15b31c1461049857806341431908146104c557806342842e0e146104e55780634f1ef286146105055780634f6ccce714610518578063516a82b81461053857806352d1902d1461055857806354fd4d501461056d5780636352211e1461059a57806370a08231146105ba57806374aa2048146105da57806374fe60e9146105fa57806391d148541461061a57806391da124c1461063a57806395d89b411461065a57806396591edd1461066f578063a0f07c7414610682578063a217fddf14610697578063a22cb465146106ac578063a9bc55a2146106cc578063ad3cb1cc14610700578063b191d09214610731578063b88d4fde14610751578063bb520b4714610771578063be667188146107a5578063bfb26c06146107c5578063c0c53b8b146107da578063c162d7da146107fa578063c87b56dd1461080f578063d547741f1461082f578063db2b26821461084f578063e5a6725c1461086f578063e985e9c51461088f578063f72c0d8b146108af578063f7e45f09146108d1575b600080fd5b34801561025f57600080fd5b5061027361026e366004613eed565b6108f1565b604051610281929190613f06565b60405180910390f35b34801561029657600080fd5b506102aa6102a5366004613f33565b61092e565b6040519015158152602001610281565b3480156102c657600080fd5b506102cf61093f565b6040516102819190613fa0565b3480156102e857600080fd5b506102fc6102f7366004613eed565b6109e0565b6040516102819190613fb3565b34801561031557600080fd5b50610329610324366004613fdc565b6109f5565b005b34801561033757600080fd5b50610340610a04565b604051908152602001610281565b34801561035a57600080fd5b506102aa610369366004614008565b610a19565b34801561037a57600080fd5b50610340610a8f565b610329610391366004614025565b610a9a565b3480156103a257600080fd5b506103296103b1366004614047565b610b9c565b3480156103c257600080fd5b506103406103d1366004613eed565b610bb5565b3480156103e257600080fd5b506103296103f136600461409f565b610bd5565b34801561040257600080fd5b506102aa610411366004613eed565b610c8a565b34801561042257600080fd5b5061034060008051602061496583398151915281565b34801561044457600080fd5b506103296104533660046140db565b610cb0565b34801561046457600080fd5b50610340610473366004613fdc565b610cd2565b34801561048457600080fd5b506103296104933660046140db565b610d34565b3480156104a457600080fd5b506104b86104b3366004613eed565b610d67565b604051610281919061413f565b3480156104d157600080fd5b506103296104e0366004614008565b610d8a565b3480156104f157600080fd5b50610329610500366004614047565b610dc2565b6103296105133660046141f4565b610ddd565b34801561052457600080fd5b50610340610533366004613eed565b610df8565b34801561054457600080fd5b50610329610553366004613eed565b610e59565b34801561056457600080fd5b50610340610e86565b34801561057957600080fd5b50604080516001815260006020820181905291810191909152606001610281565b3480156105a657600080fd5b506102fc6105b5366004613eed565b610ea3565b3480156105c657600080fd5b506103406105d5366004614008565b610eae565b3480156105e657600080fd5b506103296105f5366004614243565b610f06565b34801561060657600080fd5b5061032961061536600461409f565b610fb3565b34801561062657600080fd5b506102aa6106353660046140db565b61105f565b34801561064657600080fd5b50610329610655366004614289565b611095565b34801561066657600080fd5b506102cf611152565b61032961067d366004613eed565b61116f565b34801561068e57600080fd5b506102fc600081565b3480156106a357600080fd5b50610340600081565b3480156106b857600080fd5b506103296106c73660046142f0565b611329565b3480156106d857600080fd5b506106ec6106e7366004613eed565b611334565b60405161028198979695949392919061431e565b34801561070c57600080fd5b506102cf604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561073d57600080fd5b506102fc61074c366004613eed565b6113ba565b34801561075d57600080fd5b5061032961076c366004614363565b6113e6565b34801561077d57600080fd5b5061079161078c366004613eed565b6113fe565b6040516102819897969594939291906143ce565b3480156107b157600080fd5b506103296107c0366004614025565b61147a565b3480156107d157600080fd5b506102fc600181565b3480156107e657600080fd5b506103296107f5366004614426565b61152d565b34801561080657600080fd5b506102fc6116cc565b34801561081b57600080fd5b506102cf61082a366004613eed565b6116e7565b34801561083b57600080fd5b5061032961084a3660046140db565b6116f2565b34801561085b57600080fd5b5061032961086a366004614471565b61170e565b34801561087b57600080fd5b5061032961088a366004613eed565b611861565b34801561089b57600080fd5b506102aa6108aa366004614504565b611969565b3480156108bb57600080fd5b5061034060008051602061492583398151915281565b3480156108dd57600080fd5b506103296108ec366004614243565b6119a8565b60008060006108fe611a55565b6000948552600390810160205260409094209384015460049094015493946001600160a01b039094169392505050565b600061093982611a79565b92915050565b6060600061094b611a9e565b905080600001805461095c90614532565b80601f016020809104026020016040519081016040528092919081815260200182805461098890614532565b80156109d55780601f106109aa576101008083540402835291602001916109d5565b820191906000526020600020905b8154815290600101906020018083116109b857829003601f168201915b505050505091505090565b60006109eb82611ac2565b5061093982611afa565b610a00828233611b23565b5050565b600080610a0f611a55565b6002015492915050565b6000610a236116cc565b6001600160a01b03166312b357b5836040518263ffffffff1660e01b8152600401610a4e9190613fb3565b602060405180830381865afa158015610a6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610939919061456c565b600080610a0f611b30565b33610aa481611b54565b6000610aaf84611ac2565b90506000610abb611a55565b905060036000868152600480840160205260409091205460ff1690811115610ae557610ae561410b565b14610b25576000858152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c92889260ff9091169101614589565b60405180910390fd5b60008581526003820160205260408120600101546001600160a01b031690610b4e828888611b7c565b600088815260038501602090815260408083206004908101548189019093529220805460ff19169092179091559091506001600160a01b0316610b92818387611ce4565b5050505050505050565b610ba581611d92565b610bb0838383611f46565b505050565b600080610bc0611fb7565b60009384526020525050604090206001015490565b33610bdf81611b54565b6000610bea85611ac2565b90506000610bf6611a55565b905060036000878152600480840160205260409091205460ff1690811115610c2057610c2061410b565b14610c57576000868152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c92899260ff9091169101614589565b60008681526003820160205260409020600101546001600160a01b0316610c818382898989611fdb565b50505050505050565b600080610c95611a55565b60009384526003016020525050604090206006015460ff1690565b610cb982610bb5565b610cc28161211d565b610ccc8383612127565b50505050565b600080610cdd611b30565b9050610ce884610eae565b8310610d0b57838360405163295f44f760e21b8152600401610b1c9291906145a6565b6001600160a01b0384166000908152602091825260408082208583529092522054905092915050565b6001600160a01b0381163314610d5d5760405163334bd91960e11b815260040160405180910390fd5b610bb082826121c8565b600080610d72611a55565b60009384526004016020525050604090205460ff1690565b6000610d958161211d565b6000610d9f611a55565b80546001600160a01b0319166001600160a01b0394909416939093179092555050565b610bb0838383604051806020016040528060008152506113e6565b610de5612240565b610dee826122e7565b610a0082826122ff565b600080610e03611b30565b9050610e0d610a8f565b8310610e315760008360405163295f44f760e21b8152600401610b1c9291906145a6565b806002018381548110610e4657610e466145bf565b9060005260206000200154915050919050565b600080516020614965833981519152610e718161211d565b6000610e7b611a55565b600201929092555050565b6000610e906123b3565b5060008051602061494583398151915290565b600061093982611ac2565b600080610eb9611a9e565b90506001600160a01b038316610ee55760006040516322718ad960e21b8152600401610b1c9190613fb3565b6001600160a01b039092166000908152600390920160205250604090205490565b33610f1081611b54565b6000610f1b86611ac2565b90506000610f27611a55565b905060036000888152600480840160205260409091205460ff1690811115610f5157610f5161410b565b14610f88576000878152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c928a9260ff9091169101614589565b60008781526003820160205260409020600101546001600160a01b0316610b9283828a8a8a8a6123fc565b33610fbd81611b54565b6000610fc885611ac2565b90506000610fd4611a55565b905060036000878152600480840160205260409091205460ff1690811115610ffe57610ffe61410b565b14611035576000868152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c92899260ff9091169101614589565b60008681526003820160205260409020600101546001600160a01b0316610c818382898989612635565b60008061106a611fb7565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b600260006110a1612793565b8054909150600160401b900460ff16806110c8575080546001600160401b03808416911610155b156110e65760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160481b0319166001600160401b03831617600160401b17815560006111108161211d565b61111a85856127b7565b50805460ff60401b191681556040516000805160206148e5833981519152906111449084906145d5565b60405180910390a150505050565b6060600061115e611a9e565b905080600101805461095c90614532565b6111776127c9565b3361118181611b54565b600061118b611a55565b600084815260038083016020908152604092839020835160e08101855281546001600160a01b03908116808352600184015482169483019490945260028301549582019590955292810154606084015260048101549093166080830152600583015460a083015260069092015460ff16151560c08201529192503314611238578051604051632663a9c560e11b81526001600160a01b039091166004820152336024820152604401610b1c565b80604001514211156112655783816040015160405163293d73b760e11b8152600401610b1c9291906145e9565b600061127085610ea3565b905081602001516001600160a01b0316816001600160a01b0316146112af57602082015160405163103d145960e31b8152610b1c918791600401613f06565b6112be826020015133876127ff565b6112d5826080015183606001518460200151611ce4565b6000858152600484016020526040808220805460ff1916600317905551339187917fa751fb02c318279a22135a408663ae08ea45eafa950a4351c14ae543cbb950409190a35050505061132661289b565b50565b610a003383836128ac565b600080600080600080600080600061134a612951565b60009a8b5260205250506040909720600281015460039091015461ffff600160c81b830481169a600160d81b840482169a50600160e81b90930481169850808216975062010000820481169650600160201b820481169550600160301b820481169450600160401b909104169150565b6000806113c5611a55565b6000938452600301602052505060409020600401546001600160a01b031690565b6113f1848484610b9c565b610ccc3385858585612975565b6000806000806000806000806000611414612951565b60009a8b52602052505060409097206002810154815460019092015460ff600160c01b80840482169c949b506001600160a01b038084169b5084169950820481169750600160c81b820416955063ffffffff600160a01b91829004811695509104169150565b3361148481611b54565b600061148f84611ac2565b9050600061149b611a55565b905060036000868152600480840160205260409091205460ff16908111156114c5576114c561410b565b146114fc576000858152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c92889260ff9091169101614589565b60008581526003820160205260409020600101546001600160a01b031661152583828888612a8c565b505050505050565b6000611537612793565b805490915060ff600160401b82041615906001600160401b031660008115801561155e5750825b90506000826001600160401b0316600114801561157a5750303b155b905081158015611588575080155b156115a65760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b031916600117855583156115cf57845460ff60401b1916600160401b1785555b6116196040518060400160405280600c81526020016b2137b7b5b4b733aa37b5b2b760a11b815250604051806040016040528060048152602001630545249560e41b8152506127b7565b611621612c6a565b611629612c6a565b611631612c6a565b611639612c6a565b611644600088612127565b5061165d60008051602061492583398151915287612127565b506000611668611a55565b80546001600160a01b0319166001600160a01b038b16178155603c600290910155508315610b9257845460ff60401b191685556040516000805160206148e5833981519152906116ba906001906145d5565b60405180910390a15050505050505050565b6000806116d7611a55565b546001600160a01b031692915050565b606061093982612c72565b6116fb82610bb5565b6117048161211d565b610ccc83836121c8565b3361171881611b54565b61172188611b54565b600061172b611a55565b600281015490915061173d814261460d565b8811611760578781604051630999f7d760e41b8152600401610b1c9291906145e9565b60008511801561177a57506001600160a01b038616600114155b1561179b57604051638fe757e760e01b815260048101869052602401610b1c565b600182018054600091826117ae83614620565b9190505590506117be3382612d92565b6117c8818b612dac565b6117d8818c338c8c8c8c8c612e0a565b6000818152600484016020908152604091829020805460ff1916600117905581518b81529081018a90526001600160a01b0389811682840152606082018990528715156080830152915133928e169184917f1424af4f4cb40d8a1a2d00b2324cb122ba73eac426f98b62c33ff31ca045f0679160a0908290030190a45050505050505050505050565b600061186b611a55565b6000838152600382016020908152604080832060048501909252909120549192509060ff1660028160048111156118a4576118a461410b565b14806118c1575060038160048111156118bf576118bf61410b565b145b806118dd575060048160048111156118db576118db61410b565b145b156118ff57838160405163e4e3b53b60e01b8152600401610b1c929190614589565b8160020154421115611940576000848152600484016020526040808220805460ff1916600217905551859160008051602061490583398151915291a2610ccc565b815460405163d4cde2af60e01b8152610b1c9186916001600160a01b0390911690600401613f06565b600080611974611a9e565b6001600160a01b03948516600090815260059190910160209081526040808320959096168252939093525050205460ff1690565b336119b281611b54565b60006119bd86611ac2565b905060006119c9611a55565b905060036000888152600480840160205260409091205460ff16908111156119f3576119f361410b565b14611a2a576000878152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c928a9260ff9091169101614589565b60008781526003820160205260409020600101546001600160a01b0316610b9283828a8a8a8a612edc565b7f9db9d405bf15683ce835607b1f0b423dc1484d44bb9d5af64a483fa4afd8290090565b60006001600160e01b03198216637965db0b60e01b14806109395750610939826131e6565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930090565b600080611ace8361320b565b90506001600160a01b03811661093957604051637e27328960e01b815260048101849052602401610b1c565b600080611b05611a9e565b6000938452600401602052505060409020546001600160a01b031690565b610bb08383836001613234565b7f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed0090565b611b5d81610a19565b6113265780604051638014575360e01b8152600401610b1c9190613fb3565b6000336001600160a01b03851614611baa57604051636c83fb1b60e01b815260048101849052602401610b1c565b6000611bb4612951565b600085815260209190915260409020905060016002820154600160c01b900460ff166004811115611be757611be761410b565b14611c1a57838160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b80548314611c4157805460405163cc45283760e01b8152610b1c9186918690600401614639565b6001810154600160c01b900460ff16611c705760405163c84052f960e01b815260048101859052602401610b1c565b6001810154600160c81b900460ff16611c995760018101805460ff60c81b1916600160c81b1790555b60028101805460ff60c01b1916600160c21b17905560405184907f17c3690813e5ff9135b87fd91848109978b23db8e471498d18886560da7f286790600090a25490505b9392505050565b6001600160a01b038316611d2957813414611d16573482604051630145611560e21b8152600401610b1c9291906145e9565b610bb06001600160a01b0382163461333e565b6000196001600160a01b03841601611d5c573415610bb0576040516347d6729960e01b8152346004820152602401610b1c565b3415611d7d576040516347d6729960e01b8152346004820152602401610b1c565b610bb06001600160a01b0384163383856133d7565b6000611d9c611a55565b600083815260048201602052604081205491925060ff9091169080611dc085613431565b90925090506001826004811115611dd957611dd961410b565b03611e3a576000611de986611ac2565b60008781526003870160205260409020600101549091506001600160a01b039081169083163314611e2857611e2382828960636001612635565b611e37565b611e3782828960636001611fdb565b50505b6003836004811115611e4e57611e4e61410b565b1480611e6b57506002836004811115611e6957611e6961410b565b145b80611e8757506000836004811115611e8557611e8561410b565b145b15611e93575050505050565b6004836004811115611ea757611ea761410b565b03611ec957848360405163e4e3b53b60e01b8152600401610b1c929190614589565b600085815260038501602052604090206002810154421115611f1d576000868152600486016020526040808220805460ff1916600217905551879160008051602061490583398151915291a2505050505050565b805460405163d4cde2af60e01b8152610b1c9188916001600160a01b0390911690600401613f06565b6001600160a01b038216611f70576000604051633250574960e11b8152600401610b1c9190613fb3565b6000611f7d838333613485565b9050836001600160a01b0316816001600160a01b031614610ccc578382826040516364283d7b60e01b8152600401610b1c9392919061464f565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b8484611fe7828261349a565b6000611ff1612951565b600087815260209190915260409020905060016002820154600160c01b900460ff1660048111156120245761202461410b565b1461205757858160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b60028101546001600160a01b0316331461208757604051631186fdbd60e31b815260048101879052602401610b1c565b6003808201805461ffff878116600160401b0261ffff60401b19918a16600160301b029190911663ffffffff60301b199092169190911717905560028201805460ff60c01b1916600160c01b830217905550857f48e256ce3da490e3bbba80f056bb54ec3d7264f8ad7d152b77bf8c2eca3db5a5868660405161210b929190614672565b60405180910390a25050505050505050565b61132681336134da565b600080612132611fb7565b905061213e848461105f565b6121be576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556121743390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610939565b6000915050610939565b6000806121d3611fb7565b90506121df848461105f565b156121be576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610939565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806122c757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166122bb600080516020614945833981519152546001600160a01b031690565b6001600160a01b031614155b156122e55760405163703e46dd60e11b815260040160405180910390fd5b565b600080516020614925833981519152610a008161211d565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612359575060408051601f3d908101601f1916820190925261235691810190614687565b60015b6123785781604051634c9c8ce360e01b8152600401610b1c9190613fb3565b60008051602061494583398151915281146123a957604051632a87526960e21b815260048101829052602401610b1c565b610bb08383613505565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146122e55760405163703e46dd60e11b815260040160405180910390fd5b8585612408828261349a565b6000612412612951565b600088815260209190915260409020905060016002820154600160c01b900460ff1660048111156124455761244561410b565b1461247857868160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b858155600281018054336001600160a01b0319909116811790915560018201805461ffff60c01b19166001600160a01b038c81168414600160c01b0260ff60c81b191691909117908b16909214600160c81b029190911780825560038301805465ffffffff000019166201000061ffff8a81169190910261ffff60201b191691909117600160201b91891691909102179055600160a01b900463ffffffff16906014612523836146a0565b82546101009290920a63ffffffff8181021990931691831602179091556002830154600184015484546040516001600160a01b0380851696508316948d946000805160206148c5833981519152946125a39493600160c01b820460ff90811694600160c81b840490911693600160a01b93849004821693900416906146c3565b60405180910390a4600281015460038201546040518992600080516020614985833981519152926126229261ffff600160c81b8404811693600160d81b8104821693600160e81b90910482169281831692620100008304811692600160201b8104821692600160301b8204831692600160401b9092049091169061431e565b60405180910390a2505050505050505050565b8484612641828261349a565b600061264b612951565b600087815260209190915260409020905060016002820154600160c01b900460ff16600481111561267e5761267e61410b565b146126b157858160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b60028101546001600160a01b031633036126e157604051633060d8f760e21b815260048101879052602401610b1c565b60028101805460038301805461ffff88811661ffff19909216919091179091558716600160e81b0260ff60c01b191666ffff00000000ff60c01b1990911617600160c11b17808255600160a01b900463ffffffff16906014612742836146a0565b91906101000a81548163ffffffff021916908363ffffffff16021790555050857fab78ba855f2fdb28beb212a9b3f41a33cda034729848cd452f0cc96528c23a80868660405161210b929190614672565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b6127bf61355b565b610a008282613580565b60006127d36135ae565b8054909150600119016127f957604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b6001600160a01b038216612829576000604051633250574960e11b8152600401610b1c9190613fb3565b600061283783836000613485565b90506001600160a01b03811661286357604051637e27328960e01b815260048101839052602401610b1c565b836001600160a01b0316816001600160a01b031614610ccc578382826040516364283d7b60e01b8152600401610b1c9392919061464f565b60006128a56135ae565b6001905550565b60006128b6611a9e565b90506001600160a01b0383166128e15782604051630b61174360e31b8152600401610b1c9190613fb3565b6001600160a01b038481166000818152600584016020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b7f0b8fb32ffc7043fda9e0ee2bcb4236acf95ab448752c73eff6cc7f2640ff850090565b6001600160a01b0383163b15612a8557604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906129b79088908890879087906004016146ef565b6020604051808303816000875af19250505080156129f2575060408051601f3d908101601f191682019092526129ef9181019061472c565b60015b612a52573d808015612a20576040519150601f19603f3d011682016040523d82523d6000602084013e612a25565b606091505b508051600003612a4a5783604051633250574960e11b8152600401610b1c9190613fb3565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b146115255783604051633250574960e11b8152600401610b1c9190613fb3565b5050505050565b8383612a98828261349a565b6000612aa2612951565b600086815260209190915260409020905060016002820154600160c01b900460ff166004811115612ad557612ad561410b565b14612b0857848160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b80548414612b2f57805460405163cc45283760e01b8152610b1c9187918790600401614639565b6001600160a01b0387163303612b595760018101805460ff60c01b1916600160c01b179055612b6f565b60018101805460ff60c81b1916600160c81b1790555b6002810154600182015482546040516001600160a01b0380851694908416938a936000805160206148c583398151915293612bda93919260ff600160c01b8204811693600160c81b83049091169263ffffffff600160a01b93849004811693909204909116906146c3565b60405180910390a460028101546003820154604051879260008051602061498583398151915292612c599261ffff600160c81b8404811693600160d81b8104821693600160e81b90910482169281831692620100008304811692600160201b8104821692600160301b8204831692600160401b9092049091169061431e565b60405180910390a250505050505050565b6122e561355b565b60606000612c7e6135d2565b9050612c8983611ac2565b5060008381526020829052604081208054612ca390614532565b80601f0160208091040260200160405190810160405280929190818152602001828054612ccf90614532565b8015612d1c5780601f10612cf157610100808354040283529160200191612d1c565b820191906000526020600020905b815481529060010190602001808311612cff57829003601f168201915b505050505090506000612d3a60408051602081019091526000815290565b90508051600003612d4d57509392505050565b815115612d80578082604051602001612d67929190614749565b6040516020818303038152906040529350505050919050565b612d89856135f6565b95945050505050565b610a0082826040518060200160405280600081525061366a565b6000612db66135d2565b6000848152602082905260409020909150612dd183826147c0565b506040518381527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a1505050565b6000612e14611a55565b6040805160e0810182526001600160a01b039a8b168152988a166020808b019182528a8301998a5260608b01988952968b1660808b0190815260a08b0196875294151560c08b0190815260009c8d5260039384019097529a20975188546001600160a01b0319908116918b1691909117895599516001890180548c16918b169190911790559551600288015550925193850193909355905160048401805490961694169390931790935591516005830155516006909101805460ff1916911515919091179055565b8585612ee8828261349a565b6000612ef2612951565b600088815260209190915260409020905060046002820154600160c01b900460ff166004811115612f2557612f2561410b565b1480612f50575060016002820154600160c01b900460ff166004811115612f4e57612f4e61410b565b145b15612f8357868160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b60006002820154600160c01b900460ff166004811115612fa557612fa561410b565b03612fbf576001810180546001600160a01b031916331790555b338160020160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550858160000181905550886001600160a01b0316336001600160a01b0316148160010160186101000a81548160ff021916908315150217905550876001600160a01b0316336001600160a01b0316148160010160196101000a81548160ff021916908315150217905550848160020160196101000a81548161ffff021916908361ffff1602179055508381600201601b6101000a81548161ffff021916908361ffff160217905550600081600201601d6101000a81548161ffff021916908361ffff16021790555060008160030160006101000a81548161ffff021916908361ffff16021790555060008160030160026101000a81548161ffff021916908361ffff16021790555060008160030160046101000a81548161ffff021916908361ffff16021790555060008160030160066101000a81548161ffff021916908361ffff16021790555060008160030160086101000a81548161ffff021916908361ffff16021790555060018160020160186101000a81548160ff021916908360048111156131765761317661410b565b02179055506002810154600182015482546040516001600160a01b0380851694908416938c936000805160206148c5833981519152936125a393919260ff600160c01b8204811693600160c81b83049091169263ffffffff600160a01b93849004811693909204909116906146c3565b60006001600160e01b03198216632483248360e11b1480610939575061093982613682565b600080613216611a9e565b6000938452600201602052505060409020546001600160a01b031690565b600061323e611a9e565b9050818061325457506001600160a01b03831615155b1561330d57600061326485611ac2565b90506001600160a01b038416158015906132905750836001600160a01b0316816001600160a01b031614155b80156132a357506132a18185611969565b155b156132c3578360405163a9fbf51f60e01b8152600401610b1c9190613fb3565b821561330b5784866001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b600093845260040160205250506040902080546001600160a01b0319166001600160a01b0392909216919091179055565b8047101561336357478160405163cf47918160e01b8152600401610b1c9291906145e9565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146133b0576040519150601f19603f3d011682016040523d82523d6000602084013e6133b5565b606091505b5050905080610bb05760405163d6bda27560e01b815260040160405180910390fd5b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ccc9085906136a7565b60008061343c612951565b60008481526020919091526040902060020154600160c01b900460ff16613461612951565b600094855260205260409093206002015492936001600160a01b0390931692915050565b600061349284848461370f565b949350505050565b336001600160a01b038316148015906134bc5750336001600160a01b03821614155b15610a0057604051634793d28160e01b815260040160405180910390fd5b6134e4828261105f565b610a0057808260405163e2517d3f60e01b8152600401610b1c9291906145a6565b61350e8261379d565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561355357610bb082826137f9565b610a00613866565b613563613885565b6122e557604051631afcd79f60e31b815260040160405180910390fd5b61358861355b565b6000613592611a9e565b90508061359f84826147c0565b5060018101610ccc83826147c0565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b7f0542a41881ee128a365a727b282c86fa859579490b9bb45aab8503648c8e790090565b606061360182611ac2565b50600061361960408051602081019091526000815290565b905060008151116136395760405180602001604052806000815250611cdd565b806136438461389f565b604051602001613654929190614749565b6040516020818303038152906040529392505050565b6136748383613931565b610bb0336000858585612975565b60006001600160e01b0319821663780e9d6360e01b1480610939575061093982613996565b600080602060008451602086016000885af1806136ca576040513d6000823e3d81fd5b50506000513d915081156136e25780600114156136ef565b6001600160a01b0384163b155b15610ccc5783604051635274afe760e01b8152600401610b1c9190613fb3565b60008061371d8585856139e6565b90506001600160a01b03811661373b5761373684613aed565b61375e565b846001600160a01b0316816001600160a01b03161461375e5761375e8185613b26565b6001600160a01b03851661377a5761377584613bbf565b613492565b846001600160a01b0316816001600160a01b031614613492576134928585613c88565b806001600160a01b03163b6000036137ca5780604051634c9c8ce360e01b8152600401610b1c9190613fb3565b60008051602061494583398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051613816919061487f565b600060405180830381855af49150503d8060008114613851576040519150601f19603f3d011682016040523d82523d6000602084013e613856565b606091505b5091509150612d89858383613ce0565b34156122e55760405163b398979f60e01b815260040160405180910390fd5b600061388f612793565b54600160401b900460ff16919050565b606060006138ac83613d33565b60010190506000816001600160401b038111156138cb576138cb614152565b6040519080825280601f01601f1916602001820160405280156138f5576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846138ff57509392505050565b6001600160a01b03821661395b576000604051633250574960e11b8152600401610b1c9190613fb3565b600061396983836000613485565b90506001600160a01b03811615610bb05760006040516339e3563760e11b8152600401610b1c9190613fb3565b60006001600160e01b031982166380ac58cd60e01b14806139c757506001600160e01b03198216635b5e139f60e01b145b8061093957506301ffc9a760e01b6001600160e01b0319831614610939565b6000806139f1611a9e565b905060006139fe8561320b565b90506001600160a01b03841615613a1a57613a1a818587613e09565b6001600160a01b03811615613a5a57613a37600086600080613234565b6001600160a01b0381166000908152600383016020526040902080546000190190555b6001600160a01b03861615613a8b576001600160a01b03861660009081526003830160205260409020805460010190555b600085815260028301602052604080822080546001600160a01b0319166001600160a01b038a811691821790925591518893918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a495945050505050565b6000613af7611b30565b600281018054600085815260039093016020908152604084208290556001820183559183529120019190915550565b6000613b30611b30565b90506000613b3d84610eae565b60008481526001840160209081526040808320546001600160a01b03891684529186905290912091925090818314613b97576000838152602082815260408083205485845281842081905583526001870190915290208290555b6000948552600190930160209081526040808620869055928552929092528220919091555050565b6000613bc9611b30565b6002810154909150600090613be09060019061489b565b6000848152600384016020526040812054600285018054939450909284908110613c0c57613c0c6145bf565b9060005260206000200154905080846002018381548110613c2f57613c2f6145bf565b600091825260208083209091019290925582815260038601909152604080822084905586825281205560028401805480613c6b57613c6b6148ae565b600190038181906000526020600020016000905590555050505050565b6000613c92611b30565b905060006001613ca185610eae565b613cab919061489b565b6001600160a01b0390941660009081526020838152604080832087845282528083208690559482526001909301909252502055565b606082613cf557613cf082613e5f565b611cdd565b8151158015613d0c57506001600160a01b0384163b155b15613d2c5783604051639996b31560e01b8152600401610b1c9190613fb3565b5080611cdd565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310613d725772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b8310613d9c576904ee2d6d415b85acef8160201b830492506020015b662386f26fc100008310613dba57662386f26fc10000830492506010015b6305f5e1008310613dd2576305f5e100830492506008015b6127108310613de657612710830492506004015b60648310613df8576064830492506002015b600a83106109395760010192915050565b613e14838383613e88565b610bb0576001600160a01b038316613e4257604051637e27328960e01b815260048101829052602401610b1c565b818160405163177e802f60e01b8152600401610b1c9291906145a6565b805115613e6f5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b60006001600160a01b038316158015906134925750826001600160a01b0316846001600160a01b03161480613ec25750613ec28484611969565b806134925750826001600160a01b0316613edb83611afa565b6001600160a01b031614949350505050565b600060208284031215613eff57600080fd5b5035919050565b9182526001600160a01b0316602082015260400190565b6001600160e01b03198116811461132657600080fd5b600060208284031215613f4557600080fd5b8135611cdd81613f1d565b60005b83811015613f6b578181015183820152602001613f53565b50506000910152565b60008151808452613f8c816020860160208601613f50565b601f01601f19169290920160200192915050565b602081526000611cdd6020830184613f74565b6001600160a01b0391909116815260200190565b6001600160a01b038116811461132657600080fd5b60008060408385031215613fef57600080fd5b8235613ffa81613fc7565b946020939093013593505050565b60006020828403121561401a57600080fd5b8135611cdd81613fc7565b6000806040838503121561403857600080fd5b50508035926020909101359150565b60008060006060848603121561405c57600080fd5b833561406781613fc7565b9250602084013561407781613fc7565b929592945050506040919091013590565b803561ffff8116811461409a57600080fd5b919050565b6000806000606084860312156140b457600080fd5b833592506140c460208501614088565b91506140d260408501614088565b90509250925092565b600080604083850312156140ee57600080fd5b82359150602083013561410081613fc7565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b6005811061132657634e487b7160e01b600052602160045260246000fd5b6020810161414c83614121565b91905290565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261417957600080fd5b81356001600160401b038082111561419357614193614152565b604051601f8301601f19908116603f011681019082821181831017156141bb576141bb614152565b816040528381528660208588010111156141d457600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561420757600080fd5b823561421281613fc7565b915060208301356001600160401b0381111561422d57600080fd5b61423985828601614168565b9150509250929050565b6000806000806080858703121561425957600080fd5b843593506020850135925061427060408601614088565b915061427e60608601614088565b905092959194509250565b6000806040838503121561429c57600080fd5b82356001600160401b03808211156142b357600080fd5b6142bf86838701614168565b935060208501359150808211156142d557600080fd5b5061423985828601614168565b801515811461132657600080fd5b6000806040838503121561430357600080fd5b823561430e81613fc7565b91506020830135614100816142e2565b61ffff98891681529688166020880152948716604087015292861660608601529085166080850152841660a0840152831660c083015290911660e08201526101000190565b6000806000806080858703121561437957600080fd5b843561438481613fc7565b9350602085013561439481613fc7565b92506040850135915060608501356001600160401b038111156143b657600080fd5b6143c287828801614168565b91505092959194509250565b61010081016143dc8a614121565b98815260208101979097526001600160a01b0395861660408801529390941660608601529015156080850152151560a084015263ffffffff91821660c08401521660e09091015290565b60008060006060848603121561443b57600080fd5b833561444681613fc7565b9250602084013561445681613fc7565b9150604084013561446681613fc7565b809150509250925092565b600080600080600080600060e0888a03121561448c57600080fd5b873561449781613fc7565b965060208801356001600160401b038111156144b257600080fd5b6144be8a828b01614168565b965050604088013594506060880135935060808801356144dd81613fc7565b925060a0880135915060c08801356144f4816142e2565b8091505092959891949750929550565b6000806040838503121561451757600080fd5b823561452281613fc7565b9150602083013561410081613fc7565b600181811c9082168061454657607f821691505b60208210810361456657634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561457e57600080fd5b8151611cdd816142e2565b8281526040810161459983614121565b8260208301529392505050565b6001600160a01b03929092168252602082015260400190565b634e487b7160e01b600052603260045260246000fd5b6001600160401b0391909116815260200190565b918252602082015260400190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610939576109396145f7565b600060018201614632576146326145f7565b5060010190565b9283526020830191909152604082015260600190565b6001600160a01b0393841681526020810192909252909116604082015260600190565b61ffff92831681529116602082015260400190565b60006020828403121561469957600080fd5b5051919050565b600063ffffffff8083168181036146b9576146b96145f7565b6001019392505050565b9485529215156020850152901515604084015263ffffffff908116606084015216608082015260a00190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061472290830184613f74565b9695505050505050565b60006020828403121561473e57600080fd5b8151611cdd81613f1d565b6000835161475b818460208801613f50565b83519083019061476f818360208801613f50565b01949350505050565b601f821115610bb0576000816000526020600020601f850160051c810160208610156147a15750805b601f850160051c820191505b81811015611525578281556001016147ad565b81516001600160401b038111156147d9576147d9614152565b6147ed816147e78454614532565b84614778565b602080601f831160018114614822576000841561480a5750858301515b600019600386901b1c1916600185901b178555611525565b600085815260208120601f198616915b8281101561485157888601518255948401946001909101908401614832565b508582101561486f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008251614891818460208701613f50565b9190910192915050565b81810381811115610939576109396145f7565b634e487b7160e01b600052603160045260246000fdfe6aafaf6639750382d6dc665bc6a3c73d54e2076a8739a69c860a2314032eb981c7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2c47ab59d5c41a0220b594ece6f7e87863b07f8b33579130f3a59b31d8f7b6eed189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc3ae8648b97d3fd425d26286fc6bb1d50724a93a6a5763921dd2b90405a83b4a4ade2ce8b39037f5140109f53fef47c0491427b8b785ab83d35aa2931295cb790a26469706673582212205ff1ab7ed04f3284c48eefd9c84ebe5b019c0853e20741ae588d1e84fa8d725b64736f6c63430008180033", + "linkReferences": {}, + "deployedLinkReferences": {} +} \ No newline at end of file diff --git a/ignition/deployments/chain-501/artifacts/RefactorCancellationModule#BookingTokenOperator.dbg.json b/ignition/deployments/chain-501/artifacts/RefactorCancellationModule#BookingTokenOperator.dbg.json new file mode 100644 index 0000000..19aeb90 --- /dev/null +++ b/ignition/deployments/chain-501/artifacts/RefactorCancellationModule#BookingTokenOperator.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../build-info/c929040ed782d5f1fe9b972f02b44da8.json" +} \ No newline at end of file diff --git a/ignition/deployments/chain-501/artifacts/RefactorCancellationModule#BookingTokenOperator.json b/ignition/deployments/chain-501/artifacts/RefactorCancellationModule#BookingTokenOperator.json new file mode 100644 index 0000000..e20a936 --- /dev/null +++ b/ignition/deployments/chain-501/artifacts/RefactorCancellationModule#BookingTokenOperator.json @@ -0,0 +1,90 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "BookingTokenOperator", + "sourceName": "contracts/booking-token/BookingTokenOperator.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "SafeERC20FailedOperation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "contract IERC20", + "name": "actualPaymentToken", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "expectedPaymentToken", + "type": "address" + } + ], + "name": "UnexpectedPaymentToken", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "actualPrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expectedPrice", + "type": "uint256" + } + ], + "name": "UnexpectedPrice", + "type": "error" + }, + { + "inputs": [], + "name": "NATIVE_PAYMENT", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "OFFCHAIN_PAYMENT", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x610e1d61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100a35760003560e01c806307e47316146100a857806321b87f3a146100ca578063348e06dd146100ea578063793dddac1461010a5780637adf63b71461012a578063a0f07c741461014a578063b54e72d814610168578063bfb26c0614610188578063c7bffa9614610190578063e4c22569146101b0578063fd13a43e146101d0575b600080fd5b8180156100b457600080fd5b506100c86100c33660046109e7565b6101f0565b005b8180156100d657600080fd5b506100c86100e5366004610a36565b610257565b8180156100f657600080fd5b506100c8610105366004610a36565b6103f9565b81801561011657600080fd5b506100c86101253660046109e7565b61045e565b81801561013657600080fd5b506100c8610145366004610a76565b61048e565b610152600081565b60405161015f9190610ac0565b60405180910390f35b81801561017457600080fd5b506100c8610183366004610ad4565b6106d6565b610152600181565b81801561019c57600080fd5b506100c86101ab366004610b2d565b610741565b8180156101bc57600080fd5b506100c86101cb366004610b7f565b610797565b8180156101dc57600080fd5b506100c86101eb366004610ad4565b61080b565b6040516254232760e71b81526001600160a01b03851690632a1193809061021f90869086908690600401610c93565b600060405180830381600087803b15801561023957600080fd5b505af115801561024d573d6000803e3d6000fd5b5050505050505050565b6040516358c8e84960e11b8152600481018390526000906001600160a01b0385169063b191d09290602401602060405180830381865afa15801561029f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102c39190610cad565b90506001600160a01b03811661033a57604051631c54f0f760e01b81526001600160a01b03851690631c54f0f79084906103039087908390600401610cd1565b6000604051808303818588803b15801561031c57600080fd5b505af1158015610330573d6000803e3d6000fd5b50505050506103f3565b6000196001600160a01b038216016103b157604051631c54f0f760e01b81526001600160a01b03851690631c54f0f79061037a9086908690600401610cd1565b600060405180830381600087803b15801561039457600080fd5b505af11580156103a8573d6000803e3d6000fd5b505050506103f3565b6103c56001600160a01b038216858461083d565b604051631c54f0f760e01b81526001600160a01b03851690631c54f0f79061021f9086908690600401610cd1565b50505050565b6040516317ccce3160e31b81526001600160a01b0384169063be667188906104279085908590600401610cd1565b600060405180830381600087803b15801561044157600080fd5b505af1158015610455573d6000803e3d6000fd5b50505050505050565b6040516374fe60e960e01b81526001600160a01b038516906374fe60e99061021f90869086908690600401610c93565b6040516213f74f60e21b81526004810184905260009081906001600160a01b03871690624fdd3c906024016040805180830381865afa1580156104d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f99190610cdf565b91509150838214610533576040516330cb9c4160e01b81526004810186905260248101839052604481018590526064015b60405180910390fd5b826001600160a01b0316816001600160a01b03161461057f5760405163107f801560e21b8152600481018690526001600160a01b0380831660248301528416604482015260640161052a565b6001600160a01b0381166105ee576040516396591edd60e01b8152600481018690526001600160a01b038716906396591edd9084906024016000604051808303818588803b1580156105d057600080fd5b505af11580156105e4573d6000803e3d6000fd5b50505050506106ce565b6000196001600160a01b0382160161065f576040516396591edd60e01b8152600481018690526001600160a01b038716906396591edd90602401600060405180830381600087803b15801561064257600080fd5b505af1158015610656573d6000803e3d6000fd5b505050506106ce565b6106736001600160a01b038216878461083d565b6040516396591edd60e01b8152600481018690526001600160a01b038716906396591edd90602401600060405180830381600087803b1580156106b557600080fd5b505af11580156106c9573d6000803e3d6000fd5b505050505b505050505050565b60405163f7e45f0960e01b81526001600160a01b0386169063f7e45f0990610708908790879087908790600401610d0f565b600060405180830381600087803b15801561072257600080fd5b505af1158015610736573d6000803e3d6000fd5b505050505050505050565b6040516339699c9760e21b8152600481018290526001600160a01b0383169063e5a6725c90602401600060405180830381600087803b15801561078357600080fd5b505af11580156106ce573d6000803e3d6000fd5b604051636d95934160e11b81526001600160a01b0389169063db2b2682906107cf908a908a908a908a908a908a908a90600401610d31565b600060405180830381600087803b1580156107e957600080fd5b505af11580156107fd573d6000803e3d6000fd5b505050505050505050505050565b604051630e95440960e31b81526001600160a01b038616906374aa204890610708908790879087908790600401610d0f565b6000836001600160a01b031663095ea7b38484604051602401610861929190610dce565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050905061089a8482610901565b6103f3576108f784856001600160a01b031663095ea7b38660006040516024016108c5929190610dce565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050610950565b6103f38482610950565b6000806000806020600086516020880160008a5af192503d91506000519050828015610946575081156109375780600114610946565b6000866001600160a01b03163b115b9695505050505050565b600080602060008451602086016000885af180610973576040513d6000823e3d81fd5b50506000513d9150811561098b578060011415610998565b6001600160a01b0384163b155b156103f35783604051635274afe760e01b815260040161052a9190610ac0565b6001600160a01b03811681146109cd57600080fd5b50565b803561ffff811681146109e257600080fd5b919050565b600080600080608085870312156109fd57600080fd5b8435610a08816109b8565b935060208501359250610a1d604086016109d0565b9150610a2b606086016109d0565b905092959194509250565b600080600060608486031215610a4b57600080fd5b8335610a56816109b8565b95602085013595506040909401359392505050565b80356109e2816109b8565b60008060008060808587031215610a8c57600080fd5b8435610a97816109b8565b935060208501359250604085013591506060850135610ab5816109b8565b939692955090935050565b6001600160a01b0391909116815260200190565b600080600080600060a08688031215610aec57600080fd5b8535610af7816109b8565b94506020860135935060408601359250610b13606087016109d0565b9150610b21608087016109d0565b90509295509295909350565b60008060408385031215610b4057600080fd5b8235610b4b816109b8565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b803580151581146109e257600080fd5b600080600080600080600080610100898b031215610b9c57600080fd5b8835610ba7816109b8565b97506020890135610bb7816109b8565b965060408901356001600160401b0380821115610bd357600080fd5b818b0191508b601f830112610be757600080fd5b813581811115610bf957610bf9610b59565b604051601f8201601f19908116603f01168101908382118183101715610c2157610c21610b59565b816040528281528e6020848701011115610c3a57600080fd5b82602086016020830137600060208483010152809a5050505050506060890135945060808901359350610c6f60a08a01610a6b565b925060c08901359150610c8460e08a01610b6f565b90509295985092959890939650565b92835261ffff918216602084015216604082015260600190565b600060208284031215610cbf57600080fd5b8151610cca816109b8565b9392505050565b918252602082015260400190565b60008060408385031215610cf257600080fd5b825191506020830151610d04816109b8565b809150509250929050565b938452602084019290925261ffff908116604084015216606082015260800190565b60018060a01b03881681526000602060e0602084015288518060e085015260005b81811015610d6f578a810183015185820161010001528201610d52565b506101009150600082828601015281601f19601f83011685010192505050866040830152856060830152610dae60808301866001600160a01b03169052565b8360a0830152610dc260c083018415159052565b98975050505050505050565b6001600160a01b0392909216825260208201526040019056fea264697066735822122084540fefd928b98a6276d315bd50a8a3f0275ecdfc9709a3251b9e5780a0e80b64736f6c63430008180033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100a35760003560e01c806307e47316146100a857806321b87f3a146100ca578063348e06dd146100ea578063793dddac1461010a5780637adf63b71461012a578063a0f07c741461014a578063b54e72d814610168578063bfb26c0614610188578063c7bffa9614610190578063e4c22569146101b0578063fd13a43e146101d0575b600080fd5b8180156100b457600080fd5b506100c86100c33660046109e7565b6101f0565b005b8180156100d657600080fd5b506100c86100e5366004610a36565b610257565b8180156100f657600080fd5b506100c8610105366004610a36565b6103f9565b81801561011657600080fd5b506100c86101253660046109e7565b61045e565b81801561013657600080fd5b506100c8610145366004610a76565b61048e565b610152600081565b60405161015f9190610ac0565b60405180910390f35b81801561017457600080fd5b506100c8610183366004610ad4565b6106d6565b610152600181565b81801561019c57600080fd5b506100c86101ab366004610b2d565b610741565b8180156101bc57600080fd5b506100c86101cb366004610b7f565b610797565b8180156101dc57600080fd5b506100c86101eb366004610ad4565b61080b565b6040516254232760e71b81526001600160a01b03851690632a1193809061021f90869086908690600401610c93565b600060405180830381600087803b15801561023957600080fd5b505af115801561024d573d6000803e3d6000fd5b5050505050505050565b6040516358c8e84960e11b8152600481018390526000906001600160a01b0385169063b191d09290602401602060405180830381865afa15801561029f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102c39190610cad565b90506001600160a01b03811661033a57604051631c54f0f760e01b81526001600160a01b03851690631c54f0f79084906103039087908390600401610cd1565b6000604051808303818588803b15801561031c57600080fd5b505af1158015610330573d6000803e3d6000fd5b50505050506103f3565b6000196001600160a01b038216016103b157604051631c54f0f760e01b81526001600160a01b03851690631c54f0f79061037a9086908690600401610cd1565b600060405180830381600087803b15801561039457600080fd5b505af11580156103a8573d6000803e3d6000fd5b505050506103f3565b6103c56001600160a01b038216858461083d565b604051631c54f0f760e01b81526001600160a01b03851690631c54f0f79061021f9086908690600401610cd1565b50505050565b6040516317ccce3160e31b81526001600160a01b0384169063be667188906104279085908590600401610cd1565b600060405180830381600087803b15801561044157600080fd5b505af1158015610455573d6000803e3d6000fd5b50505050505050565b6040516374fe60e960e01b81526001600160a01b038516906374fe60e99061021f90869086908690600401610c93565b6040516213f74f60e21b81526004810184905260009081906001600160a01b03871690624fdd3c906024016040805180830381865afa1580156104d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f99190610cdf565b91509150838214610533576040516330cb9c4160e01b81526004810186905260248101839052604481018590526064015b60405180910390fd5b826001600160a01b0316816001600160a01b03161461057f5760405163107f801560e21b8152600481018690526001600160a01b0380831660248301528416604482015260640161052a565b6001600160a01b0381166105ee576040516396591edd60e01b8152600481018690526001600160a01b038716906396591edd9084906024016000604051808303818588803b1580156105d057600080fd5b505af11580156105e4573d6000803e3d6000fd5b50505050506106ce565b6000196001600160a01b0382160161065f576040516396591edd60e01b8152600481018690526001600160a01b038716906396591edd90602401600060405180830381600087803b15801561064257600080fd5b505af1158015610656573d6000803e3d6000fd5b505050506106ce565b6106736001600160a01b038216878461083d565b6040516396591edd60e01b8152600481018690526001600160a01b038716906396591edd90602401600060405180830381600087803b1580156106b557600080fd5b505af11580156106c9573d6000803e3d6000fd5b505050505b505050505050565b60405163f7e45f0960e01b81526001600160a01b0386169063f7e45f0990610708908790879087908790600401610d0f565b600060405180830381600087803b15801561072257600080fd5b505af1158015610736573d6000803e3d6000fd5b505050505050505050565b6040516339699c9760e21b8152600481018290526001600160a01b0383169063e5a6725c90602401600060405180830381600087803b15801561078357600080fd5b505af11580156106ce573d6000803e3d6000fd5b604051636d95934160e11b81526001600160a01b0389169063db2b2682906107cf908a908a908a908a908a908a908a90600401610d31565b600060405180830381600087803b1580156107e957600080fd5b505af11580156107fd573d6000803e3d6000fd5b505050505050505050505050565b604051630e95440960e31b81526001600160a01b038616906374aa204890610708908790879087908790600401610d0f565b6000836001600160a01b031663095ea7b38484604051602401610861929190610dce565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050905061089a8482610901565b6103f3576108f784856001600160a01b031663095ea7b38660006040516024016108c5929190610dce565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050610950565b6103f38482610950565b6000806000806020600086516020880160008a5af192503d91506000519050828015610946575081156109375780600114610946565b6000866001600160a01b03163b115b9695505050505050565b600080602060008451602086016000885af180610973576040513d6000823e3d81fd5b50506000513d9150811561098b578060011415610998565b6001600160a01b0384163b155b156103f35783604051635274afe760e01b815260040161052a9190610ac0565b6001600160a01b03811681146109cd57600080fd5b50565b803561ffff811681146109e257600080fd5b919050565b600080600080608085870312156109fd57600080fd5b8435610a08816109b8565b935060208501359250610a1d604086016109d0565b9150610a2b606086016109d0565b905092959194509250565b600080600060608486031215610a4b57600080fd5b8335610a56816109b8565b95602085013595506040909401359392505050565b80356109e2816109b8565b60008060008060808587031215610a8c57600080fd5b8435610a97816109b8565b935060208501359250604085013591506060850135610ab5816109b8565b939692955090935050565b6001600160a01b0391909116815260200190565b600080600080600060a08688031215610aec57600080fd5b8535610af7816109b8565b94506020860135935060408601359250610b13606087016109d0565b9150610b21608087016109d0565b90509295509295909350565b60008060408385031215610b4057600080fd5b8235610b4b816109b8565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b803580151581146109e257600080fd5b600080600080600080600080610100898b031215610b9c57600080fd5b8835610ba7816109b8565b97506020890135610bb7816109b8565b965060408901356001600160401b0380821115610bd357600080fd5b818b0191508b601f830112610be757600080fd5b813581811115610bf957610bf9610b59565b604051601f8201601f19908116603f01168101908382118183101715610c2157610c21610b59565b816040528281528e6020848701011115610c3a57600080fd5b82602086016020830137600060208483010152809a5050505050506060890135945060808901359350610c6f60a08a01610a6b565b925060c08901359150610c8460e08a01610b6f565b90509295985092959890939650565b92835261ffff918216602084015216604082015260600190565b600060208284031215610cbf57600080fd5b8151610cca816109b8565b9392505050565b918252602082015260400190565b60008060408385031215610cf257600080fd5b825191506020830151610d04816109b8565b809150509250929050565b938452602084019290925261ffff908116604084015216606082015260800190565b60018060a01b03881681526000602060e0602084015288518060e085015260005b81811015610d6f578a810183015185820161010001528201610d52565b506101009150600082828601015281601f19601f83011685010192505050866040830152856060830152610dae60808301866001600160a01b03169052565b8360a0830152610dc260c083018415159052565b98975050505050505050565b6001600160a01b0392909216825260208201526040019056fea264697066735822122084540fefd928b98a6276d315bd50a8a3f0275ecdfc9709a3251b9e5780a0e80b64736f6c63430008180033", + "linkReferences": {}, + "deployedLinkReferences": {} +} \ No newline at end of file diff --git a/ignition/deployments/chain-501/artifacts/RefactorCancellationModule#BookingTokenProxy.dbg.json b/ignition/deployments/chain-501/artifacts/RefactorCancellationModule#BookingTokenProxy.dbg.json new file mode 100644 index 0000000..19aeb90 --- /dev/null +++ b/ignition/deployments/chain-501/artifacts/RefactorCancellationModule#BookingTokenProxy.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../build-info/c929040ed782d5f1fe9b972f02b44da8.json" +} \ No newline at end of file diff --git a/ignition/deployments/chain-501/artifacts/RefactorCancellationModule#BookingTokenProxy.json b/ignition/deployments/chain-501/artifacts/RefactorCancellationModule#BookingTokenProxy.json new file mode 100644 index 0000000..aa4dd20 --- /dev/null +++ b/ignition/deployments/chain-501/artifacts/RefactorCancellationModule#BookingTokenProxy.json @@ -0,0 +1,2036 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "BookingToken", + "sourceName": "contracts/booking-token/BookingToken.sol", + "abi": [ + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + } + ], + "name": "AddressEmptyCode", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "CancellationProposalExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "ERC1967InvalidImplementation", + "type": "error" + }, + { + "inputs": [], + "name": "ERC1967NonPayable", + "type": "error" + }, + { + "inputs": [], + "name": "ERC721EnumerableForbiddenBatchMint", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC721IncorrectOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721InsufficientApproval", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC721InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "ERC721InvalidOperator", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC721InvalidOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC721InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC721InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721NonexistentToken", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "ERC721OutOfBoundsIndex", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "expirationTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minExpirationTimestampDiff", + "type": "uint256" + } + ], + "name": "ExpirationTimestampTooSoon", + "type": "error" + }, + { + "inputs": [], + "name": "FailedCall", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reservationPrice", + "type": "uint256" + } + ], + "name": "IncorrectPrice", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "existing", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "checked", + "type": "uint256" + } + ], + "name": "IncorrectRefundAmount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "paymentToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "allowance", + "type": "uint256" + } + ], + "name": "InsufficientAllowance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "enum CancellationProposalStatus", + "name": "status", + "type": "uint8" + } + ], + "name": "InvalidCancellationProposalStatus", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "enum BookingToken.BookingStatus", + "name": "status", + "type": "uint8" + } + ], + "name": "InvalidTokenStatus", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "NotCMAccount", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "inputs": [], + "name": "NotOwnerOrSupplier", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "OnlyCurrentProposerCanWithdrawCancellation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "OnlySupplierCanFinalizeCancellation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "OwnerNotAcceptedCancellation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ProposerCanNotRejectCancellation", + "type": "error" + }, + { + "inputs": [], + "name": "ReentrancyGuardReentrantCall", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expirationTimestamp", + "type": "uint256" + } + ], + "name": "ReservationExpired", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "reservedFor", + "type": "address" + }, + { + "internalType": "address", + "name": "buyer", + "type": "address" + } + ], + "name": "ReservationMismatch", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "SafeERC20FailedOperation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "supplier", + "type": "address" + } + ], + "name": "SupplierIsNotOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "reservedFor", + "type": "address" + } + ], + "name": "TokenIsReserved", + "type": "error" + }, + { + "inputs": [], + "name": "UUPSUnauthorizedCallContext", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "slot", + "type": "bytes32" + } + ], + "name": "UUPSUnsupportedProxiableUUID", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "UnexpectedNativePayment", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "offchainPaymentCurrency", + "type": "uint256" + } + ], + "name": "UnexpectedOffchainPaymentCurrency", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_fromTokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_toTokenId", + "type": "uint256" + } + ], + "name": "BatchMetadataUpdate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "CancellationFinalized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "initialProposer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "currentProposer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "refundAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bool", + "name": "ownerAccepted", + "type": "bool" + }, + { + "indexed": false, + "internalType": "bool", + "name": "supplierAccepted", + "type": "bool" + }, + { + "indexed": false, + "internalType": "uint32", + "name": "timesCountered", + "type": "uint32" + }, + { + "indexed": false, + "internalType": "uint32", + "name": "timesRejected", + "type": "uint32" + } + ], + "name": "CancellationPending", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "cancellationReason", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "cancellationReasonVersion", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "rejectionReason", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "rejectionVersion", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "counterReason", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "counterVersion", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "withdrawalReason", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "withdrawalVersion", + "type": "uint16" + } + ], + "name": "CancellationReasons", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "rejectionReason", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "rejectionVersion", + "type": "uint16" + } + ], + "name": "CancellationRejected", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "withdrawalReason", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "withdrawalVersion", + "type": "uint16" + } + ], + "name": "CancellationWithdrawn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "MetadataUpdate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "buyer", + "type": "address" + } + ], + "name": "TokenBought", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "TokenReservationExpired", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "reservedFor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "supplier", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "expirationTimestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "price", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "contract IERC20", + "name": "paymentToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "offchainPaymentCurrency", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bool", + "name": "cancellable", + "type": "bool" + } + ], + "name": "TokenReserved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MIN_EXPIRATION_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "NATIVE_PAYMENT", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "OFFCHAIN_PAYMENT", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UPGRADER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UPGRADE_INTERFACE_VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "refundAmount", + "type": "uint256" + } + ], + "name": "acceptCancellation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "buyReservedToken", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "refundAmount", + "type": "uint256" + }, + { + "internalType": "uint16", + "name": "counterReason", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "counterReasonVersion", + "type": "uint16" + } + ], + "name": "counterCancellation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "checkRefundAmount", + "type": "uint256" + } + ], + "name": "finalizeCancellation", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getBookingStatus", + "outputs": [ + { + "internalType": "enum BookingToken.BookingStatus", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getCancellationProposal", + "outputs": [ + { + "internalType": "enum CancellationProposalStatus", + "name": "", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "refundAmount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "initialProposer", + "type": "address" + }, + { + "internalType": "address", + "name": "currentProposer", + "type": "address" + }, + { + "internalType": "bool", + "name": "ownerAccepted", + "type": "bool" + }, + { + "internalType": "bool", + "name": "supplierAccepted", + "type": "bool" + }, + { + "internalType": "uint32", + "name": "timesCountered", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "timesRejected", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getCancellationReasons", + "outputs": [ + { + "internalType": "uint16", + "name": "cancellationReason", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "cancellationVersion", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "rejectionReason", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "rejectionVersion", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "counterReason", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "counterVersion", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "withdrawalReason", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "withdrawalVersion", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getManagerAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getMinExpirationTimestampDiff", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getReservationPaymentToken", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "paymentToken", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getReservationPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + }, + { + "internalType": "contract IERC20", + "name": "paymentToken", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "manager", + "type": "address" + }, + { + "internalType": "address", + "name": "defaultAdmin", + "type": "address" + }, + { + "internalType": "address", + "name": "upgrader", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "refundAmount", + "type": "uint256" + }, + { + "internalType": "uint16", + "name": "cancellationReason", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "cancellationReasonVersion", + "type": "uint16" + } + ], + "name": "initiateCancellation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isCMAccount", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "isCancellable", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "recordExpiration", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "newName", + "type": "string" + }, + { + "internalType": "string", + "name": "newSymbol", + "type": "string" + } + ], + "name": "reinitializeV2", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint16", + "name": "rejectionReason", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "rejectionReasonVersion", + "type": "uint16" + } + ], + "name": "rejectCancellation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "callerConfirmation", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "reservedFor", + "type": "address" + }, + { + "internalType": "string", + "name": "uri", + "type": "string" + }, + { + "internalType": "uint256", + "name": "expirationTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + }, + { + "internalType": "contract IERC20", + "name": "paymentToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "offchainPaymentCurrency", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "cancellable", + "type": "bool" + } + ], + "name": "safeMintWithReservation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "manager", + "type": "address" + } + ], + "name": "setManagerAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "minExpirationTimestampDiff", + "type": "uint256" + } + ], + "name": "setMinExpirationTimestampDiff", + "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": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "version", + "outputs": [ + { + "internalType": "uint16", + "name": "major", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "minor", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "patch", + "type": "uint16" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint16", + "name": "withdrawalReason", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "withdrawalReasonVersion", + "type": "uint16" + } + ], + "name": "withdrawCancellation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60a06040523060805234801561001457600080fd5b506080516149da61003e6000396000818161224b0152818161227401526123be01526149da6000f3fe60806040526004361061024e5760003560e01c80624fdd3c1461025357806301ffc9a71461028a57806306fdde03146102ba578063081812fc146102dc578063095ea7b3146103095780630e75c1a81461032b57806312b357b51461034e57806318160ddd1461036e5780631c54f0f71461038357806323b872dd14610396578063248a9ca3146103b65780632a119380146103d65780632d3a6329146103f65780632edf5e2c146104165780632f2ff15d146104385780632f745c591461045857806336568abe146104785780633c15b31c1461049857806341431908146104c557806342842e0e146104e55780634f1ef286146105055780634f6ccce714610518578063516a82b81461053857806352d1902d1461055857806354fd4d501461056d5780636352211e1461059a57806370a08231146105ba57806374aa2048146105da57806374fe60e9146105fa57806391d148541461061a57806391da124c1461063a57806395d89b411461065a57806396591edd1461066f578063a0f07c7414610682578063a217fddf14610697578063a22cb465146106ac578063a9bc55a2146106cc578063ad3cb1cc14610700578063b191d09214610731578063b88d4fde14610751578063bb520b4714610771578063be667188146107a5578063bfb26c06146107c5578063c0c53b8b146107da578063c162d7da146107fa578063c87b56dd1461080f578063d547741f1461082f578063db2b26821461084f578063e5a6725c1461086f578063e985e9c51461088f578063f72c0d8b146108af578063f7e45f09146108d1575b600080fd5b34801561025f57600080fd5b5061027361026e366004613eed565b6108f1565b604051610281929190613f06565b60405180910390f35b34801561029657600080fd5b506102aa6102a5366004613f33565b61092e565b6040519015158152602001610281565b3480156102c657600080fd5b506102cf61093f565b6040516102819190613fa0565b3480156102e857600080fd5b506102fc6102f7366004613eed565b6109e0565b6040516102819190613fb3565b34801561031557600080fd5b50610329610324366004613fdc565b6109f5565b005b34801561033757600080fd5b50610340610a04565b604051908152602001610281565b34801561035a57600080fd5b506102aa610369366004614008565b610a19565b34801561037a57600080fd5b50610340610a8f565b610329610391366004614025565b610a9a565b3480156103a257600080fd5b506103296103b1366004614047565b610b9c565b3480156103c257600080fd5b506103406103d1366004613eed565b610bb5565b3480156103e257600080fd5b506103296103f136600461409f565b610bd5565b34801561040257600080fd5b506102aa610411366004613eed565b610c8a565b34801561042257600080fd5b5061034060008051602061496583398151915281565b34801561044457600080fd5b506103296104533660046140db565b610cb0565b34801561046457600080fd5b50610340610473366004613fdc565b610cd2565b34801561048457600080fd5b506103296104933660046140db565b610d34565b3480156104a457600080fd5b506104b86104b3366004613eed565b610d67565b604051610281919061413f565b3480156104d157600080fd5b506103296104e0366004614008565b610d8a565b3480156104f157600080fd5b50610329610500366004614047565b610dc2565b6103296105133660046141f4565b610ddd565b34801561052457600080fd5b50610340610533366004613eed565b610df8565b34801561054457600080fd5b50610329610553366004613eed565b610e59565b34801561056457600080fd5b50610340610e86565b34801561057957600080fd5b50604080516001815260006020820181905291810191909152606001610281565b3480156105a657600080fd5b506102fc6105b5366004613eed565b610ea3565b3480156105c657600080fd5b506103406105d5366004614008565b610eae565b3480156105e657600080fd5b506103296105f5366004614243565b610f06565b34801561060657600080fd5b5061032961061536600461409f565b610fb3565b34801561062657600080fd5b506102aa6106353660046140db565b61105f565b34801561064657600080fd5b50610329610655366004614289565b611095565b34801561066657600080fd5b506102cf611152565b61032961067d366004613eed565b61116f565b34801561068e57600080fd5b506102fc600081565b3480156106a357600080fd5b50610340600081565b3480156106b857600080fd5b506103296106c73660046142f0565b611329565b3480156106d857600080fd5b506106ec6106e7366004613eed565b611334565b60405161028198979695949392919061431e565b34801561070c57600080fd5b506102cf604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561073d57600080fd5b506102fc61074c366004613eed565b6113ba565b34801561075d57600080fd5b5061032961076c366004614363565b6113e6565b34801561077d57600080fd5b5061079161078c366004613eed565b6113fe565b6040516102819897969594939291906143ce565b3480156107b157600080fd5b506103296107c0366004614025565b61147a565b3480156107d157600080fd5b506102fc600181565b3480156107e657600080fd5b506103296107f5366004614426565b61152d565b34801561080657600080fd5b506102fc6116cc565b34801561081b57600080fd5b506102cf61082a366004613eed565b6116e7565b34801561083b57600080fd5b5061032961084a3660046140db565b6116f2565b34801561085b57600080fd5b5061032961086a366004614471565b61170e565b34801561087b57600080fd5b5061032961088a366004613eed565b611861565b34801561089b57600080fd5b506102aa6108aa366004614504565b611969565b3480156108bb57600080fd5b5061034060008051602061492583398151915281565b3480156108dd57600080fd5b506103296108ec366004614243565b6119a8565b60008060006108fe611a55565b6000948552600390810160205260409094209384015460049094015493946001600160a01b039094169392505050565b600061093982611a79565b92915050565b6060600061094b611a9e565b905080600001805461095c90614532565b80601f016020809104026020016040519081016040528092919081815260200182805461098890614532565b80156109d55780601f106109aa576101008083540402835291602001916109d5565b820191906000526020600020905b8154815290600101906020018083116109b857829003601f168201915b505050505091505090565b60006109eb82611ac2565b5061093982611afa565b610a00828233611b23565b5050565b600080610a0f611a55565b6002015492915050565b6000610a236116cc565b6001600160a01b03166312b357b5836040518263ffffffff1660e01b8152600401610a4e9190613fb3565b602060405180830381865afa158015610a6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610939919061456c565b600080610a0f611b30565b33610aa481611b54565b6000610aaf84611ac2565b90506000610abb611a55565b905060036000868152600480840160205260409091205460ff1690811115610ae557610ae561410b565b14610b25576000858152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c92889260ff9091169101614589565b60405180910390fd5b60008581526003820160205260408120600101546001600160a01b031690610b4e828888611b7c565b600088815260038501602090815260408083206004908101548189019093529220805460ff19169092179091559091506001600160a01b0316610b92818387611ce4565b5050505050505050565b610ba581611d92565b610bb0838383611f46565b505050565b600080610bc0611fb7565b60009384526020525050604090206001015490565b33610bdf81611b54565b6000610bea85611ac2565b90506000610bf6611a55565b905060036000878152600480840160205260409091205460ff1690811115610c2057610c2061410b565b14610c57576000868152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c92899260ff9091169101614589565b60008681526003820160205260409020600101546001600160a01b0316610c818382898989611fdb565b50505050505050565b600080610c95611a55565b60009384526003016020525050604090206006015460ff1690565b610cb982610bb5565b610cc28161211d565b610ccc8383612127565b50505050565b600080610cdd611b30565b9050610ce884610eae565b8310610d0b57838360405163295f44f760e21b8152600401610b1c9291906145a6565b6001600160a01b0384166000908152602091825260408082208583529092522054905092915050565b6001600160a01b0381163314610d5d5760405163334bd91960e11b815260040160405180910390fd5b610bb082826121c8565b600080610d72611a55565b60009384526004016020525050604090205460ff1690565b6000610d958161211d565b6000610d9f611a55565b80546001600160a01b0319166001600160a01b0394909416939093179092555050565b610bb0838383604051806020016040528060008152506113e6565b610de5612240565b610dee826122e7565b610a0082826122ff565b600080610e03611b30565b9050610e0d610a8f565b8310610e315760008360405163295f44f760e21b8152600401610b1c9291906145a6565b806002018381548110610e4657610e466145bf565b9060005260206000200154915050919050565b600080516020614965833981519152610e718161211d565b6000610e7b611a55565b600201929092555050565b6000610e906123b3565b5060008051602061494583398151915290565b600061093982611ac2565b600080610eb9611a9e565b90506001600160a01b038316610ee55760006040516322718ad960e21b8152600401610b1c9190613fb3565b6001600160a01b039092166000908152600390920160205250604090205490565b33610f1081611b54565b6000610f1b86611ac2565b90506000610f27611a55565b905060036000888152600480840160205260409091205460ff1690811115610f5157610f5161410b565b14610f88576000878152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c928a9260ff9091169101614589565b60008781526003820160205260409020600101546001600160a01b0316610b9283828a8a8a8a6123fc565b33610fbd81611b54565b6000610fc885611ac2565b90506000610fd4611a55565b905060036000878152600480840160205260409091205460ff1690811115610ffe57610ffe61410b565b14611035576000868152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c92899260ff9091169101614589565b60008681526003820160205260409020600101546001600160a01b0316610c818382898989612635565b60008061106a611fb7565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b600260006110a1612793565b8054909150600160401b900460ff16806110c8575080546001600160401b03808416911610155b156110e65760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160481b0319166001600160401b03831617600160401b17815560006111108161211d565b61111a85856127b7565b50805460ff60401b191681556040516000805160206148e5833981519152906111449084906145d5565b60405180910390a150505050565b6060600061115e611a9e565b905080600101805461095c90614532565b6111776127c9565b3361118181611b54565b600061118b611a55565b600084815260038083016020908152604092839020835160e08101855281546001600160a01b03908116808352600184015482169483019490945260028301549582019590955292810154606084015260048101549093166080830152600583015460a083015260069092015460ff16151560c08201529192503314611238578051604051632663a9c560e11b81526001600160a01b039091166004820152336024820152604401610b1c565b80604001514211156112655783816040015160405163293d73b760e11b8152600401610b1c9291906145e9565b600061127085610ea3565b905081602001516001600160a01b0316816001600160a01b0316146112af57602082015160405163103d145960e31b8152610b1c918791600401613f06565b6112be826020015133876127ff565b6112d5826080015183606001518460200151611ce4565b6000858152600484016020526040808220805460ff1916600317905551339187917fa751fb02c318279a22135a408663ae08ea45eafa950a4351c14ae543cbb950409190a35050505061132661289b565b50565b610a003383836128ac565b600080600080600080600080600061134a612951565b60009a8b5260205250506040909720600281015460039091015461ffff600160c81b830481169a600160d81b840482169a50600160e81b90930481169850808216975062010000820481169650600160201b820481169550600160301b820481169450600160401b909104169150565b6000806113c5611a55565b6000938452600301602052505060409020600401546001600160a01b031690565b6113f1848484610b9c565b610ccc3385858585612975565b6000806000806000806000806000611414612951565b60009a8b52602052505060409097206002810154815460019092015460ff600160c01b80840482169c949b506001600160a01b038084169b5084169950820481169750600160c81b820416955063ffffffff600160a01b91829004811695509104169150565b3361148481611b54565b600061148f84611ac2565b9050600061149b611a55565b905060036000868152600480840160205260409091205460ff16908111156114c5576114c561410b565b146114fc576000858152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c92889260ff9091169101614589565b60008581526003820160205260409020600101546001600160a01b031661152583828888612a8c565b505050505050565b6000611537612793565b805490915060ff600160401b82041615906001600160401b031660008115801561155e5750825b90506000826001600160401b0316600114801561157a5750303b155b905081158015611588575080155b156115a65760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b031916600117855583156115cf57845460ff60401b1916600160401b1785555b6116196040518060400160405280600c81526020016b2137b7b5b4b733aa37b5b2b760a11b815250604051806040016040528060048152602001630545249560e41b8152506127b7565b611621612c6a565b611629612c6a565b611631612c6a565b611639612c6a565b611644600088612127565b5061165d60008051602061492583398151915287612127565b506000611668611a55565b80546001600160a01b0319166001600160a01b038b16178155603c600290910155508315610b9257845460ff60401b191685556040516000805160206148e5833981519152906116ba906001906145d5565b60405180910390a15050505050505050565b6000806116d7611a55565b546001600160a01b031692915050565b606061093982612c72565b6116fb82610bb5565b6117048161211d565b610ccc83836121c8565b3361171881611b54565b61172188611b54565b600061172b611a55565b600281015490915061173d814261460d565b8811611760578781604051630999f7d760e41b8152600401610b1c9291906145e9565b60008511801561177a57506001600160a01b038616600114155b1561179b57604051638fe757e760e01b815260048101869052602401610b1c565b600182018054600091826117ae83614620565b9190505590506117be3382612d92565b6117c8818b612dac565b6117d8818c338c8c8c8c8c612e0a565b6000818152600484016020908152604091829020805460ff1916600117905581518b81529081018a90526001600160a01b0389811682840152606082018990528715156080830152915133928e169184917f1424af4f4cb40d8a1a2d00b2324cb122ba73eac426f98b62c33ff31ca045f0679160a0908290030190a45050505050505050505050565b600061186b611a55565b6000838152600382016020908152604080832060048501909252909120549192509060ff1660028160048111156118a4576118a461410b565b14806118c1575060038160048111156118bf576118bf61410b565b145b806118dd575060048160048111156118db576118db61410b565b145b156118ff57838160405163e4e3b53b60e01b8152600401610b1c929190614589565b8160020154421115611940576000848152600484016020526040808220805460ff1916600217905551859160008051602061490583398151915291a2610ccc565b815460405163d4cde2af60e01b8152610b1c9186916001600160a01b0390911690600401613f06565b600080611974611a9e565b6001600160a01b03948516600090815260059190910160209081526040808320959096168252939093525050205460ff1690565b336119b281611b54565b60006119bd86611ac2565b905060006119c9611a55565b905060036000888152600480840160205260409091205460ff16908111156119f3576119f361410b565b14611a2a576000878152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c928a9260ff9091169101614589565b60008781526003820160205260409020600101546001600160a01b0316610b9283828a8a8a8a612edc565b7f9db9d405bf15683ce835607b1f0b423dc1484d44bb9d5af64a483fa4afd8290090565b60006001600160e01b03198216637965db0b60e01b14806109395750610939826131e6565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930090565b600080611ace8361320b565b90506001600160a01b03811661093957604051637e27328960e01b815260048101849052602401610b1c565b600080611b05611a9e565b6000938452600401602052505060409020546001600160a01b031690565b610bb08383836001613234565b7f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed0090565b611b5d81610a19565b6113265780604051638014575360e01b8152600401610b1c9190613fb3565b6000336001600160a01b03851614611baa57604051636c83fb1b60e01b815260048101849052602401610b1c565b6000611bb4612951565b600085815260209190915260409020905060016002820154600160c01b900460ff166004811115611be757611be761410b565b14611c1a57838160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b80548314611c4157805460405163cc45283760e01b8152610b1c9186918690600401614639565b6001810154600160c01b900460ff16611c705760405163c84052f960e01b815260048101859052602401610b1c565b6001810154600160c81b900460ff16611c995760018101805460ff60c81b1916600160c81b1790555b60028101805460ff60c01b1916600160c21b17905560405184907f17c3690813e5ff9135b87fd91848109978b23db8e471498d18886560da7f286790600090a25490505b9392505050565b6001600160a01b038316611d2957813414611d16573482604051630145611560e21b8152600401610b1c9291906145e9565b610bb06001600160a01b0382163461333e565b6000196001600160a01b03841601611d5c573415610bb0576040516347d6729960e01b8152346004820152602401610b1c565b3415611d7d576040516347d6729960e01b8152346004820152602401610b1c565b610bb06001600160a01b0384163383856133d7565b6000611d9c611a55565b600083815260048201602052604081205491925060ff9091169080611dc085613431565b90925090506001826004811115611dd957611dd961410b565b03611e3a576000611de986611ac2565b60008781526003870160205260409020600101549091506001600160a01b039081169083163314611e2857611e2382828960636001612635565b611e37565b611e3782828960636001611fdb565b50505b6003836004811115611e4e57611e4e61410b565b1480611e6b57506002836004811115611e6957611e6961410b565b145b80611e8757506000836004811115611e8557611e8561410b565b145b15611e93575050505050565b6004836004811115611ea757611ea761410b565b03611ec957848360405163e4e3b53b60e01b8152600401610b1c929190614589565b600085815260038501602052604090206002810154421115611f1d576000868152600486016020526040808220805460ff1916600217905551879160008051602061490583398151915291a2505050505050565b805460405163d4cde2af60e01b8152610b1c9188916001600160a01b0390911690600401613f06565b6001600160a01b038216611f70576000604051633250574960e11b8152600401610b1c9190613fb3565b6000611f7d838333613485565b9050836001600160a01b0316816001600160a01b031614610ccc578382826040516364283d7b60e01b8152600401610b1c9392919061464f565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b8484611fe7828261349a565b6000611ff1612951565b600087815260209190915260409020905060016002820154600160c01b900460ff1660048111156120245761202461410b565b1461205757858160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b60028101546001600160a01b0316331461208757604051631186fdbd60e31b815260048101879052602401610b1c565b6003808201805461ffff878116600160401b0261ffff60401b19918a16600160301b029190911663ffffffff60301b199092169190911717905560028201805460ff60c01b1916600160c01b830217905550857f48e256ce3da490e3bbba80f056bb54ec3d7264f8ad7d152b77bf8c2eca3db5a5868660405161210b929190614672565b60405180910390a25050505050505050565b61132681336134da565b600080612132611fb7565b905061213e848461105f565b6121be576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556121743390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610939565b6000915050610939565b6000806121d3611fb7565b90506121df848461105f565b156121be576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610939565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806122c757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166122bb600080516020614945833981519152546001600160a01b031690565b6001600160a01b031614155b156122e55760405163703e46dd60e11b815260040160405180910390fd5b565b600080516020614925833981519152610a008161211d565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612359575060408051601f3d908101601f1916820190925261235691810190614687565b60015b6123785781604051634c9c8ce360e01b8152600401610b1c9190613fb3565b60008051602061494583398151915281146123a957604051632a87526960e21b815260048101829052602401610b1c565b610bb08383613505565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146122e55760405163703e46dd60e11b815260040160405180910390fd5b8585612408828261349a565b6000612412612951565b600088815260209190915260409020905060016002820154600160c01b900460ff1660048111156124455761244561410b565b1461247857868160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b858155600281018054336001600160a01b0319909116811790915560018201805461ffff60c01b19166001600160a01b038c81168414600160c01b0260ff60c81b191691909117908b16909214600160c81b029190911780825560038301805465ffffffff000019166201000061ffff8a81169190910261ffff60201b191691909117600160201b91891691909102179055600160a01b900463ffffffff16906014612523836146a0565b82546101009290920a63ffffffff8181021990931691831602179091556002830154600184015484546040516001600160a01b0380851696508316948d946000805160206148c5833981519152946125a39493600160c01b820460ff90811694600160c81b840490911693600160a01b93849004821693900416906146c3565b60405180910390a4600281015460038201546040518992600080516020614985833981519152926126229261ffff600160c81b8404811693600160d81b8104821693600160e81b90910482169281831692620100008304811692600160201b8104821692600160301b8204831692600160401b9092049091169061431e565b60405180910390a2505050505050505050565b8484612641828261349a565b600061264b612951565b600087815260209190915260409020905060016002820154600160c01b900460ff16600481111561267e5761267e61410b565b146126b157858160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b60028101546001600160a01b031633036126e157604051633060d8f760e21b815260048101879052602401610b1c565b60028101805460038301805461ffff88811661ffff19909216919091179091558716600160e81b0260ff60c01b191666ffff00000000ff60c01b1990911617600160c11b17808255600160a01b900463ffffffff16906014612742836146a0565b91906101000a81548163ffffffff021916908363ffffffff16021790555050857fab78ba855f2fdb28beb212a9b3f41a33cda034729848cd452f0cc96528c23a80868660405161210b929190614672565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b6127bf61355b565b610a008282613580565b60006127d36135ae565b8054909150600119016127f957604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b6001600160a01b038216612829576000604051633250574960e11b8152600401610b1c9190613fb3565b600061283783836000613485565b90506001600160a01b03811661286357604051637e27328960e01b815260048101839052602401610b1c565b836001600160a01b0316816001600160a01b031614610ccc578382826040516364283d7b60e01b8152600401610b1c9392919061464f565b60006128a56135ae565b6001905550565b60006128b6611a9e565b90506001600160a01b0383166128e15782604051630b61174360e31b8152600401610b1c9190613fb3565b6001600160a01b038481166000818152600584016020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b7f0b8fb32ffc7043fda9e0ee2bcb4236acf95ab448752c73eff6cc7f2640ff850090565b6001600160a01b0383163b15612a8557604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906129b79088908890879087906004016146ef565b6020604051808303816000875af19250505080156129f2575060408051601f3d908101601f191682019092526129ef9181019061472c565b60015b612a52573d808015612a20576040519150601f19603f3d011682016040523d82523d6000602084013e612a25565b606091505b508051600003612a4a5783604051633250574960e11b8152600401610b1c9190613fb3565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b146115255783604051633250574960e11b8152600401610b1c9190613fb3565b5050505050565b8383612a98828261349a565b6000612aa2612951565b600086815260209190915260409020905060016002820154600160c01b900460ff166004811115612ad557612ad561410b565b14612b0857848160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b80548414612b2f57805460405163cc45283760e01b8152610b1c9187918790600401614639565b6001600160a01b0387163303612b595760018101805460ff60c01b1916600160c01b179055612b6f565b60018101805460ff60c81b1916600160c81b1790555b6002810154600182015482546040516001600160a01b0380851694908416938a936000805160206148c583398151915293612bda93919260ff600160c01b8204811693600160c81b83049091169263ffffffff600160a01b93849004811693909204909116906146c3565b60405180910390a460028101546003820154604051879260008051602061498583398151915292612c599261ffff600160c81b8404811693600160d81b8104821693600160e81b90910482169281831692620100008304811692600160201b8104821692600160301b8204831692600160401b9092049091169061431e565b60405180910390a250505050505050565b6122e561355b565b60606000612c7e6135d2565b9050612c8983611ac2565b5060008381526020829052604081208054612ca390614532565b80601f0160208091040260200160405190810160405280929190818152602001828054612ccf90614532565b8015612d1c5780601f10612cf157610100808354040283529160200191612d1c565b820191906000526020600020905b815481529060010190602001808311612cff57829003601f168201915b505050505090506000612d3a60408051602081019091526000815290565b90508051600003612d4d57509392505050565b815115612d80578082604051602001612d67929190614749565b6040516020818303038152906040529350505050919050565b612d89856135f6565b95945050505050565b610a0082826040518060200160405280600081525061366a565b6000612db66135d2565b6000848152602082905260409020909150612dd183826147c0565b506040518381527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a1505050565b6000612e14611a55565b6040805160e0810182526001600160a01b039a8b168152988a166020808b019182528a8301998a5260608b01988952968b1660808b0190815260a08b0196875294151560c08b0190815260009c8d5260039384019097529a20975188546001600160a01b0319908116918b1691909117895599516001890180548c16918b169190911790559551600288015550925193850193909355905160048401805490961694169390931790935591516005830155516006909101805460ff1916911515919091179055565b8585612ee8828261349a565b6000612ef2612951565b600088815260209190915260409020905060046002820154600160c01b900460ff166004811115612f2557612f2561410b565b1480612f50575060016002820154600160c01b900460ff166004811115612f4e57612f4e61410b565b145b15612f8357868160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b60006002820154600160c01b900460ff166004811115612fa557612fa561410b565b03612fbf576001810180546001600160a01b031916331790555b338160020160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550858160000181905550886001600160a01b0316336001600160a01b0316148160010160186101000a81548160ff021916908315150217905550876001600160a01b0316336001600160a01b0316148160010160196101000a81548160ff021916908315150217905550848160020160196101000a81548161ffff021916908361ffff1602179055508381600201601b6101000a81548161ffff021916908361ffff160217905550600081600201601d6101000a81548161ffff021916908361ffff16021790555060008160030160006101000a81548161ffff021916908361ffff16021790555060008160030160026101000a81548161ffff021916908361ffff16021790555060008160030160046101000a81548161ffff021916908361ffff16021790555060008160030160066101000a81548161ffff021916908361ffff16021790555060008160030160086101000a81548161ffff021916908361ffff16021790555060018160020160186101000a81548160ff021916908360048111156131765761317661410b565b02179055506002810154600182015482546040516001600160a01b0380851694908416938c936000805160206148c5833981519152936125a393919260ff600160c01b8204811693600160c81b83049091169263ffffffff600160a01b93849004811693909204909116906146c3565b60006001600160e01b03198216632483248360e11b1480610939575061093982613682565b600080613216611a9e565b6000938452600201602052505060409020546001600160a01b031690565b600061323e611a9e565b9050818061325457506001600160a01b03831615155b1561330d57600061326485611ac2565b90506001600160a01b038416158015906132905750836001600160a01b0316816001600160a01b031614155b80156132a357506132a18185611969565b155b156132c3578360405163a9fbf51f60e01b8152600401610b1c9190613fb3565b821561330b5784866001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b600093845260040160205250506040902080546001600160a01b0319166001600160a01b0392909216919091179055565b8047101561336357478160405163cf47918160e01b8152600401610b1c9291906145e9565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146133b0576040519150601f19603f3d011682016040523d82523d6000602084013e6133b5565b606091505b5050905080610bb05760405163d6bda27560e01b815260040160405180910390fd5b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ccc9085906136a7565b60008061343c612951565b60008481526020919091526040902060020154600160c01b900460ff16613461612951565b600094855260205260409093206002015492936001600160a01b0390931692915050565b600061349284848461370f565b949350505050565b336001600160a01b038316148015906134bc5750336001600160a01b03821614155b15610a0057604051634793d28160e01b815260040160405180910390fd5b6134e4828261105f565b610a0057808260405163e2517d3f60e01b8152600401610b1c9291906145a6565b61350e8261379d565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561355357610bb082826137f9565b610a00613866565b613563613885565b6122e557604051631afcd79f60e31b815260040160405180910390fd5b61358861355b565b6000613592611a9e565b90508061359f84826147c0565b5060018101610ccc83826147c0565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b7f0542a41881ee128a365a727b282c86fa859579490b9bb45aab8503648c8e790090565b606061360182611ac2565b50600061361960408051602081019091526000815290565b905060008151116136395760405180602001604052806000815250611cdd565b806136438461389f565b604051602001613654929190614749565b6040516020818303038152906040529392505050565b6136748383613931565b610bb0336000858585612975565b60006001600160e01b0319821663780e9d6360e01b1480610939575061093982613996565b600080602060008451602086016000885af1806136ca576040513d6000823e3d81fd5b50506000513d915081156136e25780600114156136ef565b6001600160a01b0384163b155b15610ccc5783604051635274afe760e01b8152600401610b1c9190613fb3565b60008061371d8585856139e6565b90506001600160a01b03811661373b5761373684613aed565b61375e565b846001600160a01b0316816001600160a01b03161461375e5761375e8185613b26565b6001600160a01b03851661377a5761377584613bbf565b613492565b846001600160a01b0316816001600160a01b031614613492576134928585613c88565b806001600160a01b03163b6000036137ca5780604051634c9c8ce360e01b8152600401610b1c9190613fb3565b60008051602061494583398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051613816919061487f565b600060405180830381855af49150503d8060008114613851576040519150601f19603f3d011682016040523d82523d6000602084013e613856565b606091505b5091509150612d89858383613ce0565b34156122e55760405163b398979f60e01b815260040160405180910390fd5b600061388f612793565b54600160401b900460ff16919050565b606060006138ac83613d33565b60010190506000816001600160401b038111156138cb576138cb614152565b6040519080825280601f01601f1916602001820160405280156138f5576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846138ff57509392505050565b6001600160a01b03821661395b576000604051633250574960e11b8152600401610b1c9190613fb3565b600061396983836000613485565b90506001600160a01b03811615610bb05760006040516339e3563760e11b8152600401610b1c9190613fb3565b60006001600160e01b031982166380ac58cd60e01b14806139c757506001600160e01b03198216635b5e139f60e01b145b8061093957506301ffc9a760e01b6001600160e01b0319831614610939565b6000806139f1611a9e565b905060006139fe8561320b565b90506001600160a01b03841615613a1a57613a1a818587613e09565b6001600160a01b03811615613a5a57613a37600086600080613234565b6001600160a01b0381166000908152600383016020526040902080546000190190555b6001600160a01b03861615613a8b576001600160a01b03861660009081526003830160205260409020805460010190555b600085815260028301602052604080822080546001600160a01b0319166001600160a01b038a811691821790925591518893918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a495945050505050565b6000613af7611b30565b600281018054600085815260039093016020908152604084208290556001820183559183529120019190915550565b6000613b30611b30565b90506000613b3d84610eae565b60008481526001840160209081526040808320546001600160a01b03891684529186905290912091925090818314613b97576000838152602082815260408083205485845281842081905583526001870190915290208290555b6000948552600190930160209081526040808620869055928552929092528220919091555050565b6000613bc9611b30565b6002810154909150600090613be09060019061489b565b6000848152600384016020526040812054600285018054939450909284908110613c0c57613c0c6145bf565b9060005260206000200154905080846002018381548110613c2f57613c2f6145bf565b600091825260208083209091019290925582815260038601909152604080822084905586825281205560028401805480613c6b57613c6b6148ae565b600190038181906000526020600020016000905590555050505050565b6000613c92611b30565b905060006001613ca185610eae565b613cab919061489b565b6001600160a01b0390941660009081526020838152604080832087845282528083208690559482526001909301909252502055565b606082613cf557613cf082613e5f565b611cdd565b8151158015613d0c57506001600160a01b0384163b155b15613d2c5783604051639996b31560e01b8152600401610b1c9190613fb3565b5080611cdd565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310613d725772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b8310613d9c576904ee2d6d415b85acef8160201b830492506020015b662386f26fc100008310613dba57662386f26fc10000830492506010015b6305f5e1008310613dd2576305f5e100830492506008015b6127108310613de657612710830492506004015b60648310613df8576064830492506002015b600a83106109395760010192915050565b613e14838383613e88565b610bb0576001600160a01b038316613e4257604051637e27328960e01b815260048101829052602401610b1c565b818160405163177e802f60e01b8152600401610b1c9291906145a6565b805115613e6f5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b60006001600160a01b038316158015906134925750826001600160a01b0316846001600160a01b03161480613ec25750613ec28484611969565b806134925750826001600160a01b0316613edb83611afa565b6001600160a01b031614949350505050565b600060208284031215613eff57600080fd5b5035919050565b9182526001600160a01b0316602082015260400190565b6001600160e01b03198116811461132657600080fd5b600060208284031215613f4557600080fd5b8135611cdd81613f1d565b60005b83811015613f6b578181015183820152602001613f53565b50506000910152565b60008151808452613f8c816020860160208601613f50565b601f01601f19169290920160200192915050565b602081526000611cdd6020830184613f74565b6001600160a01b0391909116815260200190565b6001600160a01b038116811461132657600080fd5b60008060408385031215613fef57600080fd5b8235613ffa81613fc7565b946020939093013593505050565b60006020828403121561401a57600080fd5b8135611cdd81613fc7565b6000806040838503121561403857600080fd5b50508035926020909101359150565b60008060006060848603121561405c57600080fd5b833561406781613fc7565b9250602084013561407781613fc7565b929592945050506040919091013590565b803561ffff8116811461409a57600080fd5b919050565b6000806000606084860312156140b457600080fd5b833592506140c460208501614088565b91506140d260408501614088565b90509250925092565b600080604083850312156140ee57600080fd5b82359150602083013561410081613fc7565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b6005811061132657634e487b7160e01b600052602160045260246000fd5b6020810161414c83614121565b91905290565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261417957600080fd5b81356001600160401b038082111561419357614193614152565b604051601f8301601f19908116603f011681019082821181831017156141bb576141bb614152565b816040528381528660208588010111156141d457600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561420757600080fd5b823561421281613fc7565b915060208301356001600160401b0381111561422d57600080fd5b61423985828601614168565b9150509250929050565b6000806000806080858703121561425957600080fd5b843593506020850135925061427060408601614088565b915061427e60608601614088565b905092959194509250565b6000806040838503121561429c57600080fd5b82356001600160401b03808211156142b357600080fd5b6142bf86838701614168565b935060208501359150808211156142d557600080fd5b5061423985828601614168565b801515811461132657600080fd5b6000806040838503121561430357600080fd5b823561430e81613fc7565b91506020830135614100816142e2565b61ffff98891681529688166020880152948716604087015292861660608601529085166080850152841660a0840152831660c083015290911660e08201526101000190565b6000806000806080858703121561437957600080fd5b843561438481613fc7565b9350602085013561439481613fc7565b92506040850135915060608501356001600160401b038111156143b657600080fd5b6143c287828801614168565b91505092959194509250565b61010081016143dc8a614121565b98815260208101979097526001600160a01b0395861660408801529390941660608601529015156080850152151560a084015263ffffffff91821660c08401521660e09091015290565b60008060006060848603121561443b57600080fd5b833561444681613fc7565b9250602084013561445681613fc7565b9150604084013561446681613fc7565b809150509250925092565b600080600080600080600060e0888a03121561448c57600080fd5b873561449781613fc7565b965060208801356001600160401b038111156144b257600080fd5b6144be8a828b01614168565b965050604088013594506060880135935060808801356144dd81613fc7565b925060a0880135915060c08801356144f4816142e2565b8091505092959891949750929550565b6000806040838503121561451757600080fd5b823561452281613fc7565b9150602083013561410081613fc7565b600181811c9082168061454657607f821691505b60208210810361456657634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561457e57600080fd5b8151611cdd816142e2565b8281526040810161459983614121565b8260208301529392505050565b6001600160a01b03929092168252602082015260400190565b634e487b7160e01b600052603260045260246000fd5b6001600160401b0391909116815260200190565b918252602082015260400190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610939576109396145f7565b600060018201614632576146326145f7565b5060010190565b9283526020830191909152604082015260600190565b6001600160a01b0393841681526020810192909252909116604082015260600190565b61ffff92831681529116602082015260400190565b60006020828403121561469957600080fd5b5051919050565b600063ffffffff8083168181036146b9576146b96145f7565b6001019392505050565b9485529215156020850152901515604084015263ffffffff908116606084015216608082015260a00190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061472290830184613f74565b9695505050505050565b60006020828403121561473e57600080fd5b8151611cdd81613f1d565b6000835161475b818460208801613f50565b83519083019061476f818360208801613f50565b01949350505050565b601f821115610bb0576000816000526020600020601f850160051c810160208610156147a15750805b601f850160051c820191505b81811015611525578281556001016147ad565b81516001600160401b038111156147d9576147d9614152565b6147ed816147e78454614532565b84614778565b602080601f831160018114614822576000841561480a5750858301515b600019600386901b1c1916600185901b178555611525565b600085815260208120601f198616915b8281101561485157888601518255948401946001909101908401614832565b508582101561486f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008251614891818460208701613f50565b9190910192915050565b81810381811115610939576109396145f7565b634e487b7160e01b600052603160045260246000fdfe6aafaf6639750382d6dc665bc6a3c73d54e2076a8739a69c860a2314032eb981c7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2c47ab59d5c41a0220b594ece6f7e87863b07f8b33579130f3a59b31d8f7b6eed189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc3ae8648b97d3fd425d26286fc6bb1d50724a93a6a5763921dd2b90405a83b4a4ade2ce8b39037f5140109f53fef47c0491427b8b785ab83d35aa2931295cb790a26469706673582212205ff1ab7ed04f3284c48eefd9c84ebe5b019c0853e20741ae588d1e84fa8d725b64736f6c63430008180033", + "deployedBytecode": "0x60806040526004361061024e5760003560e01c80624fdd3c1461025357806301ffc9a71461028a57806306fdde03146102ba578063081812fc146102dc578063095ea7b3146103095780630e75c1a81461032b57806312b357b51461034e57806318160ddd1461036e5780631c54f0f71461038357806323b872dd14610396578063248a9ca3146103b65780632a119380146103d65780632d3a6329146103f65780632edf5e2c146104165780632f2ff15d146104385780632f745c591461045857806336568abe146104785780633c15b31c1461049857806341431908146104c557806342842e0e146104e55780634f1ef286146105055780634f6ccce714610518578063516a82b81461053857806352d1902d1461055857806354fd4d501461056d5780636352211e1461059a57806370a08231146105ba57806374aa2048146105da57806374fe60e9146105fa57806391d148541461061a57806391da124c1461063a57806395d89b411461065a57806396591edd1461066f578063a0f07c7414610682578063a217fddf14610697578063a22cb465146106ac578063a9bc55a2146106cc578063ad3cb1cc14610700578063b191d09214610731578063b88d4fde14610751578063bb520b4714610771578063be667188146107a5578063bfb26c06146107c5578063c0c53b8b146107da578063c162d7da146107fa578063c87b56dd1461080f578063d547741f1461082f578063db2b26821461084f578063e5a6725c1461086f578063e985e9c51461088f578063f72c0d8b146108af578063f7e45f09146108d1575b600080fd5b34801561025f57600080fd5b5061027361026e366004613eed565b6108f1565b604051610281929190613f06565b60405180910390f35b34801561029657600080fd5b506102aa6102a5366004613f33565b61092e565b6040519015158152602001610281565b3480156102c657600080fd5b506102cf61093f565b6040516102819190613fa0565b3480156102e857600080fd5b506102fc6102f7366004613eed565b6109e0565b6040516102819190613fb3565b34801561031557600080fd5b50610329610324366004613fdc565b6109f5565b005b34801561033757600080fd5b50610340610a04565b604051908152602001610281565b34801561035a57600080fd5b506102aa610369366004614008565b610a19565b34801561037a57600080fd5b50610340610a8f565b610329610391366004614025565b610a9a565b3480156103a257600080fd5b506103296103b1366004614047565b610b9c565b3480156103c257600080fd5b506103406103d1366004613eed565b610bb5565b3480156103e257600080fd5b506103296103f136600461409f565b610bd5565b34801561040257600080fd5b506102aa610411366004613eed565b610c8a565b34801561042257600080fd5b5061034060008051602061496583398151915281565b34801561044457600080fd5b506103296104533660046140db565b610cb0565b34801561046457600080fd5b50610340610473366004613fdc565b610cd2565b34801561048457600080fd5b506103296104933660046140db565b610d34565b3480156104a457600080fd5b506104b86104b3366004613eed565b610d67565b604051610281919061413f565b3480156104d157600080fd5b506103296104e0366004614008565b610d8a565b3480156104f157600080fd5b50610329610500366004614047565b610dc2565b6103296105133660046141f4565b610ddd565b34801561052457600080fd5b50610340610533366004613eed565b610df8565b34801561054457600080fd5b50610329610553366004613eed565b610e59565b34801561056457600080fd5b50610340610e86565b34801561057957600080fd5b50604080516001815260006020820181905291810191909152606001610281565b3480156105a657600080fd5b506102fc6105b5366004613eed565b610ea3565b3480156105c657600080fd5b506103406105d5366004614008565b610eae565b3480156105e657600080fd5b506103296105f5366004614243565b610f06565b34801561060657600080fd5b5061032961061536600461409f565b610fb3565b34801561062657600080fd5b506102aa6106353660046140db565b61105f565b34801561064657600080fd5b50610329610655366004614289565b611095565b34801561066657600080fd5b506102cf611152565b61032961067d366004613eed565b61116f565b34801561068e57600080fd5b506102fc600081565b3480156106a357600080fd5b50610340600081565b3480156106b857600080fd5b506103296106c73660046142f0565b611329565b3480156106d857600080fd5b506106ec6106e7366004613eed565b611334565b60405161028198979695949392919061431e565b34801561070c57600080fd5b506102cf604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561073d57600080fd5b506102fc61074c366004613eed565b6113ba565b34801561075d57600080fd5b5061032961076c366004614363565b6113e6565b34801561077d57600080fd5b5061079161078c366004613eed565b6113fe565b6040516102819897969594939291906143ce565b3480156107b157600080fd5b506103296107c0366004614025565b61147a565b3480156107d157600080fd5b506102fc600181565b3480156107e657600080fd5b506103296107f5366004614426565b61152d565b34801561080657600080fd5b506102fc6116cc565b34801561081b57600080fd5b506102cf61082a366004613eed565b6116e7565b34801561083b57600080fd5b5061032961084a3660046140db565b6116f2565b34801561085b57600080fd5b5061032961086a366004614471565b61170e565b34801561087b57600080fd5b5061032961088a366004613eed565b611861565b34801561089b57600080fd5b506102aa6108aa366004614504565b611969565b3480156108bb57600080fd5b5061034060008051602061492583398151915281565b3480156108dd57600080fd5b506103296108ec366004614243565b6119a8565b60008060006108fe611a55565b6000948552600390810160205260409094209384015460049094015493946001600160a01b039094169392505050565b600061093982611a79565b92915050565b6060600061094b611a9e565b905080600001805461095c90614532565b80601f016020809104026020016040519081016040528092919081815260200182805461098890614532565b80156109d55780601f106109aa576101008083540402835291602001916109d5565b820191906000526020600020905b8154815290600101906020018083116109b857829003601f168201915b505050505091505090565b60006109eb82611ac2565b5061093982611afa565b610a00828233611b23565b5050565b600080610a0f611a55565b6002015492915050565b6000610a236116cc565b6001600160a01b03166312b357b5836040518263ffffffff1660e01b8152600401610a4e9190613fb3565b602060405180830381865afa158015610a6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610939919061456c565b600080610a0f611b30565b33610aa481611b54565b6000610aaf84611ac2565b90506000610abb611a55565b905060036000868152600480840160205260409091205460ff1690811115610ae557610ae561410b565b14610b25576000858152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c92889260ff9091169101614589565b60405180910390fd5b60008581526003820160205260408120600101546001600160a01b031690610b4e828888611b7c565b600088815260038501602090815260408083206004908101548189019093529220805460ff19169092179091559091506001600160a01b0316610b92818387611ce4565b5050505050505050565b610ba581611d92565b610bb0838383611f46565b505050565b600080610bc0611fb7565b60009384526020525050604090206001015490565b33610bdf81611b54565b6000610bea85611ac2565b90506000610bf6611a55565b905060036000878152600480840160205260409091205460ff1690811115610c2057610c2061410b565b14610c57576000868152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c92899260ff9091169101614589565b60008681526003820160205260409020600101546001600160a01b0316610c818382898989611fdb565b50505050505050565b600080610c95611a55565b60009384526003016020525050604090206006015460ff1690565b610cb982610bb5565b610cc28161211d565b610ccc8383612127565b50505050565b600080610cdd611b30565b9050610ce884610eae565b8310610d0b57838360405163295f44f760e21b8152600401610b1c9291906145a6565b6001600160a01b0384166000908152602091825260408082208583529092522054905092915050565b6001600160a01b0381163314610d5d5760405163334bd91960e11b815260040160405180910390fd5b610bb082826121c8565b600080610d72611a55565b60009384526004016020525050604090205460ff1690565b6000610d958161211d565b6000610d9f611a55565b80546001600160a01b0319166001600160a01b0394909416939093179092555050565b610bb0838383604051806020016040528060008152506113e6565b610de5612240565b610dee826122e7565b610a0082826122ff565b600080610e03611b30565b9050610e0d610a8f565b8310610e315760008360405163295f44f760e21b8152600401610b1c9291906145a6565b806002018381548110610e4657610e466145bf565b9060005260206000200154915050919050565b600080516020614965833981519152610e718161211d565b6000610e7b611a55565b600201929092555050565b6000610e906123b3565b5060008051602061494583398151915290565b600061093982611ac2565b600080610eb9611a9e565b90506001600160a01b038316610ee55760006040516322718ad960e21b8152600401610b1c9190613fb3565b6001600160a01b039092166000908152600390920160205250604090205490565b33610f1081611b54565b6000610f1b86611ac2565b90506000610f27611a55565b905060036000888152600480840160205260409091205460ff1690811115610f5157610f5161410b565b14610f88576000878152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c928a9260ff9091169101614589565b60008781526003820160205260409020600101546001600160a01b0316610b9283828a8a8a8a6123fc565b33610fbd81611b54565b6000610fc885611ac2565b90506000610fd4611a55565b905060036000878152600480840160205260409091205460ff1690811115610ffe57610ffe61410b565b14611035576000868152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c92899260ff9091169101614589565b60008681526003820160205260409020600101546001600160a01b0316610c818382898989612635565b60008061106a611fb7565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b600260006110a1612793565b8054909150600160401b900460ff16806110c8575080546001600160401b03808416911610155b156110e65760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160481b0319166001600160401b03831617600160401b17815560006111108161211d565b61111a85856127b7565b50805460ff60401b191681556040516000805160206148e5833981519152906111449084906145d5565b60405180910390a150505050565b6060600061115e611a9e565b905080600101805461095c90614532565b6111776127c9565b3361118181611b54565b600061118b611a55565b600084815260038083016020908152604092839020835160e08101855281546001600160a01b03908116808352600184015482169483019490945260028301549582019590955292810154606084015260048101549093166080830152600583015460a083015260069092015460ff16151560c08201529192503314611238578051604051632663a9c560e11b81526001600160a01b039091166004820152336024820152604401610b1c565b80604001514211156112655783816040015160405163293d73b760e11b8152600401610b1c9291906145e9565b600061127085610ea3565b905081602001516001600160a01b0316816001600160a01b0316146112af57602082015160405163103d145960e31b8152610b1c918791600401613f06565b6112be826020015133876127ff565b6112d5826080015183606001518460200151611ce4565b6000858152600484016020526040808220805460ff1916600317905551339187917fa751fb02c318279a22135a408663ae08ea45eafa950a4351c14ae543cbb950409190a35050505061132661289b565b50565b610a003383836128ac565b600080600080600080600080600061134a612951565b60009a8b5260205250506040909720600281015460039091015461ffff600160c81b830481169a600160d81b840482169a50600160e81b90930481169850808216975062010000820481169650600160201b820481169550600160301b820481169450600160401b909104169150565b6000806113c5611a55565b6000938452600301602052505060409020600401546001600160a01b031690565b6113f1848484610b9c565b610ccc3385858585612975565b6000806000806000806000806000611414612951565b60009a8b52602052505060409097206002810154815460019092015460ff600160c01b80840482169c949b506001600160a01b038084169b5084169950820481169750600160c81b820416955063ffffffff600160a01b91829004811695509104169150565b3361148481611b54565b600061148f84611ac2565b9050600061149b611a55565b905060036000868152600480840160205260409091205460ff16908111156114c5576114c561410b565b146114fc576000858152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c92889260ff9091169101614589565b60008581526003820160205260409020600101546001600160a01b031661152583828888612a8c565b505050505050565b6000611537612793565b805490915060ff600160401b82041615906001600160401b031660008115801561155e5750825b90506000826001600160401b0316600114801561157a5750303b155b905081158015611588575080155b156115a65760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b031916600117855583156115cf57845460ff60401b1916600160401b1785555b6116196040518060400160405280600c81526020016b2137b7b5b4b733aa37b5b2b760a11b815250604051806040016040528060048152602001630545249560e41b8152506127b7565b611621612c6a565b611629612c6a565b611631612c6a565b611639612c6a565b611644600088612127565b5061165d60008051602061492583398151915287612127565b506000611668611a55565b80546001600160a01b0319166001600160a01b038b16178155603c600290910155508315610b9257845460ff60401b191685556040516000805160206148e5833981519152906116ba906001906145d5565b60405180910390a15050505050505050565b6000806116d7611a55565b546001600160a01b031692915050565b606061093982612c72565b6116fb82610bb5565b6117048161211d565b610ccc83836121c8565b3361171881611b54565b61172188611b54565b600061172b611a55565b600281015490915061173d814261460d565b8811611760578781604051630999f7d760e41b8152600401610b1c9291906145e9565b60008511801561177a57506001600160a01b038616600114155b1561179b57604051638fe757e760e01b815260048101869052602401610b1c565b600182018054600091826117ae83614620565b9190505590506117be3382612d92565b6117c8818b612dac565b6117d8818c338c8c8c8c8c612e0a565b6000818152600484016020908152604091829020805460ff1916600117905581518b81529081018a90526001600160a01b0389811682840152606082018990528715156080830152915133928e169184917f1424af4f4cb40d8a1a2d00b2324cb122ba73eac426f98b62c33ff31ca045f0679160a0908290030190a45050505050505050505050565b600061186b611a55565b6000838152600382016020908152604080832060048501909252909120549192509060ff1660028160048111156118a4576118a461410b565b14806118c1575060038160048111156118bf576118bf61410b565b145b806118dd575060048160048111156118db576118db61410b565b145b156118ff57838160405163e4e3b53b60e01b8152600401610b1c929190614589565b8160020154421115611940576000848152600484016020526040808220805460ff1916600217905551859160008051602061490583398151915291a2610ccc565b815460405163d4cde2af60e01b8152610b1c9186916001600160a01b0390911690600401613f06565b600080611974611a9e565b6001600160a01b03948516600090815260059190910160209081526040808320959096168252939093525050205460ff1690565b336119b281611b54565b60006119bd86611ac2565b905060006119c9611a55565b905060036000888152600480840160205260409091205460ff16908111156119f3576119f361410b565b14611a2a576000878152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c928a9260ff9091169101614589565b60008781526003820160205260409020600101546001600160a01b0316610b9283828a8a8a8a612edc565b7f9db9d405bf15683ce835607b1f0b423dc1484d44bb9d5af64a483fa4afd8290090565b60006001600160e01b03198216637965db0b60e01b14806109395750610939826131e6565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930090565b600080611ace8361320b565b90506001600160a01b03811661093957604051637e27328960e01b815260048101849052602401610b1c565b600080611b05611a9e565b6000938452600401602052505060409020546001600160a01b031690565b610bb08383836001613234565b7f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed0090565b611b5d81610a19565b6113265780604051638014575360e01b8152600401610b1c9190613fb3565b6000336001600160a01b03851614611baa57604051636c83fb1b60e01b815260048101849052602401610b1c565b6000611bb4612951565b600085815260209190915260409020905060016002820154600160c01b900460ff166004811115611be757611be761410b565b14611c1a57838160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b80548314611c4157805460405163cc45283760e01b8152610b1c9186918690600401614639565b6001810154600160c01b900460ff16611c705760405163c84052f960e01b815260048101859052602401610b1c565b6001810154600160c81b900460ff16611c995760018101805460ff60c81b1916600160c81b1790555b60028101805460ff60c01b1916600160c21b17905560405184907f17c3690813e5ff9135b87fd91848109978b23db8e471498d18886560da7f286790600090a25490505b9392505050565b6001600160a01b038316611d2957813414611d16573482604051630145611560e21b8152600401610b1c9291906145e9565b610bb06001600160a01b0382163461333e565b6000196001600160a01b03841601611d5c573415610bb0576040516347d6729960e01b8152346004820152602401610b1c565b3415611d7d576040516347d6729960e01b8152346004820152602401610b1c565b610bb06001600160a01b0384163383856133d7565b6000611d9c611a55565b600083815260048201602052604081205491925060ff9091169080611dc085613431565b90925090506001826004811115611dd957611dd961410b565b03611e3a576000611de986611ac2565b60008781526003870160205260409020600101549091506001600160a01b039081169083163314611e2857611e2382828960636001612635565b611e37565b611e3782828960636001611fdb565b50505b6003836004811115611e4e57611e4e61410b565b1480611e6b57506002836004811115611e6957611e6961410b565b145b80611e8757506000836004811115611e8557611e8561410b565b145b15611e93575050505050565b6004836004811115611ea757611ea761410b565b03611ec957848360405163e4e3b53b60e01b8152600401610b1c929190614589565b600085815260038501602052604090206002810154421115611f1d576000868152600486016020526040808220805460ff1916600217905551879160008051602061490583398151915291a2505050505050565b805460405163d4cde2af60e01b8152610b1c9188916001600160a01b0390911690600401613f06565b6001600160a01b038216611f70576000604051633250574960e11b8152600401610b1c9190613fb3565b6000611f7d838333613485565b9050836001600160a01b0316816001600160a01b031614610ccc578382826040516364283d7b60e01b8152600401610b1c9392919061464f565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b8484611fe7828261349a565b6000611ff1612951565b600087815260209190915260409020905060016002820154600160c01b900460ff1660048111156120245761202461410b565b1461205757858160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b60028101546001600160a01b0316331461208757604051631186fdbd60e31b815260048101879052602401610b1c565b6003808201805461ffff878116600160401b0261ffff60401b19918a16600160301b029190911663ffffffff60301b199092169190911717905560028201805460ff60c01b1916600160c01b830217905550857f48e256ce3da490e3bbba80f056bb54ec3d7264f8ad7d152b77bf8c2eca3db5a5868660405161210b929190614672565b60405180910390a25050505050505050565b61132681336134da565b600080612132611fb7565b905061213e848461105f565b6121be576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556121743390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610939565b6000915050610939565b6000806121d3611fb7565b90506121df848461105f565b156121be576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610939565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806122c757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166122bb600080516020614945833981519152546001600160a01b031690565b6001600160a01b031614155b156122e55760405163703e46dd60e11b815260040160405180910390fd5b565b600080516020614925833981519152610a008161211d565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612359575060408051601f3d908101601f1916820190925261235691810190614687565b60015b6123785781604051634c9c8ce360e01b8152600401610b1c9190613fb3565b60008051602061494583398151915281146123a957604051632a87526960e21b815260048101829052602401610b1c565b610bb08383613505565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146122e55760405163703e46dd60e11b815260040160405180910390fd5b8585612408828261349a565b6000612412612951565b600088815260209190915260409020905060016002820154600160c01b900460ff1660048111156124455761244561410b565b1461247857868160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b858155600281018054336001600160a01b0319909116811790915560018201805461ffff60c01b19166001600160a01b038c81168414600160c01b0260ff60c81b191691909117908b16909214600160c81b029190911780825560038301805465ffffffff000019166201000061ffff8a81169190910261ffff60201b191691909117600160201b91891691909102179055600160a01b900463ffffffff16906014612523836146a0565b82546101009290920a63ffffffff8181021990931691831602179091556002830154600184015484546040516001600160a01b0380851696508316948d946000805160206148c5833981519152946125a39493600160c01b820460ff90811694600160c81b840490911693600160a01b93849004821693900416906146c3565b60405180910390a4600281015460038201546040518992600080516020614985833981519152926126229261ffff600160c81b8404811693600160d81b8104821693600160e81b90910482169281831692620100008304811692600160201b8104821692600160301b8204831692600160401b9092049091169061431e565b60405180910390a2505050505050505050565b8484612641828261349a565b600061264b612951565b600087815260209190915260409020905060016002820154600160c01b900460ff16600481111561267e5761267e61410b565b146126b157858160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b60028101546001600160a01b031633036126e157604051633060d8f760e21b815260048101879052602401610b1c565b60028101805460038301805461ffff88811661ffff19909216919091179091558716600160e81b0260ff60c01b191666ffff00000000ff60c01b1990911617600160c11b17808255600160a01b900463ffffffff16906014612742836146a0565b91906101000a81548163ffffffff021916908363ffffffff16021790555050857fab78ba855f2fdb28beb212a9b3f41a33cda034729848cd452f0cc96528c23a80868660405161210b929190614672565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b6127bf61355b565b610a008282613580565b60006127d36135ae565b8054909150600119016127f957604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b6001600160a01b038216612829576000604051633250574960e11b8152600401610b1c9190613fb3565b600061283783836000613485565b90506001600160a01b03811661286357604051637e27328960e01b815260048101839052602401610b1c565b836001600160a01b0316816001600160a01b031614610ccc578382826040516364283d7b60e01b8152600401610b1c9392919061464f565b60006128a56135ae565b6001905550565b60006128b6611a9e565b90506001600160a01b0383166128e15782604051630b61174360e31b8152600401610b1c9190613fb3565b6001600160a01b038481166000818152600584016020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b7f0b8fb32ffc7043fda9e0ee2bcb4236acf95ab448752c73eff6cc7f2640ff850090565b6001600160a01b0383163b15612a8557604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906129b79088908890879087906004016146ef565b6020604051808303816000875af19250505080156129f2575060408051601f3d908101601f191682019092526129ef9181019061472c565b60015b612a52573d808015612a20576040519150601f19603f3d011682016040523d82523d6000602084013e612a25565b606091505b508051600003612a4a5783604051633250574960e11b8152600401610b1c9190613fb3565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b146115255783604051633250574960e11b8152600401610b1c9190613fb3565b5050505050565b8383612a98828261349a565b6000612aa2612951565b600086815260209190915260409020905060016002820154600160c01b900460ff166004811115612ad557612ad561410b565b14612b0857848160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b80548414612b2f57805460405163cc45283760e01b8152610b1c9187918790600401614639565b6001600160a01b0387163303612b595760018101805460ff60c01b1916600160c01b179055612b6f565b60018101805460ff60c81b1916600160c81b1790555b6002810154600182015482546040516001600160a01b0380851694908416938a936000805160206148c583398151915293612bda93919260ff600160c01b8204811693600160c81b83049091169263ffffffff600160a01b93849004811693909204909116906146c3565b60405180910390a460028101546003820154604051879260008051602061498583398151915292612c599261ffff600160c81b8404811693600160d81b8104821693600160e81b90910482169281831692620100008304811692600160201b8104821692600160301b8204831692600160401b9092049091169061431e565b60405180910390a250505050505050565b6122e561355b565b60606000612c7e6135d2565b9050612c8983611ac2565b5060008381526020829052604081208054612ca390614532565b80601f0160208091040260200160405190810160405280929190818152602001828054612ccf90614532565b8015612d1c5780601f10612cf157610100808354040283529160200191612d1c565b820191906000526020600020905b815481529060010190602001808311612cff57829003601f168201915b505050505090506000612d3a60408051602081019091526000815290565b90508051600003612d4d57509392505050565b815115612d80578082604051602001612d67929190614749565b6040516020818303038152906040529350505050919050565b612d89856135f6565b95945050505050565b610a0082826040518060200160405280600081525061366a565b6000612db66135d2565b6000848152602082905260409020909150612dd183826147c0565b506040518381527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a1505050565b6000612e14611a55565b6040805160e0810182526001600160a01b039a8b168152988a166020808b019182528a8301998a5260608b01988952968b1660808b0190815260a08b0196875294151560c08b0190815260009c8d5260039384019097529a20975188546001600160a01b0319908116918b1691909117895599516001890180548c16918b169190911790559551600288015550925193850193909355905160048401805490961694169390931790935591516005830155516006909101805460ff1916911515919091179055565b8585612ee8828261349a565b6000612ef2612951565b600088815260209190915260409020905060046002820154600160c01b900460ff166004811115612f2557612f2561410b565b1480612f50575060016002820154600160c01b900460ff166004811115612f4e57612f4e61410b565b145b15612f8357868160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b60006002820154600160c01b900460ff166004811115612fa557612fa561410b565b03612fbf576001810180546001600160a01b031916331790555b338160020160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550858160000181905550886001600160a01b0316336001600160a01b0316148160010160186101000a81548160ff021916908315150217905550876001600160a01b0316336001600160a01b0316148160010160196101000a81548160ff021916908315150217905550848160020160196101000a81548161ffff021916908361ffff1602179055508381600201601b6101000a81548161ffff021916908361ffff160217905550600081600201601d6101000a81548161ffff021916908361ffff16021790555060008160030160006101000a81548161ffff021916908361ffff16021790555060008160030160026101000a81548161ffff021916908361ffff16021790555060008160030160046101000a81548161ffff021916908361ffff16021790555060008160030160066101000a81548161ffff021916908361ffff16021790555060008160030160086101000a81548161ffff021916908361ffff16021790555060018160020160186101000a81548160ff021916908360048111156131765761317661410b565b02179055506002810154600182015482546040516001600160a01b0380851694908416938c936000805160206148c5833981519152936125a393919260ff600160c01b8204811693600160c81b83049091169263ffffffff600160a01b93849004811693909204909116906146c3565b60006001600160e01b03198216632483248360e11b1480610939575061093982613682565b600080613216611a9e565b6000938452600201602052505060409020546001600160a01b031690565b600061323e611a9e565b9050818061325457506001600160a01b03831615155b1561330d57600061326485611ac2565b90506001600160a01b038416158015906132905750836001600160a01b0316816001600160a01b031614155b80156132a357506132a18185611969565b155b156132c3578360405163a9fbf51f60e01b8152600401610b1c9190613fb3565b821561330b5784866001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b600093845260040160205250506040902080546001600160a01b0319166001600160a01b0392909216919091179055565b8047101561336357478160405163cf47918160e01b8152600401610b1c9291906145e9565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146133b0576040519150601f19603f3d011682016040523d82523d6000602084013e6133b5565b606091505b5050905080610bb05760405163d6bda27560e01b815260040160405180910390fd5b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ccc9085906136a7565b60008061343c612951565b60008481526020919091526040902060020154600160c01b900460ff16613461612951565b600094855260205260409093206002015492936001600160a01b0390931692915050565b600061349284848461370f565b949350505050565b336001600160a01b038316148015906134bc5750336001600160a01b03821614155b15610a0057604051634793d28160e01b815260040160405180910390fd5b6134e4828261105f565b610a0057808260405163e2517d3f60e01b8152600401610b1c9291906145a6565b61350e8261379d565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561355357610bb082826137f9565b610a00613866565b613563613885565b6122e557604051631afcd79f60e31b815260040160405180910390fd5b61358861355b565b6000613592611a9e565b90508061359f84826147c0565b5060018101610ccc83826147c0565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b7f0542a41881ee128a365a727b282c86fa859579490b9bb45aab8503648c8e790090565b606061360182611ac2565b50600061361960408051602081019091526000815290565b905060008151116136395760405180602001604052806000815250611cdd565b806136438461389f565b604051602001613654929190614749565b6040516020818303038152906040529392505050565b6136748383613931565b610bb0336000858585612975565b60006001600160e01b0319821663780e9d6360e01b1480610939575061093982613996565b600080602060008451602086016000885af1806136ca576040513d6000823e3d81fd5b50506000513d915081156136e25780600114156136ef565b6001600160a01b0384163b155b15610ccc5783604051635274afe760e01b8152600401610b1c9190613fb3565b60008061371d8585856139e6565b90506001600160a01b03811661373b5761373684613aed565b61375e565b846001600160a01b0316816001600160a01b03161461375e5761375e8185613b26565b6001600160a01b03851661377a5761377584613bbf565b613492565b846001600160a01b0316816001600160a01b031614613492576134928585613c88565b806001600160a01b03163b6000036137ca5780604051634c9c8ce360e01b8152600401610b1c9190613fb3565b60008051602061494583398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051613816919061487f565b600060405180830381855af49150503d8060008114613851576040519150601f19603f3d011682016040523d82523d6000602084013e613856565b606091505b5091509150612d89858383613ce0565b34156122e55760405163b398979f60e01b815260040160405180910390fd5b600061388f612793565b54600160401b900460ff16919050565b606060006138ac83613d33565b60010190506000816001600160401b038111156138cb576138cb614152565b6040519080825280601f01601f1916602001820160405280156138f5576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846138ff57509392505050565b6001600160a01b03821661395b576000604051633250574960e11b8152600401610b1c9190613fb3565b600061396983836000613485565b90506001600160a01b03811615610bb05760006040516339e3563760e11b8152600401610b1c9190613fb3565b60006001600160e01b031982166380ac58cd60e01b14806139c757506001600160e01b03198216635b5e139f60e01b145b8061093957506301ffc9a760e01b6001600160e01b0319831614610939565b6000806139f1611a9e565b905060006139fe8561320b565b90506001600160a01b03841615613a1a57613a1a818587613e09565b6001600160a01b03811615613a5a57613a37600086600080613234565b6001600160a01b0381166000908152600383016020526040902080546000190190555b6001600160a01b03861615613a8b576001600160a01b03861660009081526003830160205260409020805460010190555b600085815260028301602052604080822080546001600160a01b0319166001600160a01b038a811691821790925591518893918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a495945050505050565b6000613af7611b30565b600281018054600085815260039093016020908152604084208290556001820183559183529120019190915550565b6000613b30611b30565b90506000613b3d84610eae565b60008481526001840160209081526040808320546001600160a01b03891684529186905290912091925090818314613b97576000838152602082815260408083205485845281842081905583526001870190915290208290555b6000948552600190930160209081526040808620869055928552929092528220919091555050565b6000613bc9611b30565b6002810154909150600090613be09060019061489b565b6000848152600384016020526040812054600285018054939450909284908110613c0c57613c0c6145bf565b9060005260206000200154905080846002018381548110613c2f57613c2f6145bf565b600091825260208083209091019290925582815260038601909152604080822084905586825281205560028401805480613c6b57613c6b6148ae565b600190038181906000526020600020016000905590555050505050565b6000613c92611b30565b905060006001613ca185610eae565b613cab919061489b565b6001600160a01b0390941660009081526020838152604080832087845282528083208690559482526001909301909252502055565b606082613cf557613cf082613e5f565b611cdd565b8151158015613d0c57506001600160a01b0384163b155b15613d2c5783604051639996b31560e01b8152600401610b1c9190613fb3565b5080611cdd565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310613d725772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b8310613d9c576904ee2d6d415b85acef8160201b830492506020015b662386f26fc100008310613dba57662386f26fc10000830492506010015b6305f5e1008310613dd2576305f5e100830492506008015b6127108310613de657612710830492506004015b60648310613df8576064830492506002015b600a83106109395760010192915050565b613e14838383613e88565b610bb0576001600160a01b038316613e4257604051637e27328960e01b815260048101829052602401610b1c565b818160405163177e802f60e01b8152600401610b1c9291906145a6565b805115613e6f5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b60006001600160a01b038316158015906134925750826001600160a01b0316846001600160a01b03161480613ec25750613ec28484611969565b806134925750826001600160a01b0316613edb83611afa565b6001600160a01b031614949350505050565b600060208284031215613eff57600080fd5b5035919050565b9182526001600160a01b0316602082015260400190565b6001600160e01b03198116811461132657600080fd5b600060208284031215613f4557600080fd5b8135611cdd81613f1d565b60005b83811015613f6b578181015183820152602001613f53565b50506000910152565b60008151808452613f8c816020860160208601613f50565b601f01601f19169290920160200192915050565b602081526000611cdd6020830184613f74565b6001600160a01b0391909116815260200190565b6001600160a01b038116811461132657600080fd5b60008060408385031215613fef57600080fd5b8235613ffa81613fc7565b946020939093013593505050565b60006020828403121561401a57600080fd5b8135611cdd81613fc7565b6000806040838503121561403857600080fd5b50508035926020909101359150565b60008060006060848603121561405c57600080fd5b833561406781613fc7565b9250602084013561407781613fc7565b929592945050506040919091013590565b803561ffff8116811461409a57600080fd5b919050565b6000806000606084860312156140b457600080fd5b833592506140c460208501614088565b91506140d260408501614088565b90509250925092565b600080604083850312156140ee57600080fd5b82359150602083013561410081613fc7565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b6005811061132657634e487b7160e01b600052602160045260246000fd5b6020810161414c83614121565b91905290565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261417957600080fd5b81356001600160401b038082111561419357614193614152565b604051601f8301601f19908116603f011681019082821181831017156141bb576141bb614152565b816040528381528660208588010111156141d457600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561420757600080fd5b823561421281613fc7565b915060208301356001600160401b0381111561422d57600080fd5b61423985828601614168565b9150509250929050565b6000806000806080858703121561425957600080fd5b843593506020850135925061427060408601614088565b915061427e60608601614088565b905092959194509250565b6000806040838503121561429c57600080fd5b82356001600160401b03808211156142b357600080fd5b6142bf86838701614168565b935060208501359150808211156142d557600080fd5b5061423985828601614168565b801515811461132657600080fd5b6000806040838503121561430357600080fd5b823561430e81613fc7565b91506020830135614100816142e2565b61ffff98891681529688166020880152948716604087015292861660608601529085166080850152841660a0840152831660c083015290911660e08201526101000190565b6000806000806080858703121561437957600080fd5b843561438481613fc7565b9350602085013561439481613fc7565b92506040850135915060608501356001600160401b038111156143b657600080fd5b6143c287828801614168565b91505092959194509250565b61010081016143dc8a614121565b98815260208101979097526001600160a01b0395861660408801529390941660608601529015156080850152151560a084015263ffffffff91821660c08401521660e09091015290565b60008060006060848603121561443b57600080fd5b833561444681613fc7565b9250602084013561445681613fc7565b9150604084013561446681613fc7565b809150509250925092565b600080600080600080600060e0888a03121561448c57600080fd5b873561449781613fc7565b965060208801356001600160401b038111156144b257600080fd5b6144be8a828b01614168565b965050604088013594506060880135935060808801356144dd81613fc7565b925060a0880135915060c08801356144f4816142e2565b8091505092959891949750929550565b6000806040838503121561451757600080fd5b823561452281613fc7565b9150602083013561410081613fc7565b600181811c9082168061454657607f821691505b60208210810361456657634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561457e57600080fd5b8151611cdd816142e2565b8281526040810161459983614121565b8260208301529392505050565b6001600160a01b03929092168252602082015260400190565b634e487b7160e01b600052603260045260246000fd5b6001600160401b0391909116815260200190565b918252602082015260400190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610939576109396145f7565b600060018201614632576146326145f7565b5060010190565b9283526020830191909152604082015260600190565b6001600160a01b0393841681526020810192909252909116604082015260600190565b61ffff92831681529116602082015260400190565b60006020828403121561469957600080fd5b5051919050565b600063ffffffff8083168181036146b9576146b96145f7565b6001019392505050565b9485529215156020850152901515604084015263ffffffff908116606084015216608082015260a00190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061472290830184613f74565b9695505050505050565b60006020828403121561473e57600080fd5b8151611cdd81613f1d565b6000835161475b818460208801613f50565b83519083019061476f818360208801613f50565b01949350505050565b601f821115610bb0576000816000526020600020601f850160051c810160208610156147a15750805b601f850160051c820191505b81811015611525578281556001016147ad565b81516001600160401b038111156147d9576147d9614152565b6147ed816147e78454614532565b84614778565b602080601f831160018114614822576000841561480a5750858301515b600019600386901b1c1916600185901b178555611525565b600085815260208120601f198616915b8281101561485157888601518255948401946001909101908401614832565b508582101561486f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008251614891818460208701613f50565b9190910192915050565b81810381811115610939576109396145f7565b634e487b7160e01b600052603160045260246000fdfe6aafaf6639750382d6dc665bc6a3c73d54e2076a8739a69c860a2314032eb981c7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2c47ab59d5c41a0220b594ece6f7e87863b07f8b33579130f3a59b31d8f7b6eed189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc3ae8648b97d3fd425d26286fc6bb1d50724a93a6a5763921dd2b90405a83b4a4ade2ce8b39037f5140109f53fef47c0491427b8b785ab83d35aa2931295cb790a26469706673582212205ff1ab7ed04f3284c48eefd9c84ebe5b019c0853e20741ae588d1e84fa8d725b64736f6c63430008180033", + "linkReferences": {}, + "deployedLinkReferences": {} +} \ No newline at end of file diff --git a/ignition/deployments/chain-501/artifacts/RefactorCancellationModule#CMAccount.dbg.json b/ignition/deployments/chain-501/artifacts/RefactorCancellationModule#CMAccount.dbg.json new file mode 100644 index 0000000..19aeb90 --- /dev/null +++ b/ignition/deployments/chain-501/artifacts/RefactorCancellationModule#CMAccount.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../build-info/c929040ed782d5f1fe9b972f02b44da8.json" +} \ No newline at end of file diff --git a/ignition/deployments/chain-501/artifacts/RefactorCancellationModule#CMAccount.json b/ignition/deployments/chain-501/artifacts/RefactorCancellationModule#CMAccount.json new file mode 100644 index 0000000..f3c04f7 --- /dev/null +++ b/ignition/deployments/chain-501/artifacts/RefactorCancellationModule#CMAccount.json @@ -0,0 +1,2629 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "CMAccount", + "sourceName": "contracts/account/CMAccount.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + } + ], + "name": "AddressEmptyCode", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "latestImplementation", + "type": "address" + }, + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "CMAccountImplementationMismatch", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "oldImplementation", + "type": "address" + }, + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "CMAccountNoUpgradeNeeded", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "expiresAt", + "type": "uint256" + } + ], + "name": "ChequeExpired", + "type": "error" + }, + { + "inputs": [], + "name": "ECDSAInvalidSignature", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "length", + "type": "uint256" + } + ], + "name": "ECDSAInvalidSignatureLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "ECDSAInvalidSignatureS", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "ERC1967InvalidImplementation", + "type": "error" + }, + { + "inputs": [], + "name": "ERC1967NonPayable", + "type": "error" + }, + { + "inputs": [], + "name": "FailedCall", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "chequeAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastAmount", + "type": "uint256" + } + ], + "name": "InvalidAmount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "chequeCounter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastCounter", + "type": "uint256" + } + ], + "name": "InvalidCounter", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + } + ], + "name": "InvalidFromCMAccount", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "use", + "type": "uint8" + } + ], + "name": "InvalidPublicKeyUseType", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "toCMAccount", + "type": "address" + } + ], + "name": "InvalidToCMAccount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "signer", + "type": "address" + } + ], + "name": "NotAllowedToSignCheques", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "PaymentTokenAlreadyExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "PaymentTokenDoesNotExist", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "withdrawableAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "prefundLeft", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "PrefundNotSpentYet", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "PublicKeyAlreadyExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "PublicKeyDoesNotExist", + "type": "error" + }, + { + "inputs": [], + "name": "ReentrancyGuardReentrantCall", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "SafeERC20FailedOperation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceAlreadyExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceDoesNotExist", + "type": "error" + }, + { + "inputs": [], + "name": "TransferToZeroAddress", + "type": "error" + }, + { + "inputs": [], + "name": "UUPSUnauthorizedCallContext", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "slot", + "type": "bytes32" + } + ], + "name": "UUPSUnsupportedProxiableUUID", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "WantedServiceAlreadyExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "WantedServiceDoesNotExist", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "limit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "WithdrawalLimitExceeded", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "limit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "WithdrawalLimitExceededForPeriod", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldImplementation", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "CMAccountUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "toCMAccount", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "fromBot", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "toBot", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "counter", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "paidChequeAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "paidDeveloperFee", + "type": "uint256" + } + ], + "name": "ChequeCashedIn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "withdrawer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "GasMoneyWithdrawal", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "limit", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "period", + "type": "uint256" + } + ], + "name": "GasMoneyWithdrawalUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "bot", + "type": "address" + } + ], + "name": "MessengerBotAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "bot", + "type": "address" + } + ], + "name": "MessengerBotRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "supportsOffChainPayment", + "type": "bool" + } + ], + "name": "OffChainPaymentSupportUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "PaymentTokenAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "PaymentTokenRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "PublicKeyAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "PublicKeyRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "ServiceAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "ServiceCapabilitiesUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "capability", + "type": "string" + } + ], + "name": "ServiceCapabilityAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "capability", + "type": "string" + } + ], + "name": "ServiceCapabilityRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "fee", + "type": "uint256" + } + ], + "name": "ServiceFeeUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "ServiceRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "indexed": false, + "internalType": "bool", + "name": "restrictedRate", + "type": "bool" + } + ], + "name": "ServiceRestrictedRateUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "WantedServiceAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "WantedServiceRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Withdraw", + "type": "event" + }, + { + "inputs": [], + "name": "BOOKING_OPERATOR_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "BOT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "CHEQUE_OPERATOR_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DOMAIN_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "GAS_WITHDRAWER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MESSENGER_CHEQUE_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SERVICE_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UPGRADER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UPGRADE_INTERFACE_VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "WITHDRAWER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "refundAmount", + "type": "uint256" + } + ], + "name": "acceptCancellation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "bot", + "type": "address" + }, + { + "internalType": "uint256", + "name": "gasMoney", + "type": "uint256" + } + ], + "name": "addMessengerBot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "addPublicKey", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "restrictedRate", + "type": "bool" + }, + { + "internalType": "string[]", + "name": "capabilities", + "type": "string[]" + } + ], + "name": "addService", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "internalType": "string", + "name": "capability", + "type": "string" + } + ], + "name": "addServiceCapability", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_supportedToken", + "type": "address" + } + ], + "name": "addSupportedToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string[]", + "name": "serviceNames", + "type": "string[]" + } + ], + "name": "addWantedServices", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expectedPrice", + "type": "uint256" + }, + { + "internalType": "contract IERC20", + "name": "expectedPaymentToken", + "type": "address" + } + ], + "name": "buyBookingToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toBot", + "type": "address" + }, + { + "internalType": "uint256", + "name": "counter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expiresAt", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "cashInCheque", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "refundAmount", + "type": "uint256" + }, + { + "internalType": "uint16", + "name": "counterReason", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "counterReasonVersion", + "type": "uint16" + } + ], + "name": "counterCancellation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "refundAmount", + "type": "uint256" + } + ], + "name": "finalizeCancellation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getAllServiceHashes", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "serviceHashes", + "type": "bytes32[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getBookingTokenAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getDomainSeparator", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getGasMoneyWithdrawal", + "outputs": [ + { + "internalType": "uint256", + "name": "withdrawalLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "withdrawalPeriod", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getGasMoneyWithdrawalForAccount", + "outputs": [ + { + "internalType": "uint256", + "name": "periodStart", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "withdrawnAmount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromBot", + "type": "address" + }, + { + "internalType": "address", + "name": "toBot", + "type": "address" + } + ], + "name": "getLastCashIn", + "outputs": [ + { + "internalType": "uint256", + "name": "lastCounter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastCreatedAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastExpiresAt", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getManagerAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPrefundAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "getPublicKey", + "outputs": [ + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPublicKeysAddresses", + "outputs": [ + { + "internalType": "address[]", + "name": "pubKeyAddresses", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoleMember", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMemberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMembers", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "getService", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "_fee", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "_restrictedRate", + "type": "bool" + }, + { + "internalType": "string[]", + "name": "_capabilities", + "type": "string[]" + } + ], + "internalType": "struct PartnerConfiguration.Service", + "name": "service", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "getServiceCapabilities", + "outputs": [ + { + "internalType": "string[]", + "name": "capabilities", + "type": "string[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "getServiceCapabilities", + "outputs": [ + { + "internalType": "string[]", + "name": "capabilities", + "type": "string[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "getServiceFee", + "outputs": [ + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "getServiceFee", + "outputs": [ + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "getServiceRestrictedRate", + "outputs": [ + { + "internalType": "bool", + "name": "restrictedRate", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "getServiceRestrictedRate", + "outputs": [ + { + "internalType": "bool", + "name": "restrictedRate", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getSupportedServices", + "outputs": [ + { + "internalType": "string[]", + "name": "serviceNames", + "type": "string[]" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "_fee", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "_restrictedRate", + "type": "bool" + }, + { + "internalType": "string[]", + "name": "_capabilities", + "type": "string[]" + } + ], + "internalType": "struct PartnerConfiguration.Service[]", + "name": "services", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getSupportedTokens", + "outputs": [ + { + "internalType": "address[]", + "name": "tokens", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTotalChequePayments", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getWantedServiceHashes", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "serviceHashes", + "type": "bytes32[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getWantedServices", + "outputs": [ + { + "internalType": "string[]", + "name": "serviceNames", + "type": "string[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toBot", + "type": "address" + }, + { + "internalType": "uint256", + "name": "counter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expiresAt", + "type": "uint256" + } + ], + "name": "hashMessengerCheque", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toBot", + "type": "address" + }, + { + "internalType": "uint256", + "name": "counter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expiresAt", + "type": "uint256" + } + ], + "name": "hashTypedDataV4", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "manager", + "type": "address" + }, + { + "internalType": "address", + "name": "bookingToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "prefundAmount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "defaultAdmin", + "type": "address" + }, + { + "internalType": "address", + "name": "upgrader", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "refundAmount", + "type": "uint256" + }, + { + "internalType": "uint16", + "name": "cancellationReason", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "cancellationReasonVersion", + "type": "uint16" + } + ], + "name": "initiateCancellation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "bot", + "type": "address" + } + ], + "name": "isBotAllowed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "reservedFor", + "type": "address" + }, + { + "internalType": "string", + "name": "uri", + "type": "string" + }, + { + "internalType": "uint256", + "name": "expirationTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + }, + { + "internalType": "contract IERC20", + "name": "paymentToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "offchainPaymentCurrency", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "cancellable", + "type": "bool" + } + ], + "name": "mintBookingToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "offChainPaymentSupported", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC721Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "recordExpiration", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint16", + "name": "rejectionReason", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "rejectionReasonVersion", + "type": "uint16" + } + ], + "name": "rejectCancellation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "bot", + "type": "address" + } + ], + "name": "removeMessengerBot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "removePublicKey", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "removeService", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "internalType": "string", + "name": "capability", + "type": "string" + } + ], + "name": "removeServiceCapability", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_supportedToken", + "type": "address" + } + ], + "name": "removeSupportedToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string[]", + "name": "serviceNames", + "type": "string[]" + } + ], + "name": "removeWantedServices", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "callerConfirmation", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "limit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "period", + "type": "uint256" + } + ], + "name": "setGasMoneyWithdrawal", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "_isSupported", + "type": "bool" + } + ], + "name": "setOffChainPaymentSupported", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "internalType": "string[]", + "name": "capabilities", + "type": "string[]" + } + ], + "name": "setServiceCapabilities", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + } + ], + "name": "setServiceFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "internalType": "bool", + "name": "restrictedRate", + "type": "bool" + } + ], + "name": "setServiceRestrictedRate", + "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": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferERC20", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC721", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferERC721", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toBot", + "type": "address" + }, + { + "internalType": "uint256", + "name": "counter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expiresAt", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "verifyCheque", + "outputs": [ + { + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "internalType": "uint256", + "name": "paymentAmount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address payable", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint16", + "name": "reason", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "reasonVersion", + "type": "uint16" + } + ], + "name": "withdrawCancellation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "withdrawGasMoney", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "bytecode": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516155896200010460003960008181612f7001528181612f99015261330301526155896000f3fe60806040526004361061039d5760003560e01c806301ffc9a7146103a957806308564c19146103de5780630ede80d614610400578063136f50ca14610430578063150b7a021461045257806318274da4146104965780631aca6376146104b65780631c54f0f7146104d85780631c5db99e146104f857806320606b701461051857806321b9b9291461053a578063241bbbfc14610568578063248a9ca31461057d5780632a1193801461059d5780632f2ff15d146105bd578063319d13f3146105dd57806333746274146105fd57806333e1a2231461061f57806336568abe1461063f578063383aba871461065f57806339e4c7051461068157806341bf7c69146106a157806342072bbd146106c1578063432cf639146106d65780634781ae53146106f65780634f1ef286146107165780634f3f46391461072957806351889d6b1461074b57806352d1902d1461076b5780635c988994146107805780635e07f869146107a057806363e86cc8146107c0578063647d8f6d146107e2578063658db0af146108025780636d69fcaf146108255780636fc22cd11461084557806374aa20481461086557806374fe60e9146108855780637512e55b146108a557806376319190146108c55780637eec56c7146108e5578063852b3ccb14610908578063857cdbb81461092a57806385f438c1146109575780638c20f574146109795780638f69347d146109995780639010d07c146109b957806391d14854146109d9578063930659eb146109f95780639db5dbe414610a29578063a217fddf14610a49578063a31aa03914610a5e578063a3246ad314610a7e578063a7d022f814610aab578063ad3cb1cc14610acb578063b512463514610afc578063be66718814610b1c578063c162d7da14610b3c578063c39409e114610b51578063c6640e6814610b66578063c7b5914f14610b86578063ca15c87314610ba6578063ccde65dc14610bc6578063cd9ef91414610be6578063d09445c214610c06578063d3c7c2c714610c28578063d547741f14610c3d578063da47d85614610c5d578063e0b78add14610c8a578063e26a61bb14610caa578063e5a6725c14610cca578063e7bfce9a14610cea578063e96cf7ad14610d0a578063ea79d07a14610d1f578063eb5ea27314610d34578063ebc20d2014610d54578063ed24911d14610d74578063ee3b641f14610d89578063f3fef3a314610da9578063f51acaea14610dc9578063f72c0d8b14610de9578063f7e45f0914610e0b57600080fd5b366103a457005b600080fd5b3480156103b557600080fd5b506103c96103c4366004614431565b610e2b565b60405190151581526020015b60405180910390f35b3480156103ea57600080fd5b506103f3610e56565b6040516103d59190614505565b34801561040c57600080fd5b506104226000805160206154f483398151915281565b6040519081526020016103d5565b34801561043c57600080fd5b50610445610f80565b6040516103d59190614518565b34801561045e57600080fd5b5061047d61046d366004614634565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020016103d5565b3480156104a257600080fd5b506104226104b136600461469f565b610fa0565b3480156104c257600080fd5b506104d66104d13660046146d3565b610fae565b005b3480156104e457600080fd5b506104d66104f3366004614714565b61105b565b34801561050457600080fd5b506104d66105133660046147d4565b6110ff565b34801561052457600080fd5b5061042260008051602061551483398151915281565b34801561054657600080fd5b5061055a610555366004614808565b6111b7565b6040516103d59291906148a3565b34801561057457600080fd5b506103c9611380565b34801561058957600080fd5b506104226105983660046148bc565b611398565b3480156105a957600080fd5b506104d66105b83660046148ec565b6113b8565b3480156105c957600080fd5b506104d66105d8366004614928565b61145e565b3480156105e957600080fd5b506103f36105f836600461469f565b611480565b34801561060957600080fd5b506104226000805160206154b483398151915281565b34801561062b57600080fd5b506104d661063a366004614958565b61148e565b34801561064b57600080fd5b506104d661065a366004614928565b61164a565b34801561066b57600080fd5b5061042260008051602061541483398151915281565b34801561068d57600080fd5b506104d661069c3660046147d4565b61167d565b3480156106ad57600080fd5b506104d66106bc3660046149c0565b611723565b3480156106cd57600080fd5b5061044561179b565b3480156106e257600080fd5b506104d66106f1366004614a12565b6117b2565b34801561070257600080fd5b50610422610711366004614a87565b611823565b6104d6610724366004614af5565b6118a5565b34801561073557600080fd5b5061073e6118c4565b6040516103d59190614b44565b34801561075757600080fd5b506104d6610766366004614b58565b6118e2565b34801561077757600080fd5b50610422611995565b34801561078c57600080fd5b506104d661079b3660046148bc565b6119b2565b3480156107ac57600080fd5b506103f36107bb3660046148bc565b6119f0565b3480156107cc57600080fd5b5061042260008051602061543483398151915281565b3480156107ee57600080fd5b506104d66107fd366004614808565b611af8565b34801561080e57600080fd5b50610817611cfa565b6040516103d5929190614b84565b34801561083157600080fd5b506104d6610840366004614b92565b611d1c565b34801561085157600080fd5b506104d6610860366004614714565b611d3d565b34801561087157600080fd5b506104d6610880366004614baf565b611d5f565b34801561089157600080fd5b506104d66108a03660046148ec565b611e17565b3480156108b157600080fd5b506104d66108c0366004614bf5565b611e51565b3480156108d157600080fd5b506104d66108e0366004614b92565b611ec0565b3480156108f157600080fd5b506108fa611ee1565b6040516103d5929190614ccc565b34801561091457600080fd5b5061042260008051602061553483398151915281565b34801561093657600080fd5b5061094a610945366004614b92565b6120a6565b6040516103d59190614d3e565b34801561096357600080fd5b506104226000805160206154d483398151915281565b34801561098557600080fd5b506104d6610994366004614bf5565b61218b565b3480156109a557600080fd5b506103c96109b43660046148bc565b6121fa565b3480156109c557600080fd5b5061073e6109d4366004614714565b61222b565b3480156109e557600080fd5b506103c96109f4366004614928565b612259565b348015610a0557600080fd5b50610a19610a14366004614d51565b61228f565b6040516103d59493929190614d7f565b348015610a3557600080fd5b506104d6610a443660046146d3565b6122e6565b348015610a5557600080fd5b50610422600081565b348015610a6a57600080fd5b506104d6610a79366004614d9a565b612339565b348015610a8a57600080fd5b50610a9e610a993660046148bc565b61235a565b6040516103d59190614db7565b348015610ab757600080fd5b506104d6610ac6366004614df8565b612387565b348015610ad757600080fd5b5061094a604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610b0857600080fd5b506103c9610b1736600461469f565b6123f8565b348015610b2857600080fd5b506104d6610b37366004614714565b612406565b348015610b4857600080fd5b5061073e612440565b348015610b5d57600080fd5b5061042261245b565b348015610b7257600080fd5b506104d6610b81366004614b92565b612470565b348015610b9257600080fd5b50610422610ba1366004614a87565b61250b565b348015610bb257600080fd5b50610422610bc13660046148bc565b612547565b348015610bd257600080fd5b506104d6610be1366004614af5565b61256c565b348015610bf257600080fd5b506104d6610c01366004614e3e565b61258e565b348015610c1257600080fd5b5061042260008051602061549483398151915281565b348015610c3457600080fd5b50610a9e612646565b348015610c4957600080fd5b506104d6610c58366004614928565b612660565b348015610c6957600080fd5b50610c7d610c783660046148bc565b61267c565b6040516103d59190614e77565b348015610c9657600080fd5b506103c9610ca5366004614b92565b6127a5565b348015610cb657600080fd5b506104d6610cc5366004614e8a565b6127bf565b348015610cd657600080fd5b506104d6610ce53660046148bc565b61285d565b348015610cf657600080fd5b506104d6610d05366004614b92565b6128e9565b348015610d1657600080fd5b5061042261290a565b348015610d2b57600080fd5b50610a9e61291f565b348015610d4057600080fd5b50610422610d4f3660046148bc565b612939565b348015610d6057600080fd5b506104d6610d6f366004614f1d565b612964565b348015610d8057600080fd5b506104226129d1565b348015610d9557600080fd5b50610817610da4366004614b92565b6129dc565b348015610db557600080fd5b506104d6610dc4366004614b58565b612a17565b348015610dd557600080fd5b506104d6610de436600461469f565b612a9f565b348015610df557600080fd5b5061042260008051602061545483398151915281565b348015610e1757600080fd5b506104d6610e26366004614baf565b612b0a565b60006001600160e01b03198216635a05180f60e01b1480610e505750610e5082612b44565b92915050565b60606000610e62610f80565b9050600081516001600160401b03811115610e7f57610e7f614571565b604051908082528060200260200182016040528015610eb257816020015b6060815260200190600190039081610e9d5790505b50905060005b8251811015610f7957610ec9612440565b6001600160a01b0316635a81a626848381518110610ee957610ee9614f76565b60200260200101516040518263ffffffff1660e01b8152600401610f0f91815260200190565b600060405180830381865afa158015610f2c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f549190810190614f8c565b828281518110610f6657610f66614f76565b6020908102919091010152600101610eb8565b5092915050565b60606000610f8c612b79565b9050610f9a81600901612b9d565b91505090565b6000610e50610d4f83612baa565b6000805160206154d4833981519152610fc681612c20565b6001600160a01b038316610fed57604051633a954ecd60e21b815260040160405180910390fd5b604051632142170760e11b81523060048201526001600160a01b038481166024830152604482018490528516906342842e0e90606401600060405180830381600087803b15801561103d57600080fd5b505af1158015611051573d6000803e3d6000fd5b5050505050505050565b60008051602061553483398151915261107381612c20565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__6321b87f3a6110956118c4565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018690526044810185905260640160006040518083038186803b1580156110e257600080fd5b505af41580156110f6573d6000803e3d6000fd5b50505050505050565b60008051602061549483398151915261111781612c20565b60005b82518110156111b257600061114784838151811061113a5761113a614f76565b6020026020010151612baa565b905061115281612c2a565b83828151811061116457611164614f76565b60200260200101516040516111799190614ff9565b604051908190038120907f50cc5f9d56177aa0de269c136f2d2ffd45d7b66c82f0a82f8f840db54d9801f890600090a25060010161111a565b505050565b6000806001600160a01b038a1630146111ee5789604051637b7d696f60e01b81526004016111e59190614b44565b60405180910390fd5b6111f6612440565b6001600160a01b03166312b357b58a6040518263ffffffff1660e01b81526004016112219190614b44565b602060405180830381865afa15801561123e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112629190615015565b6112815788604051633f2c64af60e01b81526004016111e59190614b44565b8342106112a457604051636453b2e560e01b8152600481018590526024016111e5565b6112b48a8a8a8a8a8a8a8a612c68565b91506112bf826127a5565b6112de578160405163248d101d60e11b81526004016111e59190614b44565b60006112e8612c94565b6001600160a01b03808516600090815260208381526040808320938e1683529290522060018101549192509088101561133b5760018101546040516307c83fcf60e41b81526111e5918a91600401614b84565b80548911611360578054604051632256490160e11b81526111e5918b91600401614b84565b600181015461136f9089615048565b925050509850989650505050505050565b60008061138b612b79565b6003015460ff1692915050565b6000806113a3612cb8565b60009384526020525050604090206001015490565b6000805160206155348339815191526113d081612c20565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__6307e473166113f26118c4565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024810187905261ffff80871660448301528516606482015260840160006040518083038186803b15801561144a57600080fd5b505af4158015611051573d6000803e3d6000fd5b61146782611398565b61147081612c20565b61147a8383612cdc565b50505050565b6060610e506107bb83612baa565b6000611498612d1e565b805490915060ff600160401b82041615906001600160401b03166000811580156114bf5750825b90506000826001600160401b031660011480156114db5750303b155b9050811580156114e9575080155b156115075760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b0319166001178555831561153057845460ff60401b1916600160401b1785555b611538612d42565b611540612d42565b611548612d4c565b611553600088612cdc565b5061156c60008051602061549483398151915288612cdc565b506115856000805160206154b483398151915288612cdc565b5061159e60008051602061545483398151915287612cdc565b5060006115a9612de6565b80546001600160a01b03808e166001600160a01b0319928316178355600183018054918e1691909216179055600281018a90559050678ac7230489e80000620151806115f58282612e0a565b505050831561163e57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b6001600160a01b03811633146116735760405163334bd91960e11b815260040160405180910390fd5b6111b28282612e2d565b60008051602061549483398151915261169581612c20565b60005b82518110156111b25760006116b884838151811061113a5761113a614f76565b90506116c381612e66565b8382815181106116d5576116d5614f76565b60200260200101516040516116ea9190614ff9565b604051908190038120907f0edb7a081e6ff720ad9e97b837c352ef0548c4d09ec421b9b930b1e0c708e39e90600090a250600101611698565b60008051602061549483398151915261173b81612c20565b61174d61174784612baa565b83612ea4565b8260405161175b9190614ff9565b604051908190038120838252907fdd6c54a4503e1d8a1e75d73648f77d8fe66234b437ce30e20edd51563116ec41906020015b60405180910390a2505050565b606060006117a7612b79565b9050610f9a81612b9d565b6000805160206154948339815191526117ca81612c20565b6117de6117d686612baa565b858486612ecd565b846040516117ec9190614ff9565b604051908190038120907f763f2f41e0c407dd0a7067f44e5468a0db74da9fdb6cd1cb20c7b6dae937527990600090a25050505050565b604080516000805160206154f483398151915260208201526001600160a01b03808a16928201929092528188166060820152908616608082015260a0810185905260c0810184905260e081018390526101008101829052600090610120015b604051602081830303815290604052805190602001209050979650505050505050565b6118ad612f65565b6118b682612ff3565b6118c08282613136565b5050565b6000806118cf612de6565b600101546001600160a01b031692915050565b6000805160206154b48339815191526118fa81612c20565b611903826131ea565b61191b60008051602061543483398151915284612cdc565b5061193460008051602061553483398151915284612cdc565b5061194d60008051602061541483398151915284612cdc565b506040516001600160a01b038416907fdb3e11ba26e83d528bf96a2167061674c1ce7777c61376d852d172594a87399490600090a26111b26001600160a01b0384168361325f565b600061199f6132f8565b5060008051602061547483398151915290565b6119ba613341565b6000805160206154148339815191526119d281612c20565b6119db826131ea565b6119e482613377565b506119ed6134a4565b50565b606060006119fc612b79565b9050611a0883826134b5565b806002016000848152602001908152602001600020600201805480602002602001604051908101604052809291908181526020016000905b82821015611aec578382906000526020600020018054611a5f9061505b565b80601f0160208091040260200160405190810160405280929190818152602001828054611a8b9061505b565b8015611ad85780601f10611aad57610100808354040283529160200191611ad8565b820191906000526020600020905b815481529060010190602001808311611abb57829003601f168201915b505050505081526020019060010190611a40565b50505050915050919050565b611b00613341565b600080611b138a8a8a8a8a8a8a8a6111b7565b91509150611b258289898989896134df565b6000612710611b32612440565b6001600160a01b0316633c5559386040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b939190615095565b611b9d90846150ae565b611ba791906150c5565b90506000611bb58284615048565b90508a6001600160a01b03168c6001600160a01b031614611bf7576000611bda612c94565b905083816001016000828254611bf091906150e7565b9091555050505b611c7382611c03612440565b6001600160a01b0316630470d3ac6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6491906150fa565b6001600160a01b03169061325f565b611c866001600160a01b038c168261325f565b604080516001600160a01b0386811682528c811660208301529181018b9052606081018a90526080810183905260a08101849052818d16918e16907f4ebd6343a4ae90ea9a2add4327d0439de765f4b8bbb691caaf0875ef36c54e819060c00160405180910390a3505050506110516134a4565b6000806000611d0761354a565b90508060020154816003015492509250509091565b600080516020615494833981519152611d3481612c20565b6118c08261356e565b6000805160206154b4833981519152611d5581612c20565b6111b283836135e4565b600080516020615534833981519152611d7781612c20565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__63fd13a43e611d996118c4565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018890526044810187905261ffff80871660648301528516608482015260a40160006040518083038186803b158015611df857600080fd5b505af4158015611e0c573d6000803e3d6000fd5b505050505050505050565b600080516020615534833981519152611e2f81612c20565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__63793dddac6113f26118c4565b600080516020615494833981519152611e6981612c20565b611e7b611e7584612baa565b8361363e565b82604051611e899190614ff9565b60405180910390207f498a5f4e6f3921f63e6863032989bdb7bb41e5cf5cbde5437c7322c5c8dc46bf8360405161178e9190614d3e565b600080516020615494833981519152611ed881612c20565b6118c082613682565b6060806000611eee61179b565b9050600081516001600160401b03811115611f0b57611f0b614571565b604051908082528060200260200182016040528015611f3e57816020015b6060815260200190600190039081611f295790505b509050600082516001600160401b03811115611f5c57611f5c614571565b604051908082528060200260200182016040528015611f9557816020015b611f82614332565b815260200190600190039081611f7a5790505b50905060005b835181101561209b57611fac612440565b6001600160a01b0316635a81a626858381518110611fcc57611fcc614f76565b60200260200101516040518263ffffffff1660e01b8152600401611ff291815260200190565b600060405180830381865afa15801561200f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526120379190810190614f8c565b83828151811061204957612049614f76565b602002602001018190525061207684828151811061206957612069614f76565b602002602001015161267c565b82828151811061208857612088614f76565b6020908102919091010152600101611f9b565b509094909350915050565b606060006120b2612b79565b90506120c160068201846136f8565b6120e0578260405163ba650b5f60e01b81526004016111e59190614b44565b6001600160a01b0383166000908152600882016020526040902080546121059061505b565b80601f01602080910402602001604051908101604052809291908181526020018280546121319061505b565b801561217e5780601f106121535761010080835404028352916020019161217e565b820191906000526020600020905b81548152906001019060200180831161216157829003601f168201915b5050505050915050919050565b6000805160206154948339815191526121a381612c20565b6121b56121af84612baa565b8361370d565b826040516121c39190614ff9565b60405180910390207fba851faec9e30a9961f0adb49fe025cda6c8d7d0fb9bad99f89c37d0570232648360405161178e9190614d3e565b600080612205612b79565b905061221183826134b5565b600092835260020160205250604090206001015460ff1690565b60008061223661383c565b60008581526020829052604090209091506122519084613860565b949350505050565b600080612264612cb8565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b600080600080600061229f612c94565b6001600160a01b0397881660009081526020918252604080822098909916815296905250505092909120805460018201546002830154600390930154919590945091925090565b6000805160206154d48339815191526122fe81612c20565b6001600160a01b03831661232557604051633a954ecd60e21b815260040160405180910390fd5b61147a6001600160a01b038516848461386c565b60008051602061549483398151915261235181612c20565b6118c0826138c4565b6060600061236661383c565b600084815260208290526040902090915061238090612b9d565b9392505050565b60008051602061549483398151915261239f81612c20565b6123b16123ab84612baa565b8361391b565b826040516123bf9190614ff9565b6040519081900381208315158252907f23960b931eb4b63e2e47d040f51cc0de6eef2e865639eb674fbb1890ece3a0ab9060200161178e565b6000610e506109b483612baa565b60008051602061553483398151915261241e81612c20565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__63348e06dd6110956118c4565b60008061244b612de6565b546001600160a01b031692915050565b600080612466612de6565b6002015492915050565b6000805160206154b483398151915261248881612c20565b6124a060008051602061543483398151915283612e2d565b506124b960008051602061553483398151915283612e2d565b506124d260008051602061541483398151915283612e2d565b506040516001600160a01b038316907fd124523a9cfa28c5dd01826c4fa56192ec7d56859943082e0ca46c3b9dc6291390600090a25050565b60006125156129d1565b61252489898989898989611823565b60405161190160f01b602082015260228101929092526042820152606201611882565b60008061255261383c565b600084815260208290526040902090915061238090613955565b60008051602061549483398151915261258481612c20565b6111b2838361395f565b612596613341565b6000805160206155348339815191526125ae81612c20565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__637adf63b76125d06118c4565b6040516001600160e01b031960e084901b1681526001600160a01b0391821660048201526024810188905260448101879052908516606482015260840160006040518083038186803b15801561262557600080fd5b505af4158015612639573d6000803e3d6000fd5b50505050506111b26134a4565b60606000612652612b79565b9050610f9a60048201612b9d565b61266982611398565b61267281612c20565b61147a8383612e2d565b612684614332565b600061268e612b79565b905061269a83826134b5565b6000838152600280830160209081526040808420815160608101835281548152600182015460ff161515818501529381018054835181860281018601855281815295969295938701949192909184015b828210156127965783829060005260206000200180546127099061505b565b80601f01602080910402602001604051908101604052809291908181526020018280546127359061505b565b80156127825780601f1061275757610100808354040283529160200191612782565b820191906000526020600020905b81548152906001019060200180831161276557829003601f168201915b5050505050815260200190600101906126ea565b50505091525090949350505050565b6000610e5060008051602061543483398151915283612259565b6000805160206155348339815191526127d781612c20565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__63e4c225696127f96118c4565b8a8a8a8a8a8a8a6040518963ffffffff1660e01b8152600401612823989796959493929190615117565b60006040518083038186803b15801561283b57600080fd5b505af415801561284f573d6000803e3d6000fd5b505050505050505050505050565b60008051602061553483398151915261287581612c20565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__63c7bffa966128976118c4565b846040518363ffffffff1660e01b81526004016128b59291906148a3565b60006040518083038186803b1580156128cd57600080fd5b505af41580156128e1573d6000803e3d6000fd5b505050505050565b60008051602061549483398151915261290181612c20565b6118c0826139fb565b600080612915612c94565b6001015492915050565b6060600061292b612b79565b9050610f9a81600601612b9d565b600080612944612b79565b905061295083826134b5565b600092835260020160205250604090205490565b60008051602061549483398151915261297c81612c20565b61298e61298884612baa565b83613a94565b8260405161299c9190614ff9565b604051908190038120907fd52aef6010d6b6303240865274298b7c5784b14ebf9df788047b34c69c53137190600090a2505050565b600080612466612c94565b60008060006129e961354a565b6001600160a01b03909416600090815260208581526040808320546001909701909152902054939492505050565b612a1f613341565b6000805160206154d4833981519152612a3781612c20565b612a40826131ea565b612a536001600160a01b0384168361325f565b826001600160a01b03167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a942436483604051612a8e91815260200190565b60405180910390a2506118c06134a4565b600080516020615494833981519152612ab781612c20565b612ac8612ac383612baa565b613ad2565b81604051612ad69190614ff9565b604051908190038120907f52f6e0779195109314dfb8cf301d33491c63f136afac4c5d4f35aa934b25481390600090a25050565b600080516020615534833981519152612b2281612c20565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__63b54e72d8611d996118c4565b60006001600160e01b03198216637965db0b60e01b1480610e5057506301ffc9a760e01b6001600160e01b0319831614610e50565b7ff2856e5e1b7689dcde1bb551fd115c3cad8d243ea609d47a46b4d22ee58d300090565b6060600061238083613b3b565b6000612bb4612440565b6001600160a01b031663352af39a836040518263ffffffff1660e01b8152600401612bdf9190614d3e565b602060405180830381865afa158015612bfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e509190615095565b6119ed8133613b97565b6000612c34612b79565b90506000612c456009830184613bc2565b9050806111b257604051631a1e056960e01b8152600481018490526024016111e5565b600080612c7a8a8a8a8a8a8a8a61250b565b9050612c868184613bce565b9a9950505050505050505050565b7f175f7e400d42af44d9ebd24e9efee8a2c4ed78ddf46a83e51a493ae382c8760090565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b600080612ce761383c565b90506000612cf58585613bf8565b90508015612251576000858152602083905260409020612d159085613c99565b50949350505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b612d4a613cae565b565b612d54613cae565b6000612d5e612c94565b604051909150612dc690600080516020615514833981519152907f964f47ba1d5dc0d1184a60039dba40abb2d0eee53398392e97308cb5f4a12f94907fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6904690602001614d7f565b60408051601f198184030181529190528051602090910120600290910155565b7f0c7b73796c7cc89b9f849b9056a93200eba741881e57a1b03b9bedb2c0e0710090565b612e12613cae565b6000612e1c61354a565b600281019390935550600390910155565b600080612e3861383c565b90506000612e468585613cd3565b90508015612251576000858152602083905260409020612d159085613d4b565b6000612e70612b79565b90506000612e816009830184613d60565b9050806111b257604051637eae59f160e11b8152600481018490526024016111e5565b6000612eae612b79565b9050612eba83826134b5565b6000928352600201602052604090912055565b6000612ed7612b79565b90506000612ee58287613bc2565b905080612f07576040516221e3bb60e31b8152600481018790526024016111e5565b60408051606081018252868152841515602080830191825282840188815260008b81526002888101845295902084518155925160018401805460ff191691151591909117905551805193949293611e0c938501929190910190614355565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480612fd557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612fc9613d6c565b6001600160a01b031614155b15612d4a5760405163703e46dd60e11b815260040160405180910390fd5b60008051602061545483398151915261300b81612c20565b6000613015612440565b6001600160a01b0316639d825bc56040518163ffffffff1660e01b8152600401602060405180830381865afa158015613052573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061307691906150fa565b90506000613082613d6c565b9050836001600160a01b0316816001600160a01b0316036130ba5780846040516382afabc160e01b81526004016111e5929190615175565b816001600160a01b0316846001600160a01b0316146130f057818460405163699a021f60e11b81526004016111e5929190615175565b836001600160a01b0316816001600160a01b03167fa3d484f827e1c900ce24494bfdb214bcbad08472a9f0571fb5beac779a682db460405160405180910390a350505050565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015613190575060408051601f3d908101601f1916820190925261318d91810190615095565b60015b6131af5781604051634c9c8ce360e01b81526004016111e59190614b44565b60008051602061547483398151915281146131e057604051632a87526960e21b8152600481018290526024016111e5565b6111b28383613d88565b60006131f461245b565b9050600061320061290a565b9050818110156111b25760006132168284615048565b905060006132248247615048565b905080851115613258576040516344c8760560e11b81526004810182905260248101839052604481018690526064016111e5565b5050505050565b8047101561328457478160405163cf47918160e01b81526004016111e5929190614b84565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146132d1576040519150601f19603f3d011682016040523d82523d6000602084013e6132d6565b606091505b50509050806111b25760405163d6bda27560e01b815260040160405180910390fd5b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612d4a5760405163703e46dd60e11b815260040160405180910390fd5b600061334b613dde565b80549091506001190161337157604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b600061338161354a565b905080600201548211156133b057806002015482604051631728bc5b60e31b81526004016111e5929190614b84565b60038101543360009081526020839052604090205442916133d0916150e7565b8111156133f85733600090815260018301602090815260408083208390559084905290208190555b600282015433600090815260018401602052604090205461341a9085906150e7565b11156134415781600201548360405163d54b188760e01b81526004016111e5929190614b84565b336000908152600183016020526040812080548592906134629084906150e7565b909155506134729050338461325f565b60405183815233907fb9ec638398bbdcd0844ca414d8ce760939fa88b9258b9764b3fc6c12ea2605c29060200161178e565b60006134ae613dde565b6001905550565b6134bf8183613e02565b6118c057604051631e96f6ed60e21b8152600481018390526024016111e5565b60006134e9612c94565b604080516080810182529687526020808801968752878201958652606088019485526001600160a01b03998a166000908152928152818320989099168252969097525093909420915182555160018201559151600283015551600390910155565b7f99a652063088b6badaeb0c7f680676baf720654b4f86f50167944489af637d0090565b6000613578612b79565b905060006135896004830184613c99565b9050806135ab5782604051632872fbf960e11b81526004016111e59190614b44565b6040516001600160a01b038416907fa317c10673baf4f03b3c1041bd5ddbb537d0333a86fec3607c75f9dbb630f48f90600090a2505050565b60006135ee61354a565b60028101849055600381018390556040519091507f8d4925b196ae6b935035a27ed36c6bd9c7a8fbddc7a3f55f493aa8e230be373e906136319085908590614b84565b60405180910390a1505050565b6000613648612b79565b905061365483826134b5565b60008381526002808301602090815260408320909101805460018101825590835291200161147a83826151ec565b600061368c612b79565b9050600061369d6004830184613d4b565b9050806136bf5782604051631532e67160e21b81526004016111e59190614b44565b6040516001600160a01b038416907f85a3e72f8dd6db3794f93109c3c5f5b79d6112f6979431c45f98b26134b42af290600090a2505050565b6000612380836001600160a01b038416613e0a565b6000613717612b79565b905061372383826134b5565b600083815260028083016020526040822001905b815481101561325857836040516020016137519190614ff9565b6040516020818303038152906040528051906020012082828154811061377957613779614f76565b9060005260206000200160405160200161379391906152a5565b604051602081830303815290604052805190602001200361383457815482906137be90600190615048565b815481106137ce576137ce614f76565b906000526020600020018282815481106137ea576137ea614f76565b906000526020600020019081613800919061531b565b5081805480613811576138116153e7565b60019003818190600052602060002001600061382d91906143ab565b9055613258565b600101613737565b7fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200090565b60006123808383613e22565b6111b283846001600160a01b031663a9059cbb85856040516024016138929291906148a3565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613e4c565b60006138ce612b79565b60038101805460ff19168415159081179091556040519081529091507fe93ceb76efb130156c6aa39fa4ac986b3f683b6da926496fca3f95ea7fe715e39060200160405180910390a15050565b6000613925612b79565b905061393183826134b5565b60009283526002016020526040909120600101805460ff1916911515919091179055565b6000610e50825490565b6000613969612b79565b9050600061397a6006830185613c99565b90508061399c5783604051631a6107e360e31b81526004016111e59190614b44565b6001600160a01b038416600090815260088301602052604090206139c084826151ec565b506040516001600160a01b038516907f928ec246afda323bc23c2815ca3f516e9fc6a7b7179772235c221e132545fe8290600090a250505050565b6000613a05612b79565b90506000613a166006830184613d4b565b905080613a38578260405163ba650b5f60e01b81526004016111e59190614b44565b6001600160a01b03831660009081526008830160205260408120613a5b916143ab565b6040516001600160a01b038416907fc5a9b8041ef11732e7dd7043167d8c22db5c7ea99dcd38dce401effacf8a29bf90600090a2505050565b6000613a9e612b79565b9050613aaa83826134b5565b6000838152600280830160209081526040909220845161147a93919092019190850190614355565b6000613adc612b79565b90506000613aea8284613d60565b905080613b0d57604051631e96f6ed60e21b8152600481018490526024016111e5565b600083815260028084016020526040822082815560018101805460ff191690559190613258908301826143e5565b606081600001805480602002602001604051908101604052809291908181526020018280548015613b8b57602002820191906000526020600020905b815481526020019060010190808311613b77575b50505050509050919050565b613ba18282612259565b6118c057808260405163e2517d3f60e01b81526004016111e59291906148a3565b60006123808383613eb4565b600080600080613bde8686613efe565b925092509250613bee8282613f4b565b5090949350505050565b600080613c03612cb8565b9050613c0f8484612259565b613c8f576000848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055613c453390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610e50565b6000915050610e50565b6000612380836001600160a01b038416613eb4565b613cb6614004565b612d4a57604051631afcd79f60e31b815260040160405180910390fd5b600080613cde612cb8565b9050613cea8484612259565b15613c8f576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610e50565b6000612380836001600160a01b03841661401e565b6000612380838361401e565b600080516020615474833981519152546001600160a01b031690565b613d9182614107565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115613dd6576111b28282614163565b6118c06141d9565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b600061238083835b60009081526001919091016020526040902054151590565b6000826000018281548110613e3957613e39614f76565b9060005260206000200154905092915050565b600080602060008451602086016000885af180613e6f576040513d6000823e3d81fd5b50506000513d91508115613e87578060011415613e94565b6001600160a01b0384163b155b1561147a5783604051635274afe760e01b81526004016111e59190614b44565b6000613ec08383613e0a565b613ef657508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610e50565b506000610e50565b60008060008351604103613f385760208401516040850151606086015160001a613f2a888285856141f8565b955095509550505050613f44565b50508151600091506002905b9250925092565b6000826003811115613f5f57613f5f6153fd565b03613f68575050565b6001826003811115613f7c57613f7c6153fd565b03613f9a5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115613fae57613fae6153fd565b03613fcf5760405163fce698f760e01b8152600481018290526024016111e5565b6003826003811115613fe357613fe36153fd565b036118c0576040516335e2f38360e21b8152600481018290526024016111e5565b600061400e612d1e565b54600160401b900460ff16919050565b60008181526001830160205260408120548015613c8f576000614042600183615048565b855490915060009061405690600190615048565b90508082146140bb57600086600001828154811061407657614076614f76565b906000526020600020015490508087600001848154811061409957614099614f76565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806140cc576140cc6153e7565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610e50565b806001600160a01b03163b6000036141345780604051634c9c8ce360e01b81526004016111e59190614b44565b60008051602061547483398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516141809190614ff9565b600060405180830381855af49150503d80600081146141bb576040519150601f19603f3d011682016040523d82523d6000602084013e6141c0565b606091505b50915091506141d08583836142bd565b95945050505050565b3415612d4a5760405163b398979f60e01b815260040160405180910390fd5b600080806fa2a8918ca85bafe22016d0b997e4df60600160ff1b0384111561422957506000915060039050826142b3565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561427d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166142a9575060009250600191508290506142b3565b9250600091508190505b9450945094915050565b6060826142d2576142cd82614309565b612380565b81511580156142e957506001600160a01b0384163b155b15610f795783604051639996b31560e01b81526004016111e59190614b44565b8051156143195780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b604051806060016040528060008152602001600015158152602001606081525090565b82805482825590600052602060002090810192821561439b579160200282015b8281111561439b578251829061438b90826151ec565b5091602001919060010190614375565b506143a79291506143ff565b5090565b5080546143b79061505b565b6000825580601f106143c7575050565b601f0160209004906000526020600020908101906119ed919061441c565b50805460008255906000526020600020908101906119ed91905b808211156143a757600061441382826143ab565b506001016143ff565b5b808211156143a7576000815560010161441d565b60006020828403121561444357600080fd5b81356001600160e01b03198116811461238057600080fd5b60005b8381101561447657818101518382015260200161445e565b50506000910152565b6000815180845261449781602086016020860161445b565b601f01601f19169290920160200192915050565b60008282518085526020808601955060208260051b8401016020860160005b848110156144f857601f198684030189526144e683835161447f565b988401989250908301906001016144ca565b5090979650505050505050565b60208152600061238060208301846144ab565b6020808252825182820181905260009190848201906040850190845b8181101561455057835183529284019291840191600101614534565b50909695505050505050565b6001600160a01b03811681146119ed57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156145af576145af614571565b604052919050565b60006001600160401b038211156145d0576145d0614571565b50601f01601f191660200190565b600082601f8301126145ef57600080fd5b81356146026145fd826145b7565b614587565b81815284602083860101111561461757600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561464a57600080fd5b84356146558161455c565b935060208501356146658161455c565b92506040850135915060608501356001600160401b0381111561468757600080fd5b614693878288016145de565b91505092959194509250565b6000602082840312156146b157600080fd5b81356001600160401b038111156146c757600080fd5b612251848285016145de565b6000806000606084860312156146e857600080fd5b83356146f38161455c565b925060208401356147038161455c565b929592945050506040919091013590565b6000806040838503121561472757600080fd5b50508035926020909101359150565b600082601f83011261474757600080fd5b813560206001600160401b038083111561476357614763614571565b8260051b614772838201614587565b938452858101830193838101908886111561478c57600080fd5b84880192505b858310156147c8578235848111156147aa5760008081fd5b6147b88a87838c01016145de565b8352509184019190840190614792565b98975050505050505050565b6000602082840312156147e657600080fd5b81356001600160401b038111156147fc57600080fd5b61225184828501614736565b600080600080600080600080610100898b03121561482557600080fd5b88356148308161455c565b975060208901356148408161455c565b965060408901356148508161455c565b9550606089013594506080890135935060a0890135925060c0890135915060e08901356001600160401b0381111561488757600080fd5b6148938b828c016145de565b9150509295985092959890939650565b6001600160a01b03929092168252602082015260400190565b6000602082840312156148ce57600080fd5b5035919050565b803561ffff811681146148e757600080fd5b919050565b60008060006060848603121561490157600080fd5b83359250614911602085016148d5565b915061491f604085016148d5565b90509250925092565b6000806040838503121561493b57600080fd5b82359150602083013561494d8161455c565b809150509250929050565b600080600080600060a0868803121561497057600080fd5b853561497b8161455c565b9450602086013561498b8161455c565b93506040860135925060608601356149a28161455c565b915060808601356149b28161455c565b809150509295509295909350565b600080604083850312156149d357600080fd5b82356001600160401b038111156149e957600080fd5b6149f5858286016145de565b95602094909401359450505050565b80151581146119ed57600080fd5b60008060008060808587031215614a2857600080fd5b84356001600160401b0380821115614a3f57600080fd5b614a4b888389016145de565b95506020870135945060408701359150614a6482614a04565b90925060608601359080821115614a7a57600080fd5b5061469387828801614736565b600080600080600080600060e0888a031215614aa257600080fd5b8735614aad8161455c565b96506020880135614abd8161455c565b95506040880135614acd8161455c565b969995985095966060810135965060808101359560a0820135955060c0909101359350915050565b60008060408385031215614b0857600080fd5b8235614b138161455c565b915060208301356001600160401b03811115614b2e57600080fd5b614b3a858286016145de565b9150509250929050565b6001600160a01b0391909116815260200190565b60008060408385031215614b6b57600080fd5b8235614b768161455c565b946020939093013593505050565b918252602082015260400190565b600060208284031215614ba457600080fd5b81356123808161455c565b60008060008060808587031215614bc557600080fd5b8435935060208501359250614bdc604086016148d5565b9150614bea606086016148d5565b905092959194509250565b60008060408385031215614c0857600080fd5b82356001600160401b0380821115614c1f57600080fd5b614c2b868387016145de565b93506020850135915080821115614c4157600080fd5b50614b3a858286016145de565b600060608301825184526020808401511515602086015260408401516060604087015282815180855260808801915060808160051b890101945060208301925060005b81811015614cbf57607f19898703018352614cad86855161447f565b95509284019291840191600101614c91565b5093979650505050505050565b604081526000614cdf60408301856144ab565b6020838203818501528185518084528284019150828160051b85010183880160005b83811015614d2f57601f19878403018552614d1d838351614c4e565b94860194925090850190600101614d01565b50909998505050505050505050565b602081526000612380602083018461447f565b60008060408385031215614d6457600080fd5b8235614d6f8161455c565b9150602083013561494d8161455c565b93845260208401929092526040830152606082015260800190565b600060208284031215614dac57600080fd5b813561238081614a04565b6020808252825182820181905260009190848201906040850190845b818110156145505783516001600160a01b031683529284019291840191600101614dd3565b60008060408385031215614e0b57600080fd5b82356001600160401b03811115614e2157600080fd5b614e2d858286016145de565b925050602083013561494d81614a04565b600080600060608486031215614e5357600080fd5b83359250602084013591506040840135614e6c8161455c565b809150509250925092565b6020815260006123806020830184614c4e565b600080600080600080600060e0888a031215614ea557600080fd5b8735614eb08161455c565b965060208801356001600160401b03811115614ecb57600080fd5b614ed78a828b016145de565b96505060408801359450606088013593506080880135614ef68161455c565b925060a0880135915060c0880135614f0d81614a04565b8091505092959891949750929550565b60008060408385031215614f3057600080fd5b82356001600160401b0380821115614f4757600080fd5b614f53868387016145de565b93506020850135915080821115614f6957600080fd5b50614b3a85828601614736565b634e487b7160e01b600052603260045260246000fd5b600060208284031215614f9e57600080fd5b81516001600160401b03811115614fb457600080fd5b8201601f81018413614fc557600080fd5b8051614fd36145fd826145b7565b818152856020838501011115614fe857600080fd5b6141d082602083016020860161445b565b6000825161500b81846020870161445b565b9190910192915050565b60006020828403121561502757600080fd5b815161238081614a04565b634e487b7160e01b600052601160045260246000fd5b81810381811115610e5057610e50615032565b600181811c9082168061506f57607f821691505b60208210810361508f57634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156150a757600080fd5b5051919050565b8082028115828204841417610e5057610e50615032565b6000826150e257634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610e5057610e50615032565b60006020828403121561510c57600080fd5b81516123808161455c565b6001600160a01b0389811682528881166020830152610100604083018190526000916151458483018b61447f565b6060850199909952608084019790975250509290931660a083015260c082015290151560e0909101529392505050565b6001600160a01b0392831681529116602082015260400190565b601f8211156111b2576000816000526020600020601f850160051c810160208610156151b85750805b601f850160051c820191505b818110156128e1578281556001016151c4565b600019600383901b1c191660019190911b1790565b81516001600160401b0381111561520557615205614571565b61521981615213845461505b565b8461518f565b602080601f83116001811461524857600084156152365750858301515b61524085826151d7565b8655506128e1565b600085815260208120601f198616915b8281101561527757888601518255948401946001909101908401615258565b50858210156152955787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008083546152b38161505b565b600182811680156152cb57600181146152e05761530f565b60ff198416875282151583028701945061530f565b8760005260208060002060005b858110156153065781548a8201529084019082016152ed565b50505082870194505b50929695505050505050565b818103615326575050565b615330825461505b565b6001600160401b0381111561534757615347614571565b61535581615213845461505b565b6000601f82116001811461538357600083156153715750848201545b61537b84826151d7565b855550613258565b600085815260209020601f19841690600086815260209020845b838110156153bd578286015482556001958601959091019060200161539d565b50858310156152955793015460001960f8600387901b161c19169092555050600190811b01905550565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fdfee562760eaa817d85ec1bf58364c4d65adb65d99d113c6785ef9aa66567076c954c1d97560aef1d9626af2ccff8a6ac6e245c44c307e795e9c16f7211c611a315189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc9a95e87c5af084bf5db8491c3a6515da9dd6da39b24b0eb0af08d7b9cd808d91c6ae66da7afbd0becbe49ddf95a9256901d87f1bb5e3d43236030e5e4a585b6d10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e487b38f131334165ac2b361f08966c9fcff3a953fa7d9d9c2861b7f0b50445bcbc2f8787176b8ac6bf7215b4adcc1e069bf4ab82d9ab1df05a57a91d425935b6e3acdf00ba9ef08b5f2c22768276611b9af078bf6c24fa36b34ec5e9f2eb061faa26469706673582212200540b09191ebd8a1004327f6309ecd4316849f0d987f7010a72aeade96f57e0164736f6c63430008180033", + "deployedBytecode": "0x60806040526004361061039d5760003560e01c806301ffc9a7146103a957806308564c19146103de5780630ede80d614610400578063136f50ca14610430578063150b7a021461045257806318274da4146104965780631aca6376146104b65780631c54f0f7146104d85780631c5db99e146104f857806320606b701461051857806321b9b9291461053a578063241bbbfc14610568578063248a9ca31461057d5780632a1193801461059d5780632f2ff15d146105bd578063319d13f3146105dd57806333746274146105fd57806333e1a2231461061f57806336568abe1461063f578063383aba871461065f57806339e4c7051461068157806341bf7c69146106a157806342072bbd146106c1578063432cf639146106d65780634781ae53146106f65780634f1ef286146107165780634f3f46391461072957806351889d6b1461074b57806352d1902d1461076b5780635c988994146107805780635e07f869146107a057806363e86cc8146107c0578063647d8f6d146107e2578063658db0af146108025780636d69fcaf146108255780636fc22cd11461084557806374aa20481461086557806374fe60e9146108855780637512e55b146108a557806376319190146108c55780637eec56c7146108e5578063852b3ccb14610908578063857cdbb81461092a57806385f438c1146109575780638c20f574146109795780638f69347d146109995780639010d07c146109b957806391d14854146109d9578063930659eb146109f95780639db5dbe414610a29578063a217fddf14610a49578063a31aa03914610a5e578063a3246ad314610a7e578063a7d022f814610aab578063ad3cb1cc14610acb578063b512463514610afc578063be66718814610b1c578063c162d7da14610b3c578063c39409e114610b51578063c6640e6814610b66578063c7b5914f14610b86578063ca15c87314610ba6578063ccde65dc14610bc6578063cd9ef91414610be6578063d09445c214610c06578063d3c7c2c714610c28578063d547741f14610c3d578063da47d85614610c5d578063e0b78add14610c8a578063e26a61bb14610caa578063e5a6725c14610cca578063e7bfce9a14610cea578063e96cf7ad14610d0a578063ea79d07a14610d1f578063eb5ea27314610d34578063ebc20d2014610d54578063ed24911d14610d74578063ee3b641f14610d89578063f3fef3a314610da9578063f51acaea14610dc9578063f72c0d8b14610de9578063f7e45f0914610e0b57600080fd5b366103a457005b600080fd5b3480156103b557600080fd5b506103c96103c4366004614431565b610e2b565b60405190151581526020015b60405180910390f35b3480156103ea57600080fd5b506103f3610e56565b6040516103d59190614505565b34801561040c57600080fd5b506104226000805160206154f483398151915281565b6040519081526020016103d5565b34801561043c57600080fd5b50610445610f80565b6040516103d59190614518565b34801561045e57600080fd5b5061047d61046d366004614634565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020016103d5565b3480156104a257600080fd5b506104226104b136600461469f565b610fa0565b3480156104c257600080fd5b506104d66104d13660046146d3565b610fae565b005b3480156104e457600080fd5b506104d66104f3366004614714565b61105b565b34801561050457600080fd5b506104d66105133660046147d4565b6110ff565b34801561052457600080fd5b5061042260008051602061551483398151915281565b34801561054657600080fd5b5061055a610555366004614808565b6111b7565b6040516103d59291906148a3565b34801561057457600080fd5b506103c9611380565b34801561058957600080fd5b506104226105983660046148bc565b611398565b3480156105a957600080fd5b506104d66105b83660046148ec565b6113b8565b3480156105c957600080fd5b506104d66105d8366004614928565b61145e565b3480156105e957600080fd5b506103f36105f836600461469f565b611480565b34801561060957600080fd5b506104226000805160206154b483398151915281565b34801561062b57600080fd5b506104d661063a366004614958565b61148e565b34801561064b57600080fd5b506104d661065a366004614928565b61164a565b34801561066b57600080fd5b5061042260008051602061541483398151915281565b34801561068d57600080fd5b506104d661069c3660046147d4565b61167d565b3480156106ad57600080fd5b506104d66106bc3660046149c0565b611723565b3480156106cd57600080fd5b5061044561179b565b3480156106e257600080fd5b506104d66106f1366004614a12565b6117b2565b34801561070257600080fd5b50610422610711366004614a87565b611823565b6104d6610724366004614af5565b6118a5565b34801561073557600080fd5b5061073e6118c4565b6040516103d59190614b44565b34801561075757600080fd5b506104d6610766366004614b58565b6118e2565b34801561077757600080fd5b50610422611995565b34801561078c57600080fd5b506104d661079b3660046148bc565b6119b2565b3480156107ac57600080fd5b506103f36107bb3660046148bc565b6119f0565b3480156107cc57600080fd5b5061042260008051602061543483398151915281565b3480156107ee57600080fd5b506104d66107fd366004614808565b611af8565b34801561080e57600080fd5b50610817611cfa565b6040516103d5929190614b84565b34801561083157600080fd5b506104d6610840366004614b92565b611d1c565b34801561085157600080fd5b506104d6610860366004614714565b611d3d565b34801561087157600080fd5b506104d6610880366004614baf565b611d5f565b34801561089157600080fd5b506104d66108a03660046148ec565b611e17565b3480156108b157600080fd5b506104d66108c0366004614bf5565b611e51565b3480156108d157600080fd5b506104d66108e0366004614b92565b611ec0565b3480156108f157600080fd5b506108fa611ee1565b6040516103d5929190614ccc565b34801561091457600080fd5b5061042260008051602061553483398151915281565b34801561093657600080fd5b5061094a610945366004614b92565b6120a6565b6040516103d59190614d3e565b34801561096357600080fd5b506104226000805160206154d483398151915281565b34801561098557600080fd5b506104d6610994366004614bf5565b61218b565b3480156109a557600080fd5b506103c96109b43660046148bc565b6121fa565b3480156109c557600080fd5b5061073e6109d4366004614714565b61222b565b3480156109e557600080fd5b506103c96109f4366004614928565b612259565b348015610a0557600080fd5b50610a19610a14366004614d51565b61228f565b6040516103d59493929190614d7f565b348015610a3557600080fd5b506104d6610a443660046146d3565b6122e6565b348015610a5557600080fd5b50610422600081565b348015610a6a57600080fd5b506104d6610a79366004614d9a565b612339565b348015610a8a57600080fd5b50610a9e610a993660046148bc565b61235a565b6040516103d59190614db7565b348015610ab757600080fd5b506104d6610ac6366004614df8565b612387565b348015610ad757600080fd5b5061094a604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610b0857600080fd5b506103c9610b1736600461469f565b6123f8565b348015610b2857600080fd5b506104d6610b37366004614714565b612406565b348015610b4857600080fd5b5061073e612440565b348015610b5d57600080fd5b5061042261245b565b348015610b7257600080fd5b506104d6610b81366004614b92565b612470565b348015610b9257600080fd5b50610422610ba1366004614a87565b61250b565b348015610bb257600080fd5b50610422610bc13660046148bc565b612547565b348015610bd257600080fd5b506104d6610be1366004614af5565b61256c565b348015610bf257600080fd5b506104d6610c01366004614e3e565b61258e565b348015610c1257600080fd5b5061042260008051602061549483398151915281565b348015610c3457600080fd5b50610a9e612646565b348015610c4957600080fd5b506104d6610c58366004614928565b612660565b348015610c6957600080fd5b50610c7d610c783660046148bc565b61267c565b6040516103d59190614e77565b348015610c9657600080fd5b506103c9610ca5366004614b92565b6127a5565b348015610cb657600080fd5b506104d6610cc5366004614e8a565b6127bf565b348015610cd657600080fd5b506104d6610ce53660046148bc565b61285d565b348015610cf657600080fd5b506104d6610d05366004614b92565b6128e9565b348015610d1657600080fd5b5061042261290a565b348015610d2b57600080fd5b50610a9e61291f565b348015610d4057600080fd5b50610422610d4f3660046148bc565b612939565b348015610d6057600080fd5b506104d6610d6f366004614f1d565b612964565b348015610d8057600080fd5b506104226129d1565b348015610d9557600080fd5b50610817610da4366004614b92565b6129dc565b348015610db557600080fd5b506104d6610dc4366004614b58565b612a17565b348015610dd557600080fd5b506104d6610de436600461469f565b612a9f565b348015610df557600080fd5b5061042260008051602061545483398151915281565b348015610e1757600080fd5b506104d6610e26366004614baf565b612b0a565b60006001600160e01b03198216635a05180f60e01b1480610e505750610e5082612b44565b92915050565b60606000610e62610f80565b9050600081516001600160401b03811115610e7f57610e7f614571565b604051908082528060200260200182016040528015610eb257816020015b6060815260200190600190039081610e9d5790505b50905060005b8251811015610f7957610ec9612440565b6001600160a01b0316635a81a626848381518110610ee957610ee9614f76565b60200260200101516040518263ffffffff1660e01b8152600401610f0f91815260200190565b600060405180830381865afa158015610f2c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f549190810190614f8c565b828281518110610f6657610f66614f76565b6020908102919091010152600101610eb8565b5092915050565b60606000610f8c612b79565b9050610f9a81600901612b9d565b91505090565b6000610e50610d4f83612baa565b6000805160206154d4833981519152610fc681612c20565b6001600160a01b038316610fed57604051633a954ecd60e21b815260040160405180910390fd5b604051632142170760e11b81523060048201526001600160a01b038481166024830152604482018490528516906342842e0e90606401600060405180830381600087803b15801561103d57600080fd5b505af1158015611051573d6000803e3d6000fd5b5050505050505050565b60008051602061553483398151915261107381612c20565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__6321b87f3a6110956118c4565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018690526044810185905260640160006040518083038186803b1580156110e257600080fd5b505af41580156110f6573d6000803e3d6000fd5b50505050505050565b60008051602061549483398151915261111781612c20565b60005b82518110156111b257600061114784838151811061113a5761113a614f76565b6020026020010151612baa565b905061115281612c2a565b83828151811061116457611164614f76565b60200260200101516040516111799190614ff9565b604051908190038120907f50cc5f9d56177aa0de269c136f2d2ffd45d7b66c82f0a82f8f840db54d9801f890600090a25060010161111a565b505050565b6000806001600160a01b038a1630146111ee5789604051637b7d696f60e01b81526004016111e59190614b44565b60405180910390fd5b6111f6612440565b6001600160a01b03166312b357b58a6040518263ffffffff1660e01b81526004016112219190614b44565b602060405180830381865afa15801561123e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112629190615015565b6112815788604051633f2c64af60e01b81526004016111e59190614b44565b8342106112a457604051636453b2e560e01b8152600481018590526024016111e5565b6112b48a8a8a8a8a8a8a8a612c68565b91506112bf826127a5565b6112de578160405163248d101d60e11b81526004016111e59190614b44565b60006112e8612c94565b6001600160a01b03808516600090815260208381526040808320938e1683529290522060018101549192509088101561133b5760018101546040516307c83fcf60e41b81526111e5918a91600401614b84565b80548911611360578054604051632256490160e11b81526111e5918b91600401614b84565b600181015461136f9089615048565b925050509850989650505050505050565b60008061138b612b79565b6003015460ff1692915050565b6000806113a3612cb8565b60009384526020525050604090206001015490565b6000805160206155348339815191526113d081612c20565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__6307e473166113f26118c4565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024810187905261ffff80871660448301528516606482015260840160006040518083038186803b15801561144a57600080fd5b505af4158015611051573d6000803e3d6000fd5b61146782611398565b61147081612c20565b61147a8383612cdc565b50505050565b6060610e506107bb83612baa565b6000611498612d1e565b805490915060ff600160401b82041615906001600160401b03166000811580156114bf5750825b90506000826001600160401b031660011480156114db5750303b155b9050811580156114e9575080155b156115075760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b0319166001178555831561153057845460ff60401b1916600160401b1785555b611538612d42565b611540612d42565b611548612d4c565b611553600088612cdc565b5061156c60008051602061549483398151915288612cdc565b506115856000805160206154b483398151915288612cdc565b5061159e60008051602061545483398151915287612cdc565b5060006115a9612de6565b80546001600160a01b03808e166001600160a01b0319928316178355600183018054918e1691909216179055600281018a90559050678ac7230489e80000620151806115f58282612e0a565b505050831561163e57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b6001600160a01b03811633146116735760405163334bd91960e11b815260040160405180910390fd5b6111b28282612e2d565b60008051602061549483398151915261169581612c20565b60005b82518110156111b25760006116b884838151811061113a5761113a614f76565b90506116c381612e66565b8382815181106116d5576116d5614f76565b60200260200101516040516116ea9190614ff9565b604051908190038120907f0edb7a081e6ff720ad9e97b837c352ef0548c4d09ec421b9b930b1e0c708e39e90600090a250600101611698565b60008051602061549483398151915261173b81612c20565b61174d61174784612baa565b83612ea4565b8260405161175b9190614ff9565b604051908190038120838252907fdd6c54a4503e1d8a1e75d73648f77d8fe66234b437ce30e20edd51563116ec41906020015b60405180910390a2505050565b606060006117a7612b79565b9050610f9a81612b9d565b6000805160206154948339815191526117ca81612c20565b6117de6117d686612baa565b858486612ecd565b846040516117ec9190614ff9565b604051908190038120907f763f2f41e0c407dd0a7067f44e5468a0db74da9fdb6cd1cb20c7b6dae937527990600090a25050505050565b604080516000805160206154f483398151915260208201526001600160a01b03808a16928201929092528188166060820152908616608082015260a0810185905260c0810184905260e081018390526101008101829052600090610120015b604051602081830303815290604052805190602001209050979650505050505050565b6118ad612f65565b6118b682612ff3565b6118c08282613136565b5050565b6000806118cf612de6565b600101546001600160a01b031692915050565b6000805160206154b48339815191526118fa81612c20565b611903826131ea565b61191b60008051602061543483398151915284612cdc565b5061193460008051602061553483398151915284612cdc565b5061194d60008051602061541483398151915284612cdc565b506040516001600160a01b038416907fdb3e11ba26e83d528bf96a2167061674c1ce7777c61376d852d172594a87399490600090a26111b26001600160a01b0384168361325f565b600061199f6132f8565b5060008051602061547483398151915290565b6119ba613341565b6000805160206154148339815191526119d281612c20565b6119db826131ea565b6119e482613377565b506119ed6134a4565b50565b606060006119fc612b79565b9050611a0883826134b5565b806002016000848152602001908152602001600020600201805480602002602001604051908101604052809291908181526020016000905b82821015611aec578382906000526020600020018054611a5f9061505b565b80601f0160208091040260200160405190810160405280929190818152602001828054611a8b9061505b565b8015611ad85780601f10611aad57610100808354040283529160200191611ad8565b820191906000526020600020905b815481529060010190602001808311611abb57829003601f168201915b505050505081526020019060010190611a40565b50505050915050919050565b611b00613341565b600080611b138a8a8a8a8a8a8a8a6111b7565b91509150611b258289898989896134df565b6000612710611b32612440565b6001600160a01b0316633c5559386040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b939190615095565b611b9d90846150ae565b611ba791906150c5565b90506000611bb58284615048565b90508a6001600160a01b03168c6001600160a01b031614611bf7576000611bda612c94565b905083816001016000828254611bf091906150e7565b9091555050505b611c7382611c03612440565b6001600160a01b0316630470d3ac6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6491906150fa565b6001600160a01b03169061325f565b611c866001600160a01b038c168261325f565b604080516001600160a01b0386811682528c811660208301529181018b9052606081018a90526080810183905260a08101849052818d16918e16907f4ebd6343a4ae90ea9a2add4327d0439de765f4b8bbb691caaf0875ef36c54e819060c00160405180910390a3505050506110516134a4565b6000806000611d0761354a565b90508060020154816003015492509250509091565b600080516020615494833981519152611d3481612c20565b6118c08261356e565b6000805160206154b4833981519152611d5581612c20565b6111b283836135e4565b600080516020615534833981519152611d7781612c20565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__63fd13a43e611d996118c4565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018890526044810187905261ffff80871660648301528516608482015260a40160006040518083038186803b158015611df857600080fd5b505af4158015611e0c573d6000803e3d6000fd5b505050505050505050565b600080516020615534833981519152611e2f81612c20565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__63793dddac6113f26118c4565b600080516020615494833981519152611e6981612c20565b611e7b611e7584612baa565b8361363e565b82604051611e899190614ff9565b60405180910390207f498a5f4e6f3921f63e6863032989bdb7bb41e5cf5cbde5437c7322c5c8dc46bf8360405161178e9190614d3e565b600080516020615494833981519152611ed881612c20565b6118c082613682565b6060806000611eee61179b565b9050600081516001600160401b03811115611f0b57611f0b614571565b604051908082528060200260200182016040528015611f3e57816020015b6060815260200190600190039081611f295790505b509050600082516001600160401b03811115611f5c57611f5c614571565b604051908082528060200260200182016040528015611f9557816020015b611f82614332565b815260200190600190039081611f7a5790505b50905060005b835181101561209b57611fac612440565b6001600160a01b0316635a81a626858381518110611fcc57611fcc614f76565b60200260200101516040518263ffffffff1660e01b8152600401611ff291815260200190565b600060405180830381865afa15801561200f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526120379190810190614f8c565b83828151811061204957612049614f76565b602002602001018190525061207684828151811061206957612069614f76565b602002602001015161267c565b82828151811061208857612088614f76565b6020908102919091010152600101611f9b565b509094909350915050565b606060006120b2612b79565b90506120c160068201846136f8565b6120e0578260405163ba650b5f60e01b81526004016111e59190614b44565b6001600160a01b0383166000908152600882016020526040902080546121059061505b565b80601f01602080910402602001604051908101604052809291908181526020018280546121319061505b565b801561217e5780601f106121535761010080835404028352916020019161217e565b820191906000526020600020905b81548152906001019060200180831161216157829003601f168201915b5050505050915050919050565b6000805160206154948339815191526121a381612c20565b6121b56121af84612baa565b8361370d565b826040516121c39190614ff9565b60405180910390207fba851faec9e30a9961f0adb49fe025cda6c8d7d0fb9bad99f89c37d0570232648360405161178e9190614d3e565b600080612205612b79565b905061221183826134b5565b600092835260020160205250604090206001015460ff1690565b60008061223661383c565b60008581526020829052604090209091506122519084613860565b949350505050565b600080612264612cb8565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b600080600080600061229f612c94565b6001600160a01b0397881660009081526020918252604080822098909916815296905250505092909120805460018201546002830154600390930154919590945091925090565b6000805160206154d48339815191526122fe81612c20565b6001600160a01b03831661232557604051633a954ecd60e21b815260040160405180910390fd5b61147a6001600160a01b038516848461386c565b60008051602061549483398151915261235181612c20565b6118c0826138c4565b6060600061236661383c565b600084815260208290526040902090915061238090612b9d565b9392505050565b60008051602061549483398151915261239f81612c20565b6123b16123ab84612baa565b8361391b565b826040516123bf9190614ff9565b6040519081900381208315158252907f23960b931eb4b63e2e47d040f51cc0de6eef2e865639eb674fbb1890ece3a0ab9060200161178e565b6000610e506109b483612baa565b60008051602061553483398151915261241e81612c20565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__63348e06dd6110956118c4565b60008061244b612de6565b546001600160a01b031692915050565b600080612466612de6565b6002015492915050565b6000805160206154b483398151915261248881612c20565b6124a060008051602061543483398151915283612e2d565b506124b960008051602061553483398151915283612e2d565b506124d260008051602061541483398151915283612e2d565b506040516001600160a01b038316907fd124523a9cfa28c5dd01826c4fa56192ec7d56859943082e0ca46c3b9dc6291390600090a25050565b60006125156129d1565b61252489898989898989611823565b60405161190160f01b602082015260228101929092526042820152606201611882565b60008061255261383c565b600084815260208290526040902090915061238090613955565b60008051602061549483398151915261258481612c20565b6111b2838361395f565b612596613341565b6000805160206155348339815191526125ae81612c20565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__637adf63b76125d06118c4565b6040516001600160e01b031960e084901b1681526001600160a01b0391821660048201526024810188905260448101879052908516606482015260840160006040518083038186803b15801561262557600080fd5b505af4158015612639573d6000803e3d6000fd5b50505050506111b26134a4565b60606000612652612b79565b9050610f9a60048201612b9d565b61266982611398565b61267281612c20565b61147a8383612e2d565b612684614332565b600061268e612b79565b905061269a83826134b5565b6000838152600280830160209081526040808420815160608101835281548152600182015460ff161515818501529381018054835181860281018601855281815295969295938701949192909184015b828210156127965783829060005260206000200180546127099061505b565b80601f01602080910402602001604051908101604052809291908181526020018280546127359061505b565b80156127825780601f1061275757610100808354040283529160200191612782565b820191906000526020600020905b81548152906001019060200180831161276557829003601f168201915b5050505050815260200190600101906126ea565b50505091525090949350505050565b6000610e5060008051602061543483398151915283612259565b6000805160206155348339815191526127d781612c20565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__63e4c225696127f96118c4565b8a8a8a8a8a8a8a6040518963ffffffff1660e01b8152600401612823989796959493929190615117565b60006040518083038186803b15801561283b57600080fd5b505af415801561284f573d6000803e3d6000fd5b505050505050505050505050565b60008051602061553483398151915261287581612c20565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__63c7bffa966128976118c4565b846040518363ffffffff1660e01b81526004016128b59291906148a3565b60006040518083038186803b1580156128cd57600080fd5b505af41580156128e1573d6000803e3d6000fd5b505050505050565b60008051602061549483398151915261290181612c20565b6118c0826139fb565b600080612915612c94565b6001015492915050565b6060600061292b612b79565b9050610f9a81600601612b9d565b600080612944612b79565b905061295083826134b5565b600092835260020160205250604090205490565b60008051602061549483398151915261297c81612c20565b61298e61298884612baa565b83613a94565b8260405161299c9190614ff9565b604051908190038120907fd52aef6010d6b6303240865274298b7c5784b14ebf9df788047b34c69c53137190600090a2505050565b600080612466612c94565b60008060006129e961354a565b6001600160a01b03909416600090815260208581526040808320546001909701909152902054939492505050565b612a1f613341565b6000805160206154d4833981519152612a3781612c20565b612a40826131ea565b612a536001600160a01b0384168361325f565b826001600160a01b03167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a942436483604051612a8e91815260200190565b60405180910390a2506118c06134a4565b600080516020615494833981519152612ab781612c20565b612ac8612ac383612baa565b613ad2565b81604051612ad69190614ff9565b604051908190038120907f52f6e0779195109314dfb8cf301d33491c63f136afac4c5d4f35aa934b25481390600090a25050565b600080516020615534833981519152612b2281612c20565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__63b54e72d8611d996118c4565b60006001600160e01b03198216637965db0b60e01b1480610e5057506301ffc9a760e01b6001600160e01b0319831614610e50565b7ff2856e5e1b7689dcde1bb551fd115c3cad8d243ea609d47a46b4d22ee58d300090565b6060600061238083613b3b565b6000612bb4612440565b6001600160a01b031663352af39a836040518263ffffffff1660e01b8152600401612bdf9190614d3e565b602060405180830381865afa158015612bfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e509190615095565b6119ed8133613b97565b6000612c34612b79565b90506000612c456009830184613bc2565b9050806111b257604051631a1e056960e01b8152600481018490526024016111e5565b600080612c7a8a8a8a8a8a8a8a61250b565b9050612c868184613bce565b9a9950505050505050505050565b7f175f7e400d42af44d9ebd24e9efee8a2c4ed78ddf46a83e51a493ae382c8760090565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b600080612ce761383c565b90506000612cf58585613bf8565b90508015612251576000858152602083905260409020612d159085613c99565b50949350505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b612d4a613cae565b565b612d54613cae565b6000612d5e612c94565b604051909150612dc690600080516020615514833981519152907f964f47ba1d5dc0d1184a60039dba40abb2d0eee53398392e97308cb5f4a12f94907fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6904690602001614d7f565b60408051601f198184030181529190528051602090910120600290910155565b7f0c7b73796c7cc89b9f849b9056a93200eba741881e57a1b03b9bedb2c0e0710090565b612e12613cae565b6000612e1c61354a565b600281019390935550600390910155565b600080612e3861383c565b90506000612e468585613cd3565b90508015612251576000858152602083905260409020612d159085613d4b565b6000612e70612b79565b90506000612e816009830184613d60565b9050806111b257604051637eae59f160e11b8152600481018490526024016111e5565b6000612eae612b79565b9050612eba83826134b5565b6000928352600201602052604090912055565b6000612ed7612b79565b90506000612ee58287613bc2565b905080612f07576040516221e3bb60e31b8152600481018790526024016111e5565b60408051606081018252868152841515602080830191825282840188815260008b81526002888101845295902084518155925160018401805460ff191691151591909117905551805193949293611e0c938501929190910190614355565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480612fd557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612fc9613d6c565b6001600160a01b031614155b15612d4a5760405163703e46dd60e11b815260040160405180910390fd5b60008051602061545483398151915261300b81612c20565b6000613015612440565b6001600160a01b0316639d825bc56040518163ffffffff1660e01b8152600401602060405180830381865afa158015613052573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061307691906150fa565b90506000613082613d6c565b9050836001600160a01b0316816001600160a01b0316036130ba5780846040516382afabc160e01b81526004016111e5929190615175565b816001600160a01b0316846001600160a01b0316146130f057818460405163699a021f60e11b81526004016111e5929190615175565b836001600160a01b0316816001600160a01b03167fa3d484f827e1c900ce24494bfdb214bcbad08472a9f0571fb5beac779a682db460405160405180910390a350505050565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015613190575060408051601f3d908101601f1916820190925261318d91810190615095565b60015b6131af5781604051634c9c8ce360e01b81526004016111e59190614b44565b60008051602061547483398151915281146131e057604051632a87526960e21b8152600481018290526024016111e5565b6111b28383613d88565b60006131f461245b565b9050600061320061290a565b9050818110156111b25760006132168284615048565b905060006132248247615048565b905080851115613258576040516344c8760560e11b81526004810182905260248101839052604481018690526064016111e5565b5050505050565b8047101561328457478160405163cf47918160e01b81526004016111e5929190614b84565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146132d1576040519150601f19603f3d011682016040523d82523d6000602084013e6132d6565b606091505b50509050806111b25760405163d6bda27560e01b815260040160405180910390fd5b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612d4a5760405163703e46dd60e11b815260040160405180910390fd5b600061334b613dde565b80549091506001190161337157604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b600061338161354a565b905080600201548211156133b057806002015482604051631728bc5b60e31b81526004016111e5929190614b84565b60038101543360009081526020839052604090205442916133d0916150e7565b8111156133f85733600090815260018301602090815260408083208390559084905290208190555b600282015433600090815260018401602052604090205461341a9085906150e7565b11156134415781600201548360405163d54b188760e01b81526004016111e5929190614b84565b336000908152600183016020526040812080548592906134629084906150e7565b909155506134729050338461325f565b60405183815233907fb9ec638398bbdcd0844ca414d8ce760939fa88b9258b9764b3fc6c12ea2605c29060200161178e565b60006134ae613dde565b6001905550565b6134bf8183613e02565b6118c057604051631e96f6ed60e21b8152600481018390526024016111e5565b60006134e9612c94565b604080516080810182529687526020808801968752878201958652606088019485526001600160a01b03998a166000908152928152818320989099168252969097525093909420915182555160018201559151600283015551600390910155565b7f99a652063088b6badaeb0c7f680676baf720654b4f86f50167944489af637d0090565b6000613578612b79565b905060006135896004830184613c99565b9050806135ab5782604051632872fbf960e11b81526004016111e59190614b44565b6040516001600160a01b038416907fa317c10673baf4f03b3c1041bd5ddbb537d0333a86fec3607c75f9dbb630f48f90600090a2505050565b60006135ee61354a565b60028101849055600381018390556040519091507f8d4925b196ae6b935035a27ed36c6bd9c7a8fbddc7a3f55f493aa8e230be373e906136319085908590614b84565b60405180910390a1505050565b6000613648612b79565b905061365483826134b5565b60008381526002808301602090815260408320909101805460018101825590835291200161147a83826151ec565b600061368c612b79565b9050600061369d6004830184613d4b565b9050806136bf5782604051631532e67160e21b81526004016111e59190614b44565b6040516001600160a01b038416907f85a3e72f8dd6db3794f93109c3c5f5b79d6112f6979431c45f98b26134b42af290600090a2505050565b6000612380836001600160a01b038416613e0a565b6000613717612b79565b905061372383826134b5565b600083815260028083016020526040822001905b815481101561325857836040516020016137519190614ff9565b6040516020818303038152906040528051906020012082828154811061377957613779614f76565b9060005260206000200160405160200161379391906152a5565b604051602081830303815290604052805190602001200361383457815482906137be90600190615048565b815481106137ce576137ce614f76565b906000526020600020018282815481106137ea576137ea614f76565b906000526020600020019081613800919061531b565b5081805480613811576138116153e7565b60019003818190600052602060002001600061382d91906143ab565b9055613258565b600101613737565b7fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200090565b60006123808383613e22565b6111b283846001600160a01b031663a9059cbb85856040516024016138929291906148a3565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613e4c565b60006138ce612b79565b60038101805460ff19168415159081179091556040519081529091507fe93ceb76efb130156c6aa39fa4ac986b3f683b6da926496fca3f95ea7fe715e39060200160405180910390a15050565b6000613925612b79565b905061393183826134b5565b60009283526002016020526040909120600101805460ff1916911515919091179055565b6000610e50825490565b6000613969612b79565b9050600061397a6006830185613c99565b90508061399c5783604051631a6107e360e31b81526004016111e59190614b44565b6001600160a01b038416600090815260088301602052604090206139c084826151ec565b506040516001600160a01b038516907f928ec246afda323bc23c2815ca3f516e9fc6a7b7179772235c221e132545fe8290600090a250505050565b6000613a05612b79565b90506000613a166006830184613d4b565b905080613a38578260405163ba650b5f60e01b81526004016111e59190614b44565b6001600160a01b03831660009081526008830160205260408120613a5b916143ab565b6040516001600160a01b038416907fc5a9b8041ef11732e7dd7043167d8c22db5c7ea99dcd38dce401effacf8a29bf90600090a2505050565b6000613a9e612b79565b9050613aaa83826134b5565b6000838152600280830160209081526040909220845161147a93919092019190850190614355565b6000613adc612b79565b90506000613aea8284613d60565b905080613b0d57604051631e96f6ed60e21b8152600481018490526024016111e5565b600083815260028084016020526040822082815560018101805460ff191690559190613258908301826143e5565b606081600001805480602002602001604051908101604052809291908181526020018280548015613b8b57602002820191906000526020600020905b815481526020019060010190808311613b77575b50505050509050919050565b613ba18282612259565b6118c057808260405163e2517d3f60e01b81526004016111e59291906148a3565b60006123808383613eb4565b600080600080613bde8686613efe565b925092509250613bee8282613f4b565b5090949350505050565b600080613c03612cb8565b9050613c0f8484612259565b613c8f576000848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055613c453390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610e50565b6000915050610e50565b6000612380836001600160a01b038416613eb4565b613cb6614004565b612d4a57604051631afcd79f60e31b815260040160405180910390fd5b600080613cde612cb8565b9050613cea8484612259565b15613c8f576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610e50565b6000612380836001600160a01b03841661401e565b6000612380838361401e565b600080516020615474833981519152546001600160a01b031690565b613d9182614107565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115613dd6576111b28282614163565b6118c06141d9565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b600061238083835b60009081526001919091016020526040902054151590565b6000826000018281548110613e3957613e39614f76565b9060005260206000200154905092915050565b600080602060008451602086016000885af180613e6f576040513d6000823e3d81fd5b50506000513d91508115613e87578060011415613e94565b6001600160a01b0384163b155b1561147a5783604051635274afe760e01b81526004016111e59190614b44565b6000613ec08383613e0a565b613ef657508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610e50565b506000610e50565b60008060008351604103613f385760208401516040850151606086015160001a613f2a888285856141f8565b955095509550505050613f44565b50508151600091506002905b9250925092565b6000826003811115613f5f57613f5f6153fd565b03613f68575050565b6001826003811115613f7c57613f7c6153fd565b03613f9a5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115613fae57613fae6153fd565b03613fcf5760405163fce698f760e01b8152600481018290526024016111e5565b6003826003811115613fe357613fe36153fd565b036118c0576040516335e2f38360e21b8152600481018290526024016111e5565b600061400e612d1e565b54600160401b900460ff16919050565b60008181526001830160205260408120548015613c8f576000614042600183615048565b855490915060009061405690600190615048565b90508082146140bb57600086600001828154811061407657614076614f76565b906000526020600020015490508087600001848154811061409957614099614f76565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806140cc576140cc6153e7565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610e50565b806001600160a01b03163b6000036141345780604051634c9c8ce360e01b81526004016111e59190614b44565b60008051602061547483398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516141809190614ff9565b600060405180830381855af49150503d80600081146141bb576040519150601f19603f3d011682016040523d82523d6000602084013e6141c0565b606091505b50915091506141d08583836142bd565b95945050505050565b3415612d4a5760405163b398979f60e01b815260040160405180910390fd5b600080806fa2a8918ca85bafe22016d0b997e4df60600160ff1b0384111561422957506000915060039050826142b3565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561427d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166142a9575060009250600191508290506142b3565b9250600091508190505b9450945094915050565b6060826142d2576142cd82614309565b612380565b81511580156142e957506001600160a01b0384163b155b15610f795783604051639996b31560e01b81526004016111e59190614b44565b8051156143195780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b604051806060016040528060008152602001600015158152602001606081525090565b82805482825590600052602060002090810192821561439b579160200282015b8281111561439b578251829061438b90826151ec565b5091602001919060010190614375565b506143a79291506143ff565b5090565b5080546143b79061505b565b6000825580601f106143c7575050565b601f0160209004906000526020600020908101906119ed919061441c565b50805460008255906000526020600020908101906119ed91905b808211156143a757600061441382826143ab565b506001016143ff565b5b808211156143a7576000815560010161441d565b60006020828403121561444357600080fd5b81356001600160e01b03198116811461238057600080fd5b60005b8381101561447657818101518382015260200161445e565b50506000910152565b6000815180845261449781602086016020860161445b565b601f01601f19169290920160200192915050565b60008282518085526020808601955060208260051b8401016020860160005b848110156144f857601f198684030189526144e683835161447f565b988401989250908301906001016144ca565b5090979650505050505050565b60208152600061238060208301846144ab565b6020808252825182820181905260009190848201906040850190845b8181101561455057835183529284019291840191600101614534565b50909695505050505050565b6001600160a01b03811681146119ed57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156145af576145af614571565b604052919050565b60006001600160401b038211156145d0576145d0614571565b50601f01601f191660200190565b600082601f8301126145ef57600080fd5b81356146026145fd826145b7565b614587565b81815284602083860101111561461757600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561464a57600080fd5b84356146558161455c565b935060208501356146658161455c565b92506040850135915060608501356001600160401b0381111561468757600080fd5b614693878288016145de565b91505092959194509250565b6000602082840312156146b157600080fd5b81356001600160401b038111156146c757600080fd5b612251848285016145de565b6000806000606084860312156146e857600080fd5b83356146f38161455c565b925060208401356147038161455c565b929592945050506040919091013590565b6000806040838503121561472757600080fd5b50508035926020909101359150565b600082601f83011261474757600080fd5b813560206001600160401b038083111561476357614763614571565b8260051b614772838201614587565b938452858101830193838101908886111561478c57600080fd5b84880192505b858310156147c8578235848111156147aa5760008081fd5b6147b88a87838c01016145de565b8352509184019190840190614792565b98975050505050505050565b6000602082840312156147e657600080fd5b81356001600160401b038111156147fc57600080fd5b61225184828501614736565b600080600080600080600080610100898b03121561482557600080fd5b88356148308161455c565b975060208901356148408161455c565b965060408901356148508161455c565b9550606089013594506080890135935060a0890135925060c0890135915060e08901356001600160401b0381111561488757600080fd5b6148938b828c016145de565b9150509295985092959890939650565b6001600160a01b03929092168252602082015260400190565b6000602082840312156148ce57600080fd5b5035919050565b803561ffff811681146148e757600080fd5b919050565b60008060006060848603121561490157600080fd5b83359250614911602085016148d5565b915061491f604085016148d5565b90509250925092565b6000806040838503121561493b57600080fd5b82359150602083013561494d8161455c565b809150509250929050565b600080600080600060a0868803121561497057600080fd5b853561497b8161455c565b9450602086013561498b8161455c565b93506040860135925060608601356149a28161455c565b915060808601356149b28161455c565b809150509295509295909350565b600080604083850312156149d357600080fd5b82356001600160401b038111156149e957600080fd5b6149f5858286016145de565b95602094909401359450505050565b80151581146119ed57600080fd5b60008060008060808587031215614a2857600080fd5b84356001600160401b0380821115614a3f57600080fd5b614a4b888389016145de565b95506020870135945060408701359150614a6482614a04565b90925060608601359080821115614a7a57600080fd5b5061469387828801614736565b600080600080600080600060e0888a031215614aa257600080fd5b8735614aad8161455c565b96506020880135614abd8161455c565b95506040880135614acd8161455c565b969995985095966060810135965060808101359560a0820135955060c0909101359350915050565b60008060408385031215614b0857600080fd5b8235614b138161455c565b915060208301356001600160401b03811115614b2e57600080fd5b614b3a858286016145de565b9150509250929050565b6001600160a01b0391909116815260200190565b60008060408385031215614b6b57600080fd5b8235614b768161455c565b946020939093013593505050565b918252602082015260400190565b600060208284031215614ba457600080fd5b81356123808161455c565b60008060008060808587031215614bc557600080fd5b8435935060208501359250614bdc604086016148d5565b9150614bea606086016148d5565b905092959194509250565b60008060408385031215614c0857600080fd5b82356001600160401b0380821115614c1f57600080fd5b614c2b868387016145de565b93506020850135915080821115614c4157600080fd5b50614b3a858286016145de565b600060608301825184526020808401511515602086015260408401516060604087015282815180855260808801915060808160051b890101945060208301925060005b81811015614cbf57607f19898703018352614cad86855161447f565b95509284019291840191600101614c91565b5093979650505050505050565b604081526000614cdf60408301856144ab565b6020838203818501528185518084528284019150828160051b85010183880160005b83811015614d2f57601f19878403018552614d1d838351614c4e565b94860194925090850190600101614d01565b50909998505050505050505050565b602081526000612380602083018461447f565b60008060408385031215614d6457600080fd5b8235614d6f8161455c565b9150602083013561494d8161455c565b93845260208401929092526040830152606082015260800190565b600060208284031215614dac57600080fd5b813561238081614a04565b6020808252825182820181905260009190848201906040850190845b818110156145505783516001600160a01b031683529284019291840191600101614dd3565b60008060408385031215614e0b57600080fd5b82356001600160401b03811115614e2157600080fd5b614e2d858286016145de565b925050602083013561494d81614a04565b600080600060608486031215614e5357600080fd5b83359250602084013591506040840135614e6c8161455c565b809150509250925092565b6020815260006123806020830184614c4e565b600080600080600080600060e0888a031215614ea557600080fd5b8735614eb08161455c565b965060208801356001600160401b03811115614ecb57600080fd5b614ed78a828b016145de565b96505060408801359450606088013593506080880135614ef68161455c565b925060a0880135915060c0880135614f0d81614a04565b8091505092959891949750929550565b60008060408385031215614f3057600080fd5b82356001600160401b0380821115614f4757600080fd5b614f53868387016145de565b93506020850135915080821115614f6957600080fd5b50614b3a85828601614736565b634e487b7160e01b600052603260045260246000fd5b600060208284031215614f9e57600080fd5b81516001600160401b03811115614fb457600080fd5b8201601f81018413614fc557600080fd5b8051614fd36145fd826145b7565b818152856020838501011115614fe857600080fd5b6141d082602083016020860161445b565b6000825161500b81846020870161445b565b9190910192915050565b60006020828403121561502757600080fd5b815161238081614a04565b634e487b7160e01b600052601160045260246000fd5b81810381811115610e5057610e50615032565b600181811c9082168061506f57607f821691505b60208210810361508f57634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156150a757600080fd5b5051919050565b8082028115828204841417610e5057610e50615032565b6000826150e257634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610e5057610e50615032565b60006020828403121561510c57600080fd5b81516123808161455c565b6001600160a01b0389811682528881166020830152610100604083018190526000916151458483018b61447f565b6060850199909952608084019790975250509290931660a083015260c082015290151560e0909101529392505050565b6001600160a01b0392831681529116602082015260400190565b601f8211156111b2576000816000526020600020601f850160051c810160208610156151b85750805b601f850160051c820191505b818110156128e1578281556001016151c4565b600019600383901b1c191660019190911b1790565b81516001600160401b0381111561520557615205614571565b61521981615213845461505b565b8461518f565b602080601f83116001811461524857600084156152365750858301515b61524085826151d7565b8655506128e1565b600085815260208120601f198616915b8281101561527757888601518255948401946001909101908401615258565b50858210156152955787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008083546152b38161505b565b600182811680156152cb57600181146152e05761530f565b60ff198416875282151583028701945061530f565b8760005260208060002060005b858110156153065781548a8201529084019082016152ed565b50505082870194505b50929695505050505050565b818103615326575050565b615330825461505b565b6001600160401b0381111561534757615347614571565b61535581615213845461505b565b6000601f82116001811461538357600083156153715750848201545b61537b84826151d7565b855550613258565b600085815260209020601f19841690600086815260209020845b838110156153bd578286015482556001958601959091019060200161539d565b50858310156152955793015460001960f8600387901b161c19169092555050600190811b01905550565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fdfee562760eaa817d85ec1bf58364c4d65adb65d99d113c6785ef9aa66567076c954c1d97560aef1d9626af2ccff8a6ac6e245c44c307e795e9c16f7211c611a315189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc9a95e87c5af084bf5db8491c3a6515da9dd6da39b24b0eb0af08d7b9cd808d91c6ae66da7afbd0becbe49ddf95a9256901d87f1bb5e3d43236030e5e4a585b6d10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e487b38f131334165ac2b361f08966c9fcff3a953fa7d9d9c2861b7f0b50445bcbc2f8787176b8ac6bf7215b4adcc1e069bf4ab82d9ab1df05a57a91d425935b6e3acdf00ba9ef08b5f2c22768276611b9af078bf6c24fa36b34ec5e9f2eb061faa26469706673582212200540b09191ebd8a1004327f6309ecd4316849f0d987f7010a72aeade96f57e0164736f6c63430008180033", + "linkReferences": { + "contracts/booking-token/BookingTokenOperator.sol": { + "BookingTokenOperator": [ + { + "length": 20, + "start": 4473 + }, + { + "length": 20, + "start": 5334 + }, + { + "length": 20, + "start": 7805 + }, + { + "length": 20, + "start": 7989 + }, + { + "length": 20, + "start": 9508 + }, + { + "length": 20, + "start": 9908 + }, + { + "length": 20, + "start": 10461 + }, + { + "length": 20, + "start": 10619 + }, + { + "length": 20, + "start": 11304 + } + ] + } + }, + "deployedLinkReferences": { + "contracts/booking-token/BookingTokenOperator.sol": { + "BookingTokenOperator": [ + { + "length": 20, + "start": 4213 + }, + { + "length": 20, + "start": 5074 + }, + { + "length": 20, + "start": 7545 + }, + { + "length": 20, + "start": 7729 + }, + { + "length": 20, + "start": 9248 + }, + { + "length": 20, + "start": 9648 + }, + { + "length": 20, + "start": 10201 + }, + { + "length": 20, + "start": 10359 + }, + { + "length": 20, + "start": 11044 + } + ] + } + } +} \ No newline at end of file diff --git a/ignition/deployments/chain-501/artifacts/RefactorCancellationModule#ManagerProxy.dbg.json b/ignition/deployments/chain-501/artifacts/RefactorCancellationModule#ManagerProxy.dbg.json new file mode 100644 index 0000000..19aeb90 --- /dev/null +++ b/ignition/deployments/chain-501/artifacts/RefactorCancellationModule#ManagerProxy.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../build-info/c929040ed782d5f1fe9b972f02b44da8.json" +} \ No newline at end of file diff --git a/ignition/deployments/chain-501/artifacts/RefactorCancellationModule#ManagerProxy.json b/ignition/deployments/chain-501/artifacts/RefactorCancellationModule#ManagerProxy.json new file mode 100644 index 0000000..e0a73ba --- /dev/null +++ b/ignition/deployments/chain-501/artifacts/RefactorCancellationModule#ManagerProxy.json @@ -0,0 +1,1142 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "CMAccountManager", + "sourceName": "contracts/manager/CMAccountManager.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + } + ], + "name": "AddressEmptyCode", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "admin", + "type": "address" + } + ], + "name": "CMAccountInvalidAdmin", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "CMAccountInvalidImplementation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "ERC1967InvalidImplementation", + "type": "error" + }, + { + "inputs": [], + "name": "ERC1967NonPayable", + "type": "error" + }, + { + "inputs": [], + "name": "EnforcedPause", + "type": "error" + }, + { + "inputs": [], + "name": "ExpectedPause", + "type": "error" + }, + { + "inputs": [], + "name": "FailedCall", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "sended", + "type": "uint256" + } + ], + "name": "IncorrectPrefundAmount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "bookingToken", + "type": "address" + } + ], + "name": "InvalidBookingTokenAddress", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "developerWallet", + "type": "address" + } + ], + "name": "InvalidDeveloperWallet", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "inputs": [], + "name": "ReentrancyGuardReentrantCall", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "ServiceAlreadyRegistered", + "type": "error" + }, + { + "inputs": [], + "name": "ServiceNotRegistered", + "type": "error" + }, + { + "inputs": [], + "name": "UUPSUnauthorizedCallContext", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "slot", + "type": "bytes32" + } + ], + "name": "UUPSUnsupportedProxiableUUID", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldBookingToken", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newBookingToken", + "type": "address" + } + ], + "name": "BookingTokenAddressUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "CMAccountCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldImplementation", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "CMAccountImplementationUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldDeveloperFeeBp", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newDeveloperFeeBp", + "type": "uint256" + } + ], + "name": "DeveloperFeeBpUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldDeveloperWallet", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newDeveloperWallet", + "type": "address" + } + ], + "name": "DeveloperWalletUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceRegistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceUnregistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "inputs": [], + "name": "CMACCOUNT_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEVELOPER_WALLET_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "FEE_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PAUSER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PREFUND_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SERVICE_REGISTRY_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UPGRADER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UPGRADE_INTERFACE_VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "VERSIONER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "admin", + "type": "address" + }, + { + "internalType": "address", + "name": "upgrader", + "type": "address" + } + ], + "name": "createCMAccount", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "getAccountImplementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getAllRegisteredServiceHashes", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "services", + "type": "bytes32[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getAllRegisteredServiceNames", + "outputs": [ + { + "internalType": "string[]", + "name": "services", + "type": "string[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getBookingTokenAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getCMAccountCreator", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getDeveloperFeeBp", + "outputs": [ + { + "internalType": "uint256", + "name": "developerFeeBp", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getDeveloperWallet", + "outputs": [ + { + "internalType": "address", + "name": "developerWallet", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPrefundAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "getRegisteredServiceHashByName", + "outputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "getRegisteredServiceNameByHash", + "outputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoleMember", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMemberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMembers", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "defaultAdmin", + "type": "address" + }, + { + "internalType": "address", + "name": "pauser", + "type": "address" + }, + { + "internalType": "address", + "name": "upgrader", + "type": "address" + }, + { + "internalType": "address", + "name": "versioner", + "type": "address" + }, + { + "internalType": "address", + "name": "developerWallet", + "type": "address" + }, + { + "internalType": "uint256", + "name": "developerFeeBp", + "type": "uint256" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isCMAccount", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "registerService", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "callerConfirmation", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "setAccountImplementation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "setBookingTokenAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "bp", + "type": "uint256" + } + ], + "name": "setDeveloperFeeBp", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "developerWallet", + "type": "address" + } + ], + "name": "setDeveloperWallet", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "newPrefundAmount", + "type": "uint256" + } + ], + "name": "setPrefundAmount", + "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": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "unregisterService", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ], + "bytecode": "0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161302762000104600039600081816116290152818161165301526117ae01526130276000f3fe608060405260043610620002245760003560e01c806301601d2f146200022957806301ffc9a714620002615780630470d3ac146200029757806309766da214620002be5780630d6115d014620002e557806312b357b5146200030a5780631c2b3afc146200032f578063248a9ca314620003545780632cec1a0614620003795780632f2ff15d146200039e578063352af39a14620003c357806336568abe14620003e85780633c555938146200040d5780633f4ba83a146200042557806340df8d84146200043d5780634cba593a14620004625780634f1ef28614620004875780634f3f4639146200049e57806352d1902d14620004b65780635a81a62614620004ce5780635c975abb14620005025780635e818619146200051a5780636cd56878146200053f5780637fa3465714620005645780638127f46514620005895780638456cb5914620005b05780639010d07c14620005c857806391d1485414620005ed57806392cf833f146200061257806395b6ef0c14620006375780639d825bc5146200065c578063a217fddf1462000674578063a3246ad3146200068b578063ad3cb1cc14620006bf578063b289819c14620006f2578063c17e30bf1462000717578063c2a1db78146200073c578063c39409e11462000763578063ca15c873146200077b578063d547741f14620007a0578063e63ab1e914620007c5578063f72c0d8b14620007ea578063f85b4a9c146200080f578063fd2fbd521462000834575b600080fd5b3480156200023657600080fd5b506200024e60008051602062002ed283398151915281565b6040519081526020015b60405180910390f35b3480156200026e57600080fd5b5062000286620002803660046200248c565b6200084b565b604051901515815260200162000258565b348015620002a457600080fd5b50620002af62000879565b604051620002589190620024b8565b348015620002cb57600080fd5b50620002e3620002dd366004620024e9565b62000899565b005b348015620002f257600080fd5b50620002e36200030436600462002599565b6200094b565b3480156200031757600080fd5b506200028662000329366004620024e9565b62000975565b3480156200033c57600080fd5b50620002e36200034e366004620025e6565b620009a7565b3480156200036157600080fd5b506200024e62000373366004620025e6565b620009d9565b3480156200038657600080fd5b50620002af62000398366004620024e9565b620009fb565b348015620003ab57600080fd5b50620002e3620003bd36600462002600565b62000a33565b348015620003d057600080fd5b506200024e620003e236600462002599565b62000a5b565b348015620003f557600080fd5b50620002e36200040736600462002600565b62000aea565b3480156200041a57600080fd5b506200024e62000b25565b3480156200043257600080fd5b50620002e362000b3c565b3480156200044a57600080fd5b506200024e60008051602062002fb283398151915281565b3480156200046f57600080fd5b506200024e60008051602062002f1283398151915281565b620002e3620004983660046200262f565b62000b64565b348015620004ab57600080fd5b50620002af62000b85565b348015620004c357600080fd5b506200024e62000ba5565b348015620004db57600080fd5b50620004f3620004ed366004620025e6565b62000bc5565b604051620002589190620026eb565b3480156200050f57600080fd5b506200028662000ca8565b3480156200052757600080fd5b50620002e36200053936600462002599565b62000cbf565b3480156200054c57600080fd5b50620002e36200055e366004620024e9565b62000ce5565b3480156200057157600080fd5b506200024e60008051602062002fd283398151915281565b3480156200059657600080fd5b50620005a162000d8a565b60405162000258919062002700565b348015620005bd57600080fd5b50620002e362000dab565b348015620005d557600080fd5b50620002af620005e736600462002746565b62000dd0565b348015620005fa57600080fd5b50620002866200060c36600462002600565b62000e02565b3480156200061f57600080fd5b506200024e60008051602062002ef283398151915281565b3480156200064457600080fd5b50620002e36200065636600462002769565b62000e3a565b3480156200066957600080fd5b50620002af62000ff8565b3480156200068157600080fd5b506200024e600081565b3480156200069857600080fd5b50620006b0620006aa366004620025e6565b62001015565b604051620002589190620027e1565b348015620006cc57600080fd5b50620004f3604051806040016040528060058152602001640352e302e360dc1b81525081565b348015620006ff57600080fd5b506200024e60008051602062002f3283398151915281565b3480156200072457600080fd5b50620002e362000736366004620024e9565b62001046565b3480156200074957600080fd5b5062000754620010ef565b60405162000258919062002824565b3480156200077057600080fd5b506200024e62001264565b3480156200078857600080fd5b506200024e6200079a366004620025e6565b6200127b565b348015620007ad57600080fd5b50620002e3620007bf36600462002600565b620012a4565b348015620007d257600080fd5b506200024e60008051602062002f9283398151915281565b348015620007f757600080fd5b506200024e60008051602062002f5283398151915281565b3480156200081c57600080fd5b50620002e36200082e366004620025e6565b620012c6565b620002af620008453660046200288c565b6200132c565b60006001600160e01b03198216635a05180f60e01b148062000873575062000873826200135a565b92915050565b6000806200088662001391565b600201546001600160a01b031692915050565b60008051602062002f32833981519152620008b481620013b5565b816001600160a01b03163b600003620008ed57816040516337766f4360e11b8152600401620008e49190620024b8565b60405180910390fd5b6000620008f962000ff8565b90506200090683620013c1565b826001600160a01b0316816001600160a01b03167fecd599290ada9c149ae0fb600bc6ada3c103a716eadb877b5341b7d298b62d9360405160405180910390a3505050565b60008051602062002ef28339815191526200096681620013b5565b6200097182620013ef565b5050565b6000806200098262001391565b6001600160a01b03909316600090815260059093016020525050604090205460ff1690565b60008051602062002ed2833981519152620009c281620013b5565b6000620009ce62001391565b600101929092555050565b600080620009e6620014e2565b60009384526020525050604090206001015490565b60008062000a0862001391565b6001600160a01b03938416600090815260059091016020526040902054610100900490921692915050565b62000a3e82620009d9565b62000a4981620013b5565b62000a55838362001506565b50505050565b60008062000a686200154f565b905062000aa18360405160200162000a819190620028bb565b60408051601f198184030181529190528051602090910120829062001573565b62000abf5760405163162e926760e11b815260040160405180910390fd5b806003018360405162000ad39190620028bb565b908152602001604051809103902054915050919050565b6001600160a01b038116331462000b145760405163334bd91960e11b815260040160405180910390fd5b62000b20828262001581565b505050565b60008062000b3262001391565b6003015492915050565b60008051602062002f9283398151915262000b5781620013b5565b62000b61620015c1565b50565b62000b6e6200161e565b62000b7982620016c9565b620009718282620016e4565b60008062000b9262001391565b600401546001600160a01b031692915050565b600062000bb1620017a3565b5060008051602062002f7283398151915290565b6060600062000bd36200154f565b905062000be1818462001573565b62000bff5760405163162e926760e11b815260040160405180910390fd5b60008381526002820160205260409020805462000c1c90620028d9565b80601f016020809104026020016040519081016040528092919081815260200182805462000c4a90620028d9565b801562000c9b5780601f1062000c6f5761010080835404028352916020019162000c9b565b820191906000526020600020905b81548152906001019060200180831162000c7d57829003601f168201915b5050505050915050919050565b60008062000cb5620017ed565b5460ff1692915050565b60008051602062002ef283398151915262000cda81620013b5565b620009718262001811565b60008051602062002fb283398151915262000d0081620013b5565b6001600160a01b03821662000d2c578160405163220b4f1160e11b8152600401620008e49190620024b8565b600062000d3862000879565b905062000d4583620018ef565b826001600160a01b0316816001600160a01b03167f88bf70d4f3c446213b5064d7cfe95ec0ed196748f014c19a833117bac32468fd60405160405180910390a3505050565b6060600062000d986200154f565b905062000da58162001920565b91505090565b60008051602062002f9283398151915262000dc681620013b5565b62000b616200192f565b60008062000ddd6200197b565b600085815260208290526040902090915062000dfa90846200199f565b949350505050565b60008062000e0f620014e2565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b600062000e46620019ad565b805490915060ff600160401b82041615906001600160401b031660008115801562000e6e5750825b90506000826001600160401b0316600114801562000e8b5750303b155b90508115801562000e9a575080155b1562000eb95760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b0319166001178555831562000ee357845460ff60401b1916600160401b1785555b62000eed620019d1565b62000ef7620019e5565b62000f01620019e5565b62000f0e60008c62001506565b5062000f2a60008051602062002f928339815191528b62001506565b5062000f4660008051602062002f528339815191528a62001506565b5062000f6260008051602062002f328339815191528962001506565b50600062000f6f62001391565b6002810180546001600160a01b0319166001600160a01b038b161790556003810188905568056bc75e2d6310000060019091015550831562000feb57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050565b6000806200100562001391565b546001600160a01b031692915050565b60606000620010236200197b565b60008481526020829052604090209091506200103f9062001920565b9392505050565b60008051602062002f328339815191526200106181620013b5565b816001600160a01b03163b60000362001091578160405163c9c10a6160e01b8152600401620008e49190620024b8565b60006200109d62000b85565b9050620010aa83620019ef565b826001600160a01b0316816001600160a01b03167f8752daf55fa0ccd919c149bbc809abaad4433f02ba7aa93ac6d5acfd2f8dc22c60405160405180910390a3505050565b60606000620010fd6200154f565b905060006200110c8262001920565b9050600081516001600160401b038111156200112c576200112c62002507565b6040519080825280602002602001820160405280156200116157816020015b60608152602001906001900390816200114b5790505b50905060005b82518110156200125c578360020160008483815181106200118c576200118c62002915565b602002602001015181526020019081526020016000208054620011af90620028d9565b80601f0160208091040260200160405190810160405280929190818152602001828054620011dd90620028d9565b80156200122e5780601f1062001202576101008083540402835291602001916200122e565b820191906000526020600020905b8154815290600101906020018083116200121057829003601f168201915b505050505082828151811062001248576200124862002915565b602090810291909101015260010162001167565b509392505050565b6000806200127162001391565b6001015492915050565b600080620012886200197b565b60008481526020829052604090209091506200103f9062001a20565b620012af82620009d9565b620012ba81620013b5565b62000a55838362001581565b60008051602062002f12833981519152620012e181620013b5565b6000620012ed62000b25565b9050620012fa8362001a2b565b604051839082907fc1fec27bbb8c533fedd3d449016c429341bfc0df21a9600e6162605e08f1c78f90600090a3505050565b60006200133862001a41565b6200134262001a7a565b6200134e838362001aa3565b90506200087362001ce3565b60006001600160e01b03198216637965db0b60e01b14806200087357506301ffc9a760e01b6001600160e01b031983161462000873565b7f2b421af391835920c41e77b6810f6e715f5b713c17bc590f55de6a7d3912e80090565b62000b61813362001cf6565b6000620013cd62001391565b80546001600160a01b0319166001600160a01b03939093169290921790915550565b600081604051602001620014049190620028bb565b6040516020818303038152906040528051906020012090506000620014286200154f565b9050600062001438828462001d33565b9050806200145d5783604051633dad0df560e11b8152600401620008e49190620026eb565b600083815260028301602052604090206200147985826200297f565b508282600301856040516200148f9190620028bb565b9081526020016040518091039020819055507fbad43a69707ac20dd539f3163b927e83baef6e967f2c95432129b1ded41664588484604051620014d492919062002a4b565b60405180910390a150505050565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b600080620015136200197b565b9050600062001523858562001d41565b9050801562000dfa57600085815260208390526040902062001546908562001dea565b50949350505050565b7f563e037355fff0507705f481e4b362e4c3996a3b57d07307deabfca3d816860090565b60006200103f838362001e01565b6000806200158e6200197b565b905060006200159e858562001e19565b9050801562000dfa57600085815260208390526040902062001546908562001e97565b620015cb62001eae565b6000620015d7620017ed565b805460ff1916815590507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b604051620016139190620024b8565b60405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480620016a857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166200169c60008051602062002f72833981519152546001600160a01b031690565b6001600160a01b031614155b15620016c75760405163703e46dd60e11b815260040160405180910390fd5b565b60008051602062002f528339815191526200097181620013b5565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801562001741575060408051601f3d908101601f191682019092526200173e9181019062002a6f565b60015b620017635781604051634c9c8ce360e01b8152600401620008e49190620024b8565b60008051602062002f7283398151915281146200179757604051632a87526960e21b815260048101829052602401620008e4565b62000b20838362001ed6565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614620016c75760405163703e46dd60e11b815260040160405180910390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330090565b600081604051602001620018269190620028bb565b60405160208183030381529060405280519060200120905060006200184a6200154f565b905060006200185a828462001f33565b9050806200187b5760405163162e926760e11b815260040160405180910390fd5b60008381526002830160205260408120620018969162002424565b8160030184604051620018aa9190620028bb565b9081526020016040518091039020600090557f57158eaa7e642cefd761327d5cd6c147ddaad706ec257f90f4d8b59b3d365eb78484604051620014d492919062002a4b565b6000620018fb62001391565b60020180546001600160a01b0319166001600160a01b03939093169290921790915550565b606060006200103f8362001f41565b6200193962001a7a565b600062001945620017ed565b805460ff1916600117815590507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258620016043390565b7fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200090565b60006200103f838362001f9f565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b620019db62001fcc565b620016c762001ff4565b620016c762001fcc565b6000620019fb62001391565b60040180546001600160a01b0319166001600160a01b03939093169290921790915550565b600062000873825490565b600062001a3762001391565b6003019190915550565b600062001a4d62002015565b80549091506001190162001a7457604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b62001a8462000ca8565b15620016c75760405163d93c066560e01b815260040160405180910390fd5b60006001600160a01b03831662001ad1578260405163715397cd60e11b8152600401620008e49190620024b8565b600062001add62001264565b90508034101562001b0b576040516353f01c6360e11b815260048101829052346024820152604401620008e4565b600062001b1762000ff8565b9050806001600160a01b03163b60000362001b4957806040516337766f4360e11b8152600401620008e49190620024b8565b600062001b5562000b85565b9050806001600160a01b03163b60000362001b87578060405163c9c10a6160e01b8152600401620008e49190620024b8565b60008260405162001b989062002463565b6001600160a01b039091168152604060208201819052600090820152606001604051809103906000f08015801562001bd4573d6000803e3d6000fd5b506040516333e1a22360e01b81523060048201526001600160a01b0384811660248301526044820187905289811660648301528881166084830152919250908216906333e1a2239060a401600060405180830381600087803b15801562001c3a57600080fd5b505af115801562001c4f573d6000803e3d6000fd5b5050604080518082019091526001815233602082015262001c74925083915062002039565b62001c8f60008051602062002fd28339815191528262001506565b5062001ca56001600160a01b038216346200209c565b6040516001600160a01b038216907f22de16ef21e3a33810fbcaf0e737ab9c9e2854fa565d8535041456c789afcd9390600090a29695505050505050565b600062001cef62002015565b6001905550565b62001d02828262000e02565b620009715760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401620008e4565b60006200103f83836200213f565b60008062001d4e620014e2565b905062001d5c848462000e02565b62001ddf576000848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905562001d943390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505062000873565b600091505062000873565b60006200103f836001600160a01b0384166200213f565b60009081526001919091016020526040902054151590565b60008062001e26620014e2565b905062001e34848462000e02565b1562001ddf576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505062000873565b60006200103f836001600160a01b0384166200218e565b62001eb862000ca8565b620016c757604051638dfc202b60e01b815260040160405180910390fd5b62001ee18262002287565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511562001f295762000b208282620022e7565b6200097162002363565b60006200103f83836200218e565b60608160000180548060200260200160405190810160405280929190818152602001828054801562001f9357602002820191906000526020600020905b81548152602001906001019080831162001f7e575b50505050509050919050565b600082600001828154811062001fb95762001fb962002915565b9060005260206000200154905092915050565b62001fd662002383565b620016c757604051631afcd79f60e31b815260040160405180910390fd5b62001ffe62001fcc565b60006200200a620017ed565b805460ff1916905550565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b60006200204562001391565b6001600160a01b03938416600090815260059091016020908152604090912083518154929094015190941661010002610100600160a81b0319931515939093166001600160a81b0319909116179190911790915550565b80471015620020c85760405163cf47918160e01b815247600482015260248101829052604401620008e4565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811462002117576040519150601f19603f3d011682016040523d82523d6000602084013e6200211c565b606091505b505090508062000b205760405163d6bda27560e01b815260040160405180910390fd5b60006200214d838362001e01565b620021855750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000873565b50600062000873565b6000818152600183016020526040812054801562001ddf576000620021b560018362002a89565b8554909150600090620021cb9060019062002a89565b905080821462002237576000866000018281548110620021ef57620021ef62002915565b906000526020600020015490508087600001848154811062002215576200221562002915565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806200224b576200224b62002aab565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505062000873565b806001600160a01b03163b600003620022b75780604051634c9c8ce360e01b8152600401620008e49190620024b8565b60008051602062002f7283398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051620023069190620028bb565b600060405180830381855af49150503d806000811462002343576040519150601f19603f3d011682016040523d82523d6000602084013e62002348565b606091505b50915091506200235a8583836200239f565b95945050505050565b3415620016c75760405163b398979f60e01b815260040160405180910390fd5b60006200238f620019ad565b54600160401b900460ff16919050565b606082620023b857620023b282620023fa565b6200103f565b8151158015620023d057506001600160a01b0384163b155b15620023f35783604051639996b31560e01b8152600401620008e49190620024b8565b5092915050565b8051156200240b5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b5080546200243290620028d9565b6000825580601f1062002443575050565b601f01602090049060005260206000209081019062000b61919062002471565b6104108062002ac283390190565b5b8082111562002488576000815560010162002472565b5090565b6000602082840312156200249f57600080fd5b81356001600160e01b0319811681146200103f57600080fd5b6001600160a01b0391909116815260200190565b80356001600160a01b0381168114620024e457600080fd5b919050565b600060208284031215620024fc57600080fd5b6200103f82620024cc565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b03808411156200253a576200253a62002507565b604051601f8501601f19908116603f0116810190828211818310171562002565576200256562002507565b816040528093508581528686860111156200257f57600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215620025ac57600080fd5b81356001600160401b03811115620025c357600080fd5b8201601f81018413620025d557600080fd5b62000dfa848235602084016200251d565b600060208284031215620025f957600080fd5b5035919050565b600080604083850312156200261457600080fd5b823591506200262660208401620024cc565b90509250929050565b600080604083850312156200264357600080fd5b6200264e83620024cc565b915060208301356001600160401b038111156200266a57600080fd5b8301601f810185136200267c57600080fd5b6200268d858235602084016200251d565b9150509250929050565b60005b83811015620026b45781810151838201526020016200269a565b50506000910152565b60008151808452620026d781602086016020860162002697565b601f01601f19169290920160200192915050565b6020815260006200103f6020830184620026bd565b6020808252825182820181905260009190848201906040850190845b818110156200273a578351835292840192918401916001016200271c565b50909695505050505050565b600080604083850312156200275a57600080fd5b50508035926020909101359150565b60008060008060008060c087890312156200278357600080fd5b6200278e87620024cc565b95506200279e60208801620024cc565b9450620027ae60408801620024cc565b9350620027be60608801620024cc565b9250620027ce60808801620024cc565b915060a087013590509295509295509295565b6020808252825182820181905260009190848201906040850190845b818110156200273a5783516001600160a01b031683529284019291840191600101620027fd565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b828110156200287f57603f198886030184526200286c858351620026bd565b945092850192908501906001016200284d565b5092979650505050505050565b60008060408385031215620028a057600080fd5b620028ab83620024cc565b91506200262660208401620024cc565b60008251620028cf81846020870162002697565b9190910192915050565b600181811c90821680620028ee57607f821691505b6020821081036200290f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b601f82111562000b20576000816000526020600020601f850160051c81016020861015620029565750805b601f850160051c820191505b81811015620029775782815560010162002962565b505050505050565b81516001600160401b038111156200299b576200299b62002507565b620029b381620029ac8454620028d9565b846200292b565b602080601f831160018114620029eb5760008415620029d25750858301515b600019600386901b1c1916600185901b17855562002977565b600085815260208120601f198616915b8281101562002a1c57888601518255948401946001909101908401620029fb565b508582101562002a3b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60408152600062002a606040830185620026bd565b90508260208301529392505050565b60006020828403121562002a8257600080fd5b5051919050565b818103818111156200087357634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fdfe60806040526040516104103803806104108339810160408190526100229161025a565b61002c8282610033565b5050610358565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610086576100818282610109565b505050565b61008e610180565b5050565b806001600160a01b03163b6000036100c85780604051634c9c8ce360e01b81526004016100bf9190610328565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610126919061033c565b600060405180830381855af49150503d8060008114610161576040519150601f19603f3d011682016040523d82523d6000602084013e610166565b606091505b5090925090506101778583836101a1565b95945050505050565b341561019f5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b6576101b1826101f7565b6101f0565b81511580156101cd57506001600160a01b0384163b155b156101ed5783604051639996b31560e01b81526004016100bf9190610328565b50805b9392505050565b8051156102075780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b83811015610251578181015183820152602001610239565b50506000910152565b6000806040838503121561026d57600080fd5b82516001600160a01b038116811461028457600080fd5b60208401519092506001600160401b03808211156102a157600080fd5b818501915085601f8301126102b557600080fd5b8151818111156102c7576102c7610220565b604051601f8201601f19908116603f011681019083821181831017156102ef576102ef610220565b8160405282815288602084870101111561030857600080fd5b610319836020830160208801610236565b80955050505050509250929050565b6001600160a01b0391909116815260200190565b6000825161034e818460208701610236565b9190910192915050565b60aa806103666000396000f3fe6080604052600a600c565b005b60186014601a565b6051565b565b6000604c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015606f573d6000f35b3d6000fdfea26469706673582212205010fbd336314ff514e3c3a5ed98aed1c9c96a5210a9df6dc914e2a04bbe772564736f6c6343000818003330f3325e23b502dce693b147d37de928d14dd5ab09bbc928fb79867329ac5b83dccfb718b018e1b06f849958baf67b0b252302f06a69871f72c5127ee92f659d349eec46d2c564a125684d1934a6120a70cc341d3a26d362e358a775e07dec176a42249708403f5ed28bf492facd11e85bc1054e6c27c155ed468f6ff4f7ecd0189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a819590c814c6d279357359f817d25adb06a7b9f6e493592b7d3b8bb268adb6764f22871c78b70c8896c7119179fc4e9b6f4cf323f8db6eadb7d79007d1e00c3fa26469706673582212200d6628730b2d330eb2e16dd8190c75aa9580d54d6cf9599d066d9a36e02f067264736f6c63430008180033", + "deployedBytecode": "0x608060405260043610620002245760003560e01c806301601d2f146200022957806301ffc9a714620002615780630470d3ac146200029757806309766da214620002be5780630d6115d014620002e557806312b357b5146200030a5780631c2b3afc146200032f578063248a9ca314620003545780632cec1a0614620003795780632f2ff15d146200039e578063352af39a14620003c357806336568abe14620003e85780633c555938146200040d5780633f4ba83a146200042557806340df8d84146200043d5780634cba593a14620004625780634f1ef28614620004875780634f3f4639146200049e57806352d1902d14620004b65780635a81a62614620004ce5780635c975abb14620005025780635e818619146200051a5780636cd56878146200053f5780637fa3465714620005645780638127f46514620005895780638456cb5914620005b05780639010d07c14620005c857806391d1485414620005ed57806392cf833f146200061257806395b6ef0c14620006375780639d825bc5146200065c578063a217fddf1462000674578063a3246ad3146200068b578063ad3cb1cc14620006bf578063b289819c14620006f2578063c17e30bf1462000717578063c2a1db78146200073c578063c39409e11462000763578063ca15c873146200077b578063d547741f14620007a0578063e63ab1e914620007c5578063f72c0d8b14620007ea578063f85b4a9c146200080f578063fd2fbd521462000834575b600080fd5b3480156200023657600080fd5b506200024e60008051602062002ed283398151915281565b6040519081526020015b60405180910390f35b3480156200026e57600080fd5b5062000286620002803660046200248c565b6200084b565b604051901515815260200162000258565b348015620002a457600080fd5b50620002af62000879565b604051620002589190620024b8565b348015620002cb57600080fd5b50620002e3620002dd366004620024e9565b62000899565b005b348015620002f257600080fd5b50620002e36200030436600462002599565b6200094b565b3480156200031757600080fd5b506200028662000329366004620024e9565b62000975565b3480156200033c57600080fd5b50620002e36200034e366004620025e6565b620009a7565b3480156200036157600080fd5b506200024e62000373366004620025e6565b620009d9565b3480156200038657600080fd5b50620002af62000398366004620024e9565b620009fb565b348015620003ab57600080fd5b50620002e3620003bd36600462002600565b62000a33565b348015620003d057600080fd5b506200024e620003e236600462002599565b62000a5b565b348015620003f557600080fd5b50620002e36200040736600462002600565b62000aea565b3480156200041a57600080fd5b506200024e62000b25565b3480156200043257600080fd5b50620002e362000b3c565b3480156200044a57600080fd5b506200024e60008051602062002fb283398151915281565b3480156200046f57600080fd5b506200024e60008051602062002f1283398151915281565b620002e3620004983660046200262f565b62000b64565b348015620004ab57600080fd5b50620002af62000b85565b348015620004c357600080fd5b506200024e62000ba5565b348015620004db57600080fd5b50620004f3620004ed366004620025e6565b62000bc5565b604051620002589190620026eb565b3480156200050f57600080fd5b506200028662000ca8565b3480156200052757600080fd5b50620002e36200053936600462002599565b62000cbf565b3480156200054c57600080fd5b50620002e36200055e366004620024e9565b62000ce5565b3480156200057157600080fd5b506200024e60008051602062002fd283398151915281565b3480156200059657600080fd5b50620005a162000d8a565b60405162000258919062002700565b348015620005bd57600080fd5b50620002e362000dab565b348015620005d557600080fd5b50620002af620005e736600462002746565b62000dd0565b348015620005fa57600080fd5b50620002866200060c36600462002600565b62000e02565b3480156200061f57600080fd5b506200024e60008051602062002ef283398151915281565b3480156200064457600080fd5b50620002e36200065636600462002769565b62000e3a565b3480156200066957600080fd5b50620002af62000ff8565b3480156200068157600080fd5b506200024e600081565b3480156200069857600080fd5b50620006b0620006aa366004620025e6565b62001015565b604051620002589190620027e1565b348015620006cc57600080fd5b50620004f3604051806040016040528060058152602001640352e302e360dc1b81525081565b348015620006ff57600080fd5b506200024e60008051602062002f3283398151915281565b3480156200072457600080fd5b50620002e362000736366004620024e9565b62001046565b3480156200074957600080fd5b5062000754620010ef565b60405162000258919062002824565b3480156200077057600080fd5b506200024e62001264565b3480156200078857600080fd5b506200024e6200079a366004620025e6565b6200127b565b348015620007ad57600080fd5b50620002e3620007bf36600462002600565b620012a4565b348015620007d257600080fd5b506200024e60008051602062002f9283398151915281565b348015620007f757600080fd5b506200024e60008051602062002f5283398151915281565b3480156200081c57600080fd5b50620002e36200082e366004620025e6565b620012c6565b620002af620008453660046200288c565b6200132c565b60006001600160e01b03198216635a05180f60e01b148062000873575062000873826200135a565b92915050565b6000806200088662001391565b600201546001600160a01b031692915050565b60008051602062002f32833981519152620008b481620013b5565b816001600160a01b03163b600003620008ed57816040516337766f4360e11b8152600401620008e49190620024b8565b60405180910390fd5b6000620008f962000ff8565b90506200090683620013c1565b826001600160a01b0316816001600160a01b03167fecd599290ada9c149ae0fb600bc6ada3c103a716eadb877b5341b7d298b62d9360405160405180910390a3505050565b60008051602062002ef28339815191526200096681620013b5565b6200097182620013ef565b5050565b6000806200098262001391565b6001600160a01b03909316600090815260059093016020525050604090205460ff1690565b60008051602062002ed2833981519152620009c281620013b5565b6000620009ce62001391565b600101929092555050565b600080620009e6620014e2565b60009384526020525050604090206001015490565b60008062000a0862001391565b6001600160a01b03938416600090815260059091016020526040902054610100900490921692915050565b62000a3e82620009d9565b62000a4981620013b5565b62000a55838362001506565b50505050565b60008062000a686200154f565b905062000aa18360405160200162000a819190620028bb565b60408051601f198184030181529190528051602090910120829062001573565b62000abf5760405163162e926760e11b815260040160405180910390fd5b806003018360405162000ad39190620028bb565b908152602001604051809103902054915050919050565b6001600160a01b038116331462000b145760405163334bd91960e11b815260040160405180910390fd5b62000b20828262001581565b505050565b60008062000b3262001391565b6003015492915050565b60008051602062002f9283398151915262000b5781620013b5565b62000b61620015c1565b50565b62000b6e6200161e565b62000b7982620016c9565b620009718282620016e4565b60008062000b9262001391565b600401546001600160a01b031692915050565b600062000bb1620017a3565b5060008051602062002f7283398151915290565b6060600062000bd36200154f565b905062000be1818462001573565b62000bff5760405163162e926760e11b815260040160405180910390fd5b60008381526002820160205260409020805462000c1c90620028d9565b80601f016020809104026020016040519081016040528092919081815260200182805462000c4a90620028d9565b801562000c9b5780601f1062000c6f5761010080835404028352916020019162000c9b565b820191906000526020600020905b81548152906001019060200180831162000c7d57829003601f168201915b5050505050915050919050565b60008062000cb5620017ed565b5460ff1692915050565b60008051602062002ef283398151915262000cda81620013b5565b620009718262001811565b60008051602062002fb283398151915262000d0081620013b5565b6001600160a01b03821662000d2c578160405163220b4f1160e11b8152600401620008e49190620024b8565b600062000d3862000879565b905062000d4583620018ef565b826001600160a01b0316816001600160a01b03167f88bf70d4f3c446213b5064d7cfe95ec0ed196748f014c19a833117bac32468fd60405160405180910390a3505050565b6060600062000d986200154f565b905062000da58162001920565b91505090565b60008051602062002f9283398151915262000dc681620013b5565b62000b616200192f565b60008062000ddd6200197b565b600085815260208290526040902090915062000dfa90846200199f565b949350505050565b60008062000e0f620014e2565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b600062000e46620019ad565b805490915060ff600160401b82041615906001600160401b031660008115801562000e6e5750825b90506000826001600160401b0316600114801562000e8b5750303b155b90508115801562000e9a575080155b1562000eb95760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b0319166001178555831562000ee357845460ff60401b1916600160401b1785555b62000eed620019d1565b62000ef7620019e5565b62000f01620019e5565b62000f0e60008c62001506565b5062000f2a60008051602062002f928339815191528b62001506565b5062000f4660008051602062002f528339815191528a62001506565b5062000f6260008051602062002f328339815191528962001506565b50600062000f6f62001391565b6002810180546001600160a01b0319166001600160a01b038b161790556003810188905568056bc75e2d6310000060019091015550831562000feb57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050565b6000806200100562001391565b546001600160a01b031692915050565b60606000620010236200197b565b60008481526020829052604090209091506200103f9062001920565b9392505050565b60008051602062002f328339815191526200106181620013b5565b816001600160a01b03163b60000362001091578160405163c9c10a6160e01b8152600401620008e49190620024b8565b60006200109d62000b85565b9050620010aa83620019ef565b826001600160a01b0316816001600160a01b03167f8752daf55fa0ccd919c149bbc809abaad4433f02ba7aa93ac6d5acfd2f8dc22c60405160405180910390a3505050565b60606000620010fd6200154f565b905060006200110c8262001920565b9050600081516001600160401b038111156200112c576200112c62002507565b6040519080825280602002602001820160405280156200116157816020015b60608152602001906001900390816200114b5790505b50905060005b82518110156200125c578360020160008483815181106200118c576200118c62002915565b602002602001015181526020019081526020016000208054620011af90620028d9565b80601f0160208091040260200160405190810160405280929190818152602001828054620011dd90620028d9565b80156200122e5780601f1062001202576101008083540402835291602001916200122e565b820191906000526020600020905b8154815290600101906020018083116200121057829003601f168201915b505050505082828151811062001248576200124862002915565b602090810291909101015260010162001167565b509392505050565b6000806200127162001391565b6001015492915050565b600080620012886200197b565b60008481526020829052604090209091506200103f9062001a20565b620012af82620009d9565b620012ba81620013b5565b62000a55838362001581565b60008051602062002f12833981519152620012e181620013b5565b6000620012ed62000b25565b9050620012fa8362001a2b565b604051839082907fc1fec27bbb8c533fedd3d449016c429341bfc0df21a9600e6162605e08f1c78f90600090a3505050565b60006200133862001a41565b6200134262001a7a565b6200134e838362001aa3565b90506200087362001ce3565b60006001600160e01b03198216637965db0b60e01b14806200087357506301ffc9a760e01b6001600160e01b031983161462000873565b7f2b421af391835920c41e77b6810f6e715f5b713c17bc590f55de6a7d3912e80090565b62000b61813362001cf6565b6000620013cd62001391565b80546001600160a01b0319166001600160a01b03939093169290921790915550565b600081604051602001620014049190620028bb565b6040516020818303038152906040528051906020012090506000620014286200154f565b9050600062001438828462001d33565b9050806200145d5783604051633dad0df560e11b8152600401620008e49190620026eb565b600083815260028301602052604090206200147985826200297f565b508282600301856040516200148f9190620028bb565b9081526020016040518091039020819055507fbad43a69707ac20dd539f3163b927e83baef6e967f2c95432129b1ded41664588484604051620014d492919062002a4b565b60405180910390a150505050565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b600080620015136200197b565b9050600062001523858562001d41565b9050801562000dfa57600085815260208390526040902062001546908562001dea565b50949350505050565b7f563e037355fff0507705f481e4b362e4c3996a3b57d07307deabfca3d816860090565b60006200103f838362001e01565b6000806200158e6200197b565b905060006200159e858562001e19565b9050801562000dfa57600085815260208390526040902062001546908562001e97565b620015cb62001eae565b6000620015d7620017ed565b805460ff1916815590507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b604051620016139190620024b8565b60405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480620016a857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166200169c60008051602062002f72833981519152546001600160a01b031690565b6001600160a01b031614155b15620016c75760405163703e46dd60e11b815260040160405180910390fd5b565b60008051602062002f528339815191526200097181620013b5565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801562001741575060408051601f3d908101601f191682019092526200173e9181019062002a6f565b60015b620017635781604051634c9c8ce360e01b8152600401620008e49190620024b8565b60008051602062002f7283398151915281146200179757604051632a87526960e21b815260048101829052602401620008e4565b62000b20838362001ed6565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614620016c75760405163703e46dd60e11b815260040160405180910390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330090565b600081604051602001620018269190620028bb565b60405160208183030381529060405280519060200120905060006200184a6200154f565b905060006200185a828462001f33565b9050806200187b5760405163162e926760e11b815260040160405180910390fd5b60008381526002830160205260408120620018969162002424565b8160030184604051620018aa9190620028bb565b9081526020016040518091039020600090557f57158eaa7e642cefd761327d5cd6c147ddaad706ec257f90f4d8b59b3d365eb78484604051620014d492919062002a4b565b6000620018fb62001391565b60020180546001600160a01b0319166001600160a01b03939093169290921790915550565b606060006200103f8362001f41565b6200193962001a7a565b600062001945620017ed565b805460ff1916600117815590507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258620016043390565b7fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200090565b60006200103f838362001f9f565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b620019db62001fcc565b620016c762001ff4565b620016c762001fcc565b6000620019fb62001391565b60040180546001600160a01b0319166001600160a01b03939093169290921790915550565b600062000873825490565b600062001a3762001391565b6003019190915550565b600062001a4d62002015565b80549091506001190162001a7457604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b62001a8462000ca8565b15620016c75760405163d93c066560e01b815260040160405180910390fd5b60006001600160a01b03831662001ad1578260405163715397cd60e11b8152600401620008e49190620024b8565b600062001add62001264565b90508034101562001b0b576040516353f01c6360e11b815260048101829052346024820152604401620008e4565b600062001b1762000ff8565b9050806001600160a01b03163b60000362001b4957806040516337766f4360e11b8152600401620008e49190620024b8565b600062001b5562000b85565b9050806001600160a01b03163b60000362001b87578060405163c9c10a6160e01b8152600401620008e49190620024b8565b60008260405162001b989062002463565b6001600160a01b039091168152604060208201819052600090820152606001604051809103906000f08015801562001bd4573d6000803e3d6000fd5b506040516333e1a22360e01b81523060048201526001600160a01b0384811660248301526044820187905289811660648301528881166084830152919250908216906333e1a2239060a401600060405180830381600087803b15801562001c3a57600080fd5b505af115801562001c4f573d6000803e3d6000fd5b5050604080518082019091526001815233602082015262001c74925083915062002039565b62001c8f60008051602062002fd28339815191528262001506565b5062001ca56001600160a01b038216346200209c565b6040516001600160a01b038216907f22de16ef21e3a33810fbcaf0e737ab9c9e2854fa565d8535041456c789afcd9390600090a29695505050505050565b600062001cef62002015565b6001905550565b62001d02828262000e02565b620009715760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401620008e4565b60006200103f83836200213f565b60008062001d4e620014e2565b905062001d5c848462000e02565b62001ddf576000848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905562001d943390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505062000873565b600091505062000873565b60006200103f836001600160a01b0384166200213f565b60009081526001919091016020526040902054151590565b60008062001e26620014e2565b905062001e34848462000e02565b1562001ddf576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505062000873565b60006200103f836001600160a01b0384166200218e565b62001eb862000ca8565b620016c757604051638dfc202b60e01b815260040160405180910390fd5b62001ee18262002287565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511562001f295762000b208282620022e7565b6200097162002363565b60006200103f83836200218e565b60608160000180548060200260200160405190810160405280929190818152602001828054801562001f9357602002820191906000526020600020905b81548152602001906001019080831162001f7e575b50505050509050919050565b600082600001828154811062001fb95762001fb962002915565b9060005260206000200154905092915050565b62001fd662002383565b620016c757604051631afcd79f60e31b815260040160405180910390fd5b62001ffe62001fcc565b60006200200a620017ed565b805460ff1916905550565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b60006200204562001391565b6001600160a01b03938416600090815260059091016020908152604090912083518154929094015190941661010002610100600160a81b0319931515939093166001600160a81b0319909116179190911790915550565b80471015620020c85760405163cf47918160e01b815247600482015260248101829052604401620008e4565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811462002117576040519150601f19603f3d011682016040523d82523d6000602084013e6200211c565b606091505b505090508062000b205760405163d6bda27560e01b815260040160405180910390fd5b60006200214d838362001e01565b620021855750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000873565b50600062000873565b6000818152600183016020526040812054801562001ddf576000620021b560018362002a89565b8554909150600090620021cb9060019062002a89565b905080821462002237576000866000018281548110620021ef57620021ef62002915565b906000526020600020015490508087600001848154811062002215576200221562002915565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806200224b576200224b62002aab565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505062000873565b806001600160a01b03163b600003620022b75780604051634c9c8ce360e01b8152600401620008e49190620024b8565b60008051602062002f7283398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051620023069190620028bb565b600060405180830381855af49150503d806000811462002343576040519150601f19603f3d011682016040523d82523d6000602084013e62002348565b606091505b50915091506200235a8583836200239f565b95945050505050565b3415620016c75760405163b398979f60e01b815260040160405180910390fd5b60006200238f620019ad565b54600160401b900460ff16919050565b606082620023b857620023b282620023fa565b6200103f565b8151158015620023d057506001600160a01b0384163b155b15620023f35783604051639996b31560e01b8152600401620008e49190620024b8565b5092915050565b8051156200240b5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b5080546200243290620028d9565b6000825580601f1062002443575050565b601f01602090049060005260206000209081019062000b61919062002471565b6104108062002ac283390190565b5b8082111562002488576000815560010162002472565b5090565b6000602082840312156200249f57600080fd5b81356001600160e01b0319811681146200103f57600080fd5b6001600160a01b0391909116815260200190565b80356001600160a01b0381168114620024e457600080fd5b919050565b600060208284031215620024fc57600080fd5b6200103f82620024cc565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b03808411156200253a576200253a62002507565b604051601f8501601f19908116603f0116810190828211818310171562002565576200256562002507565b816040528093508581528686860111156200257f57600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215620025ac57600080fd5b81356001600160401b03811115620025c357600080fd5b8201601f81018413620025d557600080fd5b62000dfa848235602084016200251d565b600060208284031215620025f957600080fd5b5035919050565b600080604083850312156200261457600080fd5b823591506200262660208401620024cc565b90509250929050565b600080604083850312156200264357600080fd5b6200264e83620024cc565b915060208301356001600160401b038111156200266a57600080fd5b8301601f810185136200267c57600080fd5b6200268d858235602084016200251d565b9150509250929050565b60005b83811015620026b45781810151838201526020016200269a565b50506000910152565b60008151808452620026d781602086016020860162002697565b601f01601f19169290920160200192915050565b6020815260006200103f6020830184620026bd565b6020808252825182820181905260009190848201906040850190845b818110156200273a578351835292840192918401916001016200271c565b50909695505050505050565b600080604083850312156200275a57600080fd5b50508035926020909101359150565b60008060008060008060c087890312156200278357600080fd5b6200278e87620024cc565b95506200279e60208801620024cc565b9450620027ae60408801620024cc565b9350620027be60608801620024cc565b9250620027ce60808801620024cc565b915060a087013590509295509295509295565b6020808252825182820181905260009190848201906040850190845b818110156200273a5783516001600160a01b031683529284019291840191600101620027fd565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b828110156200287f57603f198886030184526200286c858351620026bd565b945092850192908501906001016200284d565b5092979650505050505050565b60008060408385031215620028a057600080fd5b620028ab83620024cc565b91506200262660208401620024cc565b60008251620028cf81846020870162002697565b9190910192915050565b600181811c90821680620028ee57607f821691505b6020821081036200290f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b601f82111562000b20576000816000526020600020601f850160051c81016020861015620029565750805b601f850160051c820191505b81811015620029775782815560010162002962565b505050505050565b81516001600160401b038111156200299b576200299b62002507565b620029b381620029ac8454620028d9565b846200292b565b602080601f831160018114620029eb5760008415620029d25750858301515b600019600386901b1c1916600185901b17855562002977565b600085815260208120601f198616915b8281101562002a1c57888601518255948401946001909101908401620029fb565b508582101562002a3b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60408152600062002a606040830185620026bd565b90508260208301529392505050565b60006020828403121562002a8257600080fd5b5051919050565b818103818111156200087357634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fdfe60806040526040516104103803806104108339810160408190526100229161025a565b61002c8282610033565b5050610358565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610086576100818282610109565b505050565b61008e610180565b5050565b806001600160a01b03163b6000036100c85780604051634c9c8ce360e01b81526004016100bf9190610328565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610126919061033c565b600060405180830381855af49150503d8060008114610161576040519150601f19603f3d011682016040523d82523d6000602084013e610166565b606091505b5090925090506101778583836101a1565b95945050505050565b341561019f5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b6576101b1826101f7565b6101f0565b81511580156101cd57506001600160a01b0384163b155b156101ed5783604051639996b31560e01b81526004016100bf9190610328565b50805b9392505050565b8051156102075780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b83811015610251578181015183820152602001610239565b50506000910152565b6000806040838503121561026d57600080fd5b82516001600160a01b038116811461028457600080fd5b60208401519092506001600160401b03808211156102a157600080fd5b818501915085601f8301126102b557600080fd5b8151818111156102c7576102c7610220565b604051601f8201601f19908116603f011681019083821181831017156102ef576102ef610220565b8160405282815288602084870101111561030857600080fd5b610319836020830160208801610236565b80955050505050509250929050565b6001600160a01b0391909116815260200190565b6000825161034e818460208701610236565b9190910192915050565b60aa806103666000396000f3fe6080604052600a600c565b005b60186014601a565b6051565b565b6000604c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015606f573d6000f35b3d6000fdfea26469706673582212205010fbd336314ff514e3c3a5ed98aed1c9c96a5210a9df6dc914e2a04bbe772564736f6c6343000818003330f3325e23b502dce693b147d37de928d14dd5ab09bbc928fb79867329ac5b83dccfb718b018e1b06f849958baf67b0b252302f06a69871f72c5127ee92f659d349eec46d2c564a125684d1934a6120a70cc341d3a26d362e358a775e07dec176a42249708403f5ed28bf492facd11e85bc1054e6c27c155ed468f6ff4f7ecd0189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a819590c814c6d279357359f817d25adb06a7b9f6e493592b7d3b8bb268adb6764f22871c78b70c8896c7119179fc4e9b6f4cf323f8db6eadb7d79007d1e00c3fa26469706673582212200d6628730b2d330eb2e16dd8190c75aa9580d54d6cf9599d066d9a36e02f067264736f6c63430008180033", + "linkReferences": {}, + "deployedLinkReferences": {} +} \ No newline at end of file diff --git a/ignition/deployments/chain-501/build-info/c929040ed782d5f1fe9b972f02b44da8.json b/ignition/deployments/chain-501/build-info/c929040ed782d5f1fe9b972f02b44da8.json new file mode 100644 index 0000000..c61e15c --- /dev/null +++ b/ignition/deployments/chain-501/build-info/c929040ed782d5f1fe9b972f02b44da8.json @@ -0,0 +1,351168 @@ +{ + "id": "c929040ed782d5f1fe9b972f02b44da8", + "_format": "hh-sol-build-info-1", + "solcVersion": "0.8.24", + "solcLongVersion": "0.8.24+commit.e11b9ed9", + "input": { + "language": "Solidity", + "sources": { + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (access/AccessControl.sol)\n\npragma solidity ^0.8.20;\n\nimport {IAccessControl} from \"@openzeppelin/contracts/access/IAccessControl.sol\";\nimport {ContextUpgradeable} from \"../utils/ContextUpgradeable.sol\";\nimport {ERC165Upgradeable} from \"../utils/introspection/ERC165Upgradeable.sol\";\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module that allows children to implement role-based access\n * control mechanisms. This is a lightweight version that doesn't allow enumerating role\n * members except through off-chain means by accessing the contract event logs. Some\n * applications may benefit from on-chain enumerability, for those cases see\n * {AccessControlEnumerable}.\n *\n * Roles are referred to by their `bytes32` identifier. These should be exposed\n * in the external API and be unique. The best way to achieve this is by\n * using `public constant` hash digests:\n *\n * ```solidity\n * bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n * ```\n *\n * Roles can be used to represent a set of permissions. To restrict access to a\n * function call, use {hasRole}:\n *\n * ```solidity\n * function foo() public {\n * require(hasRole(MY_ROLE, msg.sender));\n * ...\n * }\n * ```\n *\n * Roles can be granted and revoked dynamically via the {grantRole} and\n * {revokeRole} functions. Each role has an associated admin role, and only\n * accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n *\n * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n * that only accounts with this role will be able to grant or revoke other\n * roles. More complex role relationships can be created by using\n * {_setRoleAdmin}.\n *\n * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n * grant and revoke this role. Extra precautions should be taken to secure\n * accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules}\n * to enforce additional security measures for this role.\n */\nabstract contract AccessControlUpgradeable is Initializable, ContextUpgradeable, IAccessControl, ERC165Upgradeable {\n struct RoleData {\n mapping(address account => bool) hasRole;\n bytes32 adminRole;\n }\n\n bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;\n\n\n /// @custom:storage-location erc7201:openzeppelin.storage.AccessControl\n struct AccessControlStorage {\n mapping(bytes32 role => RoleData) _roles;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.AccessControl\")) - 1)) & ~bytes32(uint256(0xff))\n bytes32 private constant AccessControlStorageLocation = 0x02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800;\n\n function _getAccessControlStorage() private pure returns (AccessControlStorage storage $) {\n assembly {\n $.slot := AccessControlStorageLocation\n }\n }\n\n /**\n * @dev Modifier that checks that an account has a specific role. Reverts\n * with an {AccessControlUnauthorizedAccount} error including the required role.\n */\n modifier onlyRole(bytes32 role) {\n _checkRole(role);\n _;\n }\n\n function __AccessControl_init() internal onlyInitializing {\n }\n\n function __AccessControl_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(IAccessControl).interfaceId || super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev Returns `true` if `account` has been granted `role`.\n */\n function hasRole(bytes32 role, address account) public view virtual returns (bool) {\n AccessControlStorage storage $ = _getAccessControlStorage();\n return $._roles[role].hasRole[account];\n }\n\n /**\n * @dev Reverts with an {AccessControlUnauthorizedAccount} error if `_msgSender()`\n * is missing `role`. Overriding this function changes the behavior of the {onlyRole} modifier.\n */\n function _checkRole(bytes32 role) internal view virtual {\n _checkRole(role, _msgSender());\n }\n\n /**\n * @dev Reverts with an {AccessControlUnauthorizedAccount} error if `account`\n * is missing `role`.\n */\n function _checkRole(bytes32 role, address account) internal view virtual {\n if (!hasRole(role, account)) {\n revert AccessControlUnauthorizedAccount(account, role);\n }\n }\n\n /**\n * @dev Returns the admin role that controls `role`. See {grantRole} and\n * {revokeRole}.\n *\n * To change a role's admin, use {_setRoleAdmin}.\n */\n function getRoleAdmin(bytes32 role) public view virtual returns (bytes32) {\n AccessControlStorage storage $ = _getAccessControlStorage();\n return $._roles[role].adminRole;\n }\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n *\n * May emit a {RoleGranted} event.\n */\n function grantRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) {\n _grantRole(role, account);\n }\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n *\n * May emit a {RoleRevoked} event.\n */\n function revokeRole(bytes32 role, address account) public virtual onlyRole(getRoleAdmin(role)) {\n _revokeRole(role, account);\n }\n\n /**\n * @dev Revokes `role` from the calling account.\n *\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\n * purpose is to provide a mechanism for accounts to lose their privileges\n * if they are compromised (such as when a trusted device is misplaced).\n *\n * If the calling account had been revoked `role`, emits a {RoleRevoked}\n * event.\n *\n * Requirements:\n *\n * - the caller must be `callerConfirmation`.\n *\n * May emit a {RoleRevoked} event.\n */\n function renounceRole(bytes32 role, address callerConfirmation) public virtual {\n if (callerConfirmation != _msgSender()) {\n revert AccessControlBadConfirmation();\n }\n\n _revokeRole(role, callerConfirmation);\n }\n\n /**\n * @dev Sets `adminRole` as ``role``'s admin role.\n *\n * Emits a {RoleAdminChanged} event.\n */\n function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {\n AccessControlStorage storage $ = _getAccessControlStorage();\n bytes32 previousAdminRole = getRoleAdmin(role);\n $._roles[role].adminRole = adminRole;\n emit RoleAdminChanged(role, previousAdminRole, adminRole);\n }\n\n /**\n * @dev Attempts to grant `role` to `account` and returns a boolean indicating if `role` was granted.\n *\n * Internal function without access restriction.\n *\n * May emit a {RoleGranted} event.\n */\n function _grantRole(bytes32 role, address account) internal virtual returns (bool) {\n AccessControlStorage storage $ = _getAccessControlStorage();\n if (!hasRole(role, account)) {\n $._roles[role].hasRole[account] = true;\n emit RoleGranted(role, account, _msgSender());\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Attempts to revoke `role` to `account` and returns a boolean indicating if `role` was revoked.\n *\n * Internal function without access restriction.\n *\n * May emit a {RoleRevoked} event.\n */\n function _revokeRole(bytes32 role, address account) internal virtual returns (bool) {\n AccessControlStorage storage $ = _getAccessControlStorage();\n if (hasRole(role, account)) {\n $._roles[role].hasRole[account] = false;\n emit RoleRevoked(role, account, _msgSender());\n return true;\n } else {\n return false;\n }\n }\n}\n" + }, + "@openzeppelin/contracts-upgradeable/access/extensions/AccessControlEnumerableUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (access/extensions/AccessControlEnumerable.sol)\n\npragma solidity ^0.8.20;\n\nimport {IAccessControlEnumerable} from \"@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.sol\";\nimport {AccessControlUpgradeable} from \"../AccessControlUpgradeable.sol\";\nimport {EnumerableSet} from \"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\";\nimport {Initializable} from \"../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Extension of {AccessControl} that allows enumerating the members of each role.\n */\nabstract contract AccessControlEnumerableUpgradeable is Initializable, IAccessControlEnumerable, AccessControlUpgradeable {\n using EnumerableSet for EnumerableSet.AddressSet;\n\n /// @custom:storage-location erc7201:openzeppelin.storage.AccessControlEnumerable\n struct AccessControlEnumerableStorage {\n mapping(bytes32 role => EnumerableSet.AddressSet) _roleMembers;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.AccessControlEnumerable\")) - 1)) & ~bytes32(uint256(0xff))\n bytes32 private constant AccessControlEnumerableStorageLocation = 0xc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e82371705932000;\n\n function _getAccessControlEnumerableStorage() private pure returns (AccessControlEnumerableStorage storage $) {\n assembly {\n $.slot := AccessControlEnumerableStorageLocation\n }\n }\n\n function __AccessControlEnumerable_init() internal onlyInitializing {\n }\n\n function __AccessControlEnumerable_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(IAccessControlEnumerable).interfaceId || super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev Returns one of the accounts that have `role`. `index` must be a\n * value between 0 and {getRoleMemberCount}, non-inclusive.\n *\n * Role bearers are not sorted in any particular way, and their ordering may\n * change at any point.\n *\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\n * you perform all queries on the same block. See the following\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\n * for more information.\n */\n function getRoleMember(bytes32 role, uint256 index) public view virtual returns (address) {\n AccessControlEnumerableStorage storage $ = _getAccessControlEnumerableStorage();\n return $._roleMembers[role].at(index);\n }\n\n /**\n * @dev Returns the number of accounts that have `role`. Can be used\n * together with {getRoleMember} to enumerate all bearers of a role.\n */\n function getRoleMemberCount(bytes32 role) public view virtual returns (uint256) {\n AccessControlEnumerableStorage storage $ = _getAccessControlEnumerableStorage();\n return $._roleMembers[role].length();\n }\n\n /**\n * @dev Return all accounts that have `role`\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function getRoleMembers(bytes32 role) public view virtual returns (address[] memory) {\n AccessControlEnumerableStorage storage $ = _getAccessControlEnumerableStorage();\n return $._roleMembers[role].values();\n }\n\n /**\n * @dev Overload {AccessControl-_grantRole} to track enumerable memberships\n */\n function _grantRole(bytes32 role, address account) internal virtual override returns (bool) {\n AccessControlEnumerableStorage storage $ = _getAccessControlEnumerableStorage();\n bool granted = super._grantRole(role, account);\n if (granted) {\n $._roleMembers[role].add(account);\n }\n return granted;\n }\n\n /**\n * @dev Overload {AccessControl-_revokeRole} to track enumerable memberships\n */\n function _revokeRole(bytes32 role, address account) internal virtual override returns (bool) {\n AccessControlEnumerableStorage storage $ = _getAccessControlEnumerableStorage();\n bool revoked = super._revokeRole(role, account);\n if (revoked) {\n $._roleMembers[role].remove(account);\n }\n return revoked;\n }\n}\n" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/utils/Initializable.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n *\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n * reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n * case an upgrade adds a module that needs to be initialized.\n *\n * For example:\n *\n * [.hljs-theme-light.nopadding]\n * ```solidity\n * contract MyToken is ERC20Upgradeable {\n * function initialize() initializer public {\n * __ERC20_init(\"MyToken\", \"MTK\");\n * }\n * }\n *\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n * function initializeV2() reinitializer(2) public {\n * __ERC20Permit_init(\"MyToken\");\n * }\n * }\n * ```\n *\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n *\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n *\n * [CAUTION]\n * ====\n * Avoid leaving a contract uninitialized.\n *\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n *\n * [.hljs-theme-light.nopadding]\n * ```\n * /// @custom:oz-upgrades-unsafe-allow constructor\n * constructor() {\n * _disableInitializers();\n * }\n * ```\n * ====\n */\nabstract contract Initializable {\n /**\n * @dev Storage of the initializable contract.\n *\n * It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\n * when using with upgradeable contracts.\n *\n * @custom:storage-location erc7201:openzeppelin.storage.Initializable\n */\n struct InitializableStorage {\n /**\n * @dev Indicates that the contract has been initialized.\n */\n uint64 _initialized;\n /**\n * @dev Indicates that the contract is in the process of being initialized.\n */\n bool _initializing;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.Initializable\")) - 1)) & ~bytes32(uint256(0xff))\n bytes32 private constant INITIALIZABLE_STORAGE = 0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00;\n\n /**\n * @dev The contract is already initialized.\n */\n error InvalidInitialization();\n\n /**\n * @dev The contract is not initializing.\n */\n error NotInitializing();\n\n /**\n * @dev Triggered when the contract has been initialized or reinitialized.\n */\n event Initialized(uint64 version);\n\n /**\n * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n * `onlyInitializing` functions can be used to initialize parent contracts.\n *\n * Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\n * number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\n * production.\n *\n * Emits an {Initialized} event.\n */\n modifier initializer() {\n // solhint-disable-next-line var-name-mixedcase\n InitializableStorage storage $ = _getInitializableStorage();\n\n // Cache values to avoid duplicated sloads\n bool isTopLevelCall = !$._initializing;\n uint64 initialized = $._initialized;\n\n // Allowed calls:\n // - initialSetup: the contract is not in the initializing state and no previous version was\n // initialized\n // - construction: the contract is initialized at version 1 (no reininitialization) and the\n // current contract is just being deployed\n bool initialSetup = initialized == 0 && isTopLevelCall;\n bool construction = initialized == 1 && address(this).code.length == 0;\n\n if (!initialSetup && !construction) {\n revert InvalidInitialization();\n }\n $._initialized = 1;\n if (isTopLevelCall) {\n $._initializing = true;\n }\n _;\n if (isTopLevelCall) {\n $._initializing = false;\n emit Initialized(1);\n }\n }\n\n /**\n * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n * used to initialize parent contracts.\n *\n * A reinitializer may be used after the original initialization step. This is essential to configure modules that\n * are added through upgrades and that require initialization.\n *\n * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n * cannot be nested. If one is invoked in the context of another, execution will revert.\n *\n * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n * a contract, executing them in the right order is up to the developer or operator.\n *\n * WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\n *\n * Emits an {Initialized} event.\n */\n modifier reinitializer(uint64 version) {\n // solhint-disable-next-line var-name-mixedcase\n InitializableStorage storage $ = _getInitializableStorage();\n\n if ($._initializing || $._initialized >= version) {\n revert InvalidInitialization();\n }\n $._initialized = version;\n $._initializing = true;\n _;\n $._initializing = false;\n emit Initialized(version);\n }\n\n /**\n * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n * {initializer} and {reinitializer} modifiers, directly or indirectly.\n */\n modifier onlyInitializing() {\n _checkInitializing();\n _;\n }\n\n /**\n * @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}.\n */\n function _checkInitializing() internal view virtual {\n if (!_isInitializing()) {\n revert NotInitializing();\n }\n }\n\n /**\n * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n * through proxies.\n *\n * Emits an {Initialized} event the first time it is successfully executed.\n */\n function _disableInitializers() internal virtual {\n // solhint-disable-next-line var-name-mixedcase\n InitializableStorage storage $ = _getInitializableStorage();\n\n if ($._initializing) {\n revert InvalidInitialization();\n }\n if ($._initialized != type(uint64).max) {\n $._initialized = type(uint64).max;\n emit Initialized(type(uint64).max);\n }\n }\n\n /**\n * @dev Returns the highest version that has been initialized. See {reinitializer}.\n */\n function _getInitializedVersion() internal view returns (uint64) {\n return _getInitializableStorage()._initialized;\n }\n\n /**\n * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\n */\n function _isInitializing() internal view returns (bool) {\n return _getInitializableStorage()._initializing;\n }\n\n /**\n * @dev Returns a pointer to the storage namespace.\n */\n // solhint-disable-next-line var-name-mixedcase\n function _getInitializableStorage() private pure returns (InitializableStorage storage $) {\n assembly {\n $.slot := INITIALIZABLE_STORAGE\n }\n }\n}\n" + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (proxy/utils/UUPSUpgradeable.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC1822Proxiable} from \"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\";\nimport {ERC1967Utils} from \"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\";\nimport {Initializable} from \"./Initializable.sol\";\n\n/**\n * @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\n * {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\n *\n * A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\n * reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\n * `UUPSUpgradeable` with a custom implementation of upgrades.\n *\n * The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\n */\nabstract contract UUPSUpgradeable is Initializable, IERC1822Proxiable {\n /// @custom:oz-upgrades-unsafe-allow state-variable-immutable\n address private immutable __self = address(this);\n\n /**\n * @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\n * and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\n * while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\n * If the getter returns `\"5.0.0\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\n * be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\n * during an upgrade.\n */\n string public constant UPGRADE_INTERFACE_VERSION = \"5.0.0\";\n\n /**\n * @dev The call is from an unauthorized context.\n */\n error UUPSUnauthorizedCallContext();\n\n /**\n * @dev The storage `slot` is unsupported as a UUID.\n */\n error UUPSUnsupportedProxiableUUID(bytes32 slot);\n\n /**\n * @dev Check that the execution is being performed through a delegatecall call and that the execution context is\n * a proxy contract with an implementation (as defined in ERC-1967) pointing to self. This should only be the case\n * for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\n * function through ERC-1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\n * fail.\n */\n modifier onlyProxy() {\n _checkProxy();\n _;\n }\n\n /**\n * @dev Check that the execution is not being performed through a delegate call. This allows a function to be\n * callable on the implementing contract but not through proxies.\n */\n modifier notDelegated() {\n _checkNotDelegated();\n _;\n }\n\n function __UUPSUpgradeable_init() internal onlyInitializing {\n }\n\n function __UUPSUpgradeable_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the\n * implementation. It is used to validate the implementation's compatibility when performing an upgrade.\n *\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n * function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\n */\n function proxiableUUID() external view virtual notDelegated returns (bytes32) {\n return ERC1967Utils.IMPLEMENTATION_SLOT;\n }\n\n /**\n * @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\n * encoded in `data`.\n *\n * Calls {_authorizeUpgrade}.\n *\n * Emits an {Upgraded} event.\n *\n * @custom:oz-upgrades-unsafe-allow-reachable delegatecall\n */\n function upgradeToAndCall(address newImplementation, bytes memory data) public payable virtual onlyProxy {\n _authorizeUpgrade(newImplementation);\n _upgradeToAndCallUUPS(newImplementation, data);\n }\n\n /**\n * @dev Reverts if the execution is not performed via delegatecall or the execution\n * context is not of a proxy with an ERC-1967 compliant implementation pointing to self.\n * See {_onlyProxy}.\n */\n function _checkProxy() internal view virtual {\n if (\n address(this) == __self || // Must be called through delegatecall\n ERC1967Utils.getImplementation() != __self // Must be called through an active proxy\n ) {\n revert UUPSUnauthorizedCallContext();\n }\n }\n\n /**\n * @dev Reverts if the execution is performed via delegatecall.\n * See {notDelegated}.\n */\n function _checkNotDelegated() internal view virtual {\n if (address(this) != __self) {\n // Must not be called through delegatecall\n revert UUPSUnauthorizedCallContext();\n }\n }\n\n /**\n * @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\n * {upgradeToAndCall}.\n *\n * Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\n *\n * ```solidity\n * function _authorizeUpgrade(address) internal onlyOwner {}\n * ```\n */\n function _authorizeUpgrade(address newImplementation) internal virtual;\n\n /**\n * @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\n *\n * As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\n * is expected to be the implementation slot in ERC-1967.\n *\n * Emits an {IERC1967-Upgraded} event.\n */\n function _upgradeToAndCallUUPS(address newImplementation, bytes memory data) private {\n try IERC1822Proxiable(newImplementation).proxiableUUID() returns (bytes32 slot) {\n if (slot != ERC1967Utils.IMPLEMENTATION_SLOT) {\n revert UUPSUnsupportedProxiableUUID(slot);\n }\n ERC1967Utils.upgradeToAndCall(newImplementation, data);\n } catch {\n // The implementation is not UUPS\n revert ERC1967Utils.ERC1967InvalidImplementation(newImplementation);\n }\n }\n}\n" + }, + "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/ERC721.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC721} from \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\nimport {IERC721Metadata} from \"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\";\nimport {ERC721Utils} from \"@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol\";\nimport {ContextUpgradeable} from \"../../utils/ContextUpgradeable.sol\";\nimport {Strings} from \"@openzeppelin/contracts/utils/Strings.sol\";\nimport {IERC165} from \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\nimport {ERC165Upgradeable} from \"../../utils/introspection/ERC165Upgradeable.sol\";\nimport {IERC721Errors} from \"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\";\nimport {Initializable} from \"../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC-721] Non-Fungible Token Standard, including\n * the Metadata extension, but not including the Enumerable extension, which is available separately as\n * {ERC721Enumerable}.\n */\nabstract contract ERC721Upgradeable is Initializable, ContextUpgradeable, ERC165Upgradeable, IERC721, IERC721Metadata, IERC721Errors {\n using Strings for uint256;\n\n /// @custom:storage-location erc7201:openzeppelin.storage.ERC721\n struct ERC721Storage {\n // Token name\n string _name;\n\n // Token symbol\n string _symbol;\n\n mapping(uint256 tokenId => address) _owners;\n\n mapping(address owner => uint256) _balances;\n\n mapping(uint256 tokenId => address) _tokenApprovals;\n\n mapping(address owner => mapping(address operator => bool)) _operatorApprovals;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.ERC721\")) - 1)) & ~bytes32(uint256(0xff))\n bytes32 private constant ERC721StorageLocation = 0x80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300;\n\n function _getERC721Storage() private pure returns (ERC721Storage storage $) {\n assembly {\n $.slot := ERC721StorageLocation\n }\n }\n\n /**\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\n */\n function __ERC721_init(string memory name_, string memory symbol_) internal onlyInitializing {\n __ERC721_init_unchained(name_, symbol_);\n }\n\n function __ERC721_init_unchained(string memory name_, string memory symbol_) internal onlyInitializing {\n ERC721Storage storage $ = _getERC721Storage();\n $._name = name_;\n $._symbol = symbol_;\n }\n\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165Upgradeable, IERC165) returns (bool) {\n return\n interfaceId == type(IERC721).interfaceId ||\n interfaceId == type(IERC721Metadata).interfaceId ||\n super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev See {IERC721-balanceOf}.\n */\n function balanceOf(address owner) public view virtual returns (uint256) {\n ERC721Storage storage $ = _getERC721Storage();\n if (owner == address(0)) {\n revert ERC721InvalidOwner(address(0));\n }\n return $._balances[owner];\n }\n\n /**\n * @dev See {IERC721-ownerOf}.\n */\n function ownerOf(uint256 tokenId) public view virtual returns (address) {\n return _requireOwned(tokenId);\n }\n\n /**\n * @dev See {IERC721Metadata-name}.\n */\n function name() public view virtual returns (string memory) {\n ERC721Storage storage $ = _getERC721Storage();\n return $._name;\n }\n\n /**\n * @dev See {IERC721Metadata-symbol}.\n */\n function symbol() public view virtual returns (string memory) {\n ERC721Storage storage $ = _getERC721Storage();\n return $._symbol;\n }\n\n /**\n * @dev See {IERC721Metadata-tokenURI}.\n */\n function tokenURI(uint256 tokenId) public view virtual returns (string memory) {\n _requireOwned(tokenId);\n\n string memory baseURI = _baseURI();\n return bytes(baseURI).length > 0 ? string.concat(baseURI, tokenId.toString()) : \"\";\n }\n\n /**\n * @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n * token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n * by default, can be overridden in child contracts.\n */\n function _baseURI() internal view virtual returns (string memory) {\n return \"\";\n }\n\n /**\n * @dev See {IERC721-approve}.\n */\n function approve(address to, uint256 tokenId) public virtual {\n _approve(to, tokenId, _msgSender());\n }\n\n /**\n * @dev See {IERC721-getApproved}.\n */\n function getApproved(uint256 tokenId) public view virtual returns (address) {\n _requireOwned(tokenId);\n\n return _getApproved(tokenId);\n }\n\n /**\n * @dev See {IERC721-setApprovalForAll}.\n */\n function setApprovalForAll(address operator, bool approved) public virtual {\n _setApprovalForAll(_msgSender(), operator, approved);\n }\n\n /**\n * @dev See {IERC721-isApprovedForAll}.\n */\n function isApprovedForAll(address owner, address operator) public view virtual returns (bool) {\n ERC721Storage storage $ = _getERC721Storage();\n return $._operatorApprovals[owner][operator];\n }\n\n /**\n * @dev See {IERC721-transferFrom}.\n */\n function transferFrom(address from, address to, uint256 tokenId) public virtual {\n if (to == address(0)) {\n revert ERC721InvalidReceiver(address(0));\n }\n // Setting an \"auth\" arguments enables the `_isAuthorized` check which verifies that the token exists\n // (from != 0). Therefore, it is not needed to verify that the return value is not 0 here.\n address previousOwner = _update(to, tokenId, _msgSender());\n if (previousOwner != from) {\n revert ERC721IncorrectOwner(from, tokenId, previousOwner);\n }\n }\n\n /**\n * @dev See {IERC721-safeTransferFrom}.\n */\n function safeTransferFrom(address from, address to, uint256 tokenId) public {\n safeTransferFrom(from, to, tokenId, \"\");\n }\n\n /**\n * @dev See {IERC721-safeTransferFrom}.\n */\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory data) public virtual {\n transferFrom(from, to, tokenId);\n ERC721Utils.checkOnERC721Received(_msgSender(), from, to, tokenId, data);\n }\n\n /**\n * @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n *\n * IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\n * core ERC-721 logic MUST be matched with the use of {_increaseBalance} to keep balances\n * consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\n * `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`.\n */\n function _ownerOf(uint256 tokenId) internal view virtual returns (address) {\n ERC721Storage storage $ = _getERC721Storage();\n return $._owners[tokenId];\n }\n\n /**\n * @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted.\n */\n function _getApproved(uint256 tokenId) internal view virtual returns (address) {\n ERC721Storage storage $ = _getERC721Storage();\n return $._tokenApprovals[tokenId];\n }\n\n /**\n * @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\n * particular (ignoring whether it is owned by `owner`).\n *\n * WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n * assumption.\n */\n function _isAuthorized(address owner, address spender, uint256 tokenId) internal view virtual returns (bool) {\n return\n spender != address(0) &&\n (owner == spender || isApprovedForAll(owner, spender) || _getApproved(tokenId) == spender);\n }\n\n /**\n * @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\n * Reverts if:\n * - `spender` does not have approval from `owner` for `tokenId`.\n * - `spender` does not have approval to manage all of `owner`'s assets.\n *\n * WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n * assumption.\n */\n function _checkAuthorized(address owner, address spender, uint256 tokenId) internal view virtual {\n if (!_isAuthorized(owner, spender, tokenId)) {\n if (owner == address(0)) {\n revert ERC721NonexistentToken(tokenId);\n } else {\n revert ERC721InsufficientApproval(spender, tokenId);\n }\n }\n }\n\n /**\n * @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n *\n * NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\n * a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\n *\n * WARNING: Increasing an account's balance using this function tends to be paired with an override of the\n * {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\n * remain consistent with one another.\n */\n function _increaseBalance(address account, uint128 value) internal virtual {\n ERC721Storage storage $ = _getERC721Storage();\n unchecked {\n $._balances[account] += value;\n }\n }\n\n /**\n * @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\n * (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\n *\n * The `auth` argument is optional. If the value passed is non 0, then this function will check that\n * `auth` is either the owner of the token, or approved to operate on the token (by the owner).\n *\n * Emits a {Transfer} event.\n *\n * NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}.\n */\n function _update(address to, uint256 tokenId, address auth) internal virtual returns (address) {\n ERC721Storage storage $ = _getERC721Storage();\n address from = _ownerOf(tokenId);\n\n // Perform (optional) operator check\n if (auth != address(0)) {\n _checkAuthorized(from, auth, tokenId);\n }\n\n // Execute the update\n if (from != address(0)) {\n // Clear approval. No need to re-authorize or emit the Approval event\n _approve(address(0), tokenId, address(0), false);\n\n unchecked {\n $._balances[from] -= 1;\n }\n }\n\n if (to != address(0)) {\n unchecked {\n $._balances[to] += 1;\n }\n }\n\n $._owners[tokenId] = to;\n\n emit Transfer(from, to, tokenId);\n\n return from;\n }\n\n /**\n * @dev Mints `tokenId` and transfers it to `to`.\n *\n * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n *\n * Requirements:\n *\n * - `tokenId` must not exist.\n * - `to` cannot be the zero address.\n *\n * Emits a {Transfer} event.\n */\n function _mint(address to, uint256 tokenId) internal {\n if (to == address(0)) {\n revert ERC721InvalidReceiver(address(0));\n }\n address previousOwner = _update(to, tokenId, address(0));\n if (previousOwner != address(0)) {\n revert ERC721InvalidSender(address(0));\n }\n }\n\n /**\n * @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\n *\n * Requirements:\n *\n * - `tokenId` must not exist.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function _safeMint(address to, uint256 tokenId) internal {\n _safeMint(to, tokenId, \"\");\n }\n\n /**\n * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\n */\n function _safeMint(address to, uint256 tokenId, bytes memory data) internal virtual {\n _mint(to, tokenId);\n ERC721Utils.checkOnERC721Received(_msgSender(), address(0), to, tokenId, data);\n }\n\n /**\n * @dev Destroys `tokenId`.\n * The approval is cleared when the token is burned.\n * This is an internal function that does not check if the sender is authorized to operate on the token.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n *\n * Emits a {Transfer} event.\n */\n function _burn(uint256 tokenId) internal {\n address previousOwner = _update(address(0), tokenId, address(0));\n if (previousOwner == address(0)) {\n revert ERC721NonexistentToken(tokenId);\n }\n }\n\n /**\n * @dev Transfers `tokenId` from `from` to `to`.\n * As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - `tokenId` token must be owned by `from`.\n *\n * Emits a {Transfer} event.\n */\n function _transfer(address from, address to, uint256 tokenId) internal {\n if (to == address(0)) {\n revert ERC721InvalidReceiver(address(0));\n }\n address previousOwner = _update(to, tokenId, address(0));\n if (previousOwner == address(0)) {\n revert ERC721NonexistentToken(tokenId);\n } else if (previousOwner != from) {\n revert ERC721IncorrectOwner(from, tokenId, previousOwner);\n }\n }\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\n * are aware of the ERC-721 standard to prevent tokens from being forever locked.\n *\n * `data` is additional data, it has no specified format and it is sent in call to `to`.\n *\n * This internal function is like {safeTransferFrom} in the sense that it invokes\n * {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\n * implement alternative mechanisms to perform token transfer, such as signature-based.\n *\n * Requirements:\n *\n * - `tokenId` token must exist and be owned by `from`.\n * - `to` cannot be the zero address.\n * - `from` cannot be the zero address.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function _safeTransfer(address from, address to, uint256 tokenId) internal {\n _safeTransfer(from, to, tokenId, \"\");\n }\n\n /**\n * @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\n */\n function _safeTransfer(address from, address to, uint256 tokenId, bytes memory data) internal virtual {\n _transfer(from, to, tokenId);\n ERC721Utils.checkOnERC721Received(_msgSender(), from, to, tokenId, data);\n }\n\n /**\n * @dev Approve `to` to operate on `tokenId`\n *\n * The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\n * either the owner of the token, or approved to operate on all tokens held by this owner.\n *\n * Emits an {Approval} event.\n *\n * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\n */\n function _approve(address to, uint256 tokenId, address auth) internal {\n _approve(to, tokenId, auth, true);\n }\n\n /**\n * @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\n * emitted in the context of transfers.\n */\n function _approve(address to, uint256 tokenId, address auth, bool emitEvent) internal virtual {\n ERC721Storage storage $ = _getERC721Storage();\n // Avoid reading the owner unless necessary\n if (emitEvent || auth != address(0)) {\n address owner = _requireOwned(tokenId);\n\n // We do not use _isAuthorized because single-token approvals should not be able to call approve\n if (auth != address(0) && owner != auth && !isApprovedForAll(owner, auth)) {\n revert ERC721InvalidApprover(auth);\n }\n\n if (emitEvent) {\n emit Approval(owner, to, tokenId);\n }\n }\n\n $._tokenApprovals[tokenId] = to;\n }\n\n /**\n * @dev Approve `operator` to operate on all of `owner` tokens\n *\n * Requirements:\n * - operator can't be the address zero.\n *\n * Emits an {ApprovalForAll} event.\n */\n function _setApprovalForAll(address owner, address operator, bool approved) internal virtual {\n ERC721Storage storage $ = _getERC721Storage();\n if (operator == address(0)) {\n revert ERC721InvalidOperator(operator);\n }\n $._operatorApprovals[owner][operator] = approved;\n emit ApprovalForAll(owner, operator, approved);\n }\n\n /**\n * @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\n * Returns the owner.\n *\n * Overrides to ownership logic should be done to {_ownerOf}.\n */\n function _requireOwned(uint256 tokenId) internal view returns (address) {\n address owner = _ownerOf(tokenId);\n if (owner == address(0)) {\n revert ERC721NonexistentToken(tokenId);\n }\n return owner;\n }\n}\n" + }, + "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/extensions/ERC721Enumerable.sol)\n\npragma solidity ^0.8.20;\n\nimport {ERC721Upgradeable} from \"../ERC721Upgradeable.sol\";\nimport {IERC721Enumerable} from \"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\";\nimport {IERC165} from \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\nimport {Initializable} from \"../../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev This implements an optional extension of {ERC721} defined in the ERC that adds enumerability\n * of all the token ids in the contract as well as all token ids owned by each account.\n *\n * CAUTION: {ERC721} extensions that implement custom `balanceOf` logic, such as {ERC721Consecutive},\n * interfere with enumerability and should not be used together with {ERC721Enumerable}.\n */\nabstract contract ERC721EnumerableUpgradeable is Initializable, ERC721Upgradeable, IERC721Enumerable {\n /// @custom:storage-location erc7201:openzeppelin.storage.ERC721Enumerable\n struct ERC721EnumerableStorage {\n mapping(address owner => mapping(uint256 index => uint256)) _ownedTokens;\n mapping(uint256 tokenId => uint256) _ownedTokensIndex;\n\n uint256[] _allTokens;\n mapping(uint256 tokenId => uint256) _allTokensIndex;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.ERC721Enumerable\")) - 1)) & ~bytes32(uint256(0xff))\n bytes32 private constant ERC721EnumerableStorageLocation = 0x645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed00;\n\n function _getERC721EnumerableStorage() private pure returns (ERC721EnumerableStorage storage $) {\n assembly {\n $.slot := ERC721EnumerableStorageLocation\n }\n }\n\n /**\n * @dev An `owner`'s token query was out of bounds for `index`.\n *\n * NOTE: The owner being `address(0)` indicates a global out of bounds index.\n */\n error ERC721OutOfBoundsIndex(address owner, uint256 index);\n\n /**\n * @dev Batch mint is not allowed.\n */\n error ERC721EnumerableForbiddenBatchMint();\n\n function __ERC721Enumerable_init() internal onlyInitializing {\n }\n\n function __ERC721Enumerable_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override(IERC165, ERC721Upgradeable) returns (bool) {\n return interfaceId == type(IERC721Enumerable).interfaceId || super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}.\n */\n function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual returns (uint256) {\n ERC721EnumerableStorage storage $ = _getERC721EnumerableStorage();\n if (index >= balanceOf(owner)) {\n revert ERC721OutOfBoundsIndex(owner, index);\n }\n return $._ownedTokens[owner][index];\n }\n\n /**\n * @dev See {IERC721Enumerable-totalSupply}.\n */\n function totalSupply() public view virtual returns (uint256) {\n ERC721EnumerableStorage storage $ = _getERC721EnumerableStorage();\n return $._allTokens.length;\n }\n\n /**\n * @dev See {IERC721Enumerable-tokenByIndex}.\n */\n function tokenByIndex(uint256 index) public view virtual returns (uint256) {\n ERC721EnumerableStorage storage $ = _getERC721EnumerableStorage();\n if (index >= totalSupply()) {\n revert ERC721OutOfBoundsIndex(address(0), index);\n }\n return $._allTokens[index];\n }\n\n /**\n * @dev See {ERC721-_update}.\n */\n function _update(address to, uint256 tokenId, address auth) internal virtual override returns (address) {\n address previousOwner = super._update(to, tokenId, auth);\n\n if (previousOwner == address(0)) {\n _addTokenToAllTokensEnumeration(tokenId);\n } else if (previousOwner != to) {\n _removeTokenFromOwnerEnumeration(previousOwner, tokenId);\n }\n if (to == address(0)) {\n _removeTokenFromAllTokensEnumeration(tokenId);\n } else if (previousOwner != to) {\n _addTokenToOwnerEnumeration(to, tokenId);\n }\n\n return previousOwner;\n }\n\n /**\n * @dev Private function to add a token to this extension's ownership-tracking data structures.\n * @param to address representing the new owner of the given token ID\n * @param tokenId uint256 ID of the token to be added to the tokens list of the given address\n */\n function _addTokenToOwnerEnumeration(address to, uint256 tokenId) private {\n ERC721EnumerableStorage storage $ = _getERC721EnumerableStorage();\n uint256 length = balanceOf(to) - 1;\n $._ownedTokens[to][length] = tokenId;\n $._ownedTokensIndex[tokenId] = length;\n }\n\n /**\n * @dev Private function to add a token to this extension's token tracking data structures.\n * @param tokenId uint256 ID of the token to be added to the tokens list\n */\n function _addTokenToAllTokensEnumeration(uint256 tokenId) private {\n ERC721EnumerableStorage storage $ = _getERC721EnumerableStorage();\n $._allTokensIndex[tokenId] = $._allTokens.length;\n $._allTokens.push(tokenId);\n }\n\n /**\n * @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that\n * while the token is not assigned a new owner, the `_ownedTokensIndex` mapping is _not_ updated: this allows for\n * gas optimizations e.g. when performing a transfer operation (avoiding double writes).\n * This has O(1) time complexity, but alters the order of the _ownedTokens array.\n * @param from address representing the previous owner of the given token ID\n * @param tokenId uint256 ID of the token to be removed from the tokens list of the given address\n */\n function _removeTokenFromOwnerEnumeration(address from, uint256 tokenId) private {\n ERC721EnumerableStorage storage $ = _getERC721EnumerableStorage();\n // To prevent a gap in from's tokens array, we store the last token in the index of the token to delete, and\n // then delete the last slot (swap and pop).\n\n uint256 lastTokenIndex = balanceOf(from);\n uint256 tokenIndex = $._ownedTokensIndex[tokenId];\n\n mapping(uint256 index => uint256) storage _ownedTokensByOwner = $._ownedTokens[from];\n\n // When the token to delete is the last token, the swap operation is unnecessary\n if (tokenIndex != lastTokenIndex) {\n uint256 lastTokenId = _ownedTokensByOwner[lastTokenIndex];\n\n _ownedTokensByOwner[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token\n $._ownedTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index\n }\n\n // This also deletes the contents at the last position of the array\n delete $._ownedTokensIndex[tokenId];\n delete _ownedTokensByOwner[lastTokenIndex];\n }\n\n /**\n * @dev Private function to remove a token from this extension's token tracking data structures.\n * This has O(1) time complexity, but alters the order of the _allTokens array.\n * @param tokenId uint256 ID of the token to be removed from the tokens list\n */\n function _removeTokenFromAllTokensEnumeration(uint256 tokenId) private {\n ERC721EnumerableStorage storage $ = _getERC721EnumerableStorage();\n // To prevent a gap in the tokens array, we store the last token in the index of the token to delete, and\n // then delete the last slot (swap and pop).\n\n uint256 lastTokenIndex = $._allTokens.length - 1;\n uint256 tokenIndex = $._allTokensIndex[tokenId];\n\n // When the token to delete is the last token, the swap operation is unnecessary. However, since this occurs so\n // rarely (when the last minted token is burnt) that we still do the swap here to avoid the gas cost of adding\n // an 'if' statement (like in _removeTokenFromOwnerEnumeration)\n uint256 lastTokenId = $._allTokens[lastTokenIndex];\n\n $._allTokens[tokenIndex] = lastTokenId; // Move the last token to the slot of the to-delete token\n $._allTokensIndex[lastTokenId] = tokenIndex; // Update the moved token's index\n\n // This also deletes the contents at the last position of the array\n delete $._allTokensIndex[tokenId];\n $._allTokens.pop();\n }\n\n /**\n * See {ERC721-_increaseBalance}. We need that to account tokens that were minted in batch\n */\n function _increaseBalance(address account, uint128 amount) internal virtual override {\n if (amount > 0) {\n revert ERC721EnumerableForbiddenBatchMint();\n }\n super._increaseBalance(account, amount);\n }\n}\n" + }, + "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/extensions/ERC721URIStorage.sol)\n\npragma solidity ^0.8.20;\n\nimport {ERC721Upgradeable} from \"../ERC721Upgradeable.sol\";\nimport {Strings} from \"@openzeppelin/contracts/utils/Strings.sol\";\nimport {IERC4906} from \"@openzeppelin/contracts/interfaces/IERC4906.sol\";\nimport {IERC165} from \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\nimport {Initializable} from \"../../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev ERC-721 token with storage based token URI management.\n */\nabstract contract ERC721URIStorageUpgradeable is Initializable, IERC4906, ERC721Upgradeable {\n using Strings for uint256;\n\n // Interface ID as defined in ERC-4906. This does not correspond to a traditional interface ID as ERC-4906 only\n // defines events and does not include any external function.\n bytes4 private constant ERC4906_INTERFACE_ID = bytes4(0x49064906);\n\n /// @custom:storage-location erc7201:openzeppelin.storage.ERC721URIStorage\n struct ERC721URIStorageStorage {\n // Optional mapping for token URIs\n mapping(uint256 tokenId => string) _tokenURIs;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.ERC721URIStorage\")) - 1)) & ~bytes32(uint256(0xff))\n bytes32 private constant ERC721URIStorageStorageLocation = 0x0542a41881ee128a365a727b282c86fa859579490b9bb45aab8503648c8e7900;\n\n function _getERC721URIStorageStorage() private pure returns (ERC721URIStorageStorage storage $) {\n assembly {\n $.slot := ERC721URIStorageStorageLocation\n }\n }\n\n function __ERC721URIStorage_init() internal onlyInitializing {\n }\n\n function __ERC721URIStorage_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev See {IERC165-supportsInterface}\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override(ERC721Upgradeable, IERC165) returns (bool) {\n return interfaceId == ERC4906_INTERFACE_ID || super.supportsInterface(interfaceId);\n }\n\n /**\n * @dev See {IERC721Metadata-tokenURI}.\n */\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\n ERC721URIStorageStorage storage $ = _getERC721URIStorageStorage();\n _requireOwned(tokenId);\n\n string memory _tokenURI = $._tokenURIs[tokenId];\n string memory base = _baseURI();\n\n // If there is no base URI, return the token URI.\n if (bytes(base).length == 0) {\n return _tokenURI;\n }\n // If both are set, concatenate the baseURI and tokenURI (via string.concat).\n if (bytes(_tokenURI).length > 0) {\n return string.concat(base, _tokenURI);\n }\n\n return super.tokenURI(tokenId);\n }\n\n /**\n * @dev Sets `_tokenURI` as the tokenURI of `tokenId`.\n *\n * Emits {MetadataUpdate}.\n */\n function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal virtual {\n ERC721URIStorageStorage storage $ = _getERC721URIStorageStorage();\n $._tokenURIs[tokenId] = _tokenURI;\n emit MetadataUpdate(tokenId);\n }\n}\n" + }, + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\n\npragma solidity ^0.8.20;\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract ContextUpgradeable is Initializable {\n function __Context_init() internal onlyInitializing {\n }\n\n function __Context_init_unchained() internal onlyInitializing {\n }\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n function _contextSuffixLength() internal view virtual returns (uint256) {\n return 0;\n }\n}\n" + }, + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/ERC165.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC165} from \"@openzeppelin/contracts/utils/introspection/IERC165.sol\";\nimport {Initializable} from \"../../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check\n * for the additional interface id that will be supported. For example:\n *\n * ```solidity\n * function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n * return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n * }\n * ```\n */\nabstract contract ERC165Upgradeable is Initializable, IERC165 {\n function __ERC165_init() internal onlyInitializing {\n }\n\n function __ERC165_init_unchained() internal onlyInitializing {\n }\n /**\n * @dev See {IERC165-supportsInterface}.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual returns (bool) {\n return interfaceId == type(IERC165).interfaceId;\n }\n}\n" + }, + "@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Pausable.sol)\n\npragma solidity ^0.8.20;\n\nimport {ContextUpgradeable} from \"../utils/ContextUpgradeable.sol\";\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module which allows children to implement an emergency stop\n * mechanism that can be triggered by an authorized account.\n *\n * This module is used through inheritance. It will make available the\n * modifiers `whenNotPaused` and `whenPaused`, which can be applied to\n * the functions of your contract. Note that they will not be pausable by\n * simply including this module, only once the modifiers are put in place.\n */\nabstract contract PausableUpgradeable is Initializable, ContextUpgradeable {\n /// @custom:storage-location erc7201:openzeppelin.storage.Pausable\n struct PausableStorage {\n bool _paused;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.Pausable\")) - 1)) & ~bytes32(uint256(0xff))\n bytes32 private constant PausableStorageLocation = 0xcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300;\n\n function _getPausableStorage() private pure returns (PausableStorage storage $) {\n assembly {\n $.slot := PausableStorageLocation\n }\n }\n\n /**\n * @dev Emitted when the pause is triggered by `account`.\n */\n event Paused(address account);\n\n /**\n * @dev Emitted when the pause is lifted by `account`.\n */\n event Unpaused(address account);\n\n /**\n * @dev The operation failed because the contract is paused.\n */\n error EnforcedPause();\n\n /**\n * @dev The operation failed because the contract is not paused.\n */\n error ExpectedPause();\n\n /**\n * @dev Initializes the contract in unpaused state.\n */\n function __Pausable_init() internal onlyInitializing {\n __Pausable_init_unchained();\n }\n\n function __Pausable_init_unchained() internal onlyInitializing {\n PausableStorage storage $ = _getPausableStorage();\n $._paused = false;\n }\n\n /**\n * @dev Modifier to make a function callable only when the contract is not paused.\n *\n * Requirements:\n *\n * - The contract must not be paused.\n */\n modifier whenNotPaused() {\n _requireNotPaused();\n _;\n }\n\n /**\n * @dev Modifier to make a function callable only when the contract is paused.\n *\n * Requirements:\n *\n * - The contract must be paused.\n */\n modifier whenPaused() {\n _requirePaused();\n _;\n }\n\n /**\n * @dev Returns true if the contract is paused, and false otherwise.\n */\n function paused() public view virtual returns (bool) {\n PausableStorage storage $ = _getPausableStorage();\n return $._paused;\n }\n\n /**\n * @dev Throws if the contract is paused.\n */\n function _requireNotPaused() internal view virtual {\n if (paused()) {\n revert EnforcedPause();\n }\n }\n\n /**\n * @dev Throws if the contract is not paused.\n */\n function _requirePaused() internal view virtual {\n if (!paused()) {\n revert ExpectedPause();\n }\n }\n\n /**\n * @dev Triggers stopped state.\n *\n * Requirements:\n *\n * - The contract must not be paused.\n */\n function _pause() internal virtual whenNotPaused {\n PausableStorage storage $ = _getPausableStorage();\n $._paused = true;\n emit Paused(_msgSender());\n }\n\n /**\n * @dev Returns to normal state.\n *\n * Requirements:\n *\n * - The contract must be paused.\n */\n function _unpause() internal virtual whenPaused {\n PausableStorage storage $ = _getPausableStorage();\n $._paused = false;\n emit Unpaused(_msgSender());\n }\n}\n" + }, + "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/ReentrancyGuard.sol)\n\npragma solidity ^0.8.20;\nimport {Initializable} from \"../proxy/utils/Initializable.sol\";\n\n/**\n * @dev Contract module that helps prevent reentrant calls to a function.\n *\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n * available, which can be applied to functions to make sure there are no nested\n * (reentrant) calls to them.\n *\n * Note that because there is a single `nonReentrant` guard, functions marked as\n * `nonReentrant` may not call one another. This can be worked around by making\n * those functions `private`, and then adding `external` `nonReentrant` entry\n * points to them.\n *\n * TIP: If EIP-1153 (transient storage) is available on the chain you're deploying at,\n * consider using {ReentrancyGuardTransient} instead.\n *\n * TIP: If you would like to learn more about reentrancy and alternative ways\n * to protect against it, check out our blog post\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\n */\nabstract contract ReentrancyGuardUpgradeable is Initializable {\n // Booleans are more expensive than uint256 or any type that takes up a full\n // word because each write operation emits an extra SLOAD to first read the\n // slot's contents, replace the bits taken up by the boolean, and then write\n // back. This is the compiler's defense against contract upgrades and\n // pointer aliasing, and it cannot be disabled.\n\n // The values being non-zero value makes deployment a bit more expensive,\n // but in exchange the refund on every call to nonReentrant will be lower in\n // amount. Since refunds are capped to a percentage of the total\n // transaction's gas, it is best to keep them low in cases like this one, to\n // increase the likelihood of the full refund coming into effect.\n uint256 private constant NOT_ENTERED = 1;\n uint256 private constant ENTERED = 2;\n\n /// @custom:storage-location erc7201:openzeppelin.storage.ReentrancyGuard\n struct ReentrancyGuardStorage {\n uint256 _status;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"openzeppelin.storage.ReentrancyGuard\")) - 1)) & ~bytes32(uint256(0xff))\n bytes32 private constant ReentrancyGuardStorageLocation = 0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00;\n\n function _getReentrancyGuardStorage() private pure returns (ReentrancyGuardStorage storage $) {\n assembly {\n $.slot := ReentrancyGuardStorageLocation\n }\n }\n\n /**\n * @dev Unauthorized reentrant call.\n */\n error ReentrancyGuardReentrantCall();\n\n function __ReentrancyGuard_init() internal onlyInitializing {\n __ReentrancyGuard_init_unchained();\n }\n\n function __ReentrancyGuard_init_unchained() internal onlyInitializing {\n ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\n $._status = NOT_ENTERED;\n }\n\n /**\n * @dev Prevents a contract from calling itself, directly or indirectly.\n * Calling a `nonReentrant` function from another `nonReentrant`\n * function is not supported. It is possible to prevent this from happening\n * by making the `nonReentrant` function external, and making it call a\n * `private` function that does the actual work.\n */\n modifier nonReentrant() {\n _nonReentrantBefore();\n _;\n _nonReentrantAfter();\n }\n\n function _nonReentrantBefore() private {\n ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\n // On the first call to nonReentrant, _status will be NOT_ENTERED\n if ($._status == ENTERED) {\n revert ReentrancyGuardReentrantCall();\n }\n\n // Any calls to nonReentrant after this point will fail\n $._status = ENTERED;\n }\n\n function _nonReentrantAfter() private {\n ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\n // By storing the original value once again, a refund is triggered (see\n // https://eips.ethereum.org/EIPS/eip-2200)\n $._status = NOT_ENTERED;\n }\n\n /**\n * @dev Returns true if the reentrancy guard is currently set to \"entered\", which indicates there is a\n * `nonReentrant` function in the call stack.\n */\n function _reentrancyGuardEntered() internal view returns (bool) {\n ReentrancyGuardStorage storage $ = _getReentrancyGuardStorage();\n return $._status == ENTERED;\n }\n}\n" + }, + "@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (access/extensions/IAccessControlEnumerable.sol)\n\npragma solidity ^0.8.20;\n\nimport {IAccessControl} from \"../IAccessControl.sol\";\n\n/**\n * @dev External interface of AccessControlEnumerable declared to support ERC-165 detection.\n */\ninterface IAccessControlEnumerable is IAccessControl {\n /**\n * @dev Returns one of the accounts that have `role`. `index` must be a\n * value between 0 and {getRoleMemberCount}, non-inclusive.\n *\n * Role bearers are not sorted in any particular way, and their ordering may\n * change at any point.\n *\n * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\n * you perform all queries on the same block. See the following\n * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\n * for more information.\n */\n function getRoleMember(bytes32 role, uint256 index) external view returns (address);\n\n /**\n * @dev Returns the number of accounts that have `role`. Can be used\n * together with {getRoleMember} to enumerate all bearers of a role.\n */\n function getRoleMemberCount(bytes32 role) external view returns (uint256);\n}\n" + }, + "@openzeppelin/contracts/access/IAccessControl.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (access/IAccessControl.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev External interface of AccessControl declared to support ERC-165 detection.\n */\ninterface IAccessControl {\n /**\n * @dev The `account` is missing a role.\n */\n error AccessControlUnauthorizedAccount(address account, bytes32 neededRole);\n\n /**\n * @dev The caller of a function is not the expected one.\n *\n * NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\n */\n error AccessControlBadConfirmation();\n\n /**\n * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n *\n * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n * {RoleAdminChanged} not being emitted signaling this.\n */\n event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);\n\n /**\n * @dev Emitted when `account` is granted `role`.\n *\n * `sender` is the account that originated the contract call. This account bears the admin role (for the granted role).\n * Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\n */\n event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Emitted when `account` is revoked `role`.\n *\n * `sender` is the account that originated the contract call:\n * - if using `revokeRole`, it is the admin role bearer\n * - if using `renounceRole`, it is the role bearer (i.e. `account`)\n */\n event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);\n\n /**\n * @dev Returns `true` if `account` has been granted `role`.\n */\n function hasRole(bytes32 role, address account) external view returns (bool);\n\n /**\n * @dev Returns the admin role that controls `role`. See {grantRole} and\n * {revokeRole}.\n *\n * To change a role's admin, use {AccessControl-_setRoleAdmin}.\n */\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\n\n /**\n * @dev Grants `role` to `account`.\n *\n * If `account` had not been already granted `role`, emits a {RoleGranted}\n * event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function grantRole(bytes32 role, address account) external;\n\n /**\n * @dev Revokes `role` from `account`.\n *\n * If `account` had been granted `role`, emits a {RoleRevoked} event.\n *\n * Requirements:\n *\n * - the caller must have ``role``'s admin role.\n */\n function revokeRole(bytes32 role, address account) external;\n\n /**\n * @dev Revokes `role` from the calling account.\n *\n * Roles are often managed via {grantRole} and {revokeRole}: this function's\n * purpose is to provide a mechanism for accounts to lose their privileges\n * if they are compromised (such as when a trusted device is misplaced).\n *\n * If the calling account had been granted `role`, emits a {RoleRevoked}\n * event.\n *\n * Requirements:\n *\n * - the caller must be `callerConfirmation`.\n */\n function renounceRole(bytes32 role, address callerConfirmation) external;\n}\n" + }, + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC1822.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev ERC-1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n * proxy whose upgrades are fully controlled by the current implementation.\n */\ninterface IERC1822Proxiable {\n /**\n * @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n * address.\n *\n * IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n * bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n * function revert if invoked through a proxy.\n */\n function proxiableUUID() external view returns (bytes32);\n}\n" + }, + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC6093.sol)\npragma solidity ^0.8.20;\n\n/**\n * @dev Standard ERC-20 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\n */\ninterface IERC20Errors {\n /**\n * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param balance Current balance for the interacting account.\n * @param needed Minimum amount required to perform a transfer.\n */\n error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC20InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC20InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n * @param spender Address that may be allowed to operate on tokens without being their owner.\n * @param allowance Amount of tokens a `spender` is allowed to operate with.\n * @param needed Minimum amount required to perform a transfer.\n */\n error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC20InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n * @param spender Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC20InvalidSpender(address spender);\n}\n\n/**\n * @dev Standard ERC-721 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\n */\ninterface IERC721Errors {\n /**\n * @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\n * Used in balance queries.\n * @param owner Address of the current owner of a token.\n */\n error ERC721InvalidOwner(address owner);\n\n /**\n * @dev Indicates a `tokenId` whose `owner` is the zero address.\n * @param tokenId Identifier number of a token.\n */\n error ERC721NonexistentToken(uint256 tokenId);\n\n /**\n * @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param tokenId Identifier number of a token.\n * @param owner Address of the current owner of a token.\n */\n error ERC721IncorrectOwner(address sender, uint256 tokenId, address owner);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC721InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC721InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n * @param tokenId Identifier number of a token.\n */\n error ERC721InsufficientApproval(address operator, uint256 tokenId);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC721InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC721InvalidOperator(address operator);\n}\n\n/**\n * @dev Standard ERC-1155 Errors\n * Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\n */\ninterface IERC1155Errors {\n /**\n * @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n * @param balance Current balance for the interacting account.\n * @param needed Minimum amount required to perform a transfer.\n * @param tokenId Identifier number of a token.\n */\n error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId);\n\n /**\n * @dev Indicates a failure with the token `sender`. Used in transfers.\n * @param sender Address whose tokens are being transferred.\n */\n error ERC1155InvalidSender(address sender);\n\n /**\n * @dev Indicates a failure with the token `receiver`. Used in transfers.\n * @param receiver Address to which tokens are being transferred.\n */\n error ERC1155InvalidReceiver(address receiver);\n\n /**\n * @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n * @param owner Address of the current owner of a token.\n */\n error ERC1155MissingApprovalForAll(address operator, address owner);\n\n /**\n * @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n * @param approver Address initiating an approval operation.\n */\n error ERC1155InvalidApprover(address approver);\n\n /**\n * @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n * @param operator Address that may be allowed to operate on tokens without being their owner.\n */\n error ERC1155InvalidOperator(address operator);\n\n /**\n * @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n * Used in batch transfers.\n * @param idsLength Length of the array of token identifiers\n * @param valuesLength Length of the array of token amounts\n */\n error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength);\n}\n" + }, + "@openzeppelin/contracts/interfaces/IERC1363.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/IERC1363.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"./IERC20.sol\";\nimport {IERC165} from \"./IERC165.sol\";\n\n/**\n * @title IERC1363\n * @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].\n *\n * Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract\n * after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.\n */\ninterface IERC1363 is IERC20, IERC165 {\n /*\n * Note: the ERC-165 identifier for this interface is 0xb0202a11.\n * 0xb0202a11 ===\n * bytes4(keccak256('transferAndCall(address,uint256)')) ^\n * bytes4(keccak256('transferAndCall(address,uint256,bytes)')) ^\n * bytes4(keccak256('transferFromAndCall(address,address,uint256)')) ^\n * bytes4(keccak256('transferFromAndCall(address,address,uint256,bytes)')) ^\n * bytes4(keccak256('approveAndCall(address,uint256)')) ^\n * bytes4(keccak256('approveAndCall(address,uint256,bytes)'))\n */\n\n /**\n * @dev Moves a `value` amount of tokens from the caller's account to `to`\n * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n * @param to The address which you want to transfer to.\n * @param value The amount of tokens to be transferred.\n * @return A boolean value indicating whether the operation succeeded unless throwing.\n */\n function transferAndCall(address to, uint256 value) external returns (bool);\n\n /**\n * @dev Moves a `value` amount of tokens from the caller's account to `to`\n * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n * @param to The address which you want to transfer to.\n * @param value The amount of tokens to be transferred.\n * @param data Additional data with no specified format, sent in call to `to`.\n * @return A boolean value indicating whether the operation succeeded unless throwing.\n */\n function transferAndCall(address to, uint256 value, bytes calldata data) external returns (bool);\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\n * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n * @param from The address which you want to send tokens from.\n * @param to The address which you want to transfer to.\n * @param value The amount of tokens to be transferred.\n * @return A boolean value indicating whether the operation succeeded unless throwing.\n */\n function transferFromAndCall(address from, address to, uint256 value) external returns (bool);\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\n * and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n * @param from The address which you want to send tokens from.\n * @param to The address which you want to transfer to.\n * @param value The amount of tokens to be transferred.\n * @param data Additional data with no specified format, sent in call to `to`.\n * @return A boolean value indicating whether the operation succeeded unless throwing.\n */\n function transferFromAndCall(address from, address to, uint256 value, bytes calldata data) external returns (bool);\n\n /**\n * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\n * @param spender The address which will spend the funds.\n * @param value The amount of tokens to be spent.\n * @return A boolean value indicating whether the operation succeeded unless throwing.\n */\n function approveAndCall(address spender, uint256 value) external returns (bool);\n\n /**\n * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n * caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\n * @param spender The address which will spend the funds.\n * @param value The amount of tokens to be spent.\n * @param data Additional data with no specified format, sent in call to `spender`.\n * @return A boolean value indicating whether the operation succeeded unless throwing.\n */\n function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool);\n}\n" + }, + "@openzeppelin/contracts/interfaces/IERC165.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC165.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC165} from \"../utils/introspection/IERC165.sol\";\n" + }, + "@openzeppelin/contracts/interfaces/IERC1967.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC1967.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\n */\ninterface IERC1967 {\n /**\n * @dev Emitted when the implementation is upgraded.\n */\n event Upgraded(address indexed implementation);\n\n /**\n * @dev Emitted when the admin account has changed.\n */\n event AdminChanged(address previousAdmin, address newAdmin);\n\n /**\n * @dev Emitted when the beacon is changed.\n */\n event BeaconUpgraded(address indexed beacon);\n}\n" + }, + "@openzeppelin/contracts/interfaces/IERC20.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC20.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"../token/ERC20/IERC20.sol\";\n" + }, + "@openzeppelin/contracts/interfaces/IERC4906.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/IERC4906.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC165} from \"./IERC165.sol\";\nimport {IERC721} from \"./IERC721.sol\";\n\n/// @title ERC-721 Metadata Update Extension\ninterface IERC4906 is IERC165, IERC721 {\n /// @dev This event emits when the metadata of a token is changed.\n /// So that the third-party platforms such as NFT market could\n /// timely update the images and related attributes of the NFT.\n event MetadataUpdate(uint256 _tokenId);\n\n /// @dev This event emits when the metadata of a range of tokens is changed.\n /// So that the third-party platforms such as NFT market could\n /// timely update the images and related attributes of the NFTs.\n event BatchMetadataUpdate(uint256 _fromTokenId, uint256 _toTokenId);\n}\n" + }, + "@openzeppelin/contracts/interfaces/IERC721.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC721.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC721} from \"../token/ERC721/IERC721.sol\";\n" + }, + "@openzeppelin/contracts/proxy/beacon/IBeacon.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/beacon/IBeacon.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev This is the interface that {BeaconProxy} expects of its beacon.\n */\ninterface IBeacon {\n /**\n * @dev Must return an address that can be used as a delegate call target.\n *\n * {UpgradeableBeacon} will check that this address is a contract.\n */\n function implementation() external view returns (address);\n}\n" + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (proxy/ERC1967/ERC1967Proxy.sol)\n\npragma solidity ^0.8.20;\n\nimport {Proxy} from \"../Proxy.sol\";\nimport {ERC1967Utils} from \"./ERC1967Utils.sol\";\n\n/**\n * @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n * implementation address that can be changed. This address is stored in storage in the location specified by\n * https://eips.ethereum.org/EIPS/eip-1967[ERC-1967], so that it doesn't conflict with the storage layout of the\n * implementation behind the proxy.\n */\ncontract ERC1967Proxy is Proxy {\n /**\n * @dev Initializes the upgradeable proxy with an initial implementation specified by `implementation`.\n *\n * If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an\n * encoded function call, and allows initializing the storage of the proxy like a Solidity constructor.\n *\n * Requirements:\n *\n * - If `data` is empty, `msg.value` must be zero.\n */\n constructor(address implementation, bytes memory _data) payable {\n ERC1967Utils.upgradeToAndCall(implementation, _data);\n }\n\n /**\n * @dev Returns the current implementation address.\n *\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by ERC-1967) using\n * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n * `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`\n */\n function _implementation() internal view virtual override returns (address) {\n return ERC1967Utils.getImplementation();\n }\n}\n" + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (proxy/ERC1967/ERC1967Utils.sol)\n\npragma solidity ^0.8.21;\n\nimport {IBeacon} from \"../beacon/IBeacon.sol\";\nimport {IERC1967} from \"../../interfaces/IERC1967.sol\";\nimport {Address} from \"../../utils/Address.sol\";\nimport {StorageSlot} from \"../../utils/StorageSlot.sol\";\n\n/**\n * @dev This library provides getters and event emitting update functions for\n * https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] slots.\n */\nlibrary ERC1967Utils {\n /**\n * @dev Storage slot with the address of the current implementation.\n * This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1.\n */\n // solhint-disable-next-line private-vars-leading-underscore\n bytes32 internal constant IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n\n /**\n * @dev The `implementation` of the proxy is invalid.\n */\n error ERC1967InvalidImplementation(address implementation);\n\n /**\n * @dev The `admin` of the proxy is invalid.\n */\n error ERC1967InvalidAdmin(address admin);\n\n /**\n * @dev The `beacon` of the proxy is invalid.\n */\n error ERC1967InvalidBeacon(address beacon);\n\n /**\n * @dev An upgrade function sees `msg.value > 0` that may be lost.\n */\n error ERC1967NonPayable();\n\n /**\n * @dev Returns the current implementation address.\n */\n function getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the ERC-1967 implementation slot.\n */\n function _setImplementation(address newImplementation) private {\n if (newImplementation.code.length == 0) {\n revert ERC1967InvalidImplementation(newImplementation);\n }\n StorageSlot.getAddressSlot(IMPLEMENTATION_SLOT).value = newImplementation;\n }\n\n /**\n * @dev Performs implementation upgrade with additional setup call if data is nonempty.\n * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n * to avoid stuck value in the contract.\n *\n * Emits an {IERC1967-Upgraded} event.\n */\n function upgradeToAndCall(address newImplementation, bytes memory data) internal {\n _setImplementation(newImplementation);\n emit IERC1967.Upgraded(newImplementation);\n\n if (data.length > 0) {\n Address.functionDelegateCall(newImplementation, data);\n } else {\n _checkNonPayable();\n }\n }\n\n /**\n * @dev Storage slot with the admin of the contract.\n * This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1.\n */\n // solhint-disable-next-line private-vars-leading-underscore\n bytes32 internal constant ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\n\n /**\n * @dev Returns the current admin.\n *\n * TIP: To get this value clients can read directly from the storage slot shown below (specified by ERC-1967) using\n * the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n * `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`\n */\n function getAdmin() internal view returns (address) {\n return StorageSlot.getAddressSlot(ADMIN_SLOT).value;\n }\n\n /**\n * @dev Stores a new address in the ERC-1967 admin slot.\n */\n function _setAdmin(address newAdmin) private {\n if (newAdmin == address(0)) {\n revert ERC1967InvalidAdmin(address(0));\n }\n StorageSlot.getAddressSlot(ADMIN_SLOT).value = newAdmin;\n }\n\n /**\n * @dev Changes the admin of the proxy.\n *\n * Emits an {IERC1967-AdminChanged} event.\n */\n function changeAdmin(address newAdmin) internal {\n emit IERC1967.AdminChanged(getAdmin(), newAdmin);\n _setAdmin(newAdmin);\n }\n\n /**\n * @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n * This is the keccak-256 hash of \"eip1967.proxy.beacon\" subtracted by 1.\n */\n // solhint-disable-next-line private-vars-leading-underscore\n bytes32 internal constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\n\n /**\n * @dev Returns the current beacon.\n */\n function getBeacon() internal view returns (address) {\n return StorageSlot.getAddressSlot(BEACON_SLOT).value;\n }\n\n /**\n * @dev Stores a new beacon in the ERC-1967 beacon slot.\n */\n function _setBeacon(address newBeacon) private {\n if (newBeacon.code.length == 0) {\n revert ERC1967InvalidBeacon(newBeacon);\n }\n\n StorageSlot.getAddressSlot(BEACON_SLOT).value = newBeacon;\n\n address beaconImplementation = IBeacon(newBeacon).implementation();\n if (beaconImplementation.code.length == 0) {\n revert ERC1967InvalidImplementation(beaconImplementation);\n }\n }\n\n /**\n * @dev Change the beacon and trigger a setup call if data is nonempty.\n * This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n * to avoid stuck value in the contract.\n *\n * Emits an {IERC1967-BeaconUpgraded} event.\n *\n * CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\n * it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\n * efficiency.\n */\n function upgradeBeaconToAndCall(address newBeacon, bytes memory data) internal {\n _setBeacon(newBeacon);\n emit IERC1967.BeaconUpgraded(newBeacon);\n\n if (data.length > 0) {\n Address.functionDelegateCall(IBeacon(newBeacon).implementation(), data);\n } else {\n _checkNonPayable();\n }\n }\n\n /**\n * @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\n * if an upgrade doesn't perform an initialization call.\n */\n function _checkNonPayable() private {\n if (msg.value > 0) {\n revert ERC1967NonPayable();\n }\n }\n}\n" + }, + "@openzeppelin/contracts/proxy/Proxy.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (proxy/Proxy.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n * instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n * be specified by overriding the virtual {_implementation} function.\n *\n * Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n * different contract through the {_delegate} function.\n *\n * The success and return data of the delegated call will be returned back to the caller of the proxy.\n */\nabstract contract Proxy {\n /**\n * @dev Delegates the current call to `implementation`.\n *\n * This function does not return to its internal call site, it will return directly to the external caller.\n */\n function _delegate(address implementation) internal virtual {\n assembly {\n // Copy msg.data. We take full control of memory in this inline assembly\n // block because it will not return to Solidity code. We overwrite the\n // Solidity scratch pad at memory position 0.\n calldatacopy(0, 0, calldatasize())\n\n // Call the implementation.\n // out and outsize are 0 because we don't know the size yet.\n let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)\n\n // Copy the returned data.\n returndatacopy(0, 0, returndatasize())\n\n switch result\n // delegatecall returns 0 on error.\n case 0 {\n revert(0, returndatasize())\n }\n default {\n return(0, returndatasize())\n }\n }\n }\n\n /**\n * @dev This is a virtual function that should be overridden so it returns the address to which the fallback\n * function and {_fallback} should delegate.\n */\n function _implementation() internal view virtual returns (address);\n\n /**\n * @dev Delegates the current call to the address returned by `_implementation()`.\n *\n * This function does not return to its internal call site, it will return directly to the external caller.\n */\n function _fallback() internal virtual {\n _delegate(_implementation());\n }\n\n /**\n * @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n * function in the contract matches the call data.\n */\n fallback() external payable virtual {\n _fallback();\n }\n}\n" + }, + "@openzeppelin/contracts/token/ERC20/ERC20.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/ERC20.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"./IERC20.sol\";\nimport {IERC20Metadata} from \"./extensions/IERC20Metadata.sol\";\nimport {Context} from \"../../utils/Context.sol\";\nimport {IERC20Errors} from \"../../interfaces/draft-IERC6093.sol\";\n\n/**\n * @dev Implementation of the {IERC20} interface.\n *\n * This implementation is agnostic to the way tokens are created. This means\n * that a supply mechanism has to be added in a derived contract using {_mint}.\n *\n * TIP: For a detailed writeup see our guide\n * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n * to implement supply mechanisms].\n *\n * The default value of {decimals} is 18. To change this, you should override\n * this function so it returns a different value.\n *\n * We have followed general OpenZeppelin Contracts guidelines: functions revert\n * instead returning `false` on failure. This behavior is nonetheless\n * conventional and does not conflict with the expectations of ERC-20\n * applications.\n */\nabstract contract ERC20 is Context, IERC20, IERC20Metadata, IERC20Errors {\n mapping(address account => uint256) private _balances;\n\n mapping(address account => mapping(address spender => uint256)) private _allowances;\n\n uint256 private _totalSupply;\n\n string private _name;\n string private _symbol;\n\n /**\n * @dev Sets the values for {name} and {symbol}.\n *\n * All two of these values are immutable: they can only be set once during\n * construction.\n */\n constructor(string memory name_, string memory symbol_) {\n _name = name_;\n _symbol = symbol_;\n }\n\n /**\n * @dev Returns the name of the token.\n */\n function name() public view virtual returns (string memory) {\n return _name;\n }\n\n /**\n * @dev Returns the symbol of the token, usually a shorter version of the\n * name.\n */\n function symbol() public view virtual returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev Returns the number of decimals used to get its user representation.\n * For example, if `decimals` equals `2`, a balance of `505` tokens should\n * be displayed to a user as `5.05` (`505 / 10 ** 2`).\n *\n * Tokens usually opt for a value of 18, imitating the relationship between\n * Ether and Wei. This is the default value returned by this function, unless\n * it's overridden.\n *\n * NOTE: This information is only used for _display_ purposes: it in\n * no way affects any of the arithmetic of the contract, including\n * {IERC20-balanceOf} and {IERC20-transfer}.\n */\n function decimals() public view virtual returns (uint8) {\n return 18;\n }\n\n /**\n * @dev See {IERC20-totalSupply}.\n */\n function totalSupply() public view virtual returns (uint256) {\n return _totalSupply;\n }\n\n /**\n * @dev See {IERC20-balanceOf}.\n */\n function balanceOf(address account) public view virtual returns (uint256) {\n return _balances[account];\n }\n\n /**\n * @dev See {IERC20-transfer}.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - the caller must have a balance of at least `value`.\n */\n function transfer(address to, uint256 value) public virtual returns (bool) {\n address owner = _msgSender();\n _transfer(owner, to, value);\n return true;\n }\n\n /**\n * @dev See {IERC20-allowance}.\n */\n function allowance(address owner, address spender) public view virtual returns (uint256) {\n return _allowances[owner][spender];\n }\n\n /**\n * @dev See {IERC20-approve}.\n *\n * NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n * `transferFrom`. This is semantically equivalent to an infinite approval.\n *\n * Requirements:\n *\n * - `spender` cannot be the zero address.\n */\n function approve(address spender, uint256 value) public virtual returns (bool) {\n address owner = _msgSender();\n _approve(owner, spender, value);\n return true;\n }\n\n /**\n * @dev See {IERC20-transferFrom}.\n *\n * Skips emitting an {Approval} event indicating an allowance update. This is not\n * required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\n *\n * NOTE: Does not update the allowance if the current allowance\n * is the maximum `uint256`.\n *\n * Requirements:\n *\n * - `from` and `to` cannot be the zero address.\n * - `from` must have a balance of at least `value`.\n * - the caller must have allowance for ``from``'s tokens of at least\n * `value`.\n */\n function transferFrom(address from, address to, uint256 value) public virtual returns (bool) {\n address spender = _msgSender();\n _spendAllowance(from, spender, value);\n _transfer(from, to, value);\n return true;\n }\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to`.\n *\n * This internal function is equivalent to {transfer}, and can be used to\n * e.g. implement automatic token fees, slashing mechanisms, etc.\n *\n * Emits a {Transfer} event.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead.\n */\n function _transfer(address from, address to, uint256 value) internal {\n if (from == address(0)) {\n revert ERC20InvalidSender(address(0));\n }\n if (to == address(0)) {\n revert ERC20InvalidReceiver(address(0));\n }\n _update(from, to, value);\n }\n\n /**\n * @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n * (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n * this function.\n *\n * Emits a {Transfer} event.\n */\n function _update(address from, address to, uint256 value) internal virtual {\n if (from == address(0)) {\n // Overflow check required: The rest of the code assumes that totalSupply never overflows\n _totalSupply += value;\n } else {\n uint256 fromBalance = _balances[from];\n if (fromBalance < value) {\n revert ERC20InsufficientBalance(from, fromBalance, value);\n }\n unchecked {\n // Overflow not possible: value <= fromBalance <= totalSupply.\n _balances[from] = fromBalance - value;\n }\n }\n\n if (to == address(0)) {\n unchecked {\n // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.\n _totalSupply -= value;\n }\n } else {\n unchecked {\n // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.\n _balances[to] += value;\n }\n }\n\n emit Transfer(from, to, value);\n }\n\n /**\n * @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n * Relies on the `_update` mechanism\n *\n * Emits a {Transfer} event with `from` set to the zero address.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead.\n */\n function _mint(address account, uint256 value) internal {\n if (account == address(0)) {\n revert ERC20InvalidReceiver(address(0));\n }\n _update(address(0), account, value);\n }\n\n /**\n * @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n * Relies on the `_update` mechanism.\n *\n * Emits a {Transfer} event with `to` set to the zero address.\n *\n * NOTE: This function is not virtual, {_update} should be overridden instead\n */\n function _burn(address account, uint256 value) internal {\n if (account == address(0)) {\n revert ERC20InvalidSender(address(0));\n }\n _update(account, address(0), value);\n }\n\n /**\n * @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.\n *\n * This internal function is equivalent to `approve`, and can be used to\n * e.g. set automatic allowances for certain subsystems, etc.\n *\n * Emits an {Approval} event.\n *\n * Requirements:\n *\n * - `owner` cannot be the zero address.\n * - `spender` cannot be the zero address.\n *\n * Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument.\n */\n function _approve(address owner, address spender, uint256 value) internal {\n _approve(owner, spender, value, true);\n }\n\n /**\n * @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n *\n * By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n * `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\n * `Approval` event during `transferFrom` operations.\n *\n * Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\n * true using the following override:\n *\n * ```solidity\n * function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n * super._approve(owner, spender, value, true);\n * }\n * ```\n *\n * Requirements are the same as {_approve}.\n */\n function _approve(address owner, address spender, uint256 value, bool emitEvent) internal virtual {\n if (owner == address(0)) {\n revert ERC20InvalidApprover(address(0));\n }\n if (spender == address(0)) {\n revert ERC20InvalidSpender(address(0));\n }\n _allowances[owner][spender] = value;\n if (emitEvent) {\n emit Approval(owner, spender, value);\n }\n }\n\n /**\n * @dev Updates `owner` s allowance for `spender` based on spent `value`.\n *\n * Does not update the allowance value in case of infinite allowance.\n * Revert if not enough allowance is available.\n *\n * Does not emit an {Approval} event.\n */\n function _spendAllowance(address owner, address spender, uint256 value) internal virtual {\n uint256 currentAllowance = allowance(owner, spender);\n if (currentAllowance != type(uint256).max) {\n if (currentAllowance < value) {\n revert ERC20InsufficientAllowance(spender, currentAllowance, value);\n }\n unchecked {\n _approve(owner, spender, currentAllowance - value, false);\n }\n }\n }\n}\n" + }, + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/IERC20Metadata.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"../IERC20.sol\";\n\n/**\n * @dev Interface for the optional metadata functions from the ERC-20 standard.\n */\ninterface IERC20Metadata is IERC20 {\n /**\n * @dev Returns the name of the token.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the symbol of the token.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the decimals places of the token.\n */\n function decimals() external view returns (uint8);\n}\n" + }, + "@openzeppelin/contracts/token/ERC20/IERC20.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC-20 standard as defined in the ERC.\n */\ninterface IERC20 {\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n /**\n * @dev Returns the value of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the value of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves a `value` amount of tokens from the caller's account to `to`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address to, uint256 value) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n * caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 value) external returns (bool);\n\n /**\n * @dev Moves a `value` amount of tokens from `from` to `to` using the\n * allowance mechanism. `value` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address from, address to, uint256 value) external returns (bool);\n}\n" + }, + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/utils/SafeERC20.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20} from \"../IERC20.sol\";\nimport {IERC1363} from \"../../../interfaces/IERC1363.sol\";\nimport {Address} from \"../../../utils/Address.sol\";\n\n/**\n * @title SafeERC20\n * @dev Wrappers around ERC-20 operations that throw on failure (when the token\n * contract returns false). Tokens that return no value (and instead revert or\n * throw on failure) are also supported, non-reverting calls are assumed to be\n * successful.\n * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n */\nlibrary SafeERC20 {\n /**\n * @dev An operation with an ERC-20 token failed.\n */\n error SafeERC20FailedOperation(address token);\n\n /**\n * @dev Indicates a failed `decreaseAllowance` request.\n */\n error SafeERC20FailedDecreaseAllowance(address spender, uint256 currentAllowance, uint256 requestedDecrease);\n\n /**\n * @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\n * non-reverting calls are assumed to be successful.\n */\n function safeTransfer(IERC20 token, address to, uint256 value) internal {\n _callOptionalReturn(token, abi.encodeCall(token.transfer, (to, value)));\n }\n\n /**\n * @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\n * calling contract. If `token` returns no value, non-reverting calls are assumed to be successful.\n */\n function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {\n _callOptionalReturn(token, abi.encodeCall(token.transferFrom, (from, to, value)));\n }\n\n /**\n * @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n * non-reverting calls are assumed to be successful.\n *\n * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \"client\"\n * smart contract uses ERC-7674 to set temporary allowances, then the \"client\" smart contract should avoid using\n * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\n * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\n */\n function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {\n uint256 oldAllowance = token.allowance(address(this), spender);\n forceApprove(token, spender, oldAllowance + value);\n }\n\n /**\n * @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no\n * value, non-reverting calls are assumed to be successful.\n *\n * IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \"client\"\n * smart contract uses ERC-7674 to set temporary allowances, then the \"client\" smart contract should avoid using\n * this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\n * that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior.\n */\n function safeDecreaseAllowance(IERC20 token, address spender, uint256 requestedDecrease) internal {\n unchecked {\n uint256 currentAllowance = token.allowance(address(this), spender);\n if (currentAllowance < requestedDecrease) {\n revert SafeERC20FailedDecreaseAllowance(spender, currentAllowance, requestedDecrease);\n }\n forceApprove(token, spender, currentAllowance - requestedDecrease);\n }\n }\n\n /**\n * @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\n * non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\n * to be set to zero before setting it to a non-zero value, such as USDT.\n *\n * NOTE: If the token implements ERC-7674, this function will not modify any temporary allowance. This function\n * only sets the \"standard\" allowance. Any temporary allowance will remain active, in addition to the value being\n * set here.\n */\n function forceApprove(IERC20 token, address spender, uint256 value) internal {\n bytes memory approvalCall = abi.encodeCall(token.approve, (spender, value));\n\n if (!_callOptionalReturnBool(token, approvalCall)) {\n _callOptionalReturn(token, abi.encodeCall(token.approve, (spender, 0)));\n _callOptionalReturn(token, approvalCall);\n }\n }\n\n /**\n * @dev Performs an {ERC1363} transferAndCall, with a fallback to the simple {ERC20} transfer if the target has no\n * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n * targeting contracts.\n *\n * Reverts if the returned value is other than `true`.\n */\n function transferAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\n if (to.code.length == 0) {\n safeTransfer(token, to, value);\n } else if (!token.transferAndCall(to, value, data)) {\n revert SafeERC20FailedOperation(address(token));\n }\n }\n\n /**\n * @dev Performs an {ERC1363} transferFromAndCall, with a fallback to the simple {ERC20} transferFrom if the target\n * has no code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n * targeting contracts.\n *\n * Reverts if the returned value is other than `true`.\n */\n function transferFromAndCallRelaxed(\n IERC1363 token,\n address from,\n address to,\n uint256 value,\n bytes memory data\n ) internal {\n if (to.code.length == 0) {\n safeTransferFrom(token, from, to, value);\n } else if (!token.transferFromAndCall(from, to, value, data)) {\n revert SafeERC20FailedOperation(address(token));\n }\n }\n\n /**\n * @dev Performs an {ERC1363} approveAndCall, with a fallback to the simple {ERC20} approve if the target has no\n * code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n * targeting contracts.\n *\n * NOTE: When the recipient address (`to`) has no code (i.e. is an EOA), this function behaves as {forceApprove}.\n * Opposedly, when the recipient address (`to`) has code, this function only attempts to call {ERC1363-approveAndCall}\n * once without retrying, and relies on the returned value to be true.\n *\n * Reverts if the returned value is other than `true`.\n */\n function approveAndCallRelaxed(IERC1363 token, address to, uint256 value, bytes memory data) internal {\n if (to.code.length == 0) {\n forceApprove(token, to, value);\n } else if (!token.approveAndCall(to, value, data)) {\n revert SafeERC20FailedOperation(address(token));\n }\n }\n\n /**\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n * on the return value: the return value is optional (but if data is returned, it must not be false).\n * @param token The token targeted by the call.\n * @param data The call data (encoded using abi.encode or one of its variants).\n *\n * This is a variant of {_callOptionalReturnBool} that reverts if call fails to meet the requirements.\n */\n function _callOptionalReturn(IERC20 token, bytes memory data) private {\n uint256 returnSize;\n uint256 returnValue;\n assembly (\"memory-safe\") {\n let success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\n // bubble errors\n if iszero(success) {\n let ptr := mload(0x40)\n returndatacopy(ptr, 0, returndatasize())\n revert(ptr, returndatasize())\n }\n returnSize := returndatasize()\n returnValue := mload(0)\n }\n\n if (returnSize == 0 ? address(token).code.length == 0 : returnValue != 1) {\n revert SafeERC20FailedOperation(address(token));\n }\n }\n\n /**\n * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n * on the return value: the return value is optional (but if data is returned, it must not be false).\n * @param token The token targeted by the call.\n * @param data The call data (encoded using abi.encode or one of its variants).\n *\n * This is a variant of {_callOptionalReturn} that silently catches all reverts and returns a bool instead.\n */\n function _callOptionalReturnBool(IERC20 token, bytes memory data) private returns (bool) {\n bool success;\n uint256 returnSize;\n uint256 returnValue;\n assembly (\"memory-safe\") {\n success := call(gas(), token, 0, add(data, 0x20), mload(data), 0, 0x20)\n returnSize := returndatasize()\n returnValue := mload(0)\n }\n return success && (returnSize == 0 ? address(token).code.length > 0 : returnValue == 1);\n }\n}\n" + }, + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/extensions/IERC721Enumerable.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC721} from \"../IERC721.sol\";\n\n/**\n * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n */\ninterface IERC721Enumerable is IERC721 {\n /**\n * @dev Returns the total amount of tokens stored by the contract.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns a token ID owned by `owner` at a given `index` of its token list.\n * Use along with {balanceOf} to enumerate all of ``owner``'s tokens.\n */\n function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256);\n\n /**\n * @dev Returns a token ID at a given `index` of all the tokens stored by the contract.\n * Use along with {totalSupply} to enumerate all tokens.\n */\n function tokenByIndex(uint256 index) external view returns (uint256);\n}\n" + }, + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC721/extensions/IERC721Metadata.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC721} from \"../IERC721.sol\";\n\n/**\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n */\ninterface IERC721Metadata is IERC721 {\n /**\n * @dev Returns the token collection name.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the token collection symbol.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\n */\n function tokenURI(uint256 tokenId) external view returns (string memory);\n}\n" + }, + "@openzeppelin/contracts/token/ERC721/IERC721.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/IERC721.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC165} from \"../../utils/introspection/IERC165.sol\";\n\n/**\n * @dev Required interface of an ERC-721 compliant contract.\n */\ninterface IERC721 is IERC165 {\n /**\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\n */\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\n\n /**\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\n */\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\n\n /**\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\n */\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\n\n /**\n * @dev Returns the number of tokens in ``owner``'s account.\n */\n function balanceOf(address owner) external view returns (uint256 balance);\n\n /**\n * @dev Returns the owner of the `tokenId` token.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function ownerOf(uint256 tokenId) external view returns (address owner);\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must exist and be owned by `from`.\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n * a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n * are aware of the ERC-721 protocol to prevent tokens from being forever locked.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must exist and be owned by `from`.\n * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n * {setApprovalForAll}.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n * a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function safeTransferFrom(address from, address to, uint256 tokenId) external;\n\n /**\n * @dev Transfers `tokenId` token from `from` to `to`.\n *\n * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721\n * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n * understand this adds an external call which potentially creates a reentrancy vulnerability.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must be owned by `from`.\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address from, address to, uint256 tokenId) external;\n\n /**\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\n * The approval is cleared when the token is transferred.\n *\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n *\n * Requirements:\n *\n * - The caller must own the token or be an approved operator.\n * - `tokenId` must exist.\n *\n * Emits an {Approval} event.\n */\n function approve(address to, uint256 tokenId) external;\n\n /**\n * @dev Approve or remove `operator` as an operator for the caller.\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n *\n * Requirements:\n *\n * - The `operator` cannot be the address zero.\n *\n * Emits an {ApprovalForAll} event.\n */\n function setApprovalForAll(address operator, bool approved) external;\n\n /**\n * @dev Returns the account approved for `tokenId` token.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function getApproved(uint256 tokenId) external view returns (address operator);\n\n /**\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n *\n * See {setApprovalForAll}\n */\n function isApprovedForAll(address owner, address operator) external view returns (bool);\n}\n" + }, + "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/IERC721Receiver.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @title ERC-721 token receiver interface\n * @dev Interface for any contract that wants to support safeTransfers\n * from ERC-721 asset contracts.\n */\ninterface IERC721Receiver {\n /**\n * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n * by `operator` from `from`, this function is called.\n *\n * It must return its Solidity selector to confirm the token transfer.\n * If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n * reverted.\n *\n * The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\n */\n function onERC721Received(\n address operator,\n address from,\n uint256 tokenId,\n bytes calldata data\n ) external returns (bytes4);\n}\n" + }, + "@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC721/utils/ERC721Utils.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC721Receiver} from \"../IERC721Receiver.sol\";\nimport {IERC721Errors} from \"../../../interfaces/draft-IERC6093.sol\";\n\n/**\n * @dev Library that provide common ERC-721 utility functions.\n *\n * See https://eips.ethereum.org/EIPS/eip-721[ERC-721].\n *\n * _Available since v5.1._\n */\nlibrary ERC721Utils {\n /**\n * @dev Performs an acceptance check for the provided `operator` by calling {IERC721-onERC721Received}\n * on the `to` address. The `operator` is generally the address that initiated the token transfer (i.e. `msg.sender`).\n *\n * The acceptance call is not executed and treated as a no-op if the target address doesn't contain code (i.e. an EOA).\n * Otherwise, the recipient must implement {IERC721Receiver-onERC721Received} and return the acceptance magic value to accept\n * the transfer.\n */\n function checkOnERC721Received(\n address operator,\n address from,\n address to,\n uint256 tokenId,\n bytes memory data\n ) internal {\n if (to.code.length > 0) {\n try IERC721Receiver(to).onERC721Received(operator, from, tokenId, data) returns (bytes4 retval) {\n if (retval != IERC721Receiver.onERC721Received.selector) {\n // Token rejected\n revert IERC721Errors.ERC721InvalidReceiver(to);\n }\n } catch (bytes memory reason) {\n if (reason.length == 0) {\n // non-IERC721Receiver implementer\n revert IERC721Errors.ERC721InvalidReceiver(to);\n } else {\n assembly (\"memory-safe\") {\n revert(add(32, reason), mload(reason))\n }\n }\n }\n }\n }\n}\n" + }, + "@openzeppelin/contracts/utils/Address.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Address.sol)\n\npragma solidity ^0.8.20;\n\nimport {Errors} from \"./Errors.sol\";\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev There's no code at `target` (it is not a contract).\n */\n error AddressEmptyCode(address target);\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n if (address(this).balance < amount) {\n revert Errors.InsufficientBalance(address(this).balance, amount);\n }\n\n (bool success, ) = recipient.call{value: amount}(\"\");\n if (!success) {\n revert Errors.FailedCall();\n }\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain `call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason or custom error, it is bubbled\n * up by this function (like regular Solidity function calls). However, if\n * the call reverted with no returned reason, this function reverts with a\n * {Errors.FailedCall} error.\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n */\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n if (address(this).balance < value) {\n revert Errors.InsufficientBalance(address(this).balance, value);\n }\n (bool success, bytes memory returndata) = target.call{value: value}(data);\n return verifyCallResultFromTarget(target, success, returndata);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n (bool success, bytes memory returndata) = target.staticcall(data);\n return verifyCallResultFromTarget(target, success, returndata);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return verifyCallResultFromTarget(target, success, returndata);\n }\n\n /**\n * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\n * was not a contract or bubbling up the revert reason (falling back to {Errors.FailedCall}) in case\n * of an unsuccessful call.\n */\n function verifyCallResultFromTarget(\n address target,\n bool success,\n bytes memory returndata\n ) internal view returns (bytes memory) {\n if (!success) {\n _revert(returndata);\n } else {\n // only check if target is a contract if the call was successful and the return data is empty\n // otherwise we already know that it was a contract\n if (returndata.length == 0 && target.code.length == 0) {\n revert AddressEmptyCode(target);\n }\n return returndata;\n }\n }\n\n /**\n * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\n * revert reason or with a default {Errors.FailedCall} error.\n */\n function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) {\n if (!success) {\n _revert(returndata);\n } else {\n return returndata;\n }\n }\n\n /**\n * @dev Reverts with returndata if present. Otherwise reverts with {Errors.FailedCall}.\n */\n function _revert(bytes memory returndata) private pure {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n assembly (\"memory-safe\") {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert Errors.FailedCall();\n }\n }\n}\n" + }, + "@openzeppelin/contracts/utils/Context.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n function _contextSuffixLength() internal view virtual returns (uint256) {\n return 0;\n }\n}\n" + }, + "@openzeppelin/contracts/utils/cryptography/ECDSA.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/cryptography/ECDSA.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n *\n * These functions can be used to verify that a message was signed by the holder\n * of the private keys of a given address.\n */\nlibrary ECDSA {\n enum RecoverError {\n NoError,\n InvalidSignature,\n InvalidSignatureLength,\n InvalidSignatureS\n }\n\n /**\n * @dev The signature derives the `address(0)`.\n */\n error ECDSAInvalidSignature();\n\n /**\n * @dev The signature has an invalid length.\n */\n error ECDSAInvalidSignatureLength(uint256 length);\n\n /**\n * @dev The signature has an S value that is in the upper half order.\n */\n error ECDSAInvalidSignatureS(bytes32 s);\n\n /**\n * @dev Returns the address that signed a hashed message (`hash`) with `signature` or an error. This will not\n * return address(0) without also returning an error description. Errors are documented using an enum (error type)\n * and a bytes32 providing additional information about the error.\n *\n * If no error is returned, then the address can be used for verification purposes.\n *\n * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\n * this function rejects them by requiring the `s` value to be in the lower\n * half order, and the `v` value to be either 27 or 28.\n *\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n * verification to be secure: it is possible to craft signatures that\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n * this is by receiving a hash of the original message (which may otherwise\n * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\n *\n * Documentation for signature generation:\n * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\n */\n function tryRecover(\n bytes32 hash,\n bytes memory signature\n ) internal pure returns (address recovered, RecoverError err, bytes32 errArg) {\n if (signature.length == 65) {\n bytes32 r;\n bytes32 s;\n uint8 v;\n // ecrecover takes the signature parameters, and the only way to get them\n // currently is to use assembly.\n assembly (\"memory-safe\") {\n r := mload(add(signature, 0x20))\n s := mload(add(signature, 0x40))\n v := byte(0, mload(add(signature, 0x60)))\n }\n return tryRecover(hash, v, r, s);\n } else {\n return (address(0), RecoverError.InvalidSignatureLength, bytes32(signature.length));\n }\n }\n\n /**\n * @dev Returns the address that signed a hashed message (`hash`) with\n * `signature`. This address can then be used for verification purposes.\n *\n * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\n * this function rejects them by requiring the `s` value to be in the lower\n * half order, and the `v` value to be either 27 or 28.\n *\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n * verification to be secure: it is possible to craft signatures that\n * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n * this is by receiving a hash of the original message (which may otherwise\n * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\n */\n function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\n (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, signature);\n _throwError(error, errorArg);\n return recovered;\n }\n\n /**\n * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\n *\n * See https://eips.ethereum.org/EIPS/eip-2098[ERC-2098 short signatures]\n */\n function tryRecover(\n bytes32 hash,\n bytes32 r,\n bytes32 vs\n ) internal pure returns (address recovered, RecoverError err, bytes32 errArg) {\n unchecked {\n bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\n // We do not check for an overflow here since the shift operation results in 0 or 1.\n uint8 v = uint8((uint256(vs) >> 255) + 27);\n return tryRecover(hash, v, r, s);\n }\n }\n\n /**\n * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\n */\n function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) {\n (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, r, vs);\n _throwError(error, errorArg);\n return recovered;\n }\n\n /**\n * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\n * `r` and `s` signature fields separately.\n */\n function tryRecover(\n bytes32 hash,\n uint8 v,\n bytes32 r,\n bytes32 s\n ) internal pure returns (address recovered, RecoverError err, bytes32 errArg) {\n // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\n // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\n // the valid range for s in (301): 0 < s < secp256k1n ÷ 2 + 1, and for v in (302): v ∈ {27, 28}. Most\n // signatures from current libraries generate a unique signature with an s-value in the lower half order.\n //\n // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\n // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\n // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\n // these malleable signatures as well.\n if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\n return (address(0), RecoverError.InvalidSignatureS, s);\n }\n\n // If the signature is valid (and not malleable), return the signer address\n address signer = ecrecover(hash, v, r, s);\n if (signer == address(0)) {\n return (address(0), RecoverError.InvalidSignature, bytes32(0));\n }\n\n return (signer, RecoverError.NoError, bytes32(0));\n }\n\n /**\n * @dev Overload of {ECDSA-recover} that receives the `v`,\n * `r` and `s` signature fields separately.\n */\n function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {\n (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, v, r, s);\n _throwError(error, errorArg);\n return recovered;\n }\n\n /**\n * @dev Optionally reverts with the corresponding custom error according to the `error` argument provided.\n */\n function _throwError(RecoverError error, bytes32 errorArg) private pure {\n if (error == RecoverError.NoError) {\n return; // no error: do nothing\n } else if (error == RecoverError.InvalidSignature) {\n revert ECDSAInvalidSignature();\n } else if (error == RecoverError.InvalidSignatureLength) {\n revert ECDSAInvalidSignatureLength(uint256(errorArg));\n } else if (error == RecoverError.InvalidSignatureS) {\n revert ECDSAInvalidSignatureS(errorArg);\n }\n }\n}\n" + }, + "@openzeppelin/contracts/utils/Errors.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Errors.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Collection of common custom errors used in multiple contracts\n *\n * IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library.\n * It is recommended to avoid relying on the error API for critical functionality.\n *\n * _Available since v5.1._\n */\nlibrary Errors {\n /**\n * @dev The ETH balance of the account is not enough to perform the operation.\n */\n error InsufficientBalance(uint256 balance, uint256 needed);\n\n /**\n * @dev A call to an address target failed. The target may have reverted.\n */\n error FailedCall();\n\n /**\n * @dev The deployment failed.\n */\n error FailedDeployment();\n\n /**\n * @dev A necessary precompile is missing.\n */\n error MissingPrecompile(address);\n}\n" + }, + "@openzeppelin/contracts/utils/introspection/IERC165.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC-165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[ERC].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165 {\n /**\n * @dev Returns true if this contract implements the interface defined by\n * `interfaceId`. See the corresponding\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\n * to learn more about how these ids are created.\n *\n * This function call must use less than 30 000 gas.\n */\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n" + }, + "@openzeppelin/contracts/utils/math/Math.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/Math.sol)\n\npragma solidity ^0.8.20;\n\nimport {Panic} from \"../Panic.sol\";\nimport {SafeCast} from \"./SafeCast.sol\";\n\n/**\n * @dev Standard math utilities missing in the Solidity language.\n */\nlibrary Math {\n enum Rounding {\n Floor, // Toward negative infinity\n Ceil, // Toward positive infinity\n Trunc, // Toward zero\n Expand // Away from zero\n }\n\n /**\n * @dev Returns the addition of two unsigned integers, with an success flag (no overflow).\n */\n function tryAdd(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n unchecked {\n uint256 c = a + b;\n if (c < a) return (false, 0);\n return (true, c);\n }\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, with an success flag (no overflow).\n */\n function trySub(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n unchecked {\n if (b > a) return (false, 0);\n return (true, a - b);\n }\n }\n\n /**\n * @dev Returns the multiplication of two unsigned integers, with an success flag (no overflow).\n */\n function tryMul(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n unchecked {\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n // benefit is lost if 'b' is also tested.\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\n if (a == 0) return (true, 0);\n uint256 c = a * b;\n if (c / a != b) return (false, 0);\n return (true, c);\n }\n }\n\n /**\n * @dev Returns the division of two unsigned integers, with a success flag (no division by zero).\n */\n function tryDiv(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n unchecked {\n if (b == 0) return (false, 0);\n return (true, a / b);\n }\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers, with a success flag (no division by zero).\n */\n function tryMod(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {\n unchecked {\n if (b == 0) return (false, 0);\n return (true, a % b);\n }\n }\n\n /**\n * @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.\n *\n * IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\n * However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute\n * one branch when needed, making this function more expensive.\n */\n function ternary(bool condition, uint256 a, uint256 b) internal pure returns (uint256) {\n unchecked {\n // branchless ternary works because:\n // b ^ (a ^ b) == a\n // b ^ 0 == b\n return b ^ ((a ^ b) * SafeCast.toUint(condition));\n }\n }\n\n /**\n * @dev Returns the largest of two numbers.\n */\n function max(uint256 a, uint256 b) internal pure returns (uint256) {\n return ternary(a > b, a, b);\n }\n\n /**\n * @dev Returns the smallest of two numbers.\n */\n function min(uint256 a, uint256 b) internal pure returns (uint256) {\n return ternary(a < b, a, b);\n }\n\n /**\n * @dev Returns the average of two numbers. The result is rounded towards\n * zero.\n */\n function average(uint256 a, uint256 b) internal pure returns (uint256) {\n // (a + b) / 2 can overflow.\n return (a & b) + (a ^ b) / 2;\n }\n\n /**\n * @dev Returns the ceiling of the division of two numbers.\n *\n * This differs from standard division with `/` in that it rounds towards infinity instead\n * of rounding towards zero.\n */\n function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {\n if (b == 0) {\n // Guarantee the same behavior as in a regular Solidity division.\n Panic.panic(Panic.DIVISION_BY_ZERO);\n }\n\n // The following calculation ensures accurate ceiling division without overflow.\n // Since a is non-zero, (a - 1) / b will not overflow.\n // The largest possible result occurs when (a - 1) / b is type(uint256).max,\n // but the largest value we can obtain is type(uint256).max - 1, which happens\n // when a = type(uint256).max and b = 1.\n unchecked {\n return SafeCast.toUint(a > 0) * ((a - 1) / b + 1);\n }\n }\n\n /**\n * @dev Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n * denominator == 0.\n *\n * Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n * Uniswap Labs also under MIT license.\n */\n function mulDiv(uint256 x, uint256 y, uint256 denominator) internal pure returns (uint256 result) {\n unchecked {\n // 512-bit multiply [prod1 prod0] = x * y. Compute the product mod 2²⁵⁶ and mod 2²⁵⁶ - 1, then use\n // the Chinese Remainder Theorem to reconstruct the 512 bit result. The result is stored in two 256\n // variables such that product = prod1 * 2²⁵⁶ + prod0.\n uint256 prod0 = x * y; // Least significant 256 bits of the product\n uint256 prod1; // Most significant 256 bits of the product\n assembly {\n let mm := mulmod(x, y, not(0))\n prod1 := sub(sub(mm, prod0), lt(mm, prod0))\n }\n\n // Handle non-overflow cases, 256 by 256 division.\n if (prod1 == 0) {\n // Solidity will revert if denominator == 0, unlike the div opcode on its own.\n // The surrounding unchecked block does not change this fact.\n // See https://docs.soliditylang.org/en/latest/control-structures.html#checked-or-unchecked-arithmetic.\n return prod0 / denominator;\n }\n\n // Make sure the result is less than 2²⁵⁶. Also prevents denominator == 0.\n if (denominator <= prod1) {\n Panic.panic(ternary(denominator == 0, Panic.DIVISION_BY_ZERO, Panic.UNDER_OVERFLOW));\n }\n\n ///////////////////////////////////////////////\n // 512 by 256 division.\n ///////////////////////////////////////////////\n\n // Make division exact by subtracting the remainder from [prod1 prod0].\n uint256 remainder;\n assembly {\n // Compute remainder using mulmod.\n remainder := mulmod(x, y, denominator)\n\n // Subtract 256 bit number from 512 bit number.\n prod1 := sub(prod1, gt(remainder, prod0))\n prod0 := sub(prod0, remainder)\n }\n\n // Factor powers of two out of denominator and compute largest power of two divisor of denominator.\n // Always >= 1. See https://cs.stackexchange.com/q/138556/92363.\n\n uint256 twos = denominator & (0 - denominator);\n assembly {\n // Divide denominator by twos.\n denominator := div(denominator, twos)\n\n // Divide [prod1 prod0] by twos.\n prod0 := div(prod0, twos)\n\n // Flip twos such that it is 2²⁵⁶ / twos. If twos is zero, then it becomes one.\n twos := add(div(sub(0, twos), twos), 1)\n }\n\n // Shift in bits from prod1 into prod0.\n prod0 |= prod1 * twos;\n\n // Invert denominator mod 2²⁵⁶. Now that denominator is an odd number, it has an inverse modulo 2²⁵⁶ such\n // that denominator * inv ≡ 1 mod 2²⁵⁶. Compute the inverse by starting with a seed that is correct for\n // four bits. That is, denominator * inv ≡ 1 mod 2⁴.\n uint256 inverse = (3 * denominator) ^ 2;\n\n // Use the Newton-Raphson iteration to improve the precision. Thanks to Hensel's lifting lemma, this also\n // works in modular arithmetic, doubling the correct bits in each step.\n inverse *= 2 - denominator * inverse; // inverse mod 2⁸\n inverse *= 2 - denominator * inverse; // inverse mod 2¹⁶\n inverse *= 2 - denominator * inverse; // inverse mod 2³²\n inverse *= 2 - denominator * inverse; // inverse mod 2⁶⁴\n inverse *= 2 - denominator * inverse; // inverse mod 2¹²⁸\n inverse *= 2 - denominator * inverse; // inverse mod 2²⁵⁶\n\n // Because the division is now exact we can divide by multiplying with the modular inverse of denominator.\n // This will give us the correct result modulo 2²⁵⁶. Since the preconditions guarantee that the outcome is\n // less than 2²⁵⁶, this is the final result. We don't need to compute the high bits of the result and prod1\n // is no longer required.\n result = prod0 * inverse;\n return result;\n }\n }\n\n /**\n * @dev Calculates x * y / denominator with full precision, following the selected rounding direction.\n */\n function mulDiv(uint256 x, uint256 y, uint256 denominator, Rounding rounding) internal pure returns (uint256) {\n return mulDiv(x, y, denominator) + SafeCast.toUint(unsignedRoundsUp(rounding) && mulmod(x, y, denominator) > 0);\n }\n\n /**\n * @dev Calculate the modular multiplicative inverse of a number in Z/nZ.\n *\n * If n is a prime, then Z/nZ is a field. In that case all elements are inversible, except 0.\n * If n is not a prime, then Z/nZ is not a field, and some elements might not be inversible.\n *\n * If the input value is not inversible, 0 is returned.\n *\n * NOTE: If you know for sure that n is (big) a prime, it may be cheaper to use Fermat's little theorem and get the\n * inverse using `Math.modExp(a, n - 2, n)`. See {invModPrime}.\n */\n function invMod(uint256 a, uint256 n) internal pure returns (uint256) {\n unchecked {\n if (n == 0) return 0;\n\n // The inverse modulo is calculated using the Extended Euclidean Algorithm (iterative version)\n // Used to compute integers x and y such that: ax + ny = gcd(a, n).\n // When the gcd is 1, then the inverse of a modulo n exists and it's x.\n // ax + ny = 1\n // ax = 1 + (-y)n\n // ax ≡ 1 (mod n) # x is the inverse of a modulo n\n\n // If the remainder is 0 the gcd is n right away.\n uint256 remainder = a % n;\n uint256 gcd = n;\n\n // Therefore the initial coefficients are:\n // ax + ny = gcd(a, n) = n\n // 0a + 1n = n\n int256 x = 0;\n int256 y = 1;\n\n while (remainder != 0) {\n uint256 quotient = gcd / remainder;\n\n (gcd, remainder) = (\n // The old remainder is the next gcd to try.\n remainder,\n // Compute the next remainder.\n // Can't overflow given that (a % gcd) * (gcd // (a % gcd)) <= gcd\n // where gcd is at most n (capped to type(uint256).max)\n gcd - remainder * quotient\n );\n\n (x, y) = (\n // Increment the coefficient of a.\n y,\n // Decrement the coefficient of n.\n // Can overflow, but the result is casted to uint256 so that the\n // next value of y is \"wrapped around\" to a value between 0 and n - 1.\n x - y * int256(quotient)\n );\n }\n\n if (gcd != 1) return 0; // No inverse exists.\n return ternary(x < 0, n - uint256(-x), uint256(x)); // Wrap the result if it's negative.\n }\n }\n\n /**\n * @dev Variant of {invMod}. More efficient, but only works if `p` is known to be a prime greater than `2`.\n *\n * From https://en.wikipedia.org/wiki/Fermat%27s_little_theorem[Fermat's little theorem], we know that if p is\n * prime, then `a**(p-1) ≡ 1 mod p`. As a consequence, we have `a * a**(p-2) ≡ 1 mod p`, which means that\n * `a**(p-2)` is the modular multiplicative inverse of a in Fp.\n *\n * NOTE: this function does NOT check that `p` is a prime greater than `2`.\n */\n function invModPrime(uint256 a, uint256 p) internal view returns (uint256) {\n unchecked {\n return Math.modExp(a, p - 2, p);\n }\n }\n\n /**\n * @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m)\n *\n * Requirements:\n * - modulus can't be zero\n * - underlying staticcall to precompile must succeed\n *\n * IMPORTANT: The result is only valid if the underlying call succeeds. When using this function, make\n * sure the chain you're using it on supports the precompiled contract for modular exponentiation\n * at address 0x05 as specified in https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise,\n * the underlying function will succeed given the lack of a revert, but the result may be incorrectly\n * interpreted as 0.\n */\n function modExp(uint256 b, uint256 e, uint256 m) internal view returns (uint256) {\n (bool success, uint256 result) = tryModExp(b, e, m);\n if (!success) {\n Panic.panic(Panic.DIVISION_BY_ZERO);\n }\n return result;\n }\n\n /**\n * @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m).\n * It includes a success flag indicating if the operation succeeded. Operation will be marked as failed if trying\n * to operate modulo 0 or if the underlying precompile reverted.\n *\n * IMPORTANT: The result is only valid if the success flag is true. When using this function, make sure the chain\n * you're using it on supports the precompiled contract for modular exponentiation at address 0x05 as specified in\n * https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise, the underlying function will succeed given the lack\n * of a revert, but the result may be incorrectly interpreted as 0.\n */\n function tryModExp(uint256 b, uint256 e, uint256 m) internal view returns (bool success, uint256 result) {\n if (m == 0) return (false, 0);\n assembly (\"memory-safe\") {\n let ptr := mload(0x40)\n // | Offset | Content | Content (Hex) |\n // |-----------|------------|--------------------------------------------------------------------|\n // | 0x00:0x1f | size of b | 0x0000000000000000000000000000000000000000000000000000000000000020 |\n // | 0x20:0x3f | size of e | 0x0000000000000000000000000000000000000000000000000000000000000020 |\n // | 0x40:0x5f | size of m | 0x0000000000000000000000000000000000000000000000000000000000000020 |\n // | 0x60:0x7f | value of b | 0x<.............................................................b> |\n // | 0x80:0x9f | value of e | 0x<.............................................................e> |\n // | 0xa0:0xbf | value of m | 0x<.............................................................m> |\n mstore(ptr, 0x20)\n mstore(add(ptr, 0x20), 0x20)\n mstore(add(ptr, 0x40), 0x20)\n mstore(add(ptr, 0x60), b)\n mstore(add(ptr, 0x80), e)\n mstore(add(ptr, 0xa0), m)\n\n // Given the result < m, it's guaranteed to fit in 32 bytes,\n // so we can use the memory scratch space located at offset 0.\n success := staticcall(gas(), 0x05, ptr, 0xc0, 0x00, 0x20)\n result := mload(0x00)\n }\n }\n\n /**\n * @dev Variant of {modExp} that supports inputs of arbitrary length.\n */\n function modExp(bytes memory b, bytes memory e, bytes memory m) internal view returns (bytes memory) {\n (bool success, bytes memory result) = tryModExp(b, e, m);\n if (!success) {\n Panic.panic(Panic.DIVISION_BY_ZERO);\n }\n return result;\n }\n\n /**\n * @dev Variant of {tryModExp} that supports inputs of arbitrary length.\n */\n function tryModExp(\n bytes memory b,\n bytes memory e,\n bytes memory m\n ) internal view returns (bool success, bytes memory result) {\n if (_zeroBytes(m)) return (false, new bytes(0));\n\n uint256 mLen = m.length;\n\n // Encode call args in result and move the free memory pointer\n result = abi.encodePacked(b.length, e.length, mLen, b, e, m);\n\n assembly (\"memory-safe\") {\n let dataPtr := add(result, 0x20)\n // Write result on top of args to avoid allocating extra memory.\n success := staticcall(gas(), 0x05, dataPtr, mload(result), dataPtr, mLen)\n // Overwrite the length.\n // result.length > returndatasize() is guaranteed because returndatasize() == m.length\n mstore(result, mLen)\n // Set the memory pointer after the returned data.\n mstore(0x40, add(dataPtr, mLen))\n }\n }\n\n /**\n * @dev Returns whether the provided byte array is zero.\n */\n function _zeroBytes(bytes memory byteArray) private pure returns (bool) {\n for (uint256 i = 0; i < byteArray.length; ++i) {\n if (byteArray[i] != 0) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n * towards zero.\n *\n * This method is based on Newton's method for computing square roots; the algorithm is restricted to only\n * using integer operations.\n */\n function sqrt(uint256 a) internal pure returns (uint256) {\n unchecked {\n // Take care of easy edge cases when a == 0 or a == 1\n if (a <= 1) {\n return a;\n }\n\n // In this function, we use Newton's method to get a root of `f(x) := x² - a`. It involves building a\n // sequence x_n that converges toward sqrt(a). For each iteration x_n, we also define the error between\n // the current value as `ε_n = | x_n - sqrt(a) |`.\n //\n // For our first estimation, we consider `e` the smallest power of 2 which is bigger than the square root\n // of the target. (i.e. `2**(e-1) ≤ sqrt(a) < 2**e`). We know that `e ≤ 128` because `(2¹²⁸)² = 2²⁵⁶` is\n // bigger than any uint256.\n //\n // By noticing that\n // `2**(e-1) ≤ sqrt(a) < 2**e → (2**(e-1))² ≤ a < (2**e)² → 2**(2*e-2) ≤ a < 2**(2*e)`\n // we can deduce that `e - 1` is `log2(a) / 2`. We can thus compute `x_n = 2**(e-1)` using a method similar\n // to the msb function.\n uint256 aa = a;\n uint256 xn = 1;\n\n if (aa >= (1 << 128)) {\n aa >>= 128;\n xn <<= 64;\n }\n if (aa >= (1 << 64)) {\n aa >>= 64;\n xn <<= 32;\n }\n if (aa >= (1 << 32)) {\n aa >>= 32;\n xn <<= 16;\n }\n if (aa >= (1 << 16)) {\n aa >>= 16;\n xn <<= 8;\n }\n if (aa >= (1 << 8)) {\n aa >>= 8;\n xn <<= 4;\n }\n if (aa >= (1 << 4)) {\n aa >>= 4;\n xn <<= 2;\n }\n if (aa >= (1 << 2)) {\n xn <<= 1;\n }\n\n // We now have x_n such that `x_n = 2**(e-1) ≤ sqrt(a) < 2**e = 2 * x_n`. This implies ε_n ≤ 2**(e-1).\n //\n // We can refine our estimation by noticing that the middle of that interval minimizes the error.\n // If we move x_n to equal 2**(e-1) + 2**(e-2), then we reduce the error to ε_n ≤ 2**(e-2).\n // This is going to be our x_0 (and ε_0)\n xn = (3 * xn) >> 1; // ε_0 := | x_0 - sqrt(a) | ≤ 2**(e-2)\n\n // From here, Newton's method give us:\n // x_{n+1} = (x_n + a / x_n) / 2\n //\n // One should note that:\n // x_{n+1}² - a = ((x_n + a / x_n) / 2)² - a\n // = ((x_n² + a) / (2 * x_n))² - a\n // = (x_n⁴ + 2 * a * x_n² + a²) / (4 * x_n²) - a\n // = (x_n⁴ + 2 * a * x_n² + a² - 4 * a * x_n²) / (4 * x_n²)\n // = (x_n⁴ - 2 * a * x_n² + a²) / (4 * x_n²)\n // = (x_n² - a)² / (2 * x_n)²\n // = ((x_n² - a) / (2 * x_n))²\n // ≥ 0\n // Which proves that for all n ≥ 1, sqrt(a) ≤ x_n\n //\n // This gives us the proof of quadratic convergence of the sequence:\n // ε_{n+1} = | x_{n+1} - sqrt(a) |\n // = | (x_n + a / x_n) / 2 - sqrt(a) |\n // = | (x_n² + a - 2*x_n*sqrt(a)) / (2 * x_n) |\n // = | (x_n - sqrt(a))² / (2 * x_n) |\n // = | ε_n² / (2 * x_n) |\n // = ε_n² / | (2 * x_n) |\n //\n // For the first iteration, we have a special case where x_0 is known:\n // ε_1 = ε_0² / | (2 * x_0) |\n // ≤ (2**(e-2))² / (2 * (2**(e-1) + 2**(e-2)))\n // ≤ 2**(2*e-4) / (3 * 2**(e-1))\n // ≤ 2**(e-3) / 3\n // ≤ 2**(e-3-log2(3))\n // ≤ 2**(e-4.5)\n //\n // For the following iterations, we use the fact that, 2**(e-1) ≤ sqrt(a) ≤ x_n:\n // ε_{n+1} = ε_n² / | (2 * x_n) |\n // ≤ (2**(e-k))² / (2 * 2**(e-1))\n // ≤ 2**(2*e-2*k) / 2**e\n // ≤ 2**(e-2*k)\n xn = (xn + a / xn) >> 1; // ε_1 := | x_1 - sqrt(a) | ≤ 2**(e-4.5) -- special case, see above\n xn = (xn + a / xn) >> 1; // ε_2 := | x_2 - sqrt(a) | ≤ 2**(e-9) -- general case with k = 4.5\n xn = (xn + a / xn) >> 1; // ε_3 := | x_3 - sqrt(a) | ≤ 2**(e-18) -- general case with k = 9\n xn = (xn + a / xn) >> 1; // ε_4 := | x_4 - sqrt(a) | ≤ 2**(e-36) -- general case with k = 18\n xn = (xn + a / xn) >> 1; // ε_5 := | x_5 - sqrt(a) | ≤ 2**(e-72) -- general case with k = 36\n xn = (xn + a / xn) >> 1; // ε_6 := | x_6 - sqrt(a) | ≤ 2**(e-144) -- general case with k = 72\n\n // Because e ≤ 128 (as discussed during the first estimation phase), we know have reached a precision\n // ε_6 ≤ 2**(e-144) < 1. Given we're operating on integers, then we can ensure that xn is now either\n // sqrt(a) or sqrt(a) + 1.\n return xn - SafeCast.toUint(xn > a / xn);\n }\n }\n\n /**\n * @dev Calculates sqrt(a), following the selected rounding direction.\n */\n function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = sqrt(a);\n return result + SafeCast.toUint(unsignedRoundsUp(rounding) && result * result < a);\n }\n }\n\n /**\n * @dev Return the log in base 2 of a positive value rounded towards zero.\n * Returns 0 if given 0.\n */\n function log2(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n uint256 exp;\n unchecked {\n exp = 128 * SafeCast.toUint(value > (1 << 128) - 1);\n value >>= exp;\n result += exp;\n\n exp = 64 * SafeCast.toUint(value > (1 << 64) - 1);\n value >>= exp;\n result += exp;\n\n exp = 32 * SafeCast.toUint(value > (1 << 32) - 1);\n value >>= exp;\n result += exp;\n\n exp = 16 * SafeCast.toUint(value > (1 << 16) - 1);\n value >>= exp;\n result += exp;\n\n exp = 8 * SafeCast.toUint(value > (1 << 8) - 1);\n value >>= exp;\n result += exp;\n\n exp = 4 * SafeCast.toUint(value > (1 << 4) - 1);\n value >>= exp;\n result += exp;\n\n exp = 2 * SafeCast.toUint(value > (1 << 2) - 1);\n value >>= exp;\n result += exp;\n\n result += SafeCast.toUint(value > 1);\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log2(value);\n return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 1 << result < value);\n }\n }\n\n /**\n * @dev Return the log in base 10 of a positive value rounded towards zero.\n * Returns 0 if given 0.\n */\n function log10(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n unchecked {\n if (value >= 10 ** 64) {\n value /= 10 ** 64;\n result += 64;\n }\n if (value >= 10 ** 32) {\n value /= 10 ** 32;\n result += 32;\n }\n if (value >= 10 ** 16) {\n value /= 10 ** 16;\n result += 16;\n }\n if (value >= 10 ** 8) {\n value /= 10 ** 8;\n result += 8;\n }\n if (value >= 10 ** 4) {\n value /= 10 ** 4;\n result += 4;\n }\n if (value >= 10 ** 2) {\n value /= 10 ** 2;\n result += 2;\n }\n if (value >= 10 ** 1) {\n result += 1;\n }\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log10(value);\n return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 10 ** result < value);\n }\n }\n\n /**\n * @dev Return the log in base 256 of a positive value rounded towards zero.\n * Returns 0 if given 0.\n *\n * Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string.\n */\n function log256(uint256 value) internal pure returns (uint256) {\n uint256 result = 0;\n uint256 isGt;\n unchecked {\n isGt = SafeCast.toUint(value > (1 << 128) - 1);\n value >>= isGt * 128;\n result += isGt * 16;\n\n isGt = SafeCast.toUint(value > (1 << 64) - 1);\n value >>= isGt * 64;\n result += isGt * 8;\n\n isGt = SafeCast.toUint(value > (1 << 32) - 1);\n value >>= isGt * 32;\n result += isGt * 4;\n\n isGt = SafeCast.toUint(value > (1 << 16) - 1);\n value >>= isGt * 16;\n result += isGt * 2;\n\n result += SafeCast.toUint(value > (1 << 8) - 1);\n }\n return result;\n }\n\n /**\n * @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n * Returns 0 if given 0.\n */\n function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {\n unchecked {\n uint256 result = log256(value);\n return result + SafeCast.toUint(unsignedRoundsUp(rounding) && 1 << (result << 3) < value);\n }\n }\n\n /**\n * @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers.\n */\n function unsignedRoundsUp(Rounding rounding) internal pure returns (bool) {\n return uint8(rounding) % 2 == 1;\n }\n}\n" + }, + "@openzeppelin/contracts/utils/math/SafeCast.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SafeCast.sol)\n// This file was procedurally generated from scripts/generate/templates/SafeCast.js.\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow\n * checks.\n *\n * Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\n * easily result in undesired exploitation or bugs, since developers usually\n * assume that overflows raise errors. `SafeCast` restores this intuition by\n * reverting the transaction when such an operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n */\nlibrary SafeCast {\n /**\n * @dev Value doesn't fit in an uint of `bits` size.\n */\n error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value);\n\n /**\n * @dev An int value doesn't fit in an uint of `bits` size.\n */\n error SafeCastOverflowedIntToUint(int256 value);\n\n /**\n * @dev Value doesn't fit in an int of `bits` size.\n */\n error SafeCastOverflowedIntDowncast(uint8 bits, int256 value);\n\n /**\n * @dev An uint value doesn't fit in an int of `bits` size.\n */\n error SafeCastOverflowedUintToInt(uint256 value);\n\n /**\n * @dev Returns the downcasted uint248 from uint256, reverting on\n * overflow (when the input is greater than largest uint248).\n *\n * Counterpart to Solidity's `uint248` operator.\n *\n * Requirements:\n *\n * - input must fit into 248 bits\n */\n function toUint248(uint256 value) internal pure returns (uint248) {\n if (value > type(uint248).max) {\n revert SafeCastOverflowedUintDowncast(248, value);\n }\n return uint248(value);\n }\n\n /**\n * @dev Returns the downcasted uint240 from uint256, reverting on\n * overflow (when the input is greater than largest uint240).\n *\n * Counterpart to Solidity's `uint240` operator.\n *\n * Requirements:\n *\n * - input must fit into 240 bits\n */\n function toUint240(uint256 value) internal pure returns (uint240) {\n if (value > type(uint240).max) {\n revert SafeCastOverflowedUintDowncast(240, value);\n }\n return uint240(value);\n }\n\n /**\n * @dev Returns the downcasted uint232 from uint256, reverting on\n * overflow (when the input is greater than largest uint232).\n *\n * Counterpart to Solidity's `uint232` operator.\n *\n * Requirements:\n *\n * - input must fit into 232 bits\n */\n function toUint232(uint256 value) internal pure returns (uint232) {\n if (value > type(uint232).max) {\n revert SafeCastOverflowedUintDowncast(232, value);\n }\n return uint232(value);\n }\n\n /**\n * @dev Returns the downcasted uint224 from uint256, reverting on\n * overflow (when the input is greater than largest uint224).\n *\n * Counterpart to Solidity's `uint224` operator.\n *\n * Requirements:\n *\n * - input must fit into 224 bits\n */\n function toUint224(uint256 value) internal pure returns (uint224) {\n if (value > type(uint224).max) {\n revert SafeCastOverflowedUintDowncast(224, value);\n }\n return uint224(value);\n }\n\n /**\n * @dev Returns the downcasted uint216 from uint256, reverting on\n * overflow (when the input is greater than largest uint216).\n *\n * Counterpart to Solidity's `uint216` operator.\n *\n * Requirements:\n *\n * - input must fit into 216 bits\n */\n function toUint216(uint256 value) internal pure returns (uint216) {\n if (value > type(uint216).max) {\n revert SafeCastOverflowedUintDowncast(216, value);\n }\n return uint216(value);\n }\n\n /**\n * @dev Returns the downcasted uint208 from uint256, reverting on\n * overflow (when the input is greater than largest uint208).\n *\n * Counterpart to Solidity's `uint208` operator.\n *\n * Requirements:\n *\n * - input must fit into 208 bits\n */\n function toUint208(uint256 value) internal pure returns (uint208) {\n if (value > type(uint208).max) {\n revert SafeCastOverflowedUintDowncast(208, value);\n }\n return uint208(value);\n }\n\n /**\n * @dev Returns the downcasted uint200 from uint256, reverting on\n * overflow (when the input is greater than largest uint200).\n *\n * Counterpart to Solidity's `uint200` operator.\n *\n * Requirements:\n *\n * - input must fit into 200 bits\n */\n function toUint200(uint256 value) internal pure returns (uint200) {\n if (value > type(uint200).max) {\n revert SafeCastOverflowedUintDowncast(200, value);\n }\n return uint200(value);\n }\n\n /**\n * @dev Returns the downcasted uint192 from uint256, reverting on\n * overflow (when the input is greater than largest uint192).\n *\n * Counterpart to Solidity's `uint192` operator.\n *\n * Requirements:\n *\n * - input must fit into 192 bits\n */\n function toUint192(uint256 value) internal pure returns (uint192) {\n if (value > type(uint192).max) {\n revert SafeCastOverflowedUintDowncast(192, value);\n }\n return uint192(value);\n }\n\n /**\n * @dev Returns the downcasted uint184 from uint256, reverting on\n * overflow (when the input is greater than largest uint184).\n *\n * Counterpart to Solidity's `uint184` operator.\n *\n * Requirements:\n *\n * - input must fit into 184 bits\n */\n function toUint184(uint256 value) internal pure returns (uint184) {\n if (value > type(uint184).max) {\n revert SafeCastOverflowedUintDowncast(184, value);\n }\n return uint184(value);\n }\n\n /**\n * @dev Returns the downcasted uint176 from uint256, reverting on\n * overflow (when the input is greater than largest uint176).\n *\n * Counterpart to Solidity's `uint176` operator.\n *\n * Requirements:\n *\n * - input must fit into 176 bits\n */\n function toUint176(uint256 value) internal pure returns (uint176) {\n if (value > type(uint176).max) {\n revert SafeCastOverflowedUintDowncast(176, value);\n }\n return uint176(value);\n }\n\n /**\n * @dev Returns the downcasted uint168 from uint256, reverting on\n * overflow (when the input is greater than largest uint168).\n *\n * Counterpart to Solidity's `uint168` operator.\n *\n * Requirements:\n *\n * - input must fit into 168 bits\n */\n function toUint168(uint256 value) internal pure returns (uint168) {\n if (value > type(uint168).max) {\n revert SafeCastOverflowedUintDowncast(168, value);\n }\n return uint168(value);\n }\n\n /**\n * @dev Returns the downcasted uint160 from uint256, reverting on\n * overflow (when the input is greater than largest uint160).\n *\n * Counterpart to Solidity's `uint160` operator.\n *\n * Requirements:\n *\n * - input must fit into 160 bits\n */\n function toUint160(uint256 value) internal pure returns (uint160) {\n if (value > type(uint160).max) {\n revert SafeCastOverflowedUintDowncast(160, value);\n }\n return uint160(value);\n }\n\n /**\n * @dev Returns the downcasted uint152 from uint256, reverting on\n * overflow (when the input is greater than largest uint152).\n *\n * Counterpart to Solidity's `uint152` operator.\n *\n * Requirements:\n *\n * - input must fit into 152 bits\n */\n function toUint152(uint256 value) internal pure returns (uint152) {\n if (value > type(uint152).max) {\n revert SafeCastOverflowedUintDowncast(152, value);\n }\n return uint152(value);\n }\n\n /**\n * @dev Returns the downcasted uint144 from uint256, reverting on\n * overflow (when the input is greater than largest uint144).\n *\n * Counterpart to Solidity's `uint144` operator.\n *\n * Requirements:\n *\n * - input must fit into 144 bits\n */\n function toUint144(uint256 value) internal pure returns (uint144) {\n if (value > type(uint144).max) {\n revert SafeCastOverflowedUintDowncast(144, value);\n }\n return uint144(value);\n }\n\n /**\n * @dev Returns the downcasted uint136 from uint256, reverting on\n * overflow (when the input is greater than largest uint136).\n *\n * Counterpart to Solidity's `uint136` operator.\n *\n * Requirements:\n *\n * - input must fit into 136 bits\n */\n function toUint136(uint256 value) internal pure returns (uint136) {\n if (value > type(uint136).max) {\n revert SafeCastOverflowedUintDowncast(136, value);\n }\n return uint136(value);\n }\n\n /**\n * @dev Returns the downcasted uint128 from uint256, reverting on\n * overflow (when the input is greater than largest uint128).\n *\n * Counterpart to Solidity's `uint128` operator.\n *\n * Requirements:\n *\n * - input must fit into 128 bits\n */\n function toUint128(uint256 value) internal pure returns (uint128) {\n if (value > type(uint128).max) {\n revert SafeCastOverflowedUintDowncast(128, value);\n }\n return uint128(value);\n }\n\n /**\n * @dev Returns the downcasted uint120 from uint256, reverting on\n * overflow (when the input is greater than largest uint120).\n *\n * Counterpart to Solidity's `uint120` operator.\n *\n * Requirements:\n *\n * - input must fit into 120 bits\n */\n function toUint120(uint256 value) internal pure returns (uint120) {\n if (value > type(uint120).max) {\n revert SafeCastOverflowedUintDowncast(120, value);\n }\n return uint120(value);\n }\n\n /**\n * @dev Returns the downcasted uint112 from uint256, reverting on\n * overflow (when the input is greater than largest uint112).\n *\n * Counterpart to Solidity's `uint112` operator.\n *\n * Requirements:\n *\n * - input must fit into 112 bits\n */\n function toUint112(uint256 value) internal pure returns (uint112) {\n if (value > type(uint112).max) {\n revert SafeCastOverflowedUintDowncast(112, value);\n }\n return uint112(value);\n }\n\n /**\n * @dev Returns the downcasted uint104 from uint256, reverting on\n * overflow (when the input is greater than largest uint104).\n *\n * Counterpart to Solidity's `uint104` operator.\n *\n * Requirements:\n *\n * - input must fit into 104 bits\n */\n function toUint104(uint256 value) internal pure returns (uint104) {\n if (value > type(uint104).max) {\n revert SafeCastOverflowedUintDowncast(104, value);\n }\n return uint104(value);\n }\n\n /**\n * @dev Returns the downcasted uint96 from uint256, reverting on\n * overflow (when the input is greater than largest uint96).\n *\n * Counterpart to Solidity's `uint96` operator.\n *\n * Requirements:\n *\n * - input must fit into 96 bits\n */\n function toUint96(uint256 value) internal pure returns (uint96) {\n if (value > type(uint96).max) {\n revert SafeCastOverflowedUintDowncast(96, value);\n }\n return uint96(value);\n }\n\n /**\n * @dev Returns the downcasted uint88 from uint256, reverting on\n * overflow (when the input is greater than largest uint88).\n *\n * Counterpart to Solidity's `uint88` operator.\n *\n * Requirements:\n *\n * - input must fit into 88 bits\n */\n function toUint88(uint256 value) internal pure returns (uint88) {\n if (value > type(uint88).max) {\n revert SafeCastOverflowedUintDowncast(88, value);\n }\n return uint88(value);\n }\n\n /**\n * @dev Returns the downcasted uint80 from uint256, reverting on\n * overflow (when the input is greater than largest uint80).\n *\n * Counterpart to Solidity's `uint80` operator.\n *\n * Requirements:\n *\n * - input must fit into 80 bits\n */\n function toUint80(uint256 value) internal pure returns (uint80) {\n if (value > type(uint80).max) {\n revert SafeCastOverflowedUintDowncast(80, value);\n }\n return uint80(value);\n }\n\n /**\n * @dev Returns the downcasted uint72 from uint256, reverting on\n * overflow (when the input is greater than largest uint72).\n *\n * Counterpart to Solidity's `uint72` operator.\n *\n * Requirements:\n *\n * - input must fit into 72 bits\n */\n function toUint72(uint256 value) internal pure returns (uint72) {\n if (value > type(uint72).max) {\n revert SafeCastOverflowedUintDowncast(72, value);\n }\n return uint72(value);\n }\n\n /**\n * @dev Returns the downcasted uint64 from uint256, reverting on\n * overflow (when the input is greater than largest uint64).\n *\n * Counterpart to Solidity's `uint64` operator.\n *\n * Requirements:\n *\n * - input must fit into 64 bits\n */\n function toUint64(uint256 value) internal pure returns (uint64) {\n if (value > type(uint64).max) {\n revert SafeCastOverflowedUintDowncast(64, value);\n }\n return uint64(value);\n }\n\n /**\n * @dev Returns the downcasted uint56 from uint256, reverting on\n * overflow (when the input is greater than largest uint56).\n *\n * Counterpart to Solidity's `uint56` operator.\n *\n * Requirements:\n *\n * - input must fit into 56 bits\n */\n function toUint56(uint256 value) internal pure returns (uint56) {\n if (value > type(uint56).max) {\n revert SafeCastOverflowedUintDowncast(56, value);\n }\n return uint56(value);\n }\n\n /**\n * @dev Returns the downcasted uint48 from uint256, reverting on\n * overflow (when the input is greater than largest uint48).\n *\n * Counterpart to Solidity's `uint48` operator.\n *\n * Requirements:\n *\n * - input must fit into 48 bits\n */\n function toUint48(uint256 value) internal pure returns (uint48) {\n if (value > type(uint48).max) {\n revert SafeCastOverflowedUintDowncast(48, value);\n }\n return uint48(value);\n }\n\n /**\n * @dev Returns the downcasted uint40 from uint256, reverting on\n * overflow (when the input is greater than largest uint40).\n *\n * Counterpart to Solidity's `uint40` operator.\n *\n * Requirements:\n *\n * - input must fit into 40 bits\n */\n function toUint40(uint256 value) internal pure returns (uint40) {\n if (value > type(uint40).max) {\n revert SafeCastOverflowedUintDowncast(40, value);\n }\n return uint40(value);\n }\n\n /**\n * @dev Returns the downcasted uint32 from uint256, reverting on\n * overflow (when the input is greater than largest uint32).\n *\n * Counterpart to Solidity's `uint32` operator.\n *\n * Requirements:\n *\n * - input must fit into 32 bits\n */\n function toUint32(uint256 value) internal pure returns (uint32) {\n if (value > type(uint32).max) {\n revert SafeCastOverflowedUintDowncast(32, value);\n }\n return uint32(value);\n }\n\n /**\n * @dev Returns the downcasted uint24 from uint256, reverting on\n * overflow (when the input is greater than largest uint24).\n *\n * Counterpart to Solidity's `uint24` operator.\n *\n * Requirements:\n *\n * - input must fit into 24 bits\n */\n function toUint24(uint256 value) internal pure returns (uint24) {\n if (value > type(uint24).max) {\n revert SafeCastOverflowedUintDowncast(24, value);\n }\n return uint24(value);\n }\n\n /**\n * @dev Returns the downcasted uint16 from uint256, reverting on\n * overflow (when the input is greater than largest uint16).\n *\n * Counterpart to Solidity's `uint16` operator.\n *\n * Requirements:\n *\n * - input must fit into 16 bits\n */\n function toUint16(uint256 value) internal pure returns (uint16) {\n if (value > type(uint16).max) {\n revert SafeCastOverflowedUintDowncast(16, value);\n }\n return uint16(value);\n }\n\n /**\n * @dev Returns the downcasted uint8 from uint256, reverting on\n * overflow (when the input is greater than largest uint8).\n *\n * Counterpart to Solidity's `uint8` operator.\n *\n * Requirements:\n *\n * - input must fit into 8 bits\n */\n function toUint8(uint256 value) internal pure returns (uint8) {\n if (value > type(uint8).max) {\n revert SafeCastOverflowedUintDowncast(8, value);\n }\n return uint8(value);\n }\n\n /**\n * @dev Converts a signed int256 into an unsigned uint256.\n *\n * Requirements:\n *\n * - input must be greater than or equal to 0.\n */\n function toUint256(int256 value) internal pure returns (uint256) {\n if (value < 0) {\n revert SafeCastOverflowedIntToUint(value);\n }\n return uint256(value);\n }\n\n /**\n * @dev Returns the downcasted int248 from int256, reverting on\n * overflow (when the input is less than smallest int248 or\n * greater than largest int248).\n *\n * Counterpart to Solidity's `int248` operator.\n *\n * Requirements:\n *\n * - input must fit into 248 bits\n */\n function toInt248(int256 value) internal pure returns (int248 downcasted) {\n downcasted = int248(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(248, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int240 from int256, reverting on\n * overflow (when the input is less than smallest int240 or\n * greater than largest int240).\n *\n * Counterpart to Solidity's `int240` operator.\n *\n * Requirements:\n *\n * - input must fit into 240 bits\n */\n function toInt240(int256 value) internal pure returns (int240 downcasted) {\n downcasted = int240(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(240, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int232 from int256, reverting on\n * overflow (when the input is less than smallest int232 or\n * greater than largest int232).\n *\n * Counterpart to Solidity's `int232` operator.\n *\n * Requirements:\n *\n * - input must fit into 232 bits\n */\n function toInt232(int256 value) internal pure returns (int232 downcasted) {\n downcasted = int232(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(232, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int224 from int256, reverting on\n * overflow (when the input is less than smallest int224 or\n * greater than largest int224).\n *\n * Counterpart to Solidity's `int224` operator.\n *\n * Requirements:\n *\n * - input must fit into 224 bits\n */\n function toInt224(int256 value) internal pure returns (int224 downcasted) {\n downcasted = int224(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(224, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int216 from int256, reverting on\n * overflow (when the input is less than smallest int216 or\n * greater than largest int216).\n *\n * Counterpart to Solidity's `int216` operator.\n *\n * Requirements:\n *\n * - input must fit into 216 bits\n */\n function toInt216(int256 value) internal pure returns (int216 downcasted) {\n downcasted = int216(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(216, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int208 from int256, reverting on\n * overflow (when the input is less than smallest int208 or\n * greater than largest int208).\n *\n * Counterpart to Solidity's `int208` operator.\n *\n * Requirements:\n *\n * - input must fit into 208 bits\n */\n function toInt208(int256 value) internal pure returns (int208 downcasted) {\n downcasted = int208(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(208, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int200 from int256, reverting on\n * overflow (when the input is less than smallest int200 or\n * greater than largest int200).\n *\n * Counterpart to Solidity's `int200` operator.\n *\n * Requirements:\n *\n * - input must fit into 200 bits\n */\n function toInt200(int256 value) internal pure returns (int200 downcasted) {\n downcasted = int200(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(200, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int192 from int256, reverting on\n * overflow (when the input is less than smallest int192 or\n * greater than largest int192).\n *\n * Counterpart to Solidity's `int192` operator.\n *\n * Requirements:\n *\n * - input must fit into 192 bits\n */\n function toInt192(int256 value) internal pure returns (int192 downcasted) {\n downcasted = int192(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(192, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int184 from int256, reverting on\n * overflow (when the input is less than smallest int184 or\n * greater than largest int184).\n *\n * Counterpart to Solidity's `int184` operator.\n *\n * Requirements:\n *\n * - input must fit into 184 bits\n */\n function toInt184(int256 value) internal pure returns (int184 downcasted) {\n downcasted = int184(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(184, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int176 from int256, reverting on\n * overflow (when the input is less than smallest int176 or\n * greater than largest int176).\n *\n * Counterpart to Solidity's `int176` operator.\n *\n * Requirements:\n *\n * - input must fit into 176 bits\n */\n function toInt176(int256 value) internal pure returns (int176 downcasted) {\n downcasted = int176(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(176, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int168 from int256, reverting on\n * overflow (when the input is less than smallest int168 or\n * greater than largest int168).\n *\n * Counterpart to Solidity's `int168` operator.\n *\n * Requirements:\n *\n * - input must fit into 168 bits\n */\n function toInt168(int256 value) internal pure returns (int168 downcasted) {\n downcasted = int168(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(168, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int160 from int256, reverting on\n * overflow (when the input is less than smallest int160 or\n * greater than largest int160).\n *\n * Counterpart to Solidity's `int160` operator.\n *\n * Requirements:\n *\n * - input must fit into 160 bits\n */\n function toInt160(int256 value) internal pure returns (int160 downcasted) {\n downcasted = int160(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(160, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int152 from int256, reverting on\n * overflow (when the input is less than smallest int152 or\n * greater than largest int152).\n *\n * Counterpart to Solidity's `int152` operator.\n *\n * Requirements:\n *\n * - input must fit into 152 bits\n */\n function toInt152(int256 value) internal pure returns (int152 downcasted) {\n downcasted = int152(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(152, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int144 from int256, reverting on\n * overflow (when the input is less than smallest int144 or\n * greater than largest int144).\n *\n * Counterpart to Solidity's `int144` operator.\n *\n * Requirements:\n *\n * - input must fit into 144 bits\n */\n function toInt144(int256 value) internal pure returns (int144 downcasted) {\n downcasted = int144(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(144, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int136 from int256, reverting on\n * overflow (when the input is less than smallest int136 or\n * greater than largest int136).\n *\n * Counterpart to Solidity's `int136` operator.\n *\n * Requirements:\n *\n * - input must fit into 136 bits\n */\n function toInt136(int256 value) internal pure returns (int136 downcasted) {\n downcasted = int136(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(136, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int128 from int256, reverting on\n * overflow (when the input is less than smallest int128 or\n * greater than largest int128).\n *\n * Counterpart to Solidity's `int128` operator.\n *\n * Requirements:\n *\n * - input must fit into 128 bits\n */\n function toInt128(int256 value) internal pure returns (int128 downcasted) {\n downcasted = int128(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(128, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int120 from int256, reverting on\n * overflow (when the input is less than smallest int120 or\n * greater than largest int120).\n *\n * Counterpart to Solidity's `int120` operator.\n *\n * Requirements:\n *\n * - input must fit into 120 bits\n */\n function toInt120(int256 value) internal pure returns (int120 downcasted) {\n downcasted = int120(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(120, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int112 from int256, reverting on\n * overflow (when the input is less than smallest int112 or\n * greater than largest int112).\n *\n * Counterpart to Solidity's `int112` operator.\n *\n * Requirements:\n *\n * - input must fit into 112 bits\n */\n function toInt112(int256 value) internal pure returns (int112 downcasted) {\n downcasted = int112(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(112, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int104 from int256, reverting on\n * overflow (when the input is less than smallest int104 or\n * greater than largest int104).\n *\n * Counterpart to Solidity's `int104` operator.\n *\n * Requirements:\n *\n * - input must fit into 104 bits\n */\n function toInt104(int256 value) internal pure returns (int104 downcasted) {\n downcasted = int104(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(104, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int96 from int256, reverting on\n * overflow (when the input is less than smallest int96 or\n * greater than largest int96).\n *\n * Counterpart to Solidity's `int96` operator.\n *\n * Requirements:\n *\n * - input must fit into 96 bits\n */\n function toInt96(int256 value) internal pure returns (int96 downcasted) {\n downcasted = int96(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(96, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int88 from int256, reverting on\n * overflow (when the input is less than smallest int88 or\n * greater than largest int88).\n *\n * Counterpart to Solidity's `int88` operator.\n *\n * Requirements:\n *\n * - input must fit into 88 bits\n */\n function toInt88(int256 value) internal pure returns (int88 downcasted) {\n downcasted = int88(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(88, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int80 from int256, reverting on\n * overflow (when the input is less than smallest int80 or\n * greater than largest int80).\n *\n * Counterpart to Solidity's `int80` operator.\n *\n * Requirements:\n *\n * - input must fit into 80 bits\n */\n function toInt80(int256 value) internal pure returns (int80 downcasted) {\n downcasted = int80(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(80, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int72 from int256, reverting on\n * overflow (when the input is less than smallest int72 or\n * greater than largest int72).\n *\n * Counterpart to Solidity's `int72` operator.\n *\n * Requirements:\n *\n * - input must fit into 72 bits\n */\n function toInt72(int256 value) internal pure returns (int72 downcasted) {\n downcasted = int72(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(72, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int64 from int256, reverting on\n * overflow (when the input is less than smallest int64 or\n * greater than largest int64).\n *\n * Counterpart to Solidity's `int64` operator.\n *\n * Requirements:\n *\n * - input must fit into 64 bits\n */\n function toInt64(int256 value) internal pure returns (int64 downcasted) {\n downcasted = int64(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(64, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int56 from int256, reverting on\n * overflow (when the input is less than smallest int56 or\n * greater than largest int56).\n *\n * Counterpart to Solidity's `int56` operator.\n *\n * Requirements:\n *\n * - input must fit into 56 bits\n */\n function toInt56(int256 value) internal pure returns (int56 downcasted) {\n downcasted = int56(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(56, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int48 from int256, reverting on\n * overflow (when the input is less than smallest int48 or\n * greater than largest int48).\n *\n * Counterpart to Solidity's `int48` operator.\n *\n * Requirements:\n *\n * - input must fit into 48 bits\n */\n function toInt48(int256 value) internal pure returns (int48 downcasted) {\n downcasted = int48(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(48, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int40 from int256, reverting on\n * overflow (when the input is less than smallest int40 or\n * greater than largest int40).\n *\n * Counterpart to Solidity's `int40` operator.\n *\n * Requirements:\n *\n * - input must fit into 40 bits\n */\n function toInt40(int256 value) internal pure returns (int40 downcasted) {\n downcasted = int40(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(40, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int32 from int256, reverting on\n * overflow (when the input is less than smallest int32 or\n * greater than largest int32).\n *\n * Counterpart to Solidity's `int32` operator.\n *\n * Requirements:\n *\n * - input must fit into 32 bits\n */\n function toInt32(int256 value) internal pure returns (int32 downcasted) {\n downcasted = int32(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(32, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int24 from int256, reverting on\n * overflow (when the input is less than smallest int24 or\n * greater than largest int24).\n *\n * Counterpart to Solidity's `int24` operator.\n *\n * Requirements:\n *\n * - input must fit into 24 bits\n */\n function toInt24(int256 value) internal pure returns (int24 downcasted) {\n downcasted = int24(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(24, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int16 from int256, reverting on\n * overflow (when the input is less than smallest int16 or\n * greater than largest int16).\n *\n * Counterpart to Solidity's `int16` operator.\n *\n * Requirements:\n *\n * - input must fit into 16 bits\n */\n function toInt16(int256 value) internal pure returns (int16 downcasted) {\n downcasted = int16(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(16, value);\n }\n }\n\n /**\n * @dev Returns the downcasted int8 from int256, reverting on\n * overflow (when the input is less than smallest int8 or\n * greater than largest int8).\n *\n * Counterpart to Solidity's `int8` operator.\n *\n * Requirements:\n *\n * - input must fit into 8 bits\n */\n function toInt8(int256 value) internal pure returns (int8 downcasted) {\n downcasted = int8(value);\n if (downcasted != value) {\n revert SafeCastOverflowedIntDowncast(8, value);\n }\n }\n\n /**\n * @dev Converts an unsigned uint256 into a signed int256.\n *\n * Requirements:\n *\n * - input must be less than or equal to maxInt256.\n */\n function toInt256(uint256 value) internal pure returns (int256) {\n // Note: Unsafe cast below is okay because `type(int256).max` is guaranteed to be positive\n if (value > uint256(type(int256).max)) {\n revert SafeCastOverflowedUintToInt(value);\n }\n return int256(value);\n }\n\n /**\n * @dev Cast a boolean (false or true) to a uint256 (0 or 1) with no jump.\n */\n function toUint(bool b) internal pure returns (uint256 u) {\n assembly (\"memory-safe\") {\n u := iszero(iszero(b))\n }\n }\n}\n" + }, + "@openzeppelin/contracts/utils/math/SignedMath.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SignedMath.sol)\n\npragma solidity ^0.8.20;\n\nimport {SafeCast} from \"./SafeCast.sol\";\n\n/**\n * @dev Standard signed math utilities missing in the Solidity language.\n */\nlibrary SignedMath {\n /**\n * @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.\n *\n * IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\n * However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute\n * one branch when needed, making this function more expensive.\n */\n function ternary(bool condition, int256 a, int256 b) internal pure returns (int256) {\n unchecked {\n // branchless ternary works because:\n // b ^ (a ^ b) == a\n // b ^ 0 == b\n return b ^ ((a ^ b) * int256(SafeCast.toUint(condition)));\n }\n }\n\n /**\n * @dev Returns the largest of two signed numbers.\n */\n function max(int256 a, int256 b) internal pure returns (int256) {\n return ternary(a > b, a, b);\n }\n\n /**\n * @dev Returns the smallest of two signed numbers.\n */\n function min(int256 a, int256 b) internal pure returns (int256) {\n return ternary(a < b, a, b);\n }\n\n /**\n * @dev Returns the average of two signed numbers without overflow.\n * The result is rounded towards zero.\n */\n function average(int256 a, int256 b) internal pure returns (int256) {\n // Formula from the book \"Hacker's Delight\"\n int256 x = (a & b) + ((a ^ b) >> 1);\n return x + (int256(uint256(x) >> 255) & (a ^ b));\n }\n\n /**\n * @dev Returns the absolute unsigned value of a signed value.\n */\n function abs(int256 n) internal pure returns (uint256) {\n unchecked {\n // Formula from the \"Bit Twiddling Hacks\" by Sean Eron Anderson.\n // Since `n` is a signed integer, the generated bytecode will use the SAR opcode to perform the right shift,\n // taking advantage of the most significant (or \"sign\" bit) in two's complement representation.\n // This opcode adds new most significant bits set to the value of the previous most significant bit. As a result,\n // the mask will either be `bytes32(0)` (if n is positive) or `~bytes32(0)` (if n is negative).\n int256 mask = n >> 255;\n\n // A `bytes32(0)` mask leaves the input unchanged, while a `~bytes32(0)` mask complements it.\n return uint256((n + mask) ^ mask);\n }\n }\n}\n" + }, + "@openzeppelin/contracts/utils/Panic.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Panic.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Helper library for emitting standardized panic codes.\n *\n * ```solidity\n * contract Example {\n * using Panic for uint256;\n *\n * // Use any of the declared internal constants\n * function foo() { Panic.GENERIC.panic(); }\n *\n * // Alternatively\n * function foo() { Panic.panic(Panic.GENERIC); }\n * }\n * ```\n *\n * Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil].\n *\n * _Available since v5.1._\n */\n// slither-disable-next-line unused-state\nlibrary Panic {\n /// @dev generic / unspecified error\n uint256 internal constant GENERIC = 0x00;\n /// @dev used by the assert() builtin\n uint256 internal constant ASSERT = 0x01;\n /// @dev arithmetic underflow or overflow\n uint256 internal constant UNDER_OVERFLOW = 0x11;\n /// @dev division or modulo by zero\n uint256 internal constant DIVISION_BY_ZERO = 0x12;\n /// @dev enum conversion error\n uint256 internal constant ENUM_CONVERSION_ERROR = 0x21;\n /// @dev invalid encoding in storage\n uint256 internal constant STORAGE_ENCODING_ERROR = 0x22;\n /// @dev empty array pop\n uint256 internal constant EMPTY_ARRAY_POP = 0x31;\n /// @dev array out of bounds access\n uint256 internal constant ARRAY_OUT_OF_BOUNDS = 0x32;\n /// @dev resource error (too large allocation or too large array)\n uint256 internal constant RESOURCE_ERROR = 0x41;\n /// @dev calling invalid internal function\n uint256 internal constant INVALID_INTERNAL_FUNCTION = 0x51;\n\n /// @dev Reverts with a panic code. Recommended to use with\n /// the internal constants with predefined codes.\n function panic(uint256 code) internal pure {\n assembly (\"memory-safe\") {\n mstore(0x00, 0x4e487b71)\n mstore(0x20, code)\n revert(0x1c, 0x24)\n }\n }\n}\n" + }, + "@openzeppelin/contracts/utils/StorageSlot.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/StorageSlot.sol)\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC-1967 implementation slot:\n * ```solidity\n * contract ERC1967 {\n * // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.\n * bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n * function _getImplementation() internal view returns (address) {\n * return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n * }\n *\n * function _setImplementation(address newImplementation) internal {\n * require(newImplementation.code.length > 0);\n * StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n * }\n * }\n * ```\n *\n * TIP: Consider using this library along with {SlotDerivation}.\n */\nlibrary StorageSlot {\n struct AddressSlot {\n address value;\n }\n\n struct BooleanSlot {\n bool value;\n }\n\n struct Bytes32Slot {\n bytes32 value;\n }\n\n struct Uint256Slot {\n uint256 value;\n }\n\n struct Int256Slot {\n int256 value;\n }\n\n struct StringSlot {\n string value;\n }\n\n struct BytesSlot {\n bytes value;\n }\n\n /**\n * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n */\n function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n assembly (\"memory-safe\") {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns a `BooleanSlot` with member `value` located at `slot`.\n */\n function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n assembly (\"memory-safe\") {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns a `Bytes32Slot` with member `value` located at `slot`.\n */\n function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n assembly (\"memory-safe\") {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns a `Uint256Slot` with member `value` located at `slot`.\n */\n function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n assembly (\"memory-safe\") {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns a `Int256Slot` with member `value` located at `slot`.\n */\n function getInt256Slot(bytes32 slot) internal pure returns (Int256Slot storage r) {\n assembly (\"memory-safe\") {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns a `StringSlot` with member `value` located at `slot`.\n */\n function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\n assembly (\"memory-safe\") {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\n */\n function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\n assembly (\"memory-safe\") {\n r.slot := store.slot\n }\n }\n\n /**\n * @dev Returns a `BytesSlot` with member `value` located at `slot`.\n */\n function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\n assembly (\"memory-safe\") {\n r.slot := slot\n }\n }\n\n /**\n * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\n */\n function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\n assembly (\"memory-safe\") {\n r.slot := store.slot\n }\n }\n}\n" + }, + "@openzeppelin/contracts/utils/Strings.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/Strings.sol)\n\npragma solidity ^0.8.20;\n\nimport {Math} from \"./math/Math.sol\";\nimport {SignedMath} from \"./math/SignedMath.sol\";\n\n/**\n * @dev String operations.\n */\nlibrary Strings {\n bytes16 private constant HEX_DIGITS = \"0123456789abcdef\";\n uint8 private constant ADDRESS_LENGTH = 20;\n\n /**\n * @dev The `value` string doesn't fit in the specified `length`.\n */\n error StringsInsufficientHexLength(uint256 value, uint256 length);\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` decimal representation.\n */\n function toString(uint256 value) internal pure returns (string memory) {\n unchecked {\n uint256 length = Math.log10(value) + 1;\n string memory buffer = new string(length);\n uint256 ptr;\n assembly (\"memory-safe\") {\n ptr := add(buffer, add(32, length))\n }\n while (true) {\n ptr--;\n assembly (\"memory-safe\") {\n mstore8(ptr, byte(mod(value, 10), HEX_DIGITS))\n }\n value /= 10;\n if (value == 0) break;\n }\n return buffer;\n }\n }\n\n /**\n * @dev Converts a `int256` to its ASCII `string` decimal representation.\n */\n function toStringSigned(int256 value) internal pure returns (string memory) {\n return string.concat(value < 0 ? \"-\" : \"\", toString(SignedMath.abs(value)));\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\n */\n function toHexString(uint256 value) internal pure returns (string memory) {\n unchecked {\n return toHexString(value, Math.log256(value) + 1);\n }\n }\n\n /**\n * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\n */\n function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\n uint256 localValue = value;\n bytes memory buffer = new bytes(2 * length + 2);\n buffer[0] = \"0\";\n buffer[1] = \"x\";\n for (uint256 i = 2 * length + 1; i > 1; --i) {\n buffer[i] = HEX_DIGITS[localValue & 0xf];\n localValue >>= 4;\n }\n if (localValue != 0) {\n revert StringsInsufficientHexLength(value, length);\n }\n return string(buffer);\n }\n\n /**\n * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n * representation.\n */\n function toHexString(address addr) internal pure returns (string memory) {\n return toHexString(uint256(uint160(addr)), ADDRESS_LENGTH);\n }\n\n /**\n * @dev Converts an `address` with fixed length of 20 bytes to its checksummed ASCII `string` hexadecimal\n * representation, according to EIP-55.\n */\n function toChecksumHexString(address addr) internal pure returns (string memory) {\n bytes memory buffer = bytes(toHexString(addr));\n\n // hash the hex part of buffer (skip length + 2 bytes, length 40)\n uint256 hashValue;\n assembly (\"memory-safe\") {\n hashValue := shr(96, keccak256(add(buffer, 0x22), 40))\n }\n\n for (uint256 i = 41; i > 1; --i) {\n // possible values for buffer[i] are 48 (0) to 57 (9) and 97 (a) to 102 (f)\n if (hashValue & 0xf > 7 && uint8(buffer[i]) > 96) {\n // case shift by xoring with 0x20\n buffer[i] ^= 0x20;\n }\n hashValue >>= 4;\n }\n return string(buffer);\n }\n\n /**\n * @dev Returns true if the two strings are equal.\n */\n function equal(string memory a, string memory b) internal pure returns (bool) {\n return bytes(a).length == bytes(b).length && keccak256(bytes(a)) == keccak256(bytes(b));\n }\n}\n" + }, + "@openzeppelin/contracts/utils/structs/EnumerableSet.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/structs/EnumerableSet.sol)\n// This file was procedurally generated from scripts/generate/templates/EnumerableSet.js.\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Library for managing\n * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n * types.\n *\n * Sets have the following properties:\n *\n * - Elements are added, removed, and checked for existence in constant time\n * (O(1)).\n * - Elements are enumerated in O(n). No guarantees are made on the ordering.\n *\n * ```solidity\n * contract Example {\n * // Add the library methods\n * using EnumerableSet for EnumerableSet.AddressSet;\n *\n * // Declare a set state variable\n * EnumerableSet.AddressSet private mySet;\n * }\n * ```\n *\n * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\n * and `uint256` (`UintSet`) are supported.\n *\n * [WARNING]\n * ====\n * Trying to delete such a structure from storage will likely result in data corruption, rendering the structure\n * unusable.\n * See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.\n *\n * In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an\n * array of EnumerableSet.\n * ====\n */\nlibrary EnumerableSet {\n // To implement this library for multiple types with as little code\n // repetition as possible, we write it in terms of a generic Set type with\n // bytes32 values.\n // The Set implementation uses private functions, and user-facing\n // implementations (such as AddressSet) are just wrappers around the\n // underlying Set.\n // This means that we can only create new EnumerableSets for types that fit\n // in bytes32.\n\n struct Set {\n // Storage of set values\n bytes32[] _values;\n // Position is the index of the value in the `values` array plus 1.\n // Position 0 is used to mean a value is not in the set.\n mapping(bytes32 value => uint256) _positions;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function _add(Set storage set, bytes32 value) private returns (bool) {\n if (!_contains(set, value)) {\n set._values.push(value);\n // The value is stored at length-1, but we add 1 to all indexes\n // and use 0 as a sentinel value\n set._positions[value] = set._values.length;\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function _remove(Set storage set, bytes32 value) private returns (bool) {\n // We cache the value's position to prevent multiple reads from the same storage slot\n uint256 position = set._positions[value];\n\n if (position != 0) {\n // Equivalent to contains(set, value)\n // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\n // the array, and then remove the last element (sometimes called as 'swap and pop').\n // This modifies the order of the array, as noted in {at}.\n\n uint256 valueIndex = position - 1;\n uint256 lastIndex = set._values.length - 1;\n\n if (valueIndex != lastIndex) {\n bytes32 lastValue = set._values[lastIndex];\n\n // Move the lastValue to the index where the value to delete is\n set._values[valueIndex] = lastValue;\n // Update the tracked position of the lastValue (that was just moved)\n set._positions[lastValue] = position;\n }\n\n // Delete the slot where the moved value was stored\n set._values.pop();\n\n // Delete the tracked position for the deleted slot\n delete set._positions[value];\n\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function _contains(Set storage set, bytes32 value) private view returns (bool) {\n return set._positions[value] != 0;\n }\n\n /**\n * @dev Returns the number of values on the set. O(1).\n */\n function _length(Set storage set) private view returns (uint256) {\n return set._values.length;\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function _at(Set storage set, uint256 index) private view returns (bytes32) {\n return set._values[index];\n }\n\n /**\n * @dev Return the entire set in an array\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function _values(Set storage set) private view returns (bytes32[] memory) {\n return set._values;\n }\n\n // Bytes32Set\n\n struct Bytes32Set {\n Set _inner;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n return _add(set._inner, value);\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n return _remove(set._inner, value);\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {\n return _contains(set._inner, value);\n }\n\n /**\n * @dev Returns the number of values in the set. O(1).\n */\n function length(Bytes32Set storage set) internal view returns (uint256) {\n return _length(set._inner);\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\n return _at(set._inner, index);\n }\n\n /**\n * @dev Return the entire set in an array\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function values(Bytes32Set storage set) internal view returns (bytes32[] memory) {\n bytes32[] memory store = _values(set._inner);\n bytes32[] memory result;\n\n assembly (\"memory-safe\") {\n result := store\n }\n\n return result;\n }\n\n // AddressSet\n\n struct AddressSet {\n Set _inner;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function add(AddressSet storage set, address value) internal returns (bool) {\n return _add(set._inner, bytes32(uint256(uint160(value))));\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function remove(AddressSet storage set, address value) internal returns (bool) {\n return _remove(set._inner, bytes32(uint256(uint160(value))));\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(AddressSet storage set, address value) internal view returns (bool) {\n return _contains(set._inner, bytes32(uint256(uint160(value))));\n }\n\n /**\n * @dev Returns the number of values in the set. O(1).\n */\n function length(AddressSet storage set) internal view returns (uint256) {\n return _length(set._inner);\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(AddressSet storage set, uint256 index) internal view returns (address) {\n return address(uint160(uint256(_at(set._inner, index))));\n }\n\n /**\n * @dev Return the entire set in an array\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function values(AddressSet storage set) internal view returns (address[] memory) {\n bytes32[] memory store = _values(set._inner);\n address[] memory result;\n\n assembly (\"memory-safe\") {\n result := store\n }\n\n return result;\n }\n\n // UintSet\n\n struct UintSet {\n Set _inner;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function add(UintSet storage set, uint256 value) internal returns (bool) {\n return _add(set._inner, bytes32(value));\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function remove(UintSet storage set, uint256 value) internal returns (bool) {\n return _remove(set._inner, bytes32(value));\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(UintSet storage set, uint256 value) internal view returns (bool) {\n return _contains(set._inner, bytes32(value));\n }\n\n /**\n * @dev Returns the number of values in the set. O(1).\n */\n function length(UintSet storage set) internal view returns (uint256) {\n return _length(set._inner);\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(UintSet storage set, uint256 index) internal view returns (uint256) {\n return uint256(_at(set._inner, index));\n }\n\n /**\n * @dev Return the entire set in an array\n *\n * WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n * to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n * this function has an unbounded cost, and using it as part of a state-changing function may render the function\n * uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\n */\n function values(UintSet storage set) internal view returns (uint256[] memory) {\n bytes32[] memory store = _values(set._inner);\n uint256[] memory result;\n\n assembly (\"memory-safe\") {\n result := store\n }\n\n return result;\n }\n}\n" + }, + "contracts/account/ChequeManager.sol": { + "content": "// SPDX-License-Identifier: UNLICENSED\n//\n// Camino Messenger Cheque Manager\n\npragma solidity 0.8.24;\n\nimport { Initializable } from \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport { ECDSA } from \"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\";\nimport { Address } from \"@openzeppelin/contracts/utils/Address.sol\";\nimport { ReentrancyGuardUpgradeable } from \"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\";\n\n// Manager Interface\nimport { ICMAccountManager } from \"../manager/ICMAccountManager.sol\";\n\n/**\n * @notice ChequeManager manages, verifies, and cashes in the messenger cheques.\n *\n * EIP712 Domain name & version:\n * DOMAIN_NAME = \"CaminoMessenger\"\n * DOMAIN_VERSION= \"1\"\n */\nabstract contract ChequeManager is Initializable, ReentrancyGuardUpgradeable {\n using ECDSA for bytes32;\n using Address for address payable;\n\n /***************************************************\n * CONSTANTS *\n ***************************************************/\n\n /**\n * @notice Pre-computed hash of the MessengerCheque type\n *\n * ```\n * keccak256(\n * \"MessengerCheque(address fromCMAccount,address toCMAccount,address toBot,uint256 counter,uint256 amount,uint256 createdAt,uint256 expiresAt)\"\n * );\n * ```\n */\n bytes32 public constant MESSENGER_CHEQUE_TYPEHASH =\n 0x87b38f131334165ac2b361f08966c9fcff3a953fa7d9d9c2861b7f0b50445bcb;\n\n /**\n * @notice Pre-computed hash of the EIP712Domain type\n *\n * ```\n * keccak256(\"EIP712Domain(string name,string version,uint256 chainId)\");\n * ```\n */\n bytes32 public constant DOMAIN_TYPEHASH = 0xc2f8787176b8ac6bf7215b4adcc1e069bf4ab82d9ab1df05a57a91d425935b6e;\n\n /***************************************************\n * STRUCTS *\n ***************************************************/\n\n /**\n * @notice Struct representing a Messenger Cheque.\n */\n struct MessengerCheque {\n address fromCMAccount; // CM Account that will pay the amount\n address toCMAccount; // CM Account that will receive the amount\n address toBot; // The address of the bot that receives the cheque\n uint256 counter; // This should be increased with every cheque\n uint256 amount; // The amount to be transferred\n uint256 createdAt; // Creation timestamp of the cheque\n uint256 expiresAt; // Expiration timestamp of the cheque\n }\n\n /**\n * @notice Struct for tracking the counter, amount and timestamps used for the last\n * cash-in operation.\n */\n struct LastCashIn {\n uint256 counter;\n uint256 amount;\n uint256 createdAt;\n uint256 expiresAt;\n }\n\n /***************************************************\n * STORAGE *\n ***************************************************/\n\n /// @custom:storage-location erc7201:camino.messenger.storage.ChequeManager\n struct ChequeManagerStorage {\n /**\n * @notice Mapping to track the cash-in details for each pair of fromBot and toBot addresses.\n */\n mapping(address fromBot => mapping(address toBot => LastCashIn)) _lastCashIns;\n /**\n * @notice Total amount of cheques that have been cashed in.\n */\n uint256 _totalChequePayments;\n /**\n * @notice EIP712 Domain Separator used for signature verification. This variable includes\n * dynamic chain ID, hence it is not a constant.\n */\n bytes32 _domainSeparator;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"camino.messenger.storage.ChequeManager\")) - 1)) & ~bytes32(uint256(0xff));\n bytes32 private constant ChequeManagerStorageLocation =\n 0x175f7e400d42af44d9ebd24e9efee8a2c4ed78ddf46a83e51a493ae382c87600;\n\n function _getChequeManagerStorage() private pure returns (ChequeManagerStorage storage $) {\n assembly {\n $.slot := ChequeManagerStorageLocation\n }\n }\n\n /***************************************************\n * EVENTS *\n ***************************************************/\n\n /**\n * @notice Cash-in event. Emitted when a cheque is cashed in.\n */\n event ChequeCashedIn(\n address indexed fromCMAccount,\n address indexed toCMAccount,\n address fromBot,\n address toBot,\n uint256 counter,\n uint256 amount,\n uint256 paidChequeAmount,\n uint256 paidDeveloperFee\n );\n\n /***************************************************\n * ERRORS *\n ***************************************************/\n\n /**\n * @notice Invalid CM Account. Cheque's `fromCMAccount` has to be for `address(this)`.\n */\n error InvalidFromCMAccount(address fromCMAccount);\n\n /**\n * @notice `toCMAccount` address is not a registered CMAccount on the manager.\n */\n error InvalidToCMAccount(address toCMAccount);\n\n /**\n * @notice The signer is not allowed to sign cheques\n */\n error NotAllowedToSignCheques(address signer);\n\n /**\n * @notice Invalid counter for the cheque. The counter on the cheque is not greater then the last\n * recorded counter.\n */\n error InvalidCounter(uint256 chequeCounter, uint256 lastCounter);\n\n /**\n * @notice Last recorded amount is lower than the cheque's amount.\n */\n error InvalidAmount(uint256 chequeAmount, uint256 lastAmount);\n\n /**\n * @notice The cheque is expired at the given timestamp.\n */\n error ChequeExpired(uint256 expiresAt);\n\n /***************************************************\n * FUNCS *\n ***************************************************/\n\n /**\n * @notice Initializes the contract, setting the domain separator with EIP712 domain type hash and\n * the domain.\n *\n * EIP712Domain {\n * string name;\n * string version;\n * uint256 chainid;\n * }\n */\n function __ChequeManager_init() internal onlyInitializing {\n ChequeManagerStorage storage $ = _getChequeManagerStorage();\n\n $._domainSeparator = keccak256(\n abi.encode(DOMAIN_TYPEHASH, keccak256(\"CaminoMessenger\"), keccak256(\"1\"), block.chainid)\n );\n }\n\n /**\n * @notice Returns the domain separator.\n */\n function getDomainSeparator() public view returns (bytes32) {\n ChequeManagerStorage storage $ = _getChequeManagerStorage();\n return $._domainSeparator;\n }\n\n /**\n * @notice Returns the hash of the `MessengerCheque` encoded with\n * `MESSENGER_CHEQUE_TYPEHASH`.\n */\n function hashMessengerCheque(\n address fromCMAccount,\n address toCMAccount,\n address toBot,\n uint256 counter,\n uint256 amount,\n uint256 createdAt,\n uint256 expiresAt\n ) public pure returns (bytes32) {\n return\n keccak256(\n abi.encode(\n MESSENGER_CHEQUE_TYPEHASH,\n fromCMAccount,\n toCMAccount,\n toBot,\n counter,\n amount,\n createdAt,\n expiresAt\n )\n );\n }\n\n /**\n * @notice Returns the hash of the typed data (cheque) with prefix and domain\n * separator.\n */\n function hashTypedDataV4(\n address fromCMAccount,\n address toCMAccount,\n address toBot,\n uint256 counter,\n uint256 amount,\n uint256 createdAt,\n uint256 expiresAt\n ) public view returns (bytes32) {\n return\n keccak256(\n abi.encodePacked(\n \"\\x19\\x01\",\n getDomainSeparator(),\n hashMessengerCheque(fromCMAccount, toCMAccount, toBot, counter, amount, createdAt, expiresAt)\n )\n );\n }\n\n /**\n * @notice Returns the signer for the given cheque and signature. Uses {ECDSA} library to\n * recover the signer.\n */\n function recoverSigner(\n address fromCMAccount,\n address toCMAccount,\n address toBot,\n uint256 counter,\n uint256 amount,\n uint256 createdAt,\n uint256 expiresAt,\n bytes memory signature\n ) internal view returns (address signer) {\n bytes32 digest = hashTypedDataV4(fromCMAccount, toCMAccount, toBot, counter, amount, createdAt, expiresAt);\n signer = digest.recover(signature);\n return signer;\n }\n\n /**\n * @notice Returns signer and payment amount if the signature is valid for the\n * given cheque, the signer is an allowed bot, cheque counter and amounts are\n * valid according to last cash ins.\n *\n * Please be aware that `cheque.amount < paymentAmount` for a valid cheque as\n * long as the last amount is lower than the cheque amount. Only the difference\n * between the cheque amount and the last recorded amount is paid.\n */\n function verifyCheque(\n address fromCMAccount,\n address toCMAccount,\n address toBot,\n uint256 counter,\n uint256 amount,\n uint256 createdAt,\n uint256 expiresAt,\n bytes memory signature\n ) public view returns (address signer, uint256 paymentAmount) {\n // Revert if cheque is not for this contract\n if (fromCMAccount != address(this)) {\n revert InvalidFromCMAccount(fromCMAccount);\n }\n\n // Revert if cheque payee is not a CM account\n if (!ICMAccountManager(getManagerAddress()).isCMAccount(toCMAccount)) {\n revert InvalidToCMAccount(toCMAccount);\n }\n\n // Revert if the cheque is expired\n if (block.timestamp >= expiresAt) {\n revert ChequeExpired(expiresAt);\n }\n\n // Recover signer\n signer = recoverSigner(fromCMAccount, toCMAccount, toBot, counter, amount, createdAt, expiresAt, signature);\n\n // Check if the signer is an allowed bot.\n if (!isBotAllowed(signer)) {\n revert NotAllowedToSignCheques(signer);\n }\n\n ChequeManagerStorage storage $ = _getChequeManagerStorage();\n LastCashIn storage lastCashIn = $._lastCashIns[signer][toBot];\n\n // Revert if the cheque amount is lower then the last recorded amount\n if (amount < lastCashIn.amount) {\n revert InvalidAmount(amount, lastCashIn.amount);\n }\n\n // Ensure the current cheque's counter is greater than the last recorded one\n if (counter <= lastCashIn.counter) {\n revert InvalidCounter(counter, lastCashIn.counter);\n }\n\n // Everything is valid. Calculate payment amount.\n paymentAmount = amount - lastCashIn.amount;\n\n return (signer, paymentAmount);\n }\n\n /**\n * @notice Cash in a cheque by verifying it and paying the difference between the\n * cheque amount and the last recorded amount for the signer and `toBot` pair.\n *\n * A percentage of the amount is also paid to the developer wallet.\n *\n * @param fromCMAccount The CM Account that will pay the amount. This contract.\n * @param toCMAccount The CM Account that will receive the amount.\n * @param toBot The address of the bot that received the cheque.\n * @param counter The counter of the cheque. Should be increased with every\n * cheque.\n * @param amount The amount on the cheque. Should be greater then or equal the\n * last recorded amount.\n * @param createdAt The creation timestamp of the cheque.\n * @param expiresAt The expiration timestamp of the cheque.\n * @param signature The signature of the cheque.\n */\n function cashInCheque(\n address fromCMAccount,\n address toCMAccount,\n address toBot,\n uint256 counter,\n uint256 amount,\n uint256 createdAt,\n uint256 expiresAt,\n bytes memory signature\n ) public nonReentrant {\n // Verify the cheque and get the signer and payment amount\n (address signer, uint256 paymentAmount) = verifyCheque(\n fromCMAccount,\n toCMAccount,\n toBot,\n counter,\n amount,\n createdAt,\n expiresAt,\n signature\n );\n\n // If we didn't revert in the verifyCheque above, the cheque is valid.\n // Update the last cash ins.\n setLastCashIn(signer, toBot, counter, amount, createdAt, expiresAt);\n\n // Calculate developer fee\n // For amounts lower then fee basis point, the developer fee is 0.\n uint256 developerFee = (paymentAmount * ICMAccountManager(getManagerAddress()).getDeveloperFeeBp()) / 10000;\n\n // Subtract developer fee from payment amount\n uint256 chequePaymentAmount = paymentAmount - developerFee;\n\n // Update total cheque payments excluding cheques to the same account\n if (fromCMAccount != toCMAccount) {\n ChequeManagerStorage storage $ = _getChequeManagerStorage();\n $._totalChequePayments += paymentAmount;\n }\n\n // Transfer developer fee to the developer wallet\n payable(ICMAccountManager(getManagerAddress()).getDeveloperWallet()).sendValue(developerFee);\n\n // Transfer the cheque payment amount to the `toCMAccount`\n payable(toCMAccount).sendValue(chequePaymentAmount);\n\n // Emit cash-in event\n emit ChequeCashedIn(\n fromCMAccount,\n toCMAccount,\n signer, // fromBot\n toBot,\n counter,\n amount, // Amount of the cheque\n chequePaymentAmount, // Paid cheque amount to the `toCMAccount`\n developerFee // Paid developer fee (cut from the cheque amount)\n );\n }\n\n /**\n * @notice Returns last cash-in details for given `fromBot` & `toBot` pair.\n *\n * @param fromBot The address of the bot that sent the cheque.\n * @param toBot The address of the bot that received the cheque.\n *\n * Returns (lastCounter, lastAmount, lastCreatedAt, lastExpiresAt)\n *\n * @return lastCounter The last counter of the cheque.\n * @return lastAmount The last amount of the cheque.\n * @return lastCreatedAt The last creation timestamp of the cheque.\n * @return lastExpiresAt The last expiration timestamp of the cheque.\n */\n function getLastCashIn(\n address fromBot,\n address toBot\n ) public view returns (uint256 lastCounter, uint256 lastAmount, uint256 lastCreatedAt, uint256 lastExpiresAt) {\n ChequeManagerStorage storage $ = _getChequeManagerStorage();\n LastCashIn storage lastCashIn = $._lastCashIns[fromBot][toBot];\n return (lastCashIn.counter, lastCashIn.amount, lastCashIn.createdAt, lastCashIn.expiresAt);\n }\n\n /**\n * @notice Sets last cash-in for given `fromBot`, `toBot` pair.\n *\n * @param fromBot The address of the bot that sent the cheque.\n * @param toBot The address of the bot that received the cheque.\n * @param counter The counter of the cheque.\n * @param amount The amount of the cheque.\n * @param createdAt The creation timestamp of the cheque.\n * @param expiresAt The expiration timestamp of the cheque.\n */\n function setLastCashIn(\n address fromBot,\n address toBot,\n uint256 counter,\n uint256 amount,\n uint256 createdAt,\n uint256 expiresAt\n ) internal {\n ChequeManagerStorage storage $ = _getChequeManagerStorage();\n $._lastCashIns[fromBot][toBot] = LastCashIn(counter, amount, createdAt, expiresAt);\n }\n\n /**\n * @notice Returns total cheque payments. This is the sum of all cashed in cheques.\n *\n * @return totalChequePayments The total cheque payments made.\n */\n function getTotalChequePayments() public view returns (uint256) {\n ChequeManagerStorage storage $ = _getChequeManagerStorage();\n return $._totalChequePayments;\n }\n\n /***************************************************\n * ABSTRACT *\n ***************************************************/\n\n /**\n * @notice Abstract function to check if a bot is allowed to sign cheques. This\n * must be implemented by the inheriting contract.\n */\n function isBotAllowed(address bot) public view virtual returns (bool);\n\n /**\n * @notice Abstract function to get the manager address. This must be implemented\n * by the inheriting contract.\n */\n function getManagerAddress() public view virtual returns (address);\n}\n" + }, + "contracts/account/CMAccount.sol": { + "content": "// SPDX-License-Identifier: UNLICENSED\n//\n// Camino Messenger Account Implementation\n\npragma solidity 0.8.24;\n\nimport { ERC1967Proxy } from \"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\";\nimport { Initializable } from \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport { UUPSUpgradeable } from \"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\";\nimport { AccessControlEnumerableUpgradeable } from \"@openzeppelin/contracts-upgradeable/access/extensions/AccessControlEnumerableUpgradeable.sol\";\nimport { Address } from \"@openzeppelin/contracts/utils/Address.sol\";\nimport { SafeERC20, IERC20 } from \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\nimport { IERC721 } from \"@openzeppelin/contracts/token/ERC721/IERC721.sol\";\nimport { IERC721Receiver } from \"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\";\nimport { ERC1967Utils } from \"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\";\n\nimport { ICMAccountManager } from \"../manager/ICMAccountManager.sol\";\nimport { ChequeManager } from \"./ChequeManager.sol\";\nimport { BookingTokenOperator } from \"../booking-token/BookingTokenOperator.sol\";\nimport { PartnerConfiguration } from \"../partner/PartnerConfiguration.sol\";\nimport { GasMoneyManager } from \"./GasMoneyManager.sol\";\n\n/**\n * @title Camino Messenger Account\n * @notice A CM Account manages funds, minting/buying of booking tokens, provided\n * or wanted services, and multiple bots for distributors and suppliers on\n * Camino Messenger ecosystem.\n *\n * Registering bots is done by role based access control. Bot's with\n * `CHEQUE_OPERATOR_ROLE` can issue cheques to paid by the {CMAccount} contract.\n * Bot can also have `GAS_WITHDRAWER_ROLE` and `BOOKING_OPERATOR_ROLE`.\n *\n * `GAS_WITHDRAWER_ROLE` enables a bot to withdraw native coins (CAM) from the\n * contract to be used as gas money. This restricted with a `limit`\n * (wei/aCAM) and `period` (seconds) by the `BOT_ADMIN_ROLE`. Default starting\n * values are 10 CAM per 24 hours.\n *\n * `BOOKING_OPERATOR_ROLE` enables a bot to mint and buy Booking Tokens by\n * calling the corresponding functions on the {BookingToken} contract. The buy\n * operation pays the price of the Booking Token with the funds on the\n * {CMAccount} contract.\n *\n * @dev This contract uses UUPS style upgradeability. The authorization function\n * `_authorizeUpgrade(address)` can be called by the `UPGRADER_ROLE` and is\n * restricted to only upgrade to the implementation address registered on the\n * {CMAccountManager} contract.\n * @custom:security-contact https://r.xyz/program/camino-network\n */\ncontract CMAccount is\n Initializable,\n AccessControlEnumerableUpgradeable,\n UUPSUpgradeable,\n IERC721Receiver,\n ChequeManager,\n PartnerConfiguration,\n GasMoneyManager\n{\n using Address for address payable;\n using SafeERC20 for IERC20;\n\n /***************************************************\n * ROLES *\n ***************************************************/\n\n /**\n * @notice Upgrader role can upgrade the contract to a new implementation.\n */\n bytes32 public constant UPGRADER_ROLE = keccak256(\"UPGRADER_ROLE\");\n\n /**\n * @notice Bot admin role can add & remove bots and set gas money withdrawal\n * parameters.\n */\n bytes32 public constant BOT_ADMIN_ROLE = keccak256(\"BOT_ADMIN_ROLE\");\n\n /**\n * @notice Cheque operator role can issue cheques to be paid by this CMAccount\n * contract.\n */\n bytes32 public constant CHEQUE_OPERATOR_ROLE = keccak256(\"CHEQUE_OPERATOR_ROLE\");\n\n /**\n * @notice Gas withdrawer role can withdraw gas money from the contract. This is\n * intended to be used by the bots and is granted when `addMessengerBot` is\n * called.\n */\n bytes32 public constant GAS_WITHDRAWER_ROLE = keccak256(\"GAS_WITHDRAWER_ROLE\");\n\n /**\n * @notice Withdrawer role can withdraw funds from the contract.\n */\n bytes32 public constant WITHDRAWER_ROLE = keccak256(\"WITHDRAWER_ROLE\");\n\n /**\n * @notice Booking operator role can mint and buy booking tokens using the\n * functions on this contract. This is generally used by the bots. The\n * price for the booking token is paid by this contract.\n */\n bytes32 public constant BOOKING_OPERATOR_ROLE = keccak256(\"BOOKING_OPERATOR_ROLE\");\n\n /**\n * @notice Service admin role can add & remove supported & wanted services.\n */\n bytes32 public constant SERVICE_ADMIN_ROLE = keccak256(\"SERVICE_ADMIN_ROLE\");\n\n /***************************************************\n * STORAGE *\n ***************************************************/\n\n /// @custom:storage-location erc7201:camino.messenger.storage.CMAccount\n struct CMAccountStorage {\n /**\n * @dev Address of the CMAccountManager\n */\n address _manager;\n /**\n * @dev Address of the BookingToken contract\n */\n address _bookingToken;\n /**\n * @dev Prefund amount\n */\n uint256 _prefundAmount;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"camino.messenger.storage.CMAccount\")) - 1)) & ~bytes32(uint256(0xff));\n bytes32 private constant CMAccountStorageLocation =\n 0x0c7b73796c7cc89b9f849b9056a93200eba741881e57a1b03b9bedb2c0e07100;\n\n function _getCMAccountStorage() private pure returns (CMAccountStorage storage $) {\n assembly {\n $.slot := CMAccountStorageLocation\n }\n }\n\n /***************************************************\n * EVENTS *\n ***************************************************/\n\n /**\n * @notice CMAccount upgrade event. Emitted when the CMAccount implementation is upgraded.\n */\n event CMAccountUpgraded(address indexed oldImplementation, address indexed newImplementation);\n\n /**\n * @notice Deposit event, emitted when there is a new deposit\n */\n event Deposit(address indexed sender, uint256 amount);\n\n /**\n * @notice Withdraw event, emitted when there is a new withdrawal\n */\n event Withdraw(address indexed receiver, uint256 amount);\n\n /**\n * @notice Messenger bot added\n */\n event MessengerBotAdded(address indexed bot);\n\n /**\n * @notice Messenger bot removed\n */\n event MessengerBotRemoved(address indexed bot);\n\n // Partner Config Events\n\n event ServiceAdded(string indexed serviceName);\n event ServiceRemoved(string indexed serviceName);\n\n event WantedServiceAdded(string indexed serviceName);\n event WantedServiceRemoved(string indexed serviceName);\n\n event ServiceFeeUpdated(string indexed serviceName, uint256 fee);\n event ServiceRestrictedRateUpdated(string indexed serviceName, bool restrictedRate);\n\n event ServiceCapabilitiesUpdated(string indexed serviceName);\n event ServiceCapabilityAdded(string indexed serviceName, string capability);\n event ServiceCapabilityRemoved(string indexed serviceName, string capability);\n\n /***************************************************\n * ERRORS *\n ***************************************************/\n\n /**\n * @notice CMAccount implementation address does not match the one in the manager\n */\n error CMAccountImplementationMismatch(address latestImplementation, address newImplementation);\n\n /**\n * @notice New implementation is the same as the current implementation, no update needed\n */\n error CMAccountNoUpgradeNeeded(address oldImplementation, address newImplementation);\n\n /**\n * @notice Error to revert with if the prefund is not spent yet\n */\n error PrefundNotSpentYet(uint256 withdrawableAmount, uint256 prefundLeft, uint256 amount);\n\n /**\n * @notice Error to revert if transfer to zero address\n */\n error TransferToZeroAddress();\n\n /***************************************************\n * CONSTRUCTOR & INITIALIZATION *\n ***************************************************/\n\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n\n function initialize(\n address manager,\n address bookingToken,\n uint256 prefundAmount,\n address defaultAdmin,\n address upgrader\n ) public initializer {\n __AccessControl_init();\n __UUPSUpgradeable_init();\n __ChequeManager_init();\n\n _grantRole(DEFAULT_ADMIN_ROLE, defaultAdmin);\n _grantRole(SERVICE_ADMIN_ROLE, defaultAdmin);\n _grantRole(BOT_ADMIN_ROLE, defaultAdmin);\n _grantRole(UPGRADER_ROLE, upgrader);\n\n CMAccountStorage storage $ = _getCMAccountStorage();\n\n $._manager = manager;\n $._bookingToken = bookingToken;\n $._prefundAmount = prefundAmount;\n\n // Initialize GasMoneyManager\n uint256 withdrawalLimit = 10 ether; // 10 CAM\n uint256 withdrawalPeriod = 24 hours; // per 24 hours\n __GasMoneyManager_init(withdrawalLimit, withdrawalPeriod);\n }\n\n receive() external payable {}\n\n /***************************************************\n * Getters *\n ***************************************************/\n\n /**\n * @notice Returns the CMAccountManager address.\n *\n * @return CMAccountManager address\n */\n function getManagerAddress() public view override returns (address) {\n CMAccountStorage storage $ = _getCMAccountStorage();\n return $._manager;\n }\n\n /**\n * @notice Returns the booking token address.\n *\n * @return BookingToken address\n */\n function getBookingTokenAddress() public view returns (address) {\n CMAccountStorage storage $ = _getCMAccountStorage();\n return $._bookingToken;\n }\n\n /**\n * @notice Returns the prefund amount.\n *\n * @return prefund amount\n */\n function getPrefundAmount() public view returns (uint256) {\n CMAccountStorage storage $ = _getCMAccountStorage();\n return $._prefundAmount;\n }\n\n /***************************************************\n * Account *\n ***************************************************/\n\n /**\n * @notice Authorizes the upgrade of the CMAccount.\n *\n * Reverts if the new implementation is the same as the old one.\n *\n * Reverts if the new implementation does not match the implementation address\n * in the manager. Only implementations registered at the manager are allowed.\n *\n * @dev Emits a {CMAccountUpgraded} event.\n *\n * @param newImplementation The new implementation address\n */\n function _authorizeUpgrade(address newImplementation) internal override onlyRole(UPGRADER_ROLE) {\n // Get the implementation address from the manager\n address managerImplementation = ICMAccountManager(getManagerAddress()).getAccountImplementation();\n address oldImplementation = ERC1967Utils.getImplementation();\n\n // Revert if the new implementation is the same as the old one\n if (oldImplementation == newImplementation) {\n revert CMAccountNoUpgradeNeeded(oldImplementation, newImplementation);\n }\n\n // Check if new implementation matches the implementation address in the manager\n if (newImplementation != managerImplementation) {\n revert CMAccountImplementationMismatch(managerImplementation, newImplementation);\n }\n\n emit CMAccountUpgraded(oldImplementation, newImplementation);\n }\n\n /**\n * @notice Returns true if an address is authorized to sign cheques\n *\n * @param bot The bot's address\n */\n function isBotAllowed(address bot) public view override returns (bool) {\n return hasRole(CHEQUE_OPERATOR_ROLE, bot);\n }\n\n /**\n * @notice Verifies if the amount is withdrawable by checking if prefund is spent\n *\n * @param amount The amount to check if it's withdrawable\n */\n function _checkPrefundSpent(uint256 amount) private view {\n uint256 prefundAmount = getPrefundAmount();\n uint256 totalChequePayments = getTotalChequePayments();\n\n // Check if prefund is spent. If total cheque payments is bigger or equal to\n // prefund amount it's ok to withdraw any amount\n if (totalChequePayments < prefundAmount) {\n // Balance should be bigger or equal to the { prefundLeft } because the\n // total sum of prefund is not yet spent. So, we subtract that\n // (prefundLeft) from the balance to find the withdrawable amount.\n uint256 prefundLeft = prefundAmount - totalChequePayments;\n uint256 withdrawableAmount = address(this).balance - prefundLeft;\n\n // If amount is bigger than withdrawable amount, revert.\n // Otherwise, it's ok to withdraw the amount.\n if (amount > withdrawableAmount) {\n revert PrefundNotSpentYet(withdrawableAmount, prefundLeft, amount);\n }\n }\n }\n\n /**\n * @notice Withdraw CAM from the CMAccount\n *\n * This function reverts if the amount is bigger then the prefund left to spend. This is to prevent\n * spam by forcing user to spend the full prefund for cheques, so they can not just create an account\n * and withdraw the prefund.\n */\n function withdraw(address payable recipient, uint256 amount) external nonReentrant onlyRole(WITHDRAWER_ROLE) {\n // Check if amount is withdrawable according to the prefund spent amount\n _checkPrefundSpent(amount);\n\n recipient.sendValue(amount);\n emit Withdraw(recipient, amount);\n }\n\n /***************************************************\n * BOOKING TOKEN *\n ***************************************************/\n\n /**\n * @notice Mints booking token.\n *\n * @param reservedFor The account to reserve the token for\n * @param uri The URI of the token\n * @param expirationTimestamp The expiration timestamp\n * @param price The price of the token\n * @param paymentToken The payment token, if address(0) then native\n * @param offchainPaymentCurrency The offchain payment currency\n * @param cancellable If the token is cancellable\n */\n function mintBookingToken(\n address reservedFor,\n string memory uri,\n uint256 expirationTimestamp,\n uint256 price,\n IERC20 paymentToken,\n uint256 offchainPaymentCurrency,\n bool cancellable\n ) external onlyRole(BOOKING_OPERATOR_ROLE) {\n BookingTokenOperator.mintBookingToken(\n getBookingTokenAddress(),\n reservedFor,\n uri,\n expirationTimestamp,\n price,\n paymentToken,\n offchainPaymentCurrency,\n cancellable\n );\n }\n\n /**\n * @notice Buys booking token.\n *\n * @param tokenId The token id\n */\n function buyBookingToken(\n uint256 tokenId,\n uint256 expectedPrice,\n IERC20 expectedPaymentToken\n ) external nonReentrant onlyRole(BOOKING_OPERATOR_ROLE) {\n BookingTokenOperator.buyBookingToken(getBookingTokenAddress(), tokenId, expectedPrice, expectedPaymentToken);\n }\n\n /**\n * @notice Record expiration status if the token is expired\n */\n function recordExpiration(uint256 tokenId) external onlyRole(BOOKING_OPERATOR_ROLE) {\n BookingTokenOperator.recordExpiration(getBookingTokenAddress(), tokenId);\n }\n\n /**\n * @notice Always returns `IERC721Receiver.onERC721Received.selector`.\n *\n * @dev See {IERC721Receiver-onERC721Received}.\n */\n function onERC721Received(address, address, uint256, bytes memory) public virtual returns (bytes4) {\n return this.onERC721Received.selector;\n }\n\n /***************************************************\n * ERC20 & ERC721 *\n ***************************************************/\n\n /**\n * @notice Transfers ERC20 tokens.\n *\n * This function reverts if `to` is the zero address.\n *\n * @param token The ERC20 token\n * @param to The address to transfer the tokens to\n * @param amount The amount of tokens to transfer\n */\n function transferERC20(IERC20 token, address to, uint256 amount) external onlyRole(WITHDRAWER_ROLE) {\n if (to == address(0)) {\n revert TransferToZeroAddress();\n }\n token.safeTransfer(to, amount);\n }\n\n /**\n * @notice Transfers ERC721 tokens.\n *\n * This function reverts if `to` is the zero address.\n *\n * @param token The ERC721 token\n * @param to The address to transfer the tokens to\n * @param tokenId The token id of the token\n */\n function transferERC721(IERC721 token, address to, uint256 tokenId) external onlyRole(WITHDRAWER_ROLE) {\n if (to == address(0)) {\n revert TransferToZeroAddress();\n }\n token.safeTransferFrom(address(this), to, tokenId);\n }\n\n /***************************************************\n * PARTNER CONFIG *\n ***************************************************/\n\n /**\n * @notice Adds a service to the account as a supported service.\n *\n * `serviceName` is defined as pkg + service name in protobuf. For example:\n *\n * ```text\n * ┌────────────── pkg ─────────────┐ ┌───── service name ─────┐\n * \"cmp.services.accommodation.v1alpha.AccommodationSearchService\")\n * ```\n *\n * @dev These services are coming from the Camino Messenger Protocol's protobuf\n * definitions.\n *\n * @param serviceName Service name to add to the account as a supported service\n * @param fee Fee of the service in aCAM (wei in ETH terminology)\n * @param capabilities Capabilities of the service (if any, optional)\n */\n function addService(\n string memory serviceName,\n uint256 fee,\n bool restrictedRate,\n string[] memory capabilities\n ) public onlyRole(SERVICE_ADMIN_ROLE) {\n _addService(getServiceHash(serviceName), fee, capabilities, restrictedRate);\n emit ServiceAdded(serviceName);\n }\n\n /**\n * @notice Remove a service from the account by its name\n */\n function removeService(string memory serviceName) public onlyRole(SERVICE_ADMIN_ROLE) {\n _removeService(getServiceHash(serviceName));\n emit ServiceRemoved(serviceName);\n }\n\n // FEE\n\n /**\n * @notice Set the fee of a service by name\n */\n function setServiceFee(string memory serviceName, uint256 fee) public onlyRole(SERVICE_ADMIN_ROLE) {\n _setServiceFee(getServiceHash(serviceName), fee);\n emit ServiceFeeUpdated(serviceName, fee);\n }\n\n // RESTRICTED RATE\n\n /**\n * @notice Set the restricted rate of a service by name\n */\n function setServiceRestrictedRate(\n string memory serviceName,\n bool restrictedRate\n ) public onlyRole(SERVICE_ADMIN_ROLE) {\n _setServiceRestrictedRate(getServiceHash(serviceName), restrictedRate);\n emit ServiceRestrictedRateUpdated(serviceName, restrictedRate);\n }\n\n // ALL CAPABILITIES\n\n /**\n * @notice Set all capabilities for a service by name\n */\n function setServiceCapabilities(\n string memory serviceName,\n string[] memory capabilities\n ) public onlyRole(SERVICE_ADMIN_ROLE) {\n _setServiceCapabilities(getServiceHash(serviceName), capabilities);\n emit ServiceCapabilitiesUpdated(serviceName);\n }\n\n // SINGLE CAPABILITY\n\n /**\n * @notice Add a single capability to the service by name\n */\n function addServiceCapability(\n string memory serviceName,\n string memory capability\n ) public onlyRole(SERVICE_ADMIN_ROLE) {\n _addServiceCapability(getServiceHash(serviceName), capability);\n emit ServiceCapabilityAdded(serviceName, capability);\n }\n\n /**\n * @notice Remove a single capability from the service by name\n */\n function removeServiceCapability(\n string memory serviceName,\n string memory capability\n ) public onlyRole(SERVICE_ADMIN_ROLE) {\n _removeServiceCapability(getServiceHash(serviceName), capability);\n emit ServiceCapabilityRemoved(serviceName, capability);\n }\n\n /**\n * @notice Get service hash by name. Returns the keccak256 hash of the service name\n * from the account manager\n */\n function getServiceHash(string memory serviceName) private view returns (bytes32 serviceHash) {\n return ICMAccountManager(getManagerAddress()).getRegisteredServiceHashByName(serviceName);\n }\n\n /***************************************************\n * SERVICES WITH RESOLVED NAMES *\n ***************************************************/\n\n /**\n * @notice Get all supported services. Return a list of service names and a list of service objects.\n */\n function getSupportedServices() public view returns (string[] memory serviceNames, Service[] memory services) {\n // Get all hashes and create a list with predefined length\n bytes32[] memory _serviceHashes = getAllServiceHashes();\n string[] memory _serviceNames = new string[](_serviceHashes.length);\n Service[] memory _allSupportedServicesList = new Service[](_serviceHashes.length);\n\n for (uint256 i = 0; i < _serviceHashes.length; i++) {\n _serviceNames[i] = ICMAccountManager(getManagerAddress()).getRegisteredServiceNameByHash(_serviceHashes[i]);\n _allSupportedServicesList[i] = getService(_serviceHashes[i]);\n }\n\n return (_serviceNames, _allSupportedServicesList);\n }\n\n /**\n * @notice Get service fee by name. Overloading the getServiceFee function.\n */\n function getServiceFee(string memory serviceName) public view returns (uint256 fee) {\n return getServiceFee(getServiceHash(serviceName));\n }\n\n /**\n * @notice Get service restricted rate by name. Overloading the getServiceRestrictedRate function.\n */\n function getServiceRestrictedRate(string memory serviceName) public view returns (bool restrictedRate) {\n return getServiceRestrictedRate(getServiceHash(serviceName));\n }\n\n /**\n * @notice Get service capabilities by name. Overloading the getServiceCapabilities function.\n */\n function getServiceCapabilities(string memory serviceName) public view returns (string[] memory capabilities) {\n return getServiceCapabilities(getServiceHash(serviceName));\n }\n\n /***************************************************\n * WANTED SERVICES *\n ***************************************************/\n\n /**\n * @notice Adds wanted services.\n *\n * @param serviceNames List of service names\n */\n function addWantedServices(string[] memory serviceNames) public onlyRole(SERVICE_ADMIN_ROLE) {\n for (uint256 i = 0; i < serviceNames.length; i++) {\n bytes32 serviceHash = getServiceHash(serviceNames[i]);\n _addWantedService(serviceHash);\n emit WantedServiceAdded(serviceNames[i]);\n }\n }\n\n /**\n * @notice Removes wanted services.\n *\n * @param serviceNames List of service names\n */\n function removeWantedServices(string[] memory serviceNames) public onlyRole(SERVICE_ADMIN_ROLE) {\n for (uint256 i = 0; i < serviceNames.length; i++) {\n bytes32 serviceHash = getServiceHash(serviceNames[i]);\n _removeWantedService(serviceHash);\n emit WantedServiceRemoved(serviceNames[i]);\n }\n }\n\n /**\n * @notice Get all wanted services.\n *\n * @return serviceNames List of service names\n */\n function getWantedServices() public view returns (string[] memory serviceNames) {\n bytes32[] memory _wantedServiceHashes = getWantedServiceHashes();\n\n string[] memory _wantedServiceNames = new string[](_wantedServiceHashes.length);\n\n for (uint256 i = 0; i < _wantedServiceHashes.length; i++) {\n _wantedServiceNames[i] = ICMAccountManager(getManagerAddress()).getRegisteredServiceNameByHash(\n _wantedServiceHashes[i]\n );\n }\n\n return _wantedServiceNames;\n }\n\n /***************************************************\n * PAYMENT *\n ***************************************************/\n\n /**\n * @notice Sets if off-chain payment is supported.\n *\n * @param _isSupported true if off-chain payment is supported\n */\n function setOffChainPaymentSupported(bool _isSupported) public onlyRole(SERVICE_ADMIN_ROLE) {\n _setOffChainPaymentSupported(_isSupported);\n }\n\n /**\n * @notice Adds a supported payment token.\n *\n * @param _supportedToken address of the token\n */\n function addSupportedToken(address _supportedToken) public onlyRole(SERVICE_ADMIN_ROLE) {\n _addSupportedToken(_supportedToken);\n }\n\n /**\n * @notice Removes a supported payment token.\n *\n * @param _supportedToken address of the token\n */\n function removeSupportedToken(address _supportedToken) public onlyRole(SERVICE_ADMIN_ROLE) {\n _removeSupportedToken(_supportedToken);\n }\n\n /***************************************************\n * PUBLIC KEY *\n ***************************************************/\n\n /**\n * @notice Add public key with address\n *\n * These public keys are intended to be used with for off-chain encryption of private booking data.\n *\n * @param pubKeyAddress address of the public key\n * @param data public key data\n */\n function addPublicKey(address pubKeyAddress, bytes memory data) public onlyRole(SERVICE_ADMIN_ROLE) {\n _addPublicKey(pubKeyAddress, data);\n }\n\n /**\n * @notice Remove public key by address\n */\n function removePublicKey(address pubKeyAddress) public onlyRole(SERVICE_ADMIN_ROLE) {\n _removePublicKey(pubKeyAddress);\n }\n\n /***************************************************\n * MESSENGER BOTS *\n ***************************************************/\n\n /**\n * @notice Adds messenger bot with initial gas money.\n */\n function addMessengerBot(address bot, uint256 gasMoney) public onlyRole(BOT_ADMIN_ROLE) {\n // Check if we can spend the gasMoney to send it to the bot\n _checkPrefundSpent(gasMoney);\n\n // Grant roles to bot\n _grantRole(CHEQUE_OPERATOR_ROLE, bot);\n _grantRole(BOOKING_OPERATOR_ROLE, bot);\n _grantRole(GAS_WITHDRAWER_ROLE, bot);\n\n emit MessengerBotAdded(bot);\n\n // Send gasMoney to bot\n payable(bot).sendValue(gasMoney);\n }\n\n /**\n * @notice Removes messenger bot by revoking the roles.\n */\n function removeMessengerBot(address bot) public onlyRole(BOT_ADMIN_ROLE) {\n _revokeRole(CHEQUE_OPERATOR_ROLE, bot);\n _revokeRole(BOOKING_OPERATOR_ROLE, bot);\n _revokeRole(GAS_WITHDRAWER_ROLE, bot);\n\n emit MessengerBotRemoved(bot);\n }\n\n /***************************************************\n * GAS MONEY WITHDRAW *\n ***************************************************/\n\n /**\n * @notice Withdraw gas money. Requires the `GAS_WITHDRAWER_ROLE`.\n *\n * @param amount The amount to withdraw in aCAM (wei)\n */\n function withdrawGasMoney(uint256 amount) public nonReentrant onlyRole(GAS_WITHDRAWER_ROLE) {\n _checkPrefundSpent(amount);\n _withdrawGasMoney(amount);\n }\n\n /**\n * @notice Set gas money withdrawal parameters. Requires the `BOT_ADMIN_ROLE`.\n *\n * @param limit Amount of gas money to withdraw in wei per period\n * @param period Duration of the withdrawal period in seconds\n */\n function setGasMoneyWithdrawal(uint256 limit, uint256 period) public onlyRole(BOT_ADMIN_ROLE) {\n _setGasMoneyWithdrawal(limit, period);\n }\n\n /***************************************************\n * CANCELLATION *\n ***************************************************/\n\n function initiateCancellation(\n uint256 tokenId,\n uint256 refundAmount,\n uint16 cancellationReason,\n uint16 cancellationReasonVersion\n ) external onlyRole(BOOKING_OPERATOR_ROLE) {\n BookingTokenOperator.initiateCancellation(\n getBookingTokenAddress(),\n tokenId,\n refundAmount,\n cancellationReason,\n cancellationReasonVersion\n );\n }\n\n function acceptCancellation(uint256 tokenId, uint256 refundAmount) external onlyRole(BOOKING_OPERATOR_ROLE) {\n BookingTokenOperator.acceptCancellation(getBookingTokenAddress(), tokenId, refundAmount);\n }\n\n function rejectCancellation(\n uint256 tokenId,\n uint16 rejectionReason,\n uint16 rejectionReasonVersion\n ) external onlyRole(BOOKING_OPERATOR_ROLE) {\n BookingTokenOperator.rejectCancellation(\n getBookingTokenAddress(),\n tokenId,\n rejectionReason,\n rejectionReasonVersion\n );\n }\n\n function counterCancellation(\n uint256 tokenId,\n uint256 refundAmount,\n uint16 counterReason,\n uint16 counterReasonVersion\n ) external onlyRole(BOOKING_OPERATOR_ROLE) {\n BookingTokenOperator.counterCancellation(\n getBookingTokenAddress(),\n tokenId,\n refundAmount,\n counterReason,\n counterReasonVersion\n );\n }\n\n /**\n * @notice Withdraws an active cancellation proposal. Only the initiator can withdraw.\n *\n * @param tokenId The token id for which to withdraw the proposal\n * @param reason The reason for withdrawing the proposal\n * @param reasonVersion The version of the withdrawal reason from the CMP\n */\n function withdrawCancellation(\n uint256 tokenId,\n uint16 reason,\n uint16 reasonVersion\n ) external onlyRole(BOOKING_OPERATOR_ROLE) {\n BookingTokenOperator.withdrawCancellation(getBookingTokenAddress(), tokenId, reason, reasonVersion);\n }\n\n /**\n * @notice Finalizes a cancellation proposal. Only the supplier of the token can finalize.\n *\n * @param tokenId The token id for which to finalize the proposal\n * @param refundAmount The refund amount to check, this is to prevent front-running attacks\n */\n function finalizeCancellation(uint256 tokenId, uint256 refundAmount) external onlyRole(BOOKING_OPERATOR_ROLE) {\n BookingTokenOperator.finalizeCancellation(getBookingTokenAddress(), tokenId, refundAmount);\n }\n}\n" + }, + "contracts/account/GasMoneyManager.sol": { + "content": "// SPDX-License-Identifier: UNLICENSED\n//\n// Camino Messenger Gas Money Manager\n\npragma solidity 0.8.24;\n\nimport { Initializable } from \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport { Address } from \"@openzeppelin/contracts/utils/Address.sol\";\n\n/**\n * @title GasMoneyManager\n * @notice GasMoneyManager manages gas money withdrawals for a {CMAccount}.\n *\n * Gas money withdrawals are restricted to a withdrawal limit and period.\n */\nabstract contract GasMoneyManager is Initializable {\n using Address for address payable;\n\n /***************************************************\n * STORAGE *\n ***************************************************/\n\n /// @custom:storage-location erc7201:camino.messenger.storage.GasMoneyManager\n struct GasMoneyStorage {\n mapping(address => uint256) _withdrawalPeriodStart;\n mapping(address => uint256) _withdrawnAmount;\n uint256 _withdrawalLimit;\n uint256 _withdrawalPeriod;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"camino.messenger.storage.GasMoneyManager\")) - 1)) & ~bytes32(uint256(0xff));\n bytes32 private constant GasMoneyStorageLocation =\n 0x99a652063088b6badaeb0c7f680676baf720654b4f86f50167944489af637d00;\n\n function _getGasMoneyStorage() private pure returns (GasMoneyStorage storage $) {\n assembly {\n $.slot := GasMoneyStorageLocation\n }\n }\n\n /***************************************************\n * EVENTS *\n ***************************************************/\n\n /**\n * @notice Gas money withdrawal event\n *\n * @param withdrawer the address of the withdrawer\n * @param amount the amount withdrawn\n */\n event GasMoneyWithdrawal(address indexed withdrawer, uint256 amount);\n\n /**\n * @notice Gas money withdrawal limit and period updated event\n *\n * @param limit the withdrawal limit for the period\n * @param period the withdrawal period in seconds\n */\n event GasMoneyWithdrawalUpdated(uint256 limit, uint256 period);\n\n /***************************************************\n * ERRORS *\n ***************************************************/\n\n error WithdrawalLimitExceeded(uint256 limit, uint256 amount);\n error WithdrawalLimitExceededForPeriod(uint256 limit, uint256 amount);\n\n /***************************************************\n * INITIALIZATION *\n ***************************************************/\n\n function __GasMoneyManager_init(uint256 withdrawalLimit, uint256 withdrawalPeriod) internal onlyInitializing {\n GasMoneyStorage storage $ = _getGasMoneyStorage();\n $._withdrawalLimit = withdrawalLimit;\n $._withdrawalPeriod = withdrawalPeriod;\n }\n\n /***************************************************\n * LOGIC *\n ***************************************************/\n\n /**\n * @notice Withdraws gas money.\n *\n * This functions is intended to be called by the bot to withdraw gas money.\n * Inheriting contract should restrict who can call this with a public\n * function.\n */\n function _withdrawGasMoney(uint256 amount) internal {\n GasMoneyStorage storage $ = _getGasMoneyStorage();\n\n // Ensure the withdrawal does not exceed the allowed limit\n if (amount > $._withdrawalLimit) {\n revert WithdrawalLimitExceeded($._withdrawalLimit, amount);\n }\n\n // Get timestamps\n uint256 currentTime = block.timestamp;\n\n // Reset the withdrawn amount if a new period has started. If more time then\n // the withdrawal period has passed, it is allowed to withdraw full amount.\n if (currentTime > $._withdrawalPeriodStart[msg.sender] + $._withdrawalPeriod) {\n $._withdrawnAmount[msg.sender] = 0;\n $._withdrawalPeriodStart[msg.sender] = currentTime;\n }\n\n // Ensure the withdrawal does not exceed the allowed limit for the period\n if ($._withdrawnAmount[msg.sender] + amount > $._withdrawalLimit) {\n revert WithdrawalLimitExceededForPeriod($._withdrawalLimit, amount);\n }\n\n // Update the withdrawn amount\n $._withdrawnAmount[msg.sender] += amount;\n\n // Transfer the gas money\n payable(msg.sender).sendValue(amount);\n\n emit GasMoneyWithdrawal(msg.sender, amount);\n }\n\n /**\n * @notice Sets the gas money withdrawal limit and period.\n *\n * @param limit the withdrawal limit for the period\n * @param period the withdrawal period in seconds\n */\n function _setGasMoneyWithdrawal(uint256 limit, uint256 period) internal {\n GasMoneyStorage storage $ = _getGasMoneyStorage();\n $._withdrawalLimit = limit;\n $._withdrawalPeriod = period;\n\n emit GasMoneyWithdrawalUpdated(limit, period);\n }\n\n /**\n * @notice Returns the gas money withdrawal restrictions.\n *\n * @return withdrawalLimit\n * @return withdrawalPeriod\n */\n function getGasMoneyWithdrawal() public view returns (uint256 withdrawalLimit, uint256 withdrawalPeriod) {\n GasMoneyStorage storage $ = _getGasMoneyStorage();\n return ($._withdrawalLimit, $._withdrawalPeriod);\n }\n\n /**\n * @notice Returns the gas money withdrawal details for an account.\n *\n * @param account address of the account\n * @return periodStart timestamp of the withdrawal period start\n * @return withdrawnAmount amount withdrawn within the period\n */\n function getGasMoneyWithdrawalForAccount(\n address account\n ) public view returns (uint256 periodStart, uint256 withdrawnAmount) {\n GasMoneyStorage storage $ = _getGasMoneyStorage();\n return ($._withdrawalPeriodStart[account], $._withdrawnAmount[account]);\n }\n}\n" + }, + "contracts/account/ICMAccount.sol": { + "content": "// SPDX-License-Identifier: UNLICENSED\n\npragma solidity 0.8.24;\n\ninterface ICMAccount {\n function initialize(\n address manager,\n address bookingToken,\n uint256 prefundAmount,\n address owner,\n address upgrader\n ) external;\n}\n" + }, + "contracts/booking-token/BookingToken.sol": { + "content": "// SPDX-License-Identifier: UNLICENSED\npragma solidity 0.8.24;\n\n// UUPS Proxy\nimport { Initializable } from \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport { UUPSUpgradeable } from \"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\";\n\n// ERC721\nimport { ERC721Upgradeable, IERC721 } from \"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\";\nimport { ERC721URIStorageUpgradeable } from \"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol\";\nimport { ERC721EnumerableUpgradeable } from \"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol\";\n\n// Access\nimport { AccessControlUpgradeable } from \"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\";\n\n// Manager Interface\nimport { ICMAccountManager } from \"../manager/ICMAccountManager.sol\";\n\n// Utils\nimport { Address } from \"@openzeppelin/contracts/utils/Address.sol\";\nimport { SafeERC20, IERC20 } from \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\n\nimport { ReentrancyGuardUpgradeable } from \"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\";\n\n// Cancellable\nimport { BookingTokenCancellable, CancellationProposalStatus } from \"./BookingTokenCancellable.sol\";\n\n/**\n * @title BookingToken\n * @notice Booking Token contract represents a booking done on the Camino Messenger.\n *\n * Suppliers can mint Booking Tokens and reserve them for a distributor address to\n * buy.\n *\n * Booking Tokens can have zero price, meaning that the payment will be done\n * off-chain.\n *\n * When a token is minted with a reservation, it can not be transferred until the\n * expiration timestamp is reached or the token is bought.\n */\ncontract BookingToken is\n Initializable,\n ERC721Upgradeable,\n ERC721EnumerableUpgradeable,\n ERC721URIStorageUpgradeable,\n AccessControlUpgradeable,\n ReentrancyGuardUpgradeable,\n UUPSUpgradeable,\n BookingTokenCancellable\n{\n using Address for address payable;\n using SafeERC20 for IERC20;\n\n /***************************************************\n * VERSION *\n ***************************************************/\n\n uint16 constant VERSION_MAJOR = 1;\n uint16 constant VERSION_MINOR = 0;\n uint16 constant VERSION_PATCH = 0;\n\n /**\n * @notice Returns the semantic version of the contract.\n *\n * - no version() func: Legacy version without Cancellation support\n * - v1.0.0: Version with Cancellation support\n *\n * @return major Major version (breaking changes)\n * @return minor Minor version (backwards-compatible features)\n * @return patch Patch version (backwards-compatible fixes)\n */\n function version() external pure virtual returns (uint16 major, uint16 minor, uint16 patch) {\n return (VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH);\n }\n\n /***************************************************\n * CONSTANTS *\n ***************************************************/\n\n /**\n * @notice Upgrader role can upgrade the contract to a new implementation.\n */\n bytes32 public constant UPGRADER_ROLE = keccak256(\"UPGRADER_ROLE\");\n\n /**\n * @notice This role can set the mininum allowed expiration timestamp difference.\n */\n bytes32 public constant MIN_EXPIRATION_ADMIN_ROLE = keccak256(\"MIN_EXPIRATION_ADMIN_ROLE\");\n\n /**\n * @dev Special address for native payments.\n * @notice Tokens are directly transferred to the recipient.\n */\n address public constant NATIVE_PAYMENT = address(0);\n\n /**\n * @dev Special address for offchain payments. The enum for this\n * is defined in the Camino Messenger Protocol's\n * cmp.types..IsoCurrency enum (currency.proto file).\n * @notice A third-party service is used to handle payments.\n */\n address public constant OFFCHAIN_PAYMENT = address(1);\n\n /***************************************************\n * STORAGE *\n ***************************************************/\n\n enum BookingStatus {\n UNSPECIFIED, // 0, default value\n RESERVED, // 1\n RESERVATION_EXPIRED, // 2\n BOUGHT, // 3\n CANCELLED // 4\n }\n\n // Reservation details\n struct TokenReservation {\n address reservedFor; // CM Account address that can buy the token\n address supplier; // CM Account address that minted the token and created the reservation\n uint256 expirationTimestamp; // Timestamp when the reservation expires\n uint256 price; // Price of the token, only native for now\n IERC20 paymentToken; // Token used to pay for the reserved token\n uint256 offchainPaymentCurrency; // Offchain payment currency\n bool cancellable; // Is the token (booking) cancellable\n }\n\n /// @custom:storage-location erc7201:camino.messenger.storage.BookingToken\n struct BookingTokenStorage {\n // CMAccountManager address\n address _manager;\n // Counter for generating unique token IDs\n uint256 _nextTokenId;\n // Mininum allowed expiration timestamp difference\n uint256 _minExpirationTimestampDiff;\n // Reservation details for each token\n mapping(uint256 tokenId => TokenReservation tokenReservation) _reservations;\n // BookingStatus of each token\n mapping(uint256 tokenId => BookingStatus status) _bookingStatus;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"camino.messenger.storage.BookingToken\")) - 1)) & ~bytes32(uint256(0xff));\n bytes32 private constant BookingTokenStorageLocation =\n 0x9db9d405bf15683ce835607b1f0b423dc1484d44bb9d5af64a483fa4afd82900;\n\n function _getBookingTokenStorage() internal pure returns (BookingTokenStorage storage $) {\n assembly {\n $.slot := BookingTokenStorageLocation\n }\n }\n\n /***************************************************\n * EVENTS *\n ***************************************************/\n\n /**\n * @notice Event emitted when a token is reserved.\n *\n * @param tokenId token id\n * @param reservedFor reserved for address\n * @param supplier supplier address\n * @param expirationTimestamp expiration timestamp\n * @param price price of the token\n * @param paymentToken payment token address\n */\n event TokenReserved(\n uint256 indexed tokenId,\n address indexed reservedFor,\n address indexed supplier,\n uint256 expirationTimestamp,\n uint256 price,\n IERC20 paymentToken,\n uint256 offchainPaymentCurrency,\n bool cancellable\n );\n\n /**\n * @notice Event emitted when a token is bought.\n *\n * @param tokenId token id\n * @param buyer buyer address\n */\n event TokenBought(uint256 indexed tokenId, address indexed buyer);\n\n /**\n * @notice Event emitted when a token is expired.\n *\n * @param tokenId token id\n */\n event TokenReservationExpired(uint256 indexed tokenId);\n\n /***************************************************\n * ERRORS *\n ***************************************************/\n\n /**\n * @notice Error for expiration timestamp too soon. It must be at least\n * `_minExpirationTimestampDiff` seconds in the future.\n */\n error ExpirationTimestampTooSoon(uint256 expirationTimestamp, uint256 minExpirationTimestampDiff);\n\n /**\n * @notice Address is not a CM Account.\n *\n * @param account account address\n */\n error NotCMAccount(address account);\n\n /**\n * @notice ReservedFor and buyer mismatch.\n *\n * @param reservedFor reserved for address\n * @param buyer buyer address\n */\n error ReservationMismatch(address reservedFor, address buyer);\n\n /**\n * @notice Reservation expired.\n *\n * @param tokenId token id\n * @param expirationTimestamp expiration timestamp\n */\n error ReservationExpired(uint256 tokenId, uint256 expirationTimestamp);\n\n /**\n * @notice Incorrect price.\n *\n * @param price price of the token\n * @param reservationPrice reservation price\n */\n error IncorrectPrice(uint256 price, uint256 reservationPrice);\n\n /**\n * @notice Supplier is not the owner.\n *\n * @param tokenId token id\n * @param supplier supplier address\n */\n error SupplierIsNotOwner(uint256 tokenId, address supplier);\n\n /**\n * @notice Token is reserved and can not be transferred.\n *\n * @param tokenId token id\n * @param reservedFor reserved for address\n */\n error TokenIsReserved(uint256 tokenId, address reservedFor);\n\n /**\n * @notice Insufficient allowance to transfer the ERC20 token to the supplier.\n *\n * @param sender msg.sender\n * @param paymentToken payment token address\n * @param price price of the token\n * @param allowance allowance amount\n */\n error InsufficientAllowance(address sender, IERC20 paymentToken, uint256 price, uint256 allowance);\n\n /**\n * @notice Invalid token status.\n *\n * @param tokenId token id\n * @param status status\n */\n error InvalidTokenStatus(uint256 tokenId, BookingStatus status);\n\n /**\n * @notice Unexpected offchain payment currency. Thrown when offchain payment currency is provided\n * but payment token is not address(1).\n *\n * @param offchainPaymentCurrency offchain payment currency\n */\n error UnexpectedOffchainPaymentCurrency(uint256 offchainPaymentCurrency);\n\n /**\n * @notice Error for when there is unexpected native payment.\n *\n * @param amount The unexpected amount\n */\n error UnexpectedNativePayment(uint256 amount);\n\n /***************************************************\n * MODIFIERS *\n ***************************************************/\n\n /**\n * @notice Only CMAccount modifier.\n */\n modifier onlyCMAccount(address account) {\n requireCMAccount(account);\n _;\n }\n\n /***************************************************\n * INITIALIZE *\n ***************************************************/\n\n function initialize(address manager, address defaultAdmin, address upgrader) public initializer {\n __ERC721_init(\"BookingToken\", \"TRIP\");\n __ERC721Enumerable_init();\n __ERC721URIStorage_init();\n __AccessControl_init();\n __UUPSUpgradeable_init();\n\n _grantRole(DEFAULT_ADMIN_ROLE, defaultAdmin);\n _grantRole(UPGRADER_ROLE, upgrader);\n\n BookingTokenStorage storage $ = _getBookingTokenStorage();\n\n $._manager = manager;\n $._minExpirationTimestampDiff = 60;\n }\n\n /***************************************************\n * REINITIALIZE *\n ***************************************************/\n\n /**\n * @notice This function allows reinitializing the contract to update the name and symbol\n * @dev Only callable by DEFAULT_ADMIN_ROLE\n * @param newName New token name\n * @param newSymbol New token symbol\n */\n function reinitializeV2(\n string memory newName,\n string memory newSymbol\n ) public reinitializer(2) onlyRole(DEFAULT_ADMIN_ROLE) {\n __ERC721_init(newName, newSymbol);\n }\n\n /***************************************************\n * BOOKING-TOKEN LOGIC *\n ***************************************************/\n\n /**\n * @notice Function to authorize an upgrade for UUPS proxy.\n */\n function _authorizeUpgrade(address newImplementation) internal virtual override onlyRole(UPGRADER_ROLE) {}\n\n /**\n * @notice Mints a new token with a reservation for a specific address.\n *\n * @param reservedFor The CM Account address that can buy the token\n * @param uri The URI of the token\n * @param expirationTimestamp The expiration timestamp\n * @param price The price of the token\n * @param paymentToken The token used to pay for the reservation. If address(0) then native.\n * @param offchainPaymentCurrency The offchain payment currency\n * @param cancellable The flag that represents whether the booking is cancellable\n */\n function safeMintWithReservation(\n address reservedFor,\n string memory uri,\n uint256 expirationTimestamp,\n uint256 price,\n IERC20 paymentToken,\n uint256 offchainPaymentCurrency,\n bool cancellable\n ) public virtual onlyCMAccount(msg.sender) {\n // Require reservedFor to be a CM Account\n requireCMAccount(reservedFor);\n\n BookingTokenStorage storage $ = _getBookingTokenStorage();\n\n // Expiration timestamp should be at least `_minExpirationTimestampDiff`\n // seconds in the future\n uint256 minExpirationTimestampDiff = $._minExpirationTimestampDiff;\n if (!(expirationTimestamp > (block.timestamp + minExpirationTimestampDiff))) {\n revert ExpirationTimestampTooSoon(expirationTimestamp, minExpirationTimestampDiff);\n }\n\n // Revert if the off chain payment currency is provided but payment token is not address(1)\n if (offchainPaymentCurrency > 0 && address(paymentToken) != OFFCHAIN_PAYMENT) {\n revert UnexpectedOffchainPaymentCurrency(offchainPaymentCurrency);\n }\n\n // Increment the token id\n uint256 tokenId = $._nextTokenId++;\n\n // Mint the token for the supplier (the caller)\n _safeMint(msg.sender, tokenId);\n _setTokenURI(tokenId, uri);\n\n // Store the reservation\n _reserve(\n tokenId,\n reservedFor,\n msg.sender,\n expirationTimestamp,\n price,\n paymentToken,\n offchainPaymentCurrency,\n cancellable\n );\n\n // Set the status\n $._bookingStatus[tokenId] = BookingStatus.RESERVED;\n\n emit TokenReserved(\n tokenId,\n reservedFor,\n msg.sender,\n expirationTimestamp,\n price,\n paymentToken,\n offchainPaymentCurrency,\n cancellable\n );\n }\n\n /**\n * @notice Reserve a token for a specific address with an expiration timestamp\n */\n function _reserve(\n uint256 tokenId,\n address reservedFor,\n address supplier,\n uint256 expirationTimestamp,\n uint256 price,\n IERC20 paymentToken,\n uint256 offchainPaymentCurrency,\n bool cancellable\n ) internal virtual {\n BookingTokenStorage storage $ = _getBookingTokenStorage();\n\n $._reservations[tokenId] = TokenReservation(\n reservedFor,\n supplier,\n expirationTimestamp,\n price,\n paymentToken,\n offchainPaymentCurrency,\n cancellable\n );\n }\n\n /**\n * @notice Buys a reserved token. The reservation must be for the message sender.\n *\n * Also the message sender should set allowance for the payment token to this\n * contract to at least the reservation price. (only for ERC20 tokens)\n *\n * For native coin, the message sender should send the exact amount.\n *\n * Only CM Accounts can call this function\n *\n * @param tokenId The token id\n */\n function buyReservedToken(uint256 tokenId) public payable virtual nonReentrant onlyCMAccount(msg.sender) {\n BookingTokenStorage storage $ = _getBookingTokenStorage();\n\n // Get the reservation for the token\n TokenReservation memory reservation = $._reservations[tokenId];\n\n // Check if `reservedFor` and `msg.sender` match\n if (reservation.reservedFor != msg.sender) {\n revert ReservationMismatch(reservation.reservedFor, msg.sender);\n }\n\n // Check expiration timestamp\n if (block.timestamp > reservation.expirationTimestamp) {\n revert ReservationExpired(tokenId, reservation.expirationTimestamp);\n }\n\n // Check if supplier is still the owner\n address owner = ownerOf(tokenId);\n if (owner != reservation.supplier) {\n revert SupplierIsNotOwner(tokenId, reservation.supplier);\n }\n\n // Transfer the token. We are using `_transfer` instead of\n // `safeTransferFrom` because this is special transfer without a auth check.\n // Only in this function and only for buying a reserved token\n _transfer(reservation.supplier, msg.sender, tokenId);\n\n // Do the payment at the end\n processPayment(reservation.paymentToken, reservation.price, reservation.supplier);\n\n // Set the status\n $._bookingStatus[tokenId] = BookingStatus.BOUGHT;\n\n // Emit event\n emit TokenBought(tokenId, msg.sender);\n }\n\n function processPayment(IERC20 paymentToken, uint256 paymentAmount, address recipient) internal virtual {\n // Handle the payment based on payment type\n if (address(paymentToken) == NATIVE_PAYMENT) {\n // Payment is in native currency (CAM)\n if (msg.value != paymentAmount) {\n revert IncorrectPrice(msg.value, paymentAmount);\n }\n\n // Transfer payment to the supplier\n payable(recipient).sendValue(msg.value);\n } else if (address(paymentToken) == OFFCHAIN_PAYMENT) {\n // Off-chain payment - no on-chain transfer needed\n // Ensure no native currency was sent\n if (msg.value > 0) {\n revert UnexpectedNativePayment(msg.value);\n }\n } else {\n // Payment is in ERC20\n // Ensure no native currency was sent\n if (msg.value > 0) {\n revert UnexpectedNativePayment(msg.value);\n }\n\n // Transfer the ERC20 tokens from distributor to supplier\n IERC20(paymentToken).safeTransferFrom(msg.sender, recipient, paymentAmount);\n }\n }\n\n /***************************************************\n * TOKEN GETTERS *\n ***************************************************/\n\n /**\n * @notice Return booking status\n *\n * @param tokenId The token id\n * @return The booking status\n */\n function getBookingStatus(uint256 tokenId) public view virtual returns (BookingStatus) {\n BookingTokenStorage storage $ = _getBookingTokenStorage();\n return $._bookingStatus[tokenId];\n }\n\n /**\n * @notice Returns the token reservation price for a specific token.\n *\n * @param tokenId The token id\n */\n function getReservationPrice(uint256 tokenId) public view virtual returns (uint256 price, IERC20 paymentToken) {\n BookingTokenStorage storage $ = _getBookingTokenStorage();\n return ($._reservations[tokenId].price, $._reservations[tokenId].paymentToken);\n }\n\n /**\n * @notice Retrieves the payment token for a given token.\n *\n * @param tokenId The token id to retrieve the payment token for\n * @return paymentToken The payment token\n */\n function getReservationPaymentToken(uint256 tokenId) external view returns (IERC20 paymentToken) {\n BookingTokenStorage storage $ = _getBookingTokenStorage();\n return $._reservations[tokenId].paymentToken;\n }\n\n /**\n * @notice Returns if the token is cancellable\n *\n * @param tokenId The token id\n */\n function isCancellable(uint256 tokenId) public view virtual returns (bool) {\n BookingTokenStorage storage $ = _getBookingTokenStorage();\n return $._reservations[tokenId].cancellable;\n }\n\n /***************************************************\n * CONTRACT LOGIC *\n ***************************************************/\n\n /**\n * @notice Check if the token is transferable\n */\n function checkTransferable(uint256 tokenId) internal virtual {\n BookingTokenStorage storage $ = _getBookingTokenStorage();\n BookingStatus status = $._bookingStatus[tokenId];\n\n // Check Cancellation Proposal status\n\n // Get the current proposer and status\n (\n CancellationProposalStatus cancellationStatus,\n address currentProposer\n ) = _getCancellationProposalStatusAndCurrentProposer(tokenId);\n\n // If there is a pending cancellation proposal, withdraw or reject it\n // automatically before the transfer.\n if (cancellationStatus == CancellationProposalStatus.PENDING) {\n address owner = _requireOwned(tokenId);\n address supplier = $._reservations[tokenId].supplier;\n\n // Check if the current proposer is the owner\n if (msg.sender != currentProposer) {\n // FIXME: Define a reason in the CMP and update this\n _rejectCancellation(owner, supplier, tokenId, 99, 1);\n } else {\n // FIXME: Define a reason in the CMP and update this\n _withdrawCancellation(owner, supplier, tokenId, 99, 1);\n }\n }\n\n // If token is UNSPECIFIED, BOUGHT, or EXPIRED, token is transferable, return early.\n if (\n status == BookingStatus.BOUGHT ||\n status == BookingStatus.RESERVATION_EXPIRED ||\n status == BookingStatus.UNSPECIFIED\n ) {\n return;\n }\n\n // Revert if booking status is CANCELLED\n if (status == BookingStatus.CANCELLED) {\n revert InvalidTokenStatus(tokenId, status);\n }\n\n // Only RESERVED state is left. If expiration time is in the past, token is\n // transferable even if it is reserved. Because it can not be bought after\n // expired.\n TokenReservation storage reservation = $._reservations[tokenId];\n\n if (block.timestamp > reservation.expirationTimestamp) {\n // Token is expired, set status to expired\n $._bookingStatus[tokenId] = BookingStatus.RESERVATION_EXPIRED;\n\n // Emit event\n emit TokenReservationExpired(tokenId);\n return;\n } else {\n // Token is not expired, revert transfer\n revert TokenIsReserved(tokenId, reservation.reservedFor);\n }\n }\n\n /**\n * @notice Record expiration status if the token is expired\n *\n * @param tokenId The token id\n */\n function recordExpiration(uint256 tokenId) public virtual {\n BookingTokenStorage storage $ = _getBookingTokenStorage();\n TokenReservation storage reservation = $._reservations[tokenId];\n BookingStatus status = $._bookingStatus[tokenId];\n\n // If token is already set as expired, bought or cancelled, revert.\n if (\n status == BookingStatus.RESERVATION_EXPIRED ||\n status == BookingStatus.BOUGHT ||\n status == BookingStatus.CANCELLED\n ) {\n revert InvalidTokenStatus(tokenId, status);\n }\n\n // If expiration time is in the past, set status to expired\n if (block.timestamp > reservation.expirationTimestamp) {\n $._bookingStatus[tokenId] = BookingStatus.RESERVATION_EXPIRED;\n\n // Emit event\n emit TokenReservationExpired(tokenId);\n } else {\n // Token is not expired, revert setting status\n revert TokenIsReserved(tokenId, reservation.reservedFor);\n }\n }\n\n /**\n * @notice Checks if an address is a CM Account.\n *\n * @param account The address to check\n * @return true if the address is a CM Account\n */\n function isCMAccount(address account) public view virtual returns (bool) {\n return ICMAccountManager(getManagerAddress()).isCMAccount(account);\n }\n\n /**\n * @notice Checks if the address is a CM Account and reverts if not.\n *\n * @param account The address to check\n */\n function requireCMAccount(address account) internal view virtual {\n if (!isCMAccount(account)) {\n revert NotCMAccount(account);\n }\n }\n\n /**\n * @notice Sets for the manager address.\n *\n * @param manager The address of the manager\n */\n function setManagerAddress(address manager) public virtual onlyRole(DEFAULT_ADMIN_ROLE) {\n BookingTokenStorage storage $ = _getBookingTokenStorage();\n $._manager = manager;\n }\n\n /**\n * @notice Returns for the manager address.\n */\n function getManagerAddress() public view virtual returns (address) {\n BookingTokenStorage storage $ = _getBookingTokenStorage();\n return $._manager;\n }\n\n /**\n * @notice Sets minimum expiration timestamp difference in seconds.\n *\n * @param minExpirationTimestampDiff Minimum expiration timestamp difference in seconds\n */\n function setMinExpirationTimestampDiff(\n uint256 minExpirationTimestampDiff\n ) public virtual onlyRole(MIN_EXPIRATION_ADMIN_ROLE) {\n BookingTokenStorage storage $ = _getBookingTokenStorage();\n $._minExpirationTimestampDiff = minExpirationTimestampDiff;\n }\n\n /**\n * @notice Returns minimum expiration timestamp difference in seconds.\n */\n function getMinExpirationTimestampDiff() public view virtual returns (uint256) {\n BookingTokenStorage storage $ = _getBookingTokenStorage();\n return $._minExpirationTimestampDiff;\n }\n\n /***************************************************\n * CANCELLATION LOGIC *\n ***************************************************/\n\n function initiateCancellation(\n uint256 tokenId,\n uint256 refundAmount,\n uint16 cancellationReason,\n uint16 cancellationReasonVersion\n ) external virtual onlyCMAccount(msg.sender) {\n // Revert if token does not exist\n address owner = _requireOwned(tokenId);\n\n // Get storage\n BookingTokenStorage storage $ = _getBookingTokenStorage();\n\n // Revert if token is not BOUGHT\n if ($._bookingStatus[tokenId] != BookingStatus.BOUGHT) {\n revert InvalidTokenStatus(tokenId, $._bookingStatus[tokenId]);\n }\n\n address supplier = $._reservations[tokenId].supplier;\n\n _initiateCancellation(owner, supplier, tokenId, refundAmount, cancellationReason, cancellationReasonVersion);\n }\n\n function acceptCancellation(uint256 tokenId, uint256 refundAmount) external virtual onlyCMAccount(msg.sender) {\n // Revert if token does not exist\n address owner = _requireOwned(tokenId);\n\n // Get storage\n BookingTokenStorage storage $ = _getBookingTokenStorage();\n\n // Revert if token is not BOUGHT\n if ($._bookingStatus[tokenId] != BookingStatus.BOUGHT) {\n revert InvalidTokenStatus(tokenId, $._bookingStatus[tokenId]);\n }\n\n address supplier = $._reservations[tokenId].supplier;\n\n _acceptCancellation(owner, supplier, tokenId, refundAmount);\n }\n\n function counterCancellation(\n uint256 tokenId,\n uint256 refundAmount,\n uint16 counterReason,\n uint16 counterReasonVersion\n ) external virtual onlyCMAccount(msg.sender) {\n // Revert if token does not exist\n address owner = _requireOwned(tokenId);\n\n // Get storage\n BookingTokenStorage storage $ = _getBookingTokenStorage();\n\n // Revert if token is not BOUGHT\n if ($._bookingStatus[tokenId] != BookingStatus.BOUGHT) {\n revert InvalidTokenStatus(tokenId, $._bookingStatus[tokenId]);\n }\n\n address supplier = $._reservations[tokenId].supplier;\n\n _counterCancellation(owner, supplier, tokenId, refundAmount, counterReason, counterReasonVersion);\n }\n\n function withdrawCancellation(\n uint256 tokenId,\n uint16 withdrawalReason,\n uint16 withdrawalReasonVersion\n ) external virtual onlyCMAccount(msg.sender) {\n // Revert if token does not exist\n address owner = _requireOwned(tokenId);\n\n // Get storage\n BookingTokenStorage storage $ = _getBookingTokenStorage();\n\n // Revert if token is not BOUGHT\n if ($._bookingStatus[tokenId] != BookingStatus.BOUGHT) {\n revert InvalidTokenStatus(tokenId, $._bookingStatus[tokenId]);\n }\n\n address supplier = $._reservations[tokenId].supplier;\n\n _withdrawCancellation(owner, supplier, tokenId, withdrawalReason, withdrawalReasonVersion);\n }\n\n function rejectCancellation(\n uint256 tokenId,\n uint16 rejectionReason,\n uint16 rejectionReasonVersion\n ) external virtual onlyCMAccount(msg.sender) {\n // Revert if token does not exist\n address owner = _requireOwned(tokenId);\n\n // Get storage\n BookingTokenStorage storage $ = _getBookingTokenStorage();\n\n // Revert if token is not BOUGHT\n if ($._bookingStatus[tokenId] != BookingStatus.BOUGHT) {\n revert InvalidTokenStatus(tokenId, $._bookingStatus[tokenId]);\n }\n\n address supplier = $._reservations[tokenId].supplier;\n\n _rejectCancellation(owner, supplier, tokenId, rejectionReason, rejectionReasonVersion);\n }\n\n function finalizeCancellation(\n uint256 tokenId,\n uint256 checkRefundAmount\n ) external payable virtual onlyCMAccount(msg.sender) {\n // Revert if token does not exist\n address owner = _requireOwned(tokenId);\n\n // Get storage\n BookingTokenStorage storage $ = _getBookingTokenStorage();\n\n // Revert if token is not BOUGHT\n if ($._bookingStatus[tokenId] != BookingStatus.BOUGHT) {\n revert InvalidTokenStatus(tokenId, $._bookingStatus[tokenId]);\n }\n\n address supplier = $._reservations[tokenId].supplier;\n\n uint256 refundAmount = _finalizeCancellation(supplier, tokenId, checkRefundAmount);\n\n IERC20 paymentToken = $._reservations[tokenId].paymentToken;\n\n // Update BookingToken status\n $._bookingStatus[tokenId] = BookingStatus.CANCELLED;\n\n // Process payment\n processPayment(paymentToken, refundAmount, owner);\n }\n\n /***************************************************\n * TRANSFER OVERRIDES *\n ***************************************************/\n\n /**\n * @notice Override transferFrom to check if token is reserved. It reverts if\n * the token is reserved.\n */\n function transferFrom(\n address from,\n address to,\n uint256 tokenId\n ) public virtual override(ERC721Upgradeable, IERC721) {\n // Verify that the token is transferable (i.e. not reserved)\n checkTransferable(tokenId);\n super.transferFrom(from, to, tokenId);\n }\n\n /***************************************************\n * END BOOKING-TOKEN LOGIC *\n ***************************************************/\n\n // Overrides required by Solidity.\n\n function _update(\n address to,\n uint256 tokenId,\n address auth\n ) internal override(ERC721Upgradeable, ERC721EnumerableUpgradeable) returns (address) {\n return super._update(to, tokenId, auth);\n }\n\n function _increaseBalance(\n address account,\n uint128 value\n ) internal override(ERC721Upgradeable, ERC721EnumerableUpgradeable) {\n super._increaseBalance(account, value);\n }\n\n function tokenURI(\n uint256 tokenId\n ) public view override(ERC721Upgradeable, ERC721URIStorageUpgradeable) returns (string memory) {\n return super.tokenURI(tokenId);\n }\n\n function supportsInterface(\n bytes4 interfaceId\n )\n public\n view\n override(ERC721Upgradeable, ERC721EnumerableUpgradeable, ERC721URIStorageUpgradeable, AccessControlUpgradeable)\n returns (bool)\n {\n return super.supportsInterface(interfaceId);\n }\n}\n" + }, + "contracts/booking-token/BookingTokenCancellable.sol": { + "content": "// SPDX-License-Identifier: UNLICENSED\npragma solidity 0.8.24;\n\nenum CancellationProposalStatus {\n NO_PROPOSAL, // 0, default\n PENDING, // 1\n REJECTED, // 2\n WITHDRAWN, // 3\n FINALIZED // 4\n}\n\ncontract BookingTokenCancellable {\n struct Proposal {\n uint256 refundAmount; // Slot n\n address initialProposer; // Slot n+1, 20 bytes\n uint32 timesCountered; // Packed above 8 bytes\n bool ownerAccepted; // Packed above, 1 byte\n bool supplierAccepted; // Packed above, 1 byte, 30 bytes consumed\n address currentProposer; // Slot n+2, 20 bytes\n uint32 timesRejected; // Packed above, 8 bytes\n CancellationProposalStatus status; // Packed above, 1 byte, 29 bytes consumed\n uint16 cancellationReason; // Slot n+3, 2 bytes\n uint16 cancellationVersion; // Packed above, 2 bytes\n uint16 rejectionReason; // Packed above, 2 bytes\n uint16 rejectionVersion; // Packed above, 2 bytes\n uint16 counterReason; // Packed above, 2 bytes\n uint16 counterVersion; // Packed above, 2 bytes\n uint16 withdrawalReason; // Packed above, 2 bytes\n uint16 withdrawalVersion; // Packed above, 2 bytes, 16 bytes consumed\n }\n\n /***************************************************\n * STORAGE *\n ***************************************************/\n\n /// @custom:storage-location erc7201:camino.messenger.storage.BookingTokenCancellable\n struct BookingTokenCancellableStorage {\n // Mapping to store the ongoing cancellation proposals for each token\n mapping(uint256 tokenId => Proposal proposal) _proposals;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"camino.messenger.storage.BookingTokenCancellableV2\")) - 1)) & ~bytes32(uint256(0xff));\n bytes32 private constant BookingTokenCancellableStorageLocation =\n 0x0b8fb32ffc7043fda9e0ee2bcb4236acf95ab448752c73eff6cc7f2640ff8500;\n\n /**\n * @notice Retrieves the BookingTokenCancellable storage struct from the designated storage slot.\n *\n * @return $ The storage struct reference\n */\n function _getBookingTokenCancellableStorage() private pure returns (BookingTokenCancellableStorage storage $) {\n assembly {\n $.slot := BookingTokenCancellableStorageLocation\n }\n }\n\n /***************************************************\n * EVENTS *\n ***************************************************/\n\n event CancellationPending(\n uint256 indexed tokenId,\n address indexed initialProposer,\n address indexed currentProposer,\n uint256 refundAmount,\n bool ownerAccepted,\n bool supplierAccepted,\n uint32 timesCountered,\n uint32 timesRejected\n );\n\n event CancellationReasons(\n uint256 indexed tokenId,\n uint16 cancellationReason,\n uint16 cancellationReasonVersion,\n uint16 rejectionReason,\n uint16 rejectionVersion,\n uint16 counterReason,\n uint16 counterVersion,\n uint16 withdrawalReason,\n uint16 withdrawalVersion\n );\n\n event CancellationWithdrawn(uint256 indexed tokenId, uint16 withdrawalReason, uint16 withdrawalVersion);\n\n event CancellationRejected(uint256 indexed tokenId, uint16 rejectionReason, uint16 rejectionVersion);\n\n event CancellationFinalized(uint256 indexed tokenId);\n\n /***************************************************\n * ERRORS *\n ***************************************************/\n\n error NotOwnerOrSupplier();\n\n error CancellationProposalExists(uint256 tokenId);\n\n error IncorrectRefundAmount(uint256 tokenId, uint256 existing, uint256 checked);\n\n error InvalidCancellationProposalStatus(uint256 tokenId, CancellationProposalStatus status);\n\n error OnlySupplierCanFinalizeCancellation(uint256 tokenId);\n\n error OwnerNotAcceptedCancellation(uint256 tokenId);\n\n error ProposerCanNotRejectCancellation(uint256 tokenId);\n\n error OnlyCurrentProposerCanWithdrawCancellation(uint256 tokenId);\n\n /***************************************************\n * CANCELLATION LOGIC *\n ***************************************************/\n\n function requireOwnerOrSupplier(address owner, address supplier) internal view {\n if (msg.sender != owner && msg.sender != supplier) {\n revert NotOwnerOrSupplier();\n }\n }\n\n modifier onlyOwnerOrSupplier(address owner, address supplier) {\n requireOwnerOrSupplier(owner, supplier);\n _;\n }\n\n function _getCancellationProposalStatusAndCurrentProposer(\n uint256 tokenId\n ) internal view returns (CancellationProposalStatus status, address currentProposer) {\n return (\n _getBookingTokenCancellableStorage()._proposals[tokenId].status,\n _getBookingTokenCancellableStorage()._proposals[tokenId].currentProposer\n );\n }\n\n function getCancellationProposal(\n uint256 tokenId\n )\n external\n view\n returns (\n CancellationProposalStatus,\n uint256 refundAmount,\n address initialProposer,\n address currentProposer,\n bool ownerAccepted,\n bool supplierAccepted,\n uint32 timesCountered,\n uint32 timesRejected\n )\n {\n Proposal storage proposal = _getBookingTokenCancellableStorage()._proposals[tokenId];\n\n return (\n proposal.status,\n proposal.refundAmount,\n proposal.initialProposer,\n proposal.currentProposer,\n proposal.ownerAccepted,\n proposal.supplierAccepted,\n proposal.timesCountered,\n proposal.timesRejected\n );\n }\n\n function getCancellationReasons(\n uint256 tokenId\n )\n external\n view\n returns (\n uint16 cancellationReason,\n uint16 cancellationVersion,\n uint16 rejectionReason,\n uint16 rejectionVersion,\n uint16 counterReason,\n uint16 counterVersion,\n uint16 withdrawalReason,\n uint16 withdrawalVersion\n )\n {\n Proposal storage proposal = _getBookingTokenCancellableStorage()._proposals[tokenId];\n\n return (\n proposal.cancellationReason,\n proposal.cancellationVersion,\n proposal.rejectionReason,\n proposal.rejectionVersion,\n proposal.counterReason,\n proposal.counterVersion,\n proposal.withdrawalReason,\n proposal.withdrawalVersion\n );\n }\n\n function _initiateCancellation(\n address owner,\n address supplier,\n uint256 tokenId,\n uint256 refundAmount,\n uint16 cancellationReason,\n uint16 cancellationReasonVersion\n ) internal virtual onlyOwnerOrSupplier(owner, supplier) {\n Proposal storage proposal = _getBookingTokenCancellableStorage()._proposals[tokenId];\n\n // Revert if proposal is finalized or pending\n if (\n proposal.status == CancellationProposalStatus.FINALIZED ||\n proposal.status == CancellationProposalStatus.PENDING\n ) {\n revert InvalidCancellationProposalStatus(tokenId, proposal.status);\n }\n\n // Set initial owner if this is the first proposal\n if (proposal.status == CancellationProposalStatus.NO_PROPOSAL) {\n proposal.initialProposer = msg.sender;\n }\n\n // REST IS WITHDRAW/REJECTED LOGIC\n\n // Set the current proposer\n proposal.currentProposer = msg.sender;\n\n // Set refund amount\n proposal.refundAmount = refundAmount;\n\n // Set accepted flags\n proposal.ownerAccepted = (msg.sender == owner);\n proposal.supplierAccepted = (msg.sender == supplier);\n\n // Set new cancellation reason\n proposal.cancellationReason = cancellationReason;\n proposal.cancellationVersion = cancellationReasonVersion;\n\n // Reset other reasons\n proposal.rejectionReason = 0;\n proposal.rejectionVersion = 0;\n proposal.counterReason = 0;\n proposal.counterVersion = 0;\n proposal.withdrawalReason = 0;\n proposal.withdrawalVersion = 0;\n\n // Set status to PENDING\n proposal.status = CancellationProposalStatus.PENDING;\n\n // Emit event\n emit CancellationPending(\n tokenId,\n proposal.initialProposer,\n proposal.currentProposer,\n proposal.refundAmount,\n proposal.ownerAccepted,\n proposal.supplierAccepted,\n proposal.timesCountered,\n proposal.timesRejected\n );\n\n // Emit reasons event\n emit CancellationReasons(\n tokenId,\n proposal.cancellationReason,\n proposal.cancellationVersion,\n proposal.rejectionReason,\n proposal.rejectionVersion,\n proposal.counterReason,\n proposal.counterVersion,\n proposal.withdrawalReason,\n proposal.withdrawalVersion\n );\n }\n\n /**\n * @notice Used by the owner or supplier to accept a cancellation proposal that\n * is initiated or countered by the other party\n *\n * @param owner Owner of the token\n * @param supplier Supplier of the token\n * @param tokenId Token ID\n * @param checkRefundAmount Refund amount to check against, to prevent front-running\n */\n function _acceptCancellation(\n address owner,\n address supplier,\n uint256 tokenId,\n uint256 checkRefundAmount\n ) internal virtual onlyOwnerOrSupplier(owner, supplier) {\n Proposal storage proposal = _getBookingTokenCancellableStorage()._proposals[tokenId];\n\n // Revert if not in PENDING state\n if (proposal.status != CancellationProposalStatus.PENDING) {\n revert InvalidCancellationProposalStatus(tokenId, proposal.status);\n }\n\n // Revert if refund amount does not match\n if (proposal.refundAmount != checkRefundAmount) {\n revert IncorrectRefundAmount(tokenId, proposal.refundAmount, checkRefundAmount);\n }\n\n // Accept the cancellation\n if (msg.sender == owner) {\n proposal.ownerAccepted = true;\n } else {\n proposal.supplierAccepted = true;\n }\n\n // Emit event\n emit CancellationPending(\n tokenId,\n proposal.initialProposer,\n proposal.currentProposer,\n proposal.refundAmount,\n proposal.ownerAccepted,\n proposal.supplierAccepted,\n proposal.timesCountered,\n proposal.timesRejected\n );\n\n // Emit reasons event\n emit CancellationReasons(\n tokenId,\n proposal.cancellationReason,\n proposal.cancellationVersion,\n proposal.rejectionReason,\n proposal.rejectionVersion,\n proposal.counterReason,\n proposal.counterVersion,\n proposal.withdrawalReason,\n proposal.withdrawalVersion\n );\n }\n\n function _counterCancellation(\n address owner,\n address supplier,\n uint256 tokenId,\n uint256 refundAmount,\n uint16 counterReason,\n uint16 counterVersion\n ) internal virtual onlyOwnerOrSupplier(owner, supplier) {\n Proposal storage proposal = _getBookingTokenCancellableStorage()._proposals[tokenId];\n\n // Revert if not in PENDING state\n if (proposal.status != CancellationProposalStatus.PENDING) {\n revert InvalidCancellationProposalStatus(tokenId, proposal.status);\n }\n\n // Set new refund amount\n proposal.refundAmount = refundAmount;\n\n // Set the current proposer to the counter proposer\n proposal.currentProposer = msg.sender;\n\n // Set accepted flags\n proposal.ownerAccepted = (msg.sender == owner);\n proposal.supplierAccepted = (msg.sender == supplier);\n\n // Set the counter reason\n proposal.counterReason = counterReason;\n proposal.counterVersion = counterVersion;\n\n // Increment times countered\n proposal.timesCountered++;\n\n // Emit event\n emit CancellationPending(\n tokenId,\n proposal.initialProposer,\n proposal.currentProposer,\n proposal.refundAmount,\n proposal.ownerAccepted,\n proposal.supplierAccepted,\n proposal.timesCountered,\n proposal.timesRejected\n );\n\n // Emit reasons event\n emit CancellationReasons(\n tokenId,\n proposal.cancellationReason,\n proposal.cancellationVersion,\n proposal.rejectionReason,\n proposal.rejectionVersion,\n proposal.counterReason,\n proposal.counterVersion,\n proposal.withdrawalReason,\n proposal.withdrawalVersion\n );\n }\n\n function _withdrawCancellation(\n address owner,\n address supplier,\n uint256 tokenId,\n uint16 withdrawalReason,\n uint16 withdrawalVersion\n ) internal virtual onlyOwnerOrSupplier(owner, supplier) {\n Proposal storage proposal = _getBookingTokenCancellableStorage()._proposals[tokenId];\n\n // Revert if not in PENDING state\n if (proposal.status != CancellationProposalStatus.PENDING) {\n revert InvalidCancellationProposalStatus(tokenId, proposal.status);\n }\n\n // Only current proposer can withdraw\n if (msg.sender != proposal.currentProposer) {\n revert OnlyCurrentProposerCanWithdrawCancellation(tokenId);\n }\n\n // Set withdrawal reason\n proposal.withdrawalReason = withdrawalReason;\n proposal.withdrawalVersion = withdrawalVersion;\n\n // Set status to WITHDRAWN\n proposal.status = CancellationProposalStatus.WITHDRAWN;\n\n // Emit event\n emit CancellationWithdrawn(tokenId, withdrawalReason, withdrawalVersion);\n }\n\n function _rejectCancellation(\n address owner,\n address supplier,\n uint256 tokenId,\n uint16 rejectionReason,\n uint16 rejectionReasonVersion\n ) internal virtual onlyOwnerOrSupplier(owner, supplier) {\n Proposal storage proposal = _getBookingTokenCancellableStorage()._proposals[tokenId];\n\n // Revert if not in PENDING state\n if (proposal.status != CancellationProposalStatus.PENDING) {\n revert InvalidCancellationProposalStatus(tokenId, proposal.status);\n }\n\n // Proposer can not reject the cancellation\n if (msg.sender == proposal.currentProposer) {\n revert ProposerCanNotRejectCancellation(tokenId);\n }\n\n // Set reason\n proposal.rejectionReason = rejectionReason;\n proposal.rejectionVersion = rejectionReasonVersion;\n\n // Set status to REJECTED\n proposal.status = CancellationProposalStatus.REJECTED;\n\n // Increment times rejected\n proposal.timesRejected++;\n\n // Emit event\n emit CancellationRejected(tokenId, rejectionReason, rejectionReasonVersion);\n }\n\n function _finalizeCancellation(\n address supplier,\n uint256 tokenId,\n uint256 checkRefundAmount\n ) internal virtual returns (uint256 refundAmount) {\n // Only supplier can finalize the cancellation\n if (msg.sender != supplier) {\n revert OnlySupplierCanFinalizeCancellation(tokenId);\n }\n\n Proposal storage proposal = _getBookingTokenCancellableStorage()._proposals[tokenId];\n\n // Revert if not in PENDING state\n if (proposal.status != CancellationProposalStatus.PENDING) {\n revert InvalidCancellationProposalStatus(tokenId, proposal.status);\n }\n\n // Revert if refund amount does not match\n if (proposal.refundAmount != checkRefundAmount) {\n revert IncorrectRefundAmount(tokenId, proposal.refundAmount, checkRefundAmount);\n }\n\n // Revert if owner has not accepted the cancellation\n if (!proposal.ownerAccepted) {\n revert OwnerNotAcceptedCancellation(tokenId);\n }\n\n // Set supplier accepted\n if (!proposal.supplierAccepted) {\n proposal.supplierAccepted = true;\n }\n\n // Set status to FINALIZED\n proposal.status = CancellationProposalStatus.FINALIZED;\n\n // Emit event. Payment should be handled by the inheriting contract.\n emit CancellationFinalized(tokenId);\n\n return proposal.refundAmount;\n }\n}\n" + }, + "contracts/booking-token/BookingTokenOperator.sol": { + "content": "// SPDX-License-Identifier: UNLICENSED\npragma solidity 0.8.24;\n\nimport { IBookingToken, IERC20 } from \"./IBookingToken.sol\";\nimport { CancellationProposalStatus } from \"./BookingTokenCancellable.sol\";\n\n// ERC-20 Utils\nimport { SafeERC20 } from \"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\";\n\n/**\n * @title BookingTokenOperator\n * @notice Booking token operator contract is used by the {CMAccount} contract to mint\n * and buy booking tokens.\n *\n * We made this a library so that we can use it in the {CMAccount} contract without\n * increasing the size of the contract.\n */\nlibrary BookingTokenOperator {\n using SafeERC20 for IERC20;\n\n /***************************************************\n * CONSTANTS *\n ***************************************************/\n\n /**\n * @dev Special address for native payments.\n * @notice Tokens are directly transferred to the recipient.\n */\n address public constant NATIVE_PAYMENT = address(0);\n\n /**\n * @dev Special address for offchain payments.\n * @notice A third-party service is used to handle payments.\n */\n address public constant OFFCHAIN_PAYMENT = address(1);\n\n /***************************************************\n * FUNCS *\n ***************************************************/\n\n error UnexpectedPrice(uint256 tokenId, uint256 actualPrice, uint256 expectedPrice);\n\n error UnexpectedPaymentToken(uint256 tokenId, IERC20 actualPaymentToken, IERC20 expectedPaymentToken);\n\n /***************************************************\n * FUNCS *\n ***************************************************/\n\n /**\n * @dev Mints a booking token with offchain payment currency and cancellable support.\n *\n * @param bookingToken booking token contract address\n * @param reservedFor address of the CM Account that can buy the token\n * (generally the distributor)\n * @param uri URI of the token\n * @param expirationTimestamp expiration timestamp of the token in seconds\n * @param price price of the token\n * @param paymentToken payment token address\n * @param offchainPaymentCurrency payment token address\n * @param cancellable cancellable flag\n */\n function mintBookingToken(\n address bookingToken,\n address reservedFor,\n string memory uri,\n uint256 expirationTimestamp,\n uint256 price,\n IERC20 paymentToken,\n uint256 offchainPaymentCurrency,\n bool cancellable\n ) public {\n IBookingToken(bookingToken).safeMintWithReservation(\n reservedFor,\n uri,\n expirationTimestamp,\n price,\n paymentToken,\n offchainPaymentCurrency,\n cancellable\n );\n }\n\n /**\n * @dev Buys a booking token with the specified price and payment token in the\n * reservation.\n *\n * @param bookingToken booking token contract address\n * @param tokenId token id\n */\n function buyBookingToken(\n address bookingToken,\n uint256 tokenId,\n uint256 expectedPrice,\n IERC20 expectedPaymentToken\n ) public {\n // Get the price from the booking token contract\n (uint256 price, IERC20 paymentToken) = IBookingToken(bookingToken).getReservationPrice(tokenId);\n\n // Check if the price is correct\n if (price != expectedPrice) {\n revert UnexpectedPrice(tokenId, price, expectedPrice);\n }\n\n // Check if the payment token is correct\n if (address(paymentToken) != address(expectedPaymentToken)) {\n revert UnexpectedPaymentToken(tokenId, paymentToken, expectedPaymentToken);\n }\n\n if (address(paymentToken) == NATIVE_PAYMENT) {\n // Payment is in native currency. Buy the token by sending the payment\n // in native currency to the BookingToken contract.\n IBookingToken(bookingToken).buyReservedToken{ value: price }(tokenId);\n } else if (address(paymentToken) == OFFCHAIN_PAYMENT) {\n // Off-chain payment - no on-chain transfer needed\n IBookingToken(bookingToken).buyReservedToken(tokenId);\n } else {\n // Payment is in ERC20. Approve the BookingToken contract for the\n // reservation price. BookingToken should do the transfer to the\n // supplier.\n paymentToken.forceApprove(bookingToken, price);\n\n // Buy the token\n IBookingToken(bookingToken).buyReservedToken(tokenId);\n }\n }\n\n /**\n * @notice Record the expiration of a booking token.\n *\n * @param bookingToken booking token contract address\n * @param tokenId token id\n */\n function recordExpiration(address bookingToken, uint256 tokenId) public {\n IBookingToken(bookingToken).recordExpiration(tokenId);\n }\n\n /***************************************************\n * CANCELLATION LOGIC *\n ***************************************************/\n\n /**\n * @notice Initiates a cancellation proposal for a bought token.\n *\n * @param bookingToken booking token contract address\n * @param tokenId token id\n * @param refundAmount proposed refund amount\n * @param cancellationReason cancellation reason\n * @param cancellationReasonVersion cancellation reason version\n */\n function initiateCancellation(\n address bookingToken,\n uint256 tokenId,\n uint256 refundAmount,\n uint16 cancellationReason,\n uint16 cancellationReasonVersion\n ) external {\n IBookingToken(bookingToken).initiateCancellation(\n tokenId,\n refundAmount,\n cancellationReason,\n cancellationReasonVersion\n );\n }\n\n /**\n * @notice Sets accepted by the owner or supplier flag for a cancellation proposal for a bought token.\n *\n * @param tokenId The token id to accept the cancellation for\n * @param refundAmount The refund amount to check, this is to prevent front-running attacks\n */\n function acceptCancellation(address bookingToken, uint256 tokenId, uint256 refundAmount) external {\n IBookingToken(bookingToken).acceptCancellation(tokenId, refundAmount);\n }\n\n /**\n * @notice Counters a cancellation proposal.\n *\n * @param bookingToken booking token contract address\n * @param tokenId token id\n * @param refundAmount proposed refund amount\n */\n function counterCancellation(\n address bookingToken,\n uint256 tokenId,\n uint256 refundAmount,\n uint16 counterReason,\n uint16 counterReasonVersion\n ) public {\n IBookingToken(bookingToken).counterCancellation(tokenId, refundAmount, counterReason, counterReasonVersion);\n }\n\n /**\n * @notice Withdraws a cancellation proposal.\n *\n * @param bookingToken booking token contract address\n * @param tokenId token id for which to withdraw the proposal\n * @param reason The reason for withdrawing the proposal\n * @param reasonVersion The version of the withdrawal reason from the CMP\n */\n function withdrawCancellation(address bookingToken, uint256 tokenId, uint16 reason, uint16 reasonVersion) public {\n IBookingToken(bookingToken).withdrawCancellation(tokenId, reason, reasonVersion);\n }\n\n /**\n * @notice Reject a cancellation proposal for a bought token.\n *\n * @param bookingToken booking token contract address\n * @param tokenId The token id to reject the cancellation for\n * @param rejectionReason The reason for rejecting the cancellation\n * @param rejectionReasonVersion Version of the rejection reason enum from the CMP\n */\n function rejectCancellation(\n address bookingToken,\n uint256 tokenId,\n uint16 rejectionReason,\n uint16 rejectionReasonVersion\n ) external {\n IBookingToken(bookingToken).rejectCancellation(tokenId, rejectionReason, rejectionReasonVersion);\n }\n\n /**\n * @notice Finalizes a cancellation proposal by transferring the refund amount\n * to the Booking Token contract.\n *\n * @param bookingToken BookingToken contract address\n * @param tokenId The token id for which to finalize the proposal\n * @param refundAmount The refund amount to check, this is to prevent front-running attacks\n */\n function finalizeCancellation(address bookingToken, uint256 tokenId, uint256 refundAmount) public {\n IERC20 paymentToken = IBookingToken(bookingToken).getReservationPaymentToken(tokenId);\n\n // Check if payment is in native currency or in ERC20\n if (address(paymentToken) == NATIVE_PAYMENT) {\n // Payment is in native currency. Finalize the cancellation by sending\n // the payment in native currency to the BookingToken contract.\n IBookingToken(bookingToken).finalizeCancellation{ value: refundAmount }(tokenId, refundAmount);\n } else if (address(paymentToken) == OFFCHAIN_PAYMENT) {\n // Off-chain payment - no on-chain transfer needed\n IBookingToken(bookingToken).finalizeCancellation(tokenId, refundAmount);\n } else {\n // Payment is in ERC20. Approve the BookingToken contract for the\n // refund amount. BookingToken should do the transfer to the\n // supplier.\n paymentToken.forceApprove(bookingToken, refundAmount);\n\n // Accept the cancellation\n IBookingToken(bookingToken).finalizeCancellation(tokenId, refundAmount);\n }\n }\n}\n" + }, + "contracts/booking-token/IBookingToken.sol": { + "content": "// SPDX-License-Identifier: UNLICENSED\npragma solidity 0.8.24;\n\nimport { IERC20 } from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\n\ninterface IBookingToken {\n function safeMintWithReservation(\n address reservedFor,\n string memory uri,\n uint256 expirationTimestamp,\n uint256 price,\n IERC20 paymentToken,\n uint256 offchainPaymentCurrency,\n bool isCancellable\n ) external;\n\n function buyReservedToken(uint256 tokenId) external payable;\n\n function getReservationPrice(uint256 tokenId) external view returns (uint256 price, IERC20 paymentToken);\n\n function getReservationPaymentToken(uint256 tokenId) external view returns (IERC20 paymentToken);\n\n /**\n * @notice Record expiration status if the token is expired\n * @param tokenId The token id to record as expired\n */\n function recordExpiration(uint256 tokenId) external;\n\n /***************************************************\n * CANCELLATION LOGIC *\n ***************************************************/\n\n /**\n * @notice Initiates a cancellation for a bought token.\n *\n * @param tokenId The token id to initiate the cancellation for\n * @param refundAmount The proposed refund amount in wei\n * @param cancellationReason The reason for cancellation\n * @param cancellationReasonVersion The version of the cancellation reason\n */\n function initiateCancellation(\n uint256 tokenId,\n uint256 refundAmount,\n uint16 cancellationReason,\n uint16 cancellationReasonVersion\n ) external;\n\n /**\n * @notice Sets accepted by the owner or supplier flag for a cancellation proposal for a bought token.\n *\n * @param tokenId The token id to accept the cancellation for\n * @param refundAmount The refund amount to check, this is to prevent front-running attacks\n */\n function acceptCancellation(uint256 tokenId, uint256 refundAmount) external;\n\n /**\n * @notice Reject a cancellation proposal for a bought token.\n *\n * @param tokenId The token id to reject the cancellation for\n * @param rejectionReason The reason for rejection\n * @param rejectionReasonVersion The version of the rejection reason\n */\n function rejectCancellation(uint256 tokenId, uint16 rejectionReason, uint16 rejectionReasonVersion) external;\n\n /**\n * @notice Counters a cancellation proposal with a new proposal.\n *\n * @param tokenId The token id to counter the cancellation for\n * @param refundAmount The refund amount to check, this is to prevent front-running attacks\n * @param counterReason The reason for the counter\n * @param counterReasonVersion The version of the counter reason\n */\n function counterCancellation(\n uint256 tokenId,\n uint256 refundAmount,\n uint16 counterReason,\n uint16 counterReasonVersion\n ) external;\n\n /**\n * @notice Withdraws an active cancellation proposal. Only the current proposer of the proposal can withdraw.\n *\n * @param tokenId The token id for which to withdraw the proposal\n * @param withdrawalReason The reason for withdrawing the proposal\n * @param withdrawalReasonVersion The version of the withdrawal reason\n */\n function withdrawCancellation(uint256 tokenId, uint16 withdrawalReason, uint16 withdrawalReasonVersion) external;\n\n /**\n * @notice Finalizes a cancellation proposal. Only the supplier of the token can finalize.\n *\n * @param tokenId The token id for which to finalize the proposal\n * @param refundAmount The refund amount to check, this is to prevent front-running attacks\n */\n function finalizeCancellation(uint256 tokenId, uint256 refundAmount) external payable;\n}\n" + }, + "contracts/manager/CMAccountManager.sol": { + "content": "// SPDX-License-Identifier: UNLICENSED\n//\n// Camino Messenger Account Manager\n\npragma solidity 0.8.24;\n\n// UUPS Proxy\nimport { Initializable } from \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport { ERC1967Proxy } from \"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\";\nimport { UUPSUpgradeable } from \"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\";\n\n// Access\nimport { PausableUpgradeable } from \"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol\";\nimport { AccessControlEnumerableUpgradeable } from \"@openzeppelin/contracts-upgradeable/access/extensions/AccessControlEnumerableUpgradeable.sol\";\nimport { ReentrancyGuardUpgradeable } from \"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\";\n\n// ABI of the CMAccount implementation contract\nimport { ICMAccount } from \"../account/ICMAccount.sol\";\n\n// Utils\nimport { Address } from \"@openzeppelin/contracts/utils/Address.sol\";\n\n// Service Registry\nimport { ServiceRegistry } from \"../partner/ServiceRegistry.sol\";\n\n/**\n * @title Camino Messenger Account Manager\n * @notice This contract manages the creation of the Camino Messenger accounts by\n * deploying {ERC1967Proxy} proxies that point to the{CMAccount} implementation\n * address.\n *\n * Create CM Account: Users who want to create an account should call\n * `createCMAccount(address admin, address upgrader)` function with addresses of\n * the accounts admin and upgrader roles and also send the pre fund amount,\n * which is currently set as 100 CAMs. When the manager contract is paused,\n * account creation is stopped.\n *\n * Developer Fee: This contracts also keeps the info about the developer wallet\n * and fee basis points. Which are used during the cheque cash in to pay for the\n * developer fee.\n *\n * Service Registry: {CMAccountManager} also acts as a registry for the services\n * that {CMAccount} contracts add as a supported or wanted service. Registry\n * works by hashing (keccak256) the service name (string) and creating a mapping\n * as keccak256(serviceName) => serviceName. And provides functions that\n * {CMAccount} function uses to register services. The {CMAccount} only keeps\n * the hashes (byte32) of the registered services.\n * @custom:security-contact https://r.xyz/program/camino-network\n */\ncontract CMAccountManager is\n Initializable,\n PausableUpgradeable,\n AccessControlEnumerableUpgradeable,\n UUPSUpgradeable,\n ReentrancyGuardUpgradeable,\n ServiceRegistry\n{\n using Address for address payable;\n\n /**\n * @notice Pauser role can pause the contract. Currently this only affects the\n * creation of CM Accounts. When paused, account creation is stopped.\n */\n bytes32 public constant PAUSER_ROLE = keccak256(\"PAUSER_ROLE\");\n\n /**\n * @notice Upgrader role can upgrade the contract to a new implementation.\n */\n bytes32 public constant UPGRADER_ROLE = keccak256(\"UPGRADER_ROLE\");\n\n /**\n * @notice Versioner role can set new {CMAccount} implementation address. When a\n * new implementation address is set, it is used for the new {CMAccount}\n * creations.\n *\n * The old {CMAccount} contracts are not affected by this. Owners of those\n * should do the upgrade manually by calling the `upgradeToAndCall(address)`\n * function on the account.\n */\n bytes32 public constant VERSIONER_ROLE = keccak256(\"VERSIONER_ROLE\");\n\n /**\n * @notice Fee admin role can set the developer fee basis points which used for\n * calculating the developer fee that is cut from the cheque payments.\n */\n bytes32 public constant FEE_ADMIN_ROLE = keccak256(\"FEE_ADMIN_ROLE\");\n\n /**\n * @notice Developer wallet admin role can set the developer wallet address\n * which is used to receive the developer fee.\n */\n bytes32 public constant DEVELOPER_WALLET_ADMIN_ROLE = keccak256(\"DEVELOPER_WALLET_ADMIN_ROLE\");\n\n /**\n * @notice Prefund admin role can set the mandatory prefund amount for {CMAccount}\n * contracts.\n */\n bytes32 public constant PREFUND_ADMIN_ROLE = keccak256(\"PREFUND_ADMIN_ROLE\");\n\n /**\n * @notice Service registry admin role can add and remove services to the service\n * registry mapping. Implemented by {ServiceRegistry} contract.\n */\n bytes32 public constant SERVICE_REGISTRY_ADMIN_ROLE = keccak256(\"SERVICE_REGISTRY_ADMIN_ROLE\");\n\n /**\n * @notice This role is granted to the created CM Accounts. It is used to keep\n * an enumerable list of CM Accounts.\n */\n bytes32 public constant CMACCOUNT_ROLE = keccak256(\"CMACCOUNT_ROLE\");\n\n /***************************************************\n * STORAGE *\n ***************************************************/\n\n /**\n * @notice CMAccount info struct, to keep track of created CM Accounts and their\n * creators.\n */\n struct CMAccountInfo {\n bool isCMAccount;\n address creator;\n }\n\n /// @custom:storage-location erc7201:camino.messenger.storage.CMAccountManager\n struct CMAccountManagerStorage {\n /**\n * @dev CM Account implementation address to be used by the CMAccount contract to restrict\n * the implementation address for the UUPS proxies.\n */\n address _latestAccountImplementation;\n /**\n * @dev Prefund amount.\n */\n uint256 _prefundAmount;\n /**\n * @dev Developer wallet address. CMAccount sends the developer fee to this address.\n */\n address _developerWallet;\n /**\n * @dev Developer fee basis points.\n *\n * A basis point (bp) is one hundredth of 1 percentage point.\n *\n * 1 bp = 0.01%, 1/10,000⁠, or 0.0001.\n * 10 bp = 0.1%, 1/1,000⁠, or 0.001.\n * 100 bp = 1%, ⁠1/100⁠, or 0.01.\n */\n uint256 _developerFeeBp;\n /**\n * @dev BookingToken address.\n */\n address _bookingToken;\n /**\n * @dev CMAccount info mapping to track if an address is a CMAccount and initial creators.\n */\n mapping(address account => CMAccountInfo) _cmAccountInfo;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"camino.messenger.storage.CMAccountManager\")) - 1)) & ~bytes32(uint256(0xff));\n bytes32 private constant CMAccountManagerStorageLocation =\n 0x2b421af391835920c41e77b6810f6e715f5b713c17bc590f55de6a7d3912e800;\n\n function _getCMAccountManagerStorage() private pure returns (CMAccountManagerStorage storage $) {\n assembly {\n $.slot := CMAccountManagerStorageLocation\n }\n }\n\n /***************************************************\n * EVENTS *\n ***************************************************/\n\n /**\n * @notice CM Account created event.\n * @param account The address of the new CMAccount\n */\n event CMAccountCreated(address indexed account);\n\n /**\n * @notice CM Account implementation address updated event.\n * @param oldImplementation The old implementation address\n * @param newImplementation The new implementation address\n */\n event CMAccountImplementationUpdated(address indexed oldImplementation, address indexed newImplementation);\n\n /**\n * @notice Developer wallet address updated event.\n * @param oldDeveloperWallet The old developer wallet address\n * @param newDeveloperWallet The new developer wallet address\n */\n event DeveloperWalletUpdated(address indexed oldDeveloperWallet, address indexed newDeveloperWallet);\n\n /**\n * @notice Developer fee basis points updated event.\n * @param oldDeveloperFeeBp The old developer fee basis points\n * @param newDeveloperFeeBp The new developer fee basis points\n */\n event DeveloperFeeBpUpdated(uint256 indexed oldDeveloperFeeBp, uint256 indexed newDeveloperFeeBp);\n\n /**\n * @notice Booking token address updated event.\n * @param oldBookingToken The old booking token address\n * @param newBookingToken The new booking token address\n */\n event BookingTokenAddressUpdated(address indexed oldBookingToken, address indexed newBookingToken);\n\n /***************************************************\n * ERRORS *\n ***************************************************/\n\n /**\n * @notice The implementation of the CMAccount is invalid.\n * @param implementation The implementation address of the CMAccount\n */\n error CMAccountInvalidImplementation(address implementation);\n\n /**\n * @notice The admin address is invalid.\n * @param admin The admin address\n */\n error CMAccountInvalidAdmin(address admin);\n\n /**\n * @notice Invalid developer address.\n * @param developerWallet The developer wallet address\n */\n error InvalidDeveloperWallet(address developerWallet);\n\n /**\n * @notice Invalid booking token address.\n * @param bookingToken The booking token address\n */\n error InvalidBookingTokenAddress(address bookingToken);\n\n /**\n * @notice Incorrect pre fund amount.\n * @param expected The expected pre fund amount\n */\n error IncorrectPrefundAmount(uint256 expected, uint256 sended);\n\n /***************************************************\n * FUNCS *\n ***************************************************/\n\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n\n function initialize(\n address defaultAdmin, // can grant roles\n address pauser, // can pause the manager\n address upgrader, // can upgrade the manager (this contract)\n address versioner, // can set CMAccount implementation address\n address developerWallet, // developer wallet used to receive the developer fee\n uint256 developerFeeBp // developer fee basis points\n ) public initializer {\n __Pausable_init();\n __AccessControl_init();\n __UUPSUpgradeable_init();\n\n _grantRole(DEFAULT_ADMIN_ROLE, defaultAdmin);\n _grantRole(PAUSER_ROLE, pauser);\n _grantRole(UPGRADER_ROLE, upgrader);\n _grantRole(VERSIONER_ROLE, versioner);\n\n CMAccountManagerStorage storage $ = _getCMAccountManagerStorage();\n\n $._developerWallet = developerWallet;\n $._developerFeeBp = developerFeeBp;\n\n // Set initial prefund amount to 100 CAM\n $._prefundAmount = 100 ether;\n }\n\n /**\n * @notice Pauses the CMAccountManager contract. Currently this only affects the\n * creation of CMAccount. When paused, account creation is stopped.\n */\n function pause() public onlyRole(PAUSER_ROLE) {\n _pause();\n }\n\n /**\n * @notice Unpauses the CMAccountManager contract.\n */\n function unpause() public onlyRole(PAUSER_ROLE) {\n _unpause();\n }\n\n /**\n * @notice Authorization for the CMAccountManager contract upgrade.\n */\n function _authorizeUpgrade(address newImplementation) internal override onlyRole(UPGRADER_ROLE) {}\n\n /***************************************************\n * ACCOUNT *\n ***************************************************/\n\n /**\n * @notice Creates CMAccount by deploying a ERC1967Proxy with the CMAccount\n * implementation from the manager.\n *\n * Because this function is deploying a contract, it reverts if the caller is\n * not KYC or KYB verified. (For EOAs only)\n *\n * Caller must send the pre-fund amount with the transaction.\n *\n * @dev Emits a {CMAccountCreated} event.\n */\n function createCMAccount(\n address admin,\n address upgrader\n ) external payable nonReentrant whenNotPaused returns (address) {\n return _createCMAccount(admin, upgrader);\n }\n\n /**\n * @notice Private function to create a `CMAccount`.\n */\n function _createCMAccount(address admin, address upgrader) private returns (address) {\n // Checks\n if (admin == address(0)) {\n revert CMAccountInvalidAdmin(admin);\n }\n\n uint256 prefundAmount = getPrefundAmount();\n\n // Check pre-fund amount\n if (msg.value < prefundAmount) {\n revert IncorrectPrefundAmount(prefundAmount, msg.value);\n }\n\n address latestAccountImplementation = getAccountImplementation();\n if (latestAccountImplementation.code.length == 0) {\n revert CMAccountInvalidImplementation(latestAccountImplementation);\n }\n\n address bookingToken = getBookingTokenAddress();\n if (bookingToken.code.length == 0) {\n revert InvalidBookingTokenAddress(bookingToken);\n }\n\n // Create CMAccount Proxy and set the implementation address\n ERC1967Proxy cmAccountProxy = new ERC1967Proxy(latestAccountImplementation, \"\");\n\n // Initialize the CMAccount\n ICMAccount(address(cmAccountProxy)).initialize(address(this), bookingToken, prefundAmount, admin, upgrader);\n\n // Set the isCMAccount and creator\n _setCMAccountInfo(address(cmAccountProxy), CMAccountInfo({ isCMAccount: true, creator: msg.sender }));\n\n // Grant CMACCOUNT_ROLE\n _grantRole(CMACCOUNT_ROLE, address(cmAccountProxy));\n\n // Send the pre fund to the CMAccount\n payable(cmAccountProxy).sendValue(msg.value);\n\n emit CMAccountCreated(address(cmAccountProxy));\n\n return address(cmAccountProxy);\n }\n\n function _setCMAccountInfo(address account, CMAccountInfo memory info) internal {\n CMAccountManagerStorage storage $ = _getCMAccountManagerStorage();\n $._cmAccountInfo[account] = info;\n }\n\n /**\n * @notice Returns the given account's creator.\n * @param account The account address\n */\n function getCMAccountCreator(address account) public view returns (address) {\n CMAccountManagerStorage storage $ = _getCMAccountManagerStorage();\n return $._cmAccountInfo[account].creator;\n }\n\n /**\n * @notice Check if an address is CMAccount created by the manager.\n * @param account The account address to check\n */\n function isCMAccount(address account) public view returns (bool) {\n CMAccountManagerStorage storage $ = _getCMAccountManagerStorage();\n return $._cmAccountInfo[account].isCMAccount;\n }\n\n /***************************************************\n * ACCOUNT IMPLEMENTATION *\n ***************************************************/\n\n /**\n * @notice Returns the CMAccount implementation address.\n */\n function getAccountImplementation() public view returns (address) {\n CMAccountManagerStorage storage $ = _getCMAccountManagerStorage();\n return $._latestAccountImplementation;\n }\n\n /**\n * @notice Set a new CMAccount implementation address.\n * @param newImplementation The new implementation address\n */\n function setAccountImplementation(address newImplementation) public onlyRole(VERSIONER_ROLE) {\n if (newImplementation.code.length == 0) {\n revert CMAccountInvalidImplementation(newImplementation);\n }\n\n address oldImplementation = getAccountImplementation();\n _setAccountImplementation(newImplementation);\n emit CMAccountImplementationUpdated(oldImplementation, newImplementation);\n }\n\n function _setAccountImplementation(address newImplementation) internal {\n CMAccountManagerStorage storage $ = _getCMAccountManagerStorage();\n $._latestAccountImplementation = newImplementation;\n }\n\n /***************************************************\n * PREFUND *\n ***************************************************/\n\n /**\n * @notice Returns the prefund amount.\n */\n function getPrefundAmount() public view returns (uint256) {\n CMAccountManagerStorage storage $ = _getCMAccountManagerStorage();\n return $._prefundAmount;\n }\n\n /**\n * @notice Sets the prefund amount.\n */\n function setPrefundAmount(uint256 newPrefundAmount) public onlyRole(PREFUND_ADMIN_ROLE) {\n CMAccountManagerStorage storage $ = _getCMAccountManagerStorage();\n $._prefundAmount = newPrefundAmount;\n }\n\n /***************************************************\n * BOOKING TOKEN *\n ***************************************************/\n\n /**\n * @notice Returns the booking token address.\n */\n function getBookingTokenAddress() public view returns (address) {\n CMAccountManagerStorage storage $ = _getCMAccountManagerStorage();\n return $._bookingToken;\n }\n\n /**\n * @notice Sets booking token address.\n */\n function setBookingTokenAddress(address token) public onlyRole(VERSIONER_ROLE) {\n if (token.code.length == 0) {\n revert InvalidBookingTokenAddress(token);\n }\n\n address oldToken = getBookingTokenAddress();\n _setBookingTokenAddress(token);\n emit BookingTokenAddressUpdated(oldToken, token);\n }\n\n function _setBookingTokenAddress(address token) internal {\n CMAccountManagerStorage storage $ = _getCMAccountManagerStorage();\n $._bookingToken = token;\n }\n\n /***************************************************\n * DEVELOPER WALLET & FEE *\n ***************************************************/\n\n /**\n * @notice Returns developer wallet address.\n */\n function getDeveloperWallet() public view returns (address developerWallet) {\n CMAccountManagerStorage storage $ = _getCMAccountManagerStorage();\n return $._developerWallet;\n }\n\n /**\n * @notice Sets developer wallet address.\n */\n function setDeveloperWallet(address developerWallet) public onlyRole(DEVELOPER_WALLET_ADMIN_ROLE) {\n if (developerWallet == address(0)) {\n revert InvalidDeveloperWallet(developerWallet);\n }\n\n address oldDeveloperWallet = getDeveloperWallet();\n _setDeveloperWallet(developerWallet);\n emit DeveloperWalletUpdated(oldDeveloperWallet, developerWallet);\n }\n\n function _setDeveloperWallet(address developerWallet) private {\n CMAccountManagerStorage storage $ = _getCMAccountManagerStorage();\n $._developerWallet = developerWallet;\n }\n\n /**\n * @notice Returns developer fee in basis points.\n */\n function getDeveloperFeeBp() public view returns (uint256 developerFeeBp) {\n CMAccountManagerStorage storage $ = _getCMAccountManagerStorage();\n return $._developerFeeBp;\n }\n\n /**\n * @notice Sets developer fee in basis points.\n *\n * A basis point (bp) is one hundredth of 1 percentage point.\n *\n * 1 bp = 0.01%, 1/10,000⁠, or 0.0001.\n * 10 bp = 0.1%, 1/1,000⁠, or 0.001.\n * 100 bp = 1%, ⁠1/100⁠, or 0.01.\n */\n function setDeveloperFeeBp(uint256 bp) public onlyRole(FEE_ADMIN_ROLE) {\n uint256 oldBp = getDeveloperFeeBp();\n _setDeveloperFeeBp(bp);\n emit DeveloperFeeBpUpdated(oldBp, bp);\n }\n\n function _setDeveloperFeeBp(uint256 bp) private {\n CMAccountManagerStorage storage $ = _getCMAccountManagerStorage();\n $._developerFeeBp = bp;\n }\n\n /***************************************************\n * SERVICE REGISTRY *\n ***************************************************/\n\n /**\n * @notice Registers a given service name. CM Accounts can only register services\n * if they are also registered in the service registry on the manager contract.\n *\n * @param serviceName Name of the service\n */\n function registerService(string memory serviceName) public onlyRole(SERVICE_REGISTRY_ADMIN_ROLE) {\n _registerServiceName(serviceName);\n }\n\n /**\n * @notice Unregisters a given service name. CM Accounts will not be able to register\n * the service anymore.\n *\n * @param serviceName Name of the service\n */\n function unregisterService(string memory serviceName) public onlyRole(SERVICE_REGISTRY_ADMIN_ROLE) {\n _unregisterServiceName(serviceName);\n }\n}\n" + }, + "contracts/manager/ICMAccountManager.sol": { + "content": "// SPDX-License-Identifier: UNLICENSED\n\npragma solidity 0.8.24;\n\ninterface ICMAccountManager {\n function getAccountImplementation() external view returns (address);\n\n function getDeveloperFeeBp() external view returns (uint256);\n\n function getDeveloperWallet() external view returns (address);\n\n function isCMAccount(address account) external view returns (bool);\n\n function getRegisteredServiceHashByName(string memory serviceName) external view returns (bytes32 serviceHash);\n\n function getRegisteredServiceNameByHash(bytes32 serviceHash) external view returns (string memory serviceName);\n}\n" + }, + "contracts/manager/test/CMAccountManagerTest.sol": { + "content": "// SPDX-License-Identifier: UNLICENSED\n//\n// Camino Messenger Account Manager V2 for Testing Upgrades\n\n/**\n * TESTING ONLY - NOT FOR PRODUCTION\n */\n\npragma solidity 0.8.24;\n\nimport { CMAccountManager } from \"../CMAccountManager.sol\";\n\ncontract CMAccountManagerTest is CMAccountManager {\n function getVersion() public pure returns (string memory) {\n return \"TESTING\";\n }\n\n // function setCMAccountInfo(address account, CMAccountInfo memory info) public onlyRole(DEFAULT_ADMIN_ROLE) {\n // _setCMAccountInfo(account, info);\n // }\n}\n" + }, + "contracts/partner/PartnerConfiguration.sol": { + "content": "// SPDX-License-Identifier: UNLICENSED\n//\n// Camino Messenger Partner Configuration\n\npragma solidity 0.8.24;\n\nimport { Initializable } from \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport { EnumerableSet } from \"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\";\n\n/**\n * @title PartnerConfiguration\n * @notice Partner Configuration is used by the {CMAccount} contract to register\n * supported and wanted services by the partner.\n */\nabstract contract PartnerConfiguration is Initializable {\n using EnumerableSet for EnumerableSet.Bytes32Set;\n using EnumerableSet for EnumerableSet.AddressSet;\n\n /***************************************************\n * STORAGE *\n ***************************************************/\n\n /**\n * @notice Struct for storing supported service details for suppliers\n */\n struct Service {\n uint256 _fee;\n /**\n * @dev If set to true, this means the service is restricted to pre-agreement\n * with the partner. (Not a rack rate)\n */\n bool _restrictedRate;\n string[] _capabilities;\n }\n\n struct PaymentInfo {\n bool _supportsOffChainPayment; // Supports off chain payments if true\n EnumerableSet.AddressSet _supportedTokens; // Supported on-chain token for payment\n }\n\n /// @custom:storage-location erc7201:camino.messenger.storage.PartnerConfiguration\n struct PartnerConfigurationStorage {\n // Set of supported service hashes\n EnumerableSet.Bytes32Set _servicesHashSet;\n // Mapping of service hashes to the service details\n mapping(bytes32 _serviceHash => Service _service) _supportedServices;\n // Payment\n PaymentInfo _paymentInfo;\n // Public keys, keep a enumerable list of public key addresses\n EnumerableSet.AddressSet _publicKeyAddressesSet;\n // Public keys for encrypting private data for Booking Token\n mapping(address publicKeyAddress => bytes publicKey) _publicKeys;\n // Services that this distributors want to buy\n EnumerableSet.Bytes32Set _wantedServicesHashSet;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"camino.messenger.storage.PartnerConfiguration\")) - 1)) & ~bytes32(uint256(0xff));\n bytes32 private constant PartnerConfigurationStorageLocation =\n 0xf2856e5e1b7689dcde1bb551fd115c3cad8d243ea609d47a46b4d22ee58d3000;\n\n function _getPartnerConfigurationStorage() private pure returns (PartnerConfigurationStorage storage $) {\n assembly {\n $.slot := PartnerConfigurationStorageLocation\n }\n }\n\n /***************************************************\n * ERRORS *\n ***************************************************/\n\n error ServiceAlreadyExists(bytes32 serviceHash);\n error ServiceDoesNotExist(bytes32 serviceHash);\n\n error WantedServiceAlreadyExists(bytes32 serviceHash);\n error WantedServiceDoesNotExist(bytes32 serviceHash);\n\n error PaymentTokenAlreadyExists(address token);\n error PaymentTokenDoesNotExist(address token);\n\n error PublicKeyAlreadyExists(address pubKeyAddress);\n error PublicKeyDoesNotExist(address pubKeyAddress);\n error InvalidPublicKeyUseType(uint8 use);\n\n /***************************************************\n * EVENTS *\n ***************************************************/\n\n event PaymentTokenAdded(address indexed token);\n event PaymentTokenRemoved(address indexed token);\n\n event OffChainPaymentSupportUpdated(bool supportsOffChainPayment);\n\n event PublicKeyAdded(address indexed pubKeyAddress);\n event PublicKeyRemoved(address indexed pubKeyAddress);\n\n /***************************************************\n * INITIALIZATION *\n ***************************************************/\n\n function __PartnerConfiguration_init() internal onlyInitializing {}\n\n function __PartnerConfiguration_init_unchained() internal onlyInitializing {}\n\n /***************************************************\n * SERVICE *\n ***************************************************/\n\n /**\n * @notice Adds a supported Service object for a given hash.\n *\n * @param serviceHash Hash of the service\n * @param fee Fee for the service\n * @param capabilities Capabilities for the service\n * @param restrictedRate If the service is restricted to pre-agreement\n */\n function _addService(\n bytes32 serviceHash,\n uint256 fee,\n string[] memory capabilities,\n bool restrictedRate\n ) internal virtual {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n // Try to add the service to the services hash set\n bool added = $._servicesHashSet.add(serviceHash);\n if (!added) {\n revert ServiceAlreadyExists(serviceHash);\n }\n $._supportedServices[serviceHash] = Service({\n _fee: fee,\n _capabilities: capabilities,\n _restrictedRate: restrictedRate\n });\n }\n\n /**\n * @notice Removes a supported Service object for a given hash.\n *\n * @param serviceHash Hash of the service\n */\n function _removeService(bytes32 serviceHash) internal virtual {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n // Try to remove the service\n bool removed = $._servicesHashSet.remove(serviceHash);\n if (!removed) {\n revert ServiceDoesNotExist(serviceHash);\n }\n\n delete $._supportedServices[serviceHash];\n }\n\n /**\n * @notice Sets the Service fee for a given hash.\n *\n * @param serviceHash Hash of the service\n * @param fee Fee\n */\n function _setServiceFee(bytes32 serviceHash, uint256 fee) internal virtual {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n // Check if the service exists\n _checkServiceExists(serviceHash, $);\n\n $._supportedServices[serviceHash]._fee = fee;\n }\n\n /**\n * @notice Sets the Service restricted rate for a given hash.\n *\n * @param serviceHash Hash of the service\n * @param restrictedRate Restricted rate\n */\n function _setServiceRestrictedRate(bytes32 serviceHash, bool restrictedRate) internal virtual {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n // Check if the service exists\n _checkServiceExists(serviceHash, $);\n\n $._supportedServices[serviceHash]._restrictedRate = restrictedRate;\n }\n\n /**\n * @notice Sets the Service capabilities for a given hash.\n *\n * @param serviceHash Hash of the service\n * @param capabilities Capabilities\n */\n function _setServiceCapabilities(bytes32 serviceHash, string[] memory capabilities) internal virtual {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n // Check if the service exists\n _checkServiceExists(serviceHash, $);\n\n $._supportedServices[serviceHash]._capabilities = capabilities;\n }\n\n /**\n * @notice Adds a capability to the service.\n *\n * @param serviceHash Hash of the service\n * @param capability Capability\n */\n function _addServiceCapability(bytes32 serviceHash, string memory capability) internal virtual {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n // Check if the service exists\n _checkServiceExists(serviceHash, $);\n\n $._supportedServices[serviceHash]._capabilities.push(capability);\n }\n\n /**\n * @notice Removes a capability from the service.\n *\n * @param serviceHash Hash of the service\n * @param capability Capability\n */\n function _removeServiceCapability(bytes32 serviceHash, string memory capability) internal virtual {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n // Check if the service exists\n _checkServiceExists(serviceHash, $);\n\n string[] storage capabilities = $._supportedServices[serviceHash]._capabilities;\n for (uint256 i = 0; i < capabilities.length; i++) {\n if (keccak256(abi.encodePacked(capabilities[i])) == keccak256(abi.encodePacked(capability))) {\n capabilities[i] = capabilities[capabilities.length - 1];\n capabilities.pop();\n break;\n }\n }\n }\n\n /**\n * @notice Returns all supported service hashes.\n */\n function getAllServiceHashes() public view returns (bytes32[] memory serviceHashes) {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n return $._servicesHashSet.values();\n }\n\n /**\n * @notice Returns the Service object for a given hash. Service object contains fee and capabilities.\n *\n * `serviceHash` is keccak256 hash of the pkg + service name as:\n *\n * ```text\n * ┌────────────── pkg ─────────────┐ ┌───── service name ─────┐\n * keccak256(\"cmp.services.accommodation.v1alpha.AccommodationSearchService\")\n * ```\n * @dev These services are coming from the Camino Messenger Protocol's protobuf\n * definitions.\n *\n * @param serviceHash Hash of the service\n */\n function getService(bytes32 serviceHash) public view virtual returns (Service memory service) {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n // Check if the service exists\n _checkServiceExists(serviceHash, $);\n\n return $._supportedServices[serviceHash];\n }\n\n /**\n * @notice Returns the fee for a given service hash.\n *\n * @param serviceHash Hash of the service\n */\n function getServiceFee(bytes32 serviceHash) public view virtual returns (uint256 fee) {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n // Check if the service exists\n _checkServiceExists(serviceHash, $);\n\n return $._supportedServices[serviceHash]._fee;\n }\n\n /**\n * @notice Returns the restricted rate for a given service hash.\n *\n * @param serviceHash Hash of the service\n */\n function getServiceRestrictedRate(bytes32 serviceHash) public view virtual returns (bool restrictedRate) {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n // Check if the service exists\n _checkServiceExists(serviceHash, $);\n\n return $._supportedServices[serviceHash]._restrictedRate;\n }\n\n /**\n * @notice Returns the capabilities for a given service hash.\n *\n * @param serviceHash Hash of the service\n */\n function getServiceCapabilities(bytes32 serviceHash) public view virtual returns (string[] memory capabilities) {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n // Check if the service exists\n _checkServiceExists(serviceHash, $);\n\n return $._supportedServices[serviceHash]._capabilities;\n }\n\n /**\n * @notice Checks if the service exists.\n *\n * @param serviceHash Hash of the service\n */\n function _checkServiceExists(bytes32 serviceHash, PartnerConfigurationStorage storage $) private view {\n // Check if the service exists\n if (!$._servicesHashSet.contains(serviceHash)) {\n revert ServiceDoesNotExist(serviceHash);\n }\n }\n\n /***************************************************\n * WANTED SERVICES *\n ***************************************************/\n\n /**\n * @notice Adds a wanted service hash to the wanted services set.\n *\n * Reverts if the service already exists.\n *\n * @param serviceHash Hash of the service\n */\n function _addWantedService(bytes32 serviceHash) internal virtual {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n bool added = $._wantedServicesHashSet.add(serviceHash);\n\n if (!added) {\n revert WantedServiceAlreadyExists(serviceHash);\n }\n }\n\n /**\n * @notice Removes a wanted service hash from the wanted services set.\n *\n * Reverts if the service does not exist.\n *\n * @param serviceHash Hash of the service\n */\n function _removeWantedService(bytes32 serviceHash) internal virtual {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n bool removed = $._wantedServicesHashSet.remove(serviceHash);\n\n if (!removed) {\n revert WantedServiceDoesNotExist(serviceHash);\n }\n }\n\n /**\n * @notice Returns all wanted service hashes.\n *\n * @return serviceHashes Wanted service hashes\n */\n function getWantedServiceHashes() public view virtual returns (bytes32[] memory serviceHashes) {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n return $._wantedServicesHashSet.values();\n }\n\n /***************************************************\n * PAYMENT *\n ***************************************************/\n\n // PAYMENT INFO: SUPPORTED TOKENS\n\n /**\n * @notice Adds a supported payment token.\n *\n * @param _token Payment token address to be added\n */\n function _addSupportedToken(address _token) internal virtual {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n bool added = $._paymentInfo._supportedTokens.add(_token);\n\n if (!added) {\n revert PaymentTokenAlreadyExists(_token);\n }\n\n emit PaymentTokenAdded(_token);\n }\n\n /**\n * @notice Removes a supported payment token.\n *\n * @param _token Payment token address to be removed\n */\n function _removeSupportedToken(address _token) internal virtual {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n bool removed = $._paymentInfo._supportedTokens.remove(_token);\n\n if (!removed) {\n revert PaymentTokenDoesNotExist(_token);\n }\n\n emit PaymentTokenRemoved(_token);\n }\n\n /**\n * @notice Returns supported token addresses.\n *\n * @return tokens Supported token addresses\n */\n function getSupportedTokens() public view virtual returns (address[] memory tokens) {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n return $._paymentInfo._supportedTokens.values();\n }\n\n // PAYMENT INFO: OFF-CHAIN PAYMENT SUPPORT\n\n /**\n * @notice Sets the off-chain payment support is supported.\n */\n function _setOffChainPaymentSupported(bool _supportsOffChainPayment) internal virtual {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n $._paymentInfo._supportsOffChainPayment = _supportsOffChainPayment;\n emit OffChainPaymentSupportUpdated(_supportsOffChainPayment);\n }\n\n /**\n * @notice Returns true if off-chain payment is supported for the given service.\n */\n function offChainPaymentSupported() public view virtual returns (bool) {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n return $._paymentInfo._supportsOffChainPayment;\n }\n\n /***************************************************\n * PUBLIC KEYS *\n ***************************************************/\n\n /**\n * @notice Adds public key with an address. Reverts if the public key already\n * exists.\n *\n * Beware: This functions does not check if the public key is actually for the\n * given address.\n */\n function _addPublicKey(address pubKeyAddress, bytes memory publicKeyData) internal virtual {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n bool added = $._publicKeyAddressesSet.add(pubKeyAddress);\n\n if (!added) {\n revert PublicKeyAlreadyExists(pubKeyAddress);\n }\n\n $._publicKeys[pubKeyAddress] = publicKeyData;\n\n emit PublicKeyAdded(pubKeyAddress);\n }\n\n /**\n * @notice Removes the public key for a given address\n *\n * Reverts if the public key does not exist\n */\n function _removePublicKey(address pubKeyAddress) internal virtual {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n bool removed = $._publicKeyAddressesSet.remove(pubKeyAddress);\n\n if (!removed) {\n revert PublicKeyDoesNotExist(pubKeyAddress);\n }\n\n delete $._publicKeys[pubKeyAddress];\n emit PublicKeyRemoved(pubKeyAddress);\n }\n\n /**\n * @notice Returns the addresses of all public keys. These can then be used to\n * retrieve the public keys the `getPublicKey(address)` function.\n */\n function getPublicKeysAddresses() public view virtual returns (address[] memory pubKeyAddresses) {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n return $._publicKeyAddressesSet.values();\n }\n\n /**\n * @notice Returns the public key for a given address.\n *\n * Reverts if the public key does not exist\n *\n * @param pubKeyAddress Address of the public key\n */\n function getPublicKey(address pubKeyAddress) public view virtual returns (bytes memory data) {\n PartnerConfigurationStorage storage $ = _getPartnerConfigurationStorage();\n\n if (!$._publicKeyAddressesSet.contains(pubKeyAddress)) {\n revert PublicKeyDoesNotExist(pubKeyAddress);\n }\n\n return $._publicKeys[pubKeyAddress];\n }\n}\n" + }, + "contracts/partner/ServiceRegistry.sol": { + "content": "// SPDX-License-Identifier: UNLICENSED\n//\n// Camino Messenger Service Registry for Partner Configuration\n\npragma solidity 0.8.24;\n\nimport { Initializable } from \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport { EnumerableSet } from \"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\";\n\n/**\n * @title ServiceRegistry\n * @notice Service registry is used by the {CMAccountManager} contract to register\n * services by hashing (keccak256) the service name (string) and creating a mapping\n * as keccak256(serviceName) => serviceName.\n */\nabstract contract ServiceRegistry is Initializable {\n /***************************************************\n * STORAGE *\n ***************************************************/\n\n using EnumerableSet for EnumerableSet.Bytes32Set;\n\n /// @custom:storage-location erc7201:camino.messenger.storage.ServiceRegistry\n struct ServiceRegistryStorage {\n EnumerableSet.Bytes32Set _servicesHashSet; // set of service hashes\n mapping(bytes32 serviceHash => string serviceName) _serviceNameByHash;\n mapping(string serviceName => bytes32 serviceHash) _hashByServiceName;\n }\n\n // keccak256(abi.encode(uint256(keccak256(\"camino.messenger.storage.ServiceRegistry\")) - 1)) & ~bytes32(uint256(0xff));\n bytes32 private constant ServiceRegistryStorageLocation =\n 0x563e037355fff0507705f481e4b362e4c3996a3b57d07307deabfca3d8168600;\n\n function _getServiceRegistryStorage() private pure returns (ServiceRegistryStorage storage $) {\n assembly {\n $.slot := ServiceRegistryStorageLocation\n }\n }\n\n /***************************************************\n * EVENTS *\n ***************************************************/\n\n event ServiceRegistered(string serviceName, bytes32 serviceHash);\n event ServiceUnregistered(string serviceName, bytes32 serviceHash);\n\n /***************************************************\n * ERRORS *\n ***************************************************/\n\n error ServiceAlreadyRegistered(string serviceName);\n error ServiceNotRegistered();\n\n /***************************************************\n * INITIALIZATION *\n ***************************************************/\n\n function __ServiceRegistry_init() internal onlyInitializing {}\n\n function __ServiceRegistry_init_unchained() internal onlyInitializing {}\n\n /***************************************************\n * FUNCS *\n ***************************************************/\n\n /**\n * @notice Adds a new service by its name. This function calculates the hash of the\n * service name and adds it to the registry\n *\n * {serviceName} is the pkg + service name as:\n *\n * ```text\n * ┌────────────── pkg ─────────────┐ ┌───── service name ─────┐\n * \"cmp.services.accommodation.v1alpha.AccommodationSearchService\"\n * ```\n * @dev These services are coming from the Camino Messenger Protocol's protobuf\n * definitions.\n *\n * @param serviceName Name of the service\n */\n function _registerServiceName(string memory serviceName) internal virtual {\n bytes32 serviceHash = keccak256(abi.encodePacked(serviceName));\n\n ServiceRegistryStorage storage $ = _getServiceRegistryStorage();\n\n // Try to add the hash to the service set\n bool added = $._servicesHashSet.add(serviceHash);\n\n if (!added) {\n revert ServiceAlreadyRegistered(serviceName);\n }\n\n $._serviceNameByHash[serviceHash] = serviceName;\n $._hashByServiceName[serviceName] = serviceHash;\n\n emit ServiceRegistered(serviceName, serviceHash);\n }\n\n /**\n * @notice Removes a service by its name. This function calculates the hash of the\n * service name and removes it from the registry.\n *\n * @param serviceName Name of the service\n */\n function _unregisterServiceName(string memory serviceName) internal virtual {\n bytes32 serviceHash = keccak256(abi.encodePacked(serviceName));\n\n ServiceRegistryStorage storage $ = _getServiceRegistryStorage();\n\n // Try to remove the hash to the service set\n bool removed = $._servicesHashSet.remove(serviceHash);\n\n if (!removed) {\n revert ServiceNotRegistered();\n }\n\n delete $._serviceNameByHash[serviceHash];\n delete $._hashByServiceName[serviceName];\n\n emit ServiceUnregistered(serviceName, serviceHash);\n }\n\n /**\n * @notice Returns the name of a service by its hash.\n *\n * @param serviceHash Hash of the service\n */\n function getRegisteredServiceNameByHash(bytes32 serviceHash) public view returns (string memory serviceName) {\n ServiceRegistryStorage storage $ = _getServiceRegistryStorage();\n\n // Check if the service is registered\n if (!$._servicesHashSet.contains(serviceHash)) {\n revert ServiceNotRegistered();\n }\n return $._serviceNameByHash[serviceHash];\n }\n\n /**\n * @notice Returns the hash of a service by its name.\n *\n * @param serviceName Name of the service\n */\n function getRegisteredServiceHashByName(string memory serviceName) public view returns (bytes32 serviceHash) {\n ServiceRegistryStorage storage $ = _getServiceRegistryStorage();\n\n // Check if the service is registered\n if (!$._servicesHashSet.contains(keccak256(abi.encodePacked(serviceName)))) {\n revert ServiceNotRegistered();\n }\n\n return $._hashByServiceName[serviceName];\n }\n\n /**\n * @notice Returns all registered service **hashes**.\n *\n * @return services All registered service hashes\n */\n function getAllRegisteredServiceHashes() public view returns (bytes32[] memory services) {\n ServiceRegistryStorage storage $ = _getServiceRegistryStorage();\n return $._servicesHashSet.values();\n }\n\n /**\n * @notice Returns all registered service **names**.\n *\n * @return services All registered service names\n */\n function getAllRegisteredServiceNames() public view returns (string[] memory services) {\n ServiceRegistryStorage storage $ = _getServiceRegistryStorage();\n\n // Get all hashes and create a list with predefined length\n bytes32[] memory serviceHashes = $._servicesHashSet.values();\n string[] memory serviceNames = new string[](serviceHashes.length);\n\n // Get all names for the hashes\n for (uint256 i = 0; i < serviceHashes.length; i++) {\n serviceNames[i] = $._serviceNameByHash[serviceHashes[i]];\n }\n\n return serviceNames;\n }\n}\n" + }, + "contracts/test/Dummy.sol": { + "content": "// SPDX-License-Identifier: UNLICENSED\n//\n// TEST CONTRACT\n\npragma solidity 0.8.24;\n\ncontract Dummy {\n function getVersion() public pure returns (string memory) {\n return \"DUMMY\";\n }\n}\n" + }, + "contracts/test/NullUSD.sol": { + "content": "// SPDX-License-Identifier: UNLICENSED\n//\n// Null USD Contract for testing purposes\n\npragma solidity 0.8.24;\n\nimport { ERC20 } from \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\ncontract NullUSD is ERC20 {\n constructor() ERC20(\"NullUSD\", \"NUSD\") {\n _mint(msg.sender, 1000000 * 10 ** decimals());\n }\n}\n" + } + }, + "settings": { + "optimizer": { + "enabled": true, + "runs": 1 + }, + "evmVersion": "paris", + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata", + "storageLayout" + ], + "": [ + "ast" + ] + } + } + } + }, + "output": { + "sources": { + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol", + "exportedSymbols": { + "AccessControlUpgradeable": [ + 362 + ], + "ContextUpgradeable": [ + 2802 + ], + "ERC165Upgradeable": [ + 3147 + ], + "IAccessControl": [ + 3230 + ], + "Initializable": [ + 840 + ] + }, + "id": 363, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "108:24:0" + }, + { + "absolutePath": "@openzeppelin/contracts/access/IAccessControl.sol", + "file": "@openzeppelin/contracts/access/IAccessControl.sol", + "id": 3, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 363, + "sourceUnit": 3231, + "src": "134:81:0", + "symbolAliases": [ + { + "foreign": { + "id": 2, + "name": "IAccessControl", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3230, + "src": "142:14:0", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "file": "../utils/ContextUpgradeable.sol", + "id": 5, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 363, + "sourceUnit": 2803, + "src": "216:67:0", + "symbolAliases": [ + { + "foreign": { + "id": 4, + "name": "ContextUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2802, + "src": "224:18:0", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol", + "file": "../utils/introspection/ERC165Upgradeable.sol", + "id": 7, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 363, + "sourceUnit": 3148, + "src": "284:79:0", + "symbolAliases": [ + { + "foreign": { + "id": 6, + "name": "ERC165Upgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3147, + "src": "292:17:0", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "../proxy/utils/Initializable.sol", + "id": 9, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 363, + "sourceUnit": 841, + "src": "364:63:0", + "symbolAliases": [ + { + "foreign": { + "id": 8, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 840, + "src": "372:13:0", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 11, + "name": "Initializable", + "nameLocations": [ + "2136:13:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 840, + "src": "2136:13:0" + }, + "id": 12, + "nodeType": "InheritanceSpecifier", + "src": "2136:13:0" + }, + { + "baseName": { + "id": 13, + "name": "ContextUpgradeable", + "nameLocations": [ + "2151:18:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2802, + "src": "2151:18:0" + }, + "id": 14, + "nodeType": "InheritanceSpecifier", + "src": "2151:18:0" + }, + { + "baseName": { + "id": 15, + "name": "IAccessControl", + "nameLocations": [ + "2171:14:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3230, + "src": "2171:14:0" + }, + "id": 16, + "nodeType": "InheritanceSpecifier", + "src": "2171:14:0" + }, + { + "baseName": { + "id": 17, + "name": "ERC165Upgradeable", + "nameLocations": [ + "2187:17:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3147, + "src": "2187:17:0" + }, + "id": 18, + "nodeType": "InheritanceSpecifier", + "src": "2187:17:0" + } + ], + "canonicalName": "AccessControlUpgradeable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 10, + "nodeType": "StructuredDocumentation", + "src": "429:1660:0", + "text": " @dev Contract module that allows children to implement role-based access\n control mechanisms. This is a lightweight version that doesn't allow enumerating role\n members except through off-chain means by accessing the contract event logs. Some\n applications may benefit from on-chain enumerability, for those cases see\n {AccessControlEnumerable}.\n Roles are referred to by their `bytes32` identifier. These should be exposed\n in the external API and be unique. The best way to achieve this is by\n using `public constant` hash digests:\n ```solidity\n bytes32 public constant MY_ROLE = keccak256(\"MY_ROLE\");\n ```\n Roles can be used to represent a set of permissions. To restrict access to a\n function call, use {hasRole}:\n ```solidity\n function foo() public {\n require(hasRole(MY_ROLE, msg.sender));\n ...\n }\n ```\n Roles can be granted and revoked dynamically via the {grantRole} and\n {revokeRole} functions. Each role has an associated admin role, and only\n accounts that have a role's admin role can call {grantRole} and {revokeRole}.\n By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means\n that only accounts with this role will be able to grant or revoke other\n roles. More complex role relationships can be created by using\n {_setRoleAdmin}.\n WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to\n grant and revoke this role. Extra precautions should be taken to secure\n accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules}\n to enforce additional security measures for this role." + }, + "fullyImplemented": true, + "id": 362, + "linearizedBaseContracts": [ + 362, + 3147, + 6389, + 3230, + 2802, + 840 + ], + "name": "AccessControlUpgradeable", + "nameLocation": "2108:24:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "AccessControlUpgradeable.RoleData", + "id": 25, + "members": [ + { + "constant": false, + "id": 22, + "mutability": "mutable", + "name": "hasRole", + "nameLocation": "2270:7:0", + "nodeType": "VariableDeclaration", + "scope": 25, + "src": "2237:40:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 21, + "keyName": "account", + "keyNameLocation": "2253:7:0", + "keyType": { + "id": 19, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2245:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2237:32:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 20, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2264:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 24, + "mutability": "mutable", + "name": "adminRole", + "nameLocation": "2295:9:0", + "nodeType": "VariableDeclaration", + "scope": 25, + "src": "2287:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 23, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2287:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "name": "RoleData", + "nameLocation": "2218:8:0", + "nodeType": "StructDefinition", + "scope": 362, + "src": "2211:100:0", + "visibility": "public" + }, + { + "constant": true, + "functionSelector": "a217fddf", + "id": 28, + "mutability": "constant", + "name": "DEFAULT_ADMIN_ROLE", + "nameLocation": "2341:18:0", + "nodeType": "VariableDeclaration", + "scope": 362, + "src": "2317:49:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 26, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2317:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "30783030", + "id": 27, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2362:4:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0x00" + }, + "visibility": "public" + }, + { + "canonicalName": "AccessControlUpgradeable.AccessControlStorage", + "documentation": { + "id": 29, + "nodeType": "StructuredDocumentation", + "src": "2374:71:0", + "text": "@custom:storage-location erc7201:openzeppelin.storage.AccessControl" + }, + "id": 35, + "members": [ + { + "constant": false, + "id": 34, + "mutability": "mutable", + "name": "_roles", + "nameLocation": "2522:6:0", + "nodeType": "VariableDeclaration", + "scope": 35, + "src": "2488:40:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$", + "typeString": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)" + }, + "typeName": { + "id": 33, + "keyName": "role", + "keyNameLocation": "2504:4:0", + "keyType": { + "id": 30, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2496:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "2488:33:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$", + "typeString": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 32, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 31, + "name": "RoleData", + "nameLocations": [ + "2512:8:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 25, + "src": "2512:8:0" + }, + "referencedDeclaration": 25, + "src": "2512:8:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$25_storage_ptr", + "typeString": "struct AccessControlUpgradeable.RoleData" + } + } + }, + "visibility": "internal" + } + ], + "name": "AccessControlStorage", + "nameLocation": "2457:20:0", + "nodeType": "StructDefinition", + "scope": 362, + "src": "2450:85:0", + "visibility": "public" + }, + { + "constant": true, + "id": 38, + "mutability": "constant", + "name": "AccessControlStorageLocation", + "nameLocation": "2683:28:0", + "nodeType": "VariableDeclaration", + "scope": 362, + "src": "2658:122:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 36, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2658:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307830326464376263376465633464636565646461373735653538646435343165303861313136633663353338313563306264303238313932663762363236383030", + "id": 37, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2714:66:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1295953201772911215391058989745868821651057887752387839782086074958115661824_by_1", + "typeString": "int_const 1295...(68 digits omitted)...1824" + }, + "value": "0x02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800" + }, + "visibility": "private" + }, + { + "body": { + "id": 45, + "nodeType": "Block", + "src": "2877:87:0", + "statements": [ + { + "AST": { + "nativeSrc": "2896:62:0", + "nodeType": "YulBlock", + "src": "2896:62:0", + "statements": [ + { + "nativeSrc": "2910:38:0", + "nodeType": "YulAssignment", + "src": "2910:38:0", + "value": { + "name": "AccessControlStorageLocation", + "nativeSrc": "2920:28:0", + "nodeType": "YulIdentifier", + "src": "2920:28:0" + }, + "variableNames": [ + { + "name": "$.slot", + "nativeSrc": "2910:6:0", + "nodeType": "YulIdentifier", + "src": "2910:6:0" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 42, + "isOffset": false, + "isSlot": true, + "src": "2910:6:0", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 38, + "isOffset": false, + "isSlot": false, + "src": "2920:28:0", + "valueSize": 1 + } + ], + "id": 44, + "nodeType": "InlineAssembly", + "src": "2887:71:0" + } + ] + }, + "id": 46, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getAccessControlStorage", + "nameLocation": "2796:24:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 39, + "nodeType": "ParameterList", + "parameters": [], + "src": "2820:2:0" + }, + "returnParameters": { + "id": 43, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 42, + "mutability": "mutable", + "name": "$", + "nameLocation": "2874:1:0", + "nodeType": "VariableDeclaration", + "scope": 46, + "src": "2845:30:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + }, + "typeName": { + "id": 41, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 40, + "name": "AccessControlStorage", + "nameLocations": [ + "2845:20:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 35, + "src": "2845:20:0" + }, + "referencedDeclaration": 35, + "src": "2845:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + } + }, + "visibility": "internal" + } + ], + "src": "2844:32:0" + }, + "scope": 362, + "src": "2787:177:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 56, + "nodeType": "Block", + "src": "3181:44:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 52, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49, + "src": "3202:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 51, + "name": "_checkRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 129, + 150 + ], + "referencedDeclaration": 129, + "src": "3191:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$__$", + "typeString": "function (bytes32) view" + } + }, + "id": 53, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3191:16:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 54, + "nodeType": "ExpressionStatement", + "src": "3191:16:0" + }, + { + "id": 55, + "nodeType": "PlaceholderStatement", + "src": "3217:1:0" + } + ] + }, + "documentation": { + "id": 47, + "nodeType": "StructuredDocumentation", + "src": "2970:174:0", + "text": " @dev Modifier that checks that an account has a specific role. Reverts\n with an {AccessControlUnauthorizedAccount} error including the required role." + }, + "id": 57, + "name": "onlyRole", + "nameLocation": "3158:8:0", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 50, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 49, + "mutability": "mutable", + "name": "role", + "nameLocation": "3175:4:0", + "nodeType": "VariableDeclaration", + "scope": 57, + "src": "3167:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 48, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3167:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3166:14:0" + }, + "src": "3149:76:0", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 62, + "nodeType": "Block", + "src": "3289:7:0", + "statements": [] + }, + "id": 63, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 60, + "kind": "modifierInvocation", + "modifierName": { + "id": 59, + "name": "onlyInitializing", + "nameLocations": [ + "3272:16:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 749, + "src": "3272:16:0" + }, + "nodeType": "ModifierInvocation", + "src": "3272:16:0" + } + ], + "name": "__AccessControl_init", + "nameLocation": "3240:20:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 58, + "nodeType": "ParameterList", + "parameters": [], + "src": "3260:2:0" + }, + "returnParameters": { + "id": 61, + "nodeType": "ParameterList", + "parameters": [], + "src": "3289:0:0" + }, + "scope": 362, + "src": "3231:65:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 68, + "nodeType": "Block", + "src": "3370:7:0", + "statements": [] + }, + "id": 69, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 66, + "kind": "modifierInvocation", + "modifierName": { + "id": 65, + "name": "onlyInitializing", + "nameLocations": [ + "3353:16:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 749, + "src": "3353:16:0" + }, + "nodeType": "ModifierInvocation", + "src": "3353:16:0" + } + ], + "name": "__AccessControl_init_unchained", + "nameLocation": "3311:30:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 64, + "nodeType": "ParameterList", + "parameters": [], + "src": "3341:2:0" + }, + "returnParameters": { + "id": 67, + "nodeType": "ParameterList", + "parameters": [], + "src": "3370:0:0" + }, + "scope": 362, + "src": "3302:75:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 3146 + ], + "body": { + "id": 90, + "nodeType": "Block", + "src": "3534:111:0", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 88, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 83, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 78, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 72, + "src": "3551:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 80, + "name": "IAccessControl", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3230, + "src": "3571:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IAccessControl_$3230_$", + "typeString": "type(contract IAccessControl)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_contract$_IAccessControl_$3230_$", + "typeString": "type(contract IAccessControl)" + } + ], + "id": 79, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "3566:4:0", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 81, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3566:20:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_contract$_IAccessControl_$3230", + "typeString": "type(contract IAccessControl)" + } + }, + "id": 82, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "3587:11:0", + "memberName": "interfaceId", + "nodeType": "MemberAccess", + "src": "3566:32:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "3551:47:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "arguments": [ + { + "id": 86, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 72, + "src": "3626:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "expression": { + "id": 84, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "3602:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_AccessControlUpgradeable_$362_$", + "typeString": "type(contract super AccessControlUpgradeable)" + } + }, + "id": 85, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3608:17:0", + "memberName": "supportsInterface", + "nodeType": "MemberAccess", + "referencedDeclaration": 3146, + "src": "3602:23:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$", + "typeString": "function (bytes4) view returns (bool)" + } + }, + "id": 87, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3602:36:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3551:87:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 77, + "id": 89, + "nodeType": "Return", + "src": "3544:94:0" + } + ] + }, + "documentation": { + "id": 70, + "nodeType": "StructuredDocumentation", + "src": "3382:56:0", + "text": " @dev See {IERC165-supportsInterface}." + }, + "functionSelector": "01ffc9a7", + "id": 91, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nameLocation": "3452:17:0", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 74, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3510:8:0" + }, + "parameters": { + "id": 73, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 72, + "mutability": "mutable", + "name": "interfaceId", + "nameLocation": "3477:11:0", + "nodeType": "VariableDeclaration", + "scope": 91, + "src": "3470:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 71, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "3470:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "3469:20:0" + }, + "returnParameters": { + "id": 77, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 76, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 91, + "src": "3528:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 75, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3528:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3527:6:0" + }, + "scope": 362, + "src": "3443:202:0", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 3197 + ], + "body": { + "id": 115, + "nodeType": "Block", + "src": "3815:124:0", + "statements": [ + { + "assignments": [ + 103 + ], + "declarations": [ + { + "constant": false, + "id": 103, + "mutability": "mutable", + "name": "$", + "nameLocation": "3854:1:0", + "nodeType": "VariableDeclaration", + "scope": 115, + "src": "3825:30:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + }, + "typeName": { + "id": 102, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 101, + "name": "AccessControlStorage", + "nameLocations": [ + "3825:20:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 35, + "src": "3825:20:0" + }, + "referencedDeclaration": 35, + "src": "3825:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + } + }, + "visibility": "internal" + } + ], + "id": 106, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 104, + "name": "_getAccessControlStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46, + "src": "3858:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$35_storage_ptr_$", + "typeString": "function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)" + } + }, + "id": 105, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3858:26:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3825:59:0" + }, + { + "expression": { + "baseExpression": { + "expression": { + "baseExpression": { + "expression": { + "id": 107, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103, + "src": "3901:1:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage storage pointer" + } + }, + "id": 108, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3903:6:0", + "memberName": "_roles", + "nodeType": "MemberAccess", + "referencedDeclaration": 34, + "src": "3901:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$", + "typeString": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)" + } + }, + "id": 110, + "indexExpression": { + "id": 109, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 94, + "src": "3910:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3901:14:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$25_storage", + "typeString": "struct AccessControlUpgradeable.RoleData storage ref" + } + }, + "id": 111, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3916:7:0", + "memberName": "hasRole", + "nodeType": "MemberAccess", + "referencedDeclaration": 22, + "src": "3901:22:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 113, + "indexExpression": { + "id": 112, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 96, + "src": "3924:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3901:31:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 100, + "id": 114, + "nodeType": "Return", + "src": "3894:38:0" + } + ] + }, + "documentation": { + "id": 92, + "nodeType": "StructuredDocumentation", + "src": "3651:76:0", + "text": " @dev Returns `true` if `account` has been granted `role`." + }, + "functionSelector": "91d14854", + "id": 116, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "hasRole", + "nameLocation": "3741:7:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 97, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 94, + "mutability": "mutable", + "name": "role", + "nameLocation": "3757:4:0", + "nodeType": "VariableDeclaration", + "scope": 116, + "src": "3749:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 93, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3749:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 96, + "mutability": "mutable", + "name": "account", + "nameLocation": "3771:7:0", + "nodeType": "VariableDeclaration", + "scope": 116, + "src": "3763:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 95, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3763:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3748:31:0" + }, + "returnParameters": { + "id": 100, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 99, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 116, + "src": "3809:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 98, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3809:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3808:6:0" + }, + "scope": 362, + "src": "3732:207:0", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 128, + "nodeType": "Block", + "src": "4204:47:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 123, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 119, + "src": "4225:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 124, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2784, + "src": "4231:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 125, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4231:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 122, + "name": "_checkRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 129, + 150 + ], + "referencedDeclaration": 150, + "src": "4214:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (bytes32,address) view" + } + }, + "id": 126, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4214:30:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 127, + "nodeType": "ExpressionStatement", + "src": "4214:30:0" + } + ] + }, + "documentation": { + "id": 117, + "nodeType": "StructuredDocumentation", + "src": "3945:198:0", + "text": " @dev Reverts with an {AccessControlUnauthorizedAccount} error if `_msgSender()`\n is missing `role`. Overriding this function changes the behavior of the {onlyRole} modifier." + }, + "id": 129, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkRole", + "nameLocation": "4157:10:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 120, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 119, + "mutability": "mutable", + "name": "role", + "nameLocation": "4176:4:0", + "nodeType": "VariableDeclaration", + "scope": 129, + "src": "4168:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 118, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4168:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4167:14:0" + }, + "returnParameters": { + "id": 121, + "nodeType": "ParameterList", + "parameters": [], + "src": "4204:0:0" + }, + "scope": 362, + "src": "4148:103:0", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 149, + "nodeType": "Block", + "src": "4454:124:0", + "statements": [ + { + "condition": { + "id": 141, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4468:23:0", + "subExpression": { + "arguments": [ + { + "id": 138, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 132, + "src": "4477:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 139, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 134, + "src": "4483:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 137, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 116, + "src": "4469:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 140, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4469:22:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 148, + "nodeType": "IfStatement", + "src": "4464:108:0", + "trueBody": { + "id": 147, + "nodeType": "Block", + "src": "4493:79:0", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 143, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 134, + "src": "4547:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 144, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 132, + "src": "4556:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 142, + "name": "AccessControlUnauthorizedAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3157, + "src": "4514:32:0", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_bytes32_$returns$__$", + "typeString": "function (address,bytes32) pure" + } + }, + "id": 145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4514:47:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 146, + "nodeType": "RevertStatement", + "src": "4507:54:0" + } + ] + } + } + ] + }, + "documentation": { + "id": 130, + "nodeType": "StructuredDocumentation", + "src": "4257:119:0", + "text": " @dev Reverts with an {AccessControlUnauthorizedAccount} error if `account`\n is missing `role`." + }, + "id": 150, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkRole", + "nameLocation": "4390:10:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 135, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 132, + "mutability": "mutable", + "name": "role", + "nameLocation": "4409:4:0", + "nodeType": "VariableDeclaration", + "scope": 150, + "src": "4401:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 131, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4401:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 134, + "mutability": "mutable", + "name": "account", + "nameLocation": "4423:7:0", + "nodeType": "VariableDeclaration", + "scope": 150, + "src": "4415:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 133, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4415:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4400:31:0" + }, + "returnParameters": { + "id": 136, + "nodeType": "ParameterList", + "parameters": [], + "src": "4454:0:0" + }, + "scope": 362, + "src": "4381:197:0", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "baseFunctions": [ + 3205 + ], + "body": { + "id": 170, + "nodeType": "Block", + "src": "4833:117:0", + "statements": [ + { + "assignments": [ + 160 + ], + "declarations": [ + { + "constant": false, + "id": 160, + "mutability": "mutable", + "name": "$", + "nameLocation": "4872:1:0", + "nodeType": "VariableDeclaration", + "scope": 170, + "src": "4843:30:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + }, + "typeName": { + "id": 159, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 158, + "name": "AccessControlStorage", + "nameLocations": [ + "4843:20:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 35, + "src": "4843:20:0" + }, + "referencedDeclaration": 35, + "src": "4843:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + } + }, + "visibility": "internal" + } + ], + "id": 163, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 161, + "name": "_getAccessControlStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46, + "src": "4876:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$35_storage_ptr_$", + "typeString": "function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)" + } + }, + "id": 162, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4876:26:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4843:59:0" + }, + { + "expression": { + "expression": { + "baseExpression": { + "expression": { + "id": 164, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 160, + "src": "4919:1:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage storage pointer" + } + }, + "id": 165, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4921:6:0", + "memberName": "_roles", + "nodeType": "MemberAccess", + "referencedDeclaration": 34, + "src": "4919:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$", + "typeString": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)" + } + }, + "id": 167, + "indexExpression": { + "id": 166, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 153, + "src": "4928:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4919:14:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$25_storage", + "typeString": "struct AccessControlUpgradeable.RoleData storage ref" + } + }, + "id": 168, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4934:9:0", + "memberName": "adminRole", + "nodeType": "MemberAccess", + "referencedDeclaration": 24, + "src": "4919:24:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 157, + "id": 169, + "nodeType": "Return", + "src": "4912:31:0" + } + ] + }, + "documentation": { + "id": 151, + "nodeType": "StructuredDocumentation", + "src": "4584:170:0", + "text": " @dev Returns the admin role that controls `role`. See {grantRole} and\n {revokeRole}.\n To change a role's admin, use {_setRoleAdmin}." + }, + "functionSelector": "248a9ca3", + "id": 171, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getRoleAdmin", + "nameLocation": "4768:12:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 154, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 153, + "mutability": "mutable", + "name": "role", + "nameLocation": "4789:4:0", + "nodeType": "VariableDeclaration", + "scope": 171, + "src": "4781:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 152, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4781:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4780:14:0" + }, + "returnParameters": { + "id": 157, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 156, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 171, + "src": "4824:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 155, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4824:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4823:9:0" + }, + "scope": 362, + "src": "4759:191:0", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 3213 + ], + "body": { + "id": 189, + "nodeType": "Block", + "src": "5340:42:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 185, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 174, + "src": "5361:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 186, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 176, + "src": "5367:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 184, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 315, + "src": "5350:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5350:25:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 188, + "nodeType": "ExpressionStatement", + "src": "5350:25:0" + } + ] + }, + "documentation": { + "id": 172, + "nodeType": "StructuredDocumentation", + "src": "4956:285:0", + "text": " @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event.\n Requirements:\n - the caller must have ``role``'s admin role.\n May emit a {RoleGranted} event." + }, + "functionSelector": "2f2ff15d", + "id": 190, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 180, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 174, + "src": "5333:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 179, + "name": "getRoleAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 171, + "src": "5320:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32) view returns (bytes32)" + } + }, + "id": 181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5320:18:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 182, + "kind": "modifierInvocation", + "modifierName": { + "id": 178, + "name": "onlyRole", + "nameLocations": [ + "5311:8:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "5311:8:0" + }, + "nodeType": "ModifierInvocation", + "src": "5311:28:0" + } + ], + "name": "grantRole", + "nameLocation": "5255:9:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 177, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 174, + "mutability": "mutable", + "name": "role", + "nameLocation": "5273:4:0", + "nodeType": "VariableDeclaration", + "scope": 190, + "src": "5265:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 173, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5265:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 176, + "mutability": "mutable", + "name": "account", + "nameLocation": "5287:7:0", + "nodeType": "VariableDeclaration", + "scope": 190, + "src": "5279:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 175, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5279:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5264:31:0" + }, + "returnParameters": { + "id": 183, + "nodeType": "ParameterList", + "parameters": [], + "src": "5340:0:0" + }, + "scope": 362, + "src": "5246:136:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 3221 + ], + "body": { + "id": 208, + "nodeType": "Block", + "src": "5757:43:0", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 204, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 193, + "src": "5779:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 205, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 195, + "src": "5785:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 203, + "name": "_revokeRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 361, + "src": "5767:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5767:26:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 207, + "nodeType": "ExpressionStatement", + "src": "5767:26:0" + } + ] + }, + "documentation": { + "id": 191, + "nodeType": "StructuredDocumentation", + "src": "5388:269:0", + "text": " @dev Revokes `role` from `account`.\n If `account` had been granted `role`, emits a {RoleRevoked} event.\n Requirements:\n - the caller must have ``role``'s admin role.\n May emit a {RoleRevoked} event." + }, + "functionSelector": "d547741f", + "id": 209, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 199, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 193, + "src": "5750:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 198, + "name": "getRoleAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 171, + "src": "5737:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32) view returns (bytes32)" + } + }, + "id": 200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5737:18:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 201, + "kind": "modifierInvocation", + "modifierName": { + "id": 197, + "name": "onlyRole", + "nameLocations": [ + "5728:8:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "5728:8:0" + }, + "nodeType": "ModifierInvocation", + "src": "5728:28:0" + } + ], + "name": "revokeRole", + "nameLocation": "5671:10:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 196, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 193, + "mutability": "mutable", + "name": "role", + "nameLocation": "5690:4:0", + "nodeType": "VariableDeclaration", + "scope": 209, + "src": "5682:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 192, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5682:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 195, + "mutability": "mutable", + "name": "account", + "nameLocation": "5704:7:0", + "nodeType": "VariableDeclaration", + "scope": 209, + "src": "5696:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 194, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5696:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5681:31:0" + }, + "returnParameters": { + "id": 202, + "nodeType": "ParameterList", + "parameters": [], + "src": "5757:0:0" + }, + "scope": 362, + "src": "5662:138:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 3229 + ], + "body": { + "id": 231, + "nodeType": "Block", + "src": "6427:166:0", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 220, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 217, + "name": "callerConfirmation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 214, + "src": "6441:18:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 218, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2784, + "src": "6463:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6463:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "6441:34:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 225, + "nodeType": "IfStatement", + "src": "6437:102:0", + "trueBody": { + "id": 224, + "nodeType": "Block", + "src": "6477:62:0", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 221, + "name": "AccessControlBadConfirmation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3160, + "src": "6498:28:0", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6498:30:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 223, + "nodeType": "RevertStatement", + "src": "6491:37:0" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 227, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 212, + "src": "6561:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 228, + "name": "callerConfirmation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 214, + "src": "6567:18:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 226, + "name": "_revokeRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 361, + "src": "6549:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6549:37:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 230, + "nodeType": "ExpressionStatement", + "src": "6549:37:0" + } + ] + }, + "documentation": { + "id": 210, + "nodeType": "StructuredDocumentation", + "src": "5806:537:0", + "text": " @dev Revokes `role` from the calling account.\n Roles are often managed via {grantRole} and {revokeRole}: this function's\n purpose is to provide a mechanism for accounts to lose their privileges\n if they are compromised (such as when a trusted device is misplaced).\n If the calling account had been revoked `role`, emits a {RoleRevoked}\n event.\n Requirements:\n - the caller must be `callerConfirmation`.\n May emit a {RoleRevoked} event." + }, + "functionSelector": "36568abe", + "id": 232, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "renounceRole", + "nameLocation": "6357:12:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 215, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 212, + "mutability": "mutable", + "name": "role", + "nameLocation": "6378:4:0", + "nodeType": "VariableDeclaration", + "scope": 232, + "src": "6370:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 211, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6370:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 214, + "mutability": "mutable", + "name": "callerConfirmation", + "nameLocation": "6392:18:0", + "nodeType": "VariableDeclaration", + "scope": 232, + "src": "6384:26:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 213, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6384:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6369:42:0" + }, + "returnParameters": { + "id": 216, + "nodeType": "ParameterList", + "parameters": [], + "src": "6427:0:0" + }, + "scope": 362, + "src": "6348:245:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 267, + "nodeType": "Block", + "src": "6791:245:0", + "statements": [ + { + "assignments": [ + 242 + ], + "declarations": [ + { + "constant": false, + "id": 242, + "mutability": "mutable", + "name": "$", + "nameLocation": "6830:1:0", + "nodeType": "VariableDeclaration", + "scope": 267, + "src": "6801:30:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + }, + "typeName": { + "id": 241, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 240, + "name": "AccessControlStorage", + "nameLocations": [ + "6801:20:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 35, + "src": "6801:20:0" + }, + "referencedDeclaration": 35, + "src": "6801:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + } + }, + "visibility": "internal" + } + ], + "id": 245, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 243, + "name": "_getAccessControlStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46, + "src": "6834:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$35_storage_ptr_$", + "typeString": "function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)" + } + }, + "id": 244, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6834:26:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6801:59:0" + }, + { + "assignments": [ + 247 + ], + "declarations": [ + { + "constant": false, + "id": 247, + "mutability": "mutable", + "name": "previousAdminRole", + "nameLocation": "6878:17:0", + "nodeType": "VariableDeclaration", + "scope": 267, + "src": "6870:25:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 246, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6870:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 251, + "initialValue": { + "arguments": [ + { + "id": 249, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 235, + "src": "6911:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 248, + "name": "getRoleAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 171, + "src": "6898:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (bytes32) view returns (bytes32)" + } + }, + "id": 250, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6898:18:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6870:46:0" + }, + { + "expression": { + "id": 259, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "baseExpression": { + "expression": { + "id": 252, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 242, + "src": "6926:1:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage storage pointer" + } + }, + "id": 255, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6928:6:0", + "memberName": "_roles", + "nodeType": "MemberAccess", + "referencedDeclaration": 34, + "src": "6926:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$", + "typeString": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)" + } + }, + "id": 256, + "indexExpression": { + "id": 254, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 235, + "src": "6935:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6926:14:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$25_storage", + "typeString": "struct AccessControlUpgradeable.RoleData storage ref" + } + }, + "id": 257, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "6941:9:0", + "memberName": "adminRole", + "nodeType": "MemberAccess", + "referencedDeclaration": 24, + "src": "6926:24:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 258, + "name": "adminRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "6953:9:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "6926:36:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 260, + "nodeType": "ExpressionStatement", + "src": "6926:36:0" + }, + { + "eventCall": { + "arguments": [ + { + "id": 262, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 235, + "src": "6994:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 263, + "name": "previousAdminRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 247, + "src": "7000:17:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 264, + "name": "adminRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "7019:9:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 261, + "name": "RoleAdminChanged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3169, + "src": "6977:16:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$", + "typeString": "function (bytes32,bytes32,bytes32)" + } + }, + "id": 265, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6977:52:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 266, + "nodeType": "EmitStatement", + "src": "6972:57:0" + } + ] + }, + "documentation": { + "id": 233, + "nodeType": "StructuredDocumentation", + "src": "6599:114:0", + "text": " @dev Sets `adminRole` as ``role``'s admin role.\n Emits a {RoleAdminChanged} event." + }, + "id": 268, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setRoleAdmin", + "nameLocation": "6727:13:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 238, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 235, + "mutability": "mutable", + "name": "role", + "nameLocation": "6749:4:0", + "nodeType": "VariableDeclaration", + "scope": 268, + "src": "6741:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 234, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6741:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 237, + "mutability": "mutable", + "name": "adminRole", + "nameLocation": "6763:9:0", + "nodeType": "VariableDeclaration", + "scope": 268, + "src": "6755:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 236, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6755:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "6740:33:0" + }, + "returnParameters": { + "id": 239, + "nodeType": "ParameterList", + "parameters": [], + "src": "6791:0:0" + }, + "scope": 362, + "src": "6718:318:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 314, + "nodeType": "Block", + "src": "7353:304:0", + "statements": [ + { + "assignments": [ + 280 + ], + "declarations": [ + { + "constant": false, + "id": 280, + "mutability": "mutable", + "name": "$", + "nameLocation": "7392:1:0", + "nodeType": "VariableDeclaration", + "scope": 314, + "src": "7363:30:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + }, + "typeName": { + "id": 279, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 278, + "name": "AccessControlStorage", + "nameLocations": [ + "7363:20:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 35, + "src": "7363:20:0" + }, + "referencedDeclaration": 35, + "src": "7363:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + } + }, + "visibility": "internal" + } + ], + "id": 283, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 281, + "name": "_getAccessControlStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46, + "src": "7396:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$35_storage_ptr_$", + "typeString": "function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)" + } + }, + "id": 282, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7396:26:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7363:59:0" + }, + { + "condition": { + "id": 288, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "7436:23:0", + "subExpression": { + "arguments": [ + { + "id": 285, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 271, + "src": "7445:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 286, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 273, + "src": "7451:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 284, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 116, + "src": "7437:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 287, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7437:22:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 312, + "nodeType": "Block", + "src": "7614:37:0", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 310, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7635:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 277, + "id": 311, + "nodeType": "Return", + "src": "7628:12:0" + } + ] + }, + "id": 313, + "nodeType": "IfStatement", + "src": "7432:219:0", + "trueBody": { + "id": 309, + "nodeType": "Block", + "src": "7461:147:0", + "statements": [ + { + "expression": { + "id": 298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "baseExpression": { + "expression": { + "id": 289, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 280, + "src": "7475:1:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage storage pointer" + } + }, + "id": 292, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7477:6:0", + "memberName": "_roles", + "nodeType": "MemberAccess", + "referencedDeclaration": 34, + "src": "7475:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$", + "typeString": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)" + } + }, + "id": 293, + "indexExpression": { + "id": 291, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 271, + "src": "7484:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7475:14:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$25_storage", + "typeString": "struct AccessControlUpgradeable.RoleData storage ref" + } + }, + "id": 294, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7490:7:0", + "memberName": "hasRole", + "nodeType": "MemberAccess", + "referencedDeclaration": 22, + "src": "7475:22:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 296, + "indexExpression": { + "id": 295, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 273, + "src": "7498:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7475:31:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 297, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7509:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "7475:38:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 299, + "nodeType": "ExpressionStatement", + "src": "7475:38:0" + }, + { + "eventCall": { + "arguments": [ + { + "id": 301, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 271, + "src": "7544:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 302, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 273, + "src": "7550:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 303, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2784, + "src": "7559:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 304, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7559:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 300, + "name": "RoleGranted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3178, + "src": "7532:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$", + "typeString": "function (bytes32,address,address)" + } + }, + "id": 305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7532:40:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 306, + "nodeType": "EmitStatement", + "src": "7527:45:0" + }, + { + "expression": { + "hexValue": "74727565", + "id": 307, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7593:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 277, + "id": 308, + "nodeType": "Return", + "src": "7586:11:0" + } + ] + } + } + ] + }, + "documentation": { + "id": 269, + "nodeType": "StructuredDocumentation", + "src": "7042:223:0", + "text": " @dev Attempts to grant `role` to `account` and returns a boolean indicating if `role` was granted.\n Internal function without access restriction.\n May emit a {RoleGranted} event." + }, + "id": 315, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_grantRole", + "nameLocation": "7279:10:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 274, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 271, + "mutability": "mutable", + "name": "role", + "nameLocation": "7298:4:0", + "nodeType": "VariableDeclaration", + "scope": 315, + "src": "7290:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 270, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7290:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 273, + "mutability": "mutable", + "name": "account", + "nameLocation": "7312:7:0", + "nodeType": "VariableDeclaration", + "scope": 315, + "src": "7304:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 272, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7304:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "7289:31:0" + }, + "returnParameters": { + "id": 277, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 276, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 315, + "src": "7347:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 275, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7347:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "7346:6:0" + }, + "scope": 362, + "src": "7270:387:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 360, + "nodeType": "Block", + "src": "7976:304:0", + "statements": [ + { + "assignments": [ + 327 + ], + "declarations": [ + { + "constant": false, + "id": 327, + "mutability": "mutable", + "name": "$", + "nameLocation": "8015:1:0", + "nodeType": "VariableDeclaration", + "scope": 360, + "src": "7986:30:0", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + }, + "typeName": { + "id": 326, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 325, + "name": "AccessControlStorage", + "nameLocations": [ + "7986:20:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 35, + "src": "7986:20:0" + }, + "referencedDeclaration": 35, + "src": "7986:20:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage" + } + }, + "visibility": "internal" + } + ], + "id": 330, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 328, + "name": "_getAccessControlStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46, + "src": "8019:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_AccessControlStorage_$35_storage_ptr_$", + "typeString": "function () pure returns (struct AccessControlUpgradeable.AccessControlStorage storage pointer)" + } + }, + "id": 329, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8019:26:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7986:59:0" + }, + { + "condition": { + "arguments": [ + { + "id": 332, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 318, + "src": "8067:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 333, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 320, + "src": "8073:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 331, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 116, + "src": "8059:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 334, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8059:22:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 358, + "nodeType": "Block", + "src": "8237:37:0", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 356, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8258:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 324, + "id": 357, + "nodeType": "Return", + "src": "8251:12:0" + } + ] + }, + "id": 359, + "nodeType": "IfStatement", + "src": "8055:219:0", + "trueBody": { + "id": 355, + "nodeType": "Block", + "src": "8083:148:0", + "statements": [ + { + "expression": { + "id": 344, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "baseExpression": { + "expression": { + "id": 335, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 327, + "src": "8097:1:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlStorage_$35_storage_ptr", + "typeString": "struct AccessControlUpgradeable.AccessControlStorage storage pointer" + } + }, + "id": 338, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8099:6:0", + "memberName": "_roles", + "nodeType": "MemberAccess", + "referencedDeclaration": 34, + "src": "8097:8:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_RoleData_$25_storage_$", + "typeString": "mapping(bytes32 => struct AccessControlUpgradeable.RoleData storage ref)" + } + }, + "id": 339, + "indexExpression": { + "id": 337, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 318, + "src": "8106:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8097:14:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_RoleData_$25_storage", + "typeString": "struct AccessControlUpgradeable.RoleData storage ref" + } + }, + "id": 340, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8112:7:0", + "memberName": "hasRole", + "nodeType": "MemberAccess", + "referencedDeclaration": 22, + "src": "8097:22:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 342, + "indexExpression": { + "id": 341, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 320, + "src": "8120:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8097:31:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "66616c7365", + "id": 343, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8131:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "8097:39:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 345, + "nodeType": "ExpressionStatement", + "src": "8097:39:0" + }, + { + "eventCall": { + "arguments": [ + { + "id": 347, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 318, + "src": "8167:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 348, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 320, + "src": "8173:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 349, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2784, + "src": "8182:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 350, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8182:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 346, + "name": "RoleRevoked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3187, + "src": "8155:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$", + "typeString": "function (bytes32,address,address)" + } + }, + "id": 351, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8155:40:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 352, + "nodeType": "EmitStatement", + "src": "8150:45:0" + }, + { + "expression": { + "hexValue": "74727565", + "id": 353, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8216:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 324, + "id": 354, + "nodeType": "Return", + "src": "8209:11:0" + } + ] + } + } + ] + }, + "documentation": { + "id": 316, + "nodeType": "StructuredDocumentation", + "src": "7663:224:0", + "text": " @dev Attempts to revoke `role` to `account` and returns a boolean indicating if `role` was revoked.\n Internal function without access restriction.\n May emit a {RoleRevoked} event." + }, + "id": 361, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_revokeRole", + "nameLocation": "7901:11:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 321, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 318, + "mutability": "mutable", + "name": "role", + "nameLocation": "7921:4:0", + "nodeType": "VariableDeclaration", + "scope": 361, + "src": "7913:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 317, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7913:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 320, + "mutability": "mutable", + "name": "account", + "nameLocation": "7935:7:0", + "nodeType": "VariableDeclaration", + "scope": 361, + "src": "7927:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 319, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7927:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "7912:31:0" + }, + "returnParameters": { + "id": 324, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 323, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 361, + "src": "7970:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 322, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7970:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "7969:6:0" + }, + "scope": 362, + "src": "7892:388:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 363, + "src": "2090:6192:0", + "usedErrors": [ + 603, + 606, + 3157, + 3160 + ], + "usedEvents": [ + 611, + 3169, + 3178, + 3187 + ] + } + ], + "src": "108:8175:0" + }, + "id": 0 + }, + "@openzeppelin/contracts-upgradeable/access/extensions/AccessControlEnumerableUpgradeable.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts-upgradeable/access/extensions/AccessControlEnumerableUpgradeable.sol", + "exportedSymbols": { + "AccessControlEnumerableUpgradeable": [ + 586 + ], + "AccessControlUpgradeable": [ + 362 + ], + "EnumerableSet": [ + 10517 + ], + "IAccessControlEnumerable": [ + 3256 + ], + "Initializable": [ + 840 + ] + }, + "id": 587, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 364, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "129:24:1" + }, + { + "absolutePath": "@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.sol", + "file": "@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.sol", + "id": 366, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 587, + "sourceUnit": 3257, + "src": "155:112:1", + "symbolAliases": [ + { + "foreign": { + "id": 365, + "name": "IAccessControlEnumerable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3256, + "src": "163:24:1", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol", + "file": "../AccessControlUpgradeable.sol", + "id": 368, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 587, + "sourceUnit": 363, + "src": "268:73:1", + "symbolAliases": [ + { + "foreign": { + "id": 367, + "name": "AccessControlUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 362, + "src": "276:24:1", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/structs/EnumerableSet.sol", + "file": "@openzeppelin/contracts/utils/structs/EnumerableSet.sol", + "id": 370, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 587, + "sourceUnit": 10518, + "src": "342:86:1", + "symbolAliases": [ + { + "foreign": { + "id": 369, + "name": "EnumerableSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10517, + "src": "350:13:1", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "../../proxy/utils/Initializable.sol", + "id": 372, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 587, + "sourceUnit": 841, + "src": "429:66:1", + "symbolAliases": [ + { + "foreign": { + "id": 371, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 840, + "src": "437:13:1", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 374, + "name": "Initializable", + "nameLocations": [ + "648:13:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 840, + "src": "648:13:1" + }, + "id": 375, + "nodeType": "InheritanceSpecifier", + "src": "648:13:1" + }, + { + "baseName": { + "id": 376, + "name": "IAccessControlEnumerable", + "nameLocations": [ + "663:24:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3256, + "src": "663:24:1" + }, + "id": 377, + "nodeType": "InheritanceSpecifier", + "src": "663:24:1" + }, + { + "baseName": { + "id": 378, + "name": "AccessControlUpgradeable", + "nameLocations": [ + "689:24:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 362, + "src": "689:24:1" + }, + "id": 379, + "nodeType": "InheritanceSpecifier", + "src": "689:24:1" + } + ], + "canonicalName": "AccessControlEnumerableUpgradeable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 373, + "nodeType": "StructuredDocumentation", + "src": "497:94:1", + "text": " @dev Extension of {AccessControl} that allows enumerating the members of each role." + }, + "fullyImplemented": true, + "id": 586, + "linearizedBaseContracts": [ + 586, + 362, + 3147, + 6389, + 3256, + 3230, + 2802, + 840 + ], + "name": "AccessControlEnumerableUpgradeable", + "nameLocation": "610:34:1", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 383, + "libraryName": { + "id": 380, + "name": "EnumerableSet", + "nameLocations": [ + "726:13:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10517, + "src": "726:13:1" + }, + "nodeType": "UsingForDirective", + "src": "720:49:1", + "typeName": { + "id": 382, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 381, + "name": "EnumerableSet.AddressSet", + "nameLocations": [ + "744:13:1", + "758:10:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10230, + "src": "744:24:1" + }, + "referencedDeclaration": 10230, + "src": "744:24:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$10230_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + } + }, + { + "canonicalName": "AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage", + "documentation": { + "id": 384, + "nodeType": "StructuredDocumentation", + "src": "775:81:1", + "text": "@custom:storage-location erc7201:openzeppelin.storage.AccessControlEnumerable" + }, + "id": 390, + "members": [ + { + "constant": false, + "id": 389, + "mutability": "mutable", + "name": "_roleMembers", + "nameLocation": "959:12:1", + "nodeType": "VariableDeclaration", + "scope": 390, + "src": "909:62:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AddressSet_$10230_storage_$", + "typeString": "mapping(bytes32 => struct EnumerableSet.AddressSet)" + }, + "typeName": { + "id": 388, + "keyName": "role", + "keyNameLocation": "925:4:1", + "keyType": { + "id": 385, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "917:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "909:49:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AddressSet_$10230_storage_$", + "typeString": "mapping(bytes32 => struct EnumerableSet.AddressSet)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 387, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 386, + "name": "EnumerableSet.AddressSet", + "nameLocations": [ + "933:13:1", + "947:10:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10230, + "src": "933:24:1" + }, + "referencedDeclaration": 10230, + "src": "933:24:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$10230_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + } + }, + "visibility": "internal" + } + ], + "name": "AccessControlEnumerableStorage", + "nameLocation": "868:30:1", + "nodeType": "StructDefinition", + "scope": 586, + "src": "861:117:1", + "visibility": "public" + }, + { + "constant": true, + "id": 393, + "mutability": "constant", + "name": "AccessControlEnumerableStorageLocation", + "nameLocation": "1136:38:1", + "nodeType": "VariableDeclaration", + "scope": 586, + "src": "1111:132:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 391, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1111:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307863316636666532343632316365383165633538323763616630323533636164623734373039623036313633306536623535653832333731373035393332303030", + "id": 392, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1177:66:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_87732778178968556439956192144688703237987636878447527990685272173340959907840_by_1", + "typeString": "int_const 8773...(69 digits omitted)...7840" + }, + "value": "0xc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e82371705932000" + }, + "visibility": "private" + }, + { + "body": { + "id": 400, + "nodeType": "Block", + "src": "1360:97:1", + "statements": [ + { + "AST": { + "nativeSrc": "1379:72:1", + "nodeType": "YulBlock", + "src": "1379:72:1", + "statements": [ + { + "nativeSrc": "1393:48:1", + "nodeType": "YulAssignment", + "src": "1393:48:1", + "value": { + "name": "AccessControlEnumerableStorageLocation", + "nativeSrc": "1403:38:1", + "nodeType": "YulIdentifier", + "src": "1403:38:1" + }, + "variableNames": [ + { + "name": "$.slot", + "nativeSrc": "1393:6:1", + "nodeType": "YulIdentifier", + "src": "1393:6:1" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 397, + "isOffset": false, + "isSlot": true, + "src": "1393:6:1", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 393, + "isOffset": false, + "isSlot": false, + "src": "1403:38:1", + "valueSize": 1 + } + ], + "id": 399, + "nodeType": "InlineAssembly", + "src": "1370:81:1" + } + ] + }, + "id": 401, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getAccessControlEnumerableStorage", + "nameLocation": "1259:34:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 394, + "nodeType": "ParameterList", + "parameters": [], + "src": "1293:2:1" + }, + "returnParameters": { + "id": 398, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 397, + "mutability": "mutable", + "name": "$", + "nameLocation": "1357:1:1", + "nodeType": "VariableDeclaration", + "scope": 401, + "src": "1318:40:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage" + }, + "typeName": { + "id": 396, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 395, + "name": "AccessControlEnumerableStorage", + "nameLocations": [ + "1318:30:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 390, + "src": "1318:30:1" + }, + "referencedDeclaration": 390, + "src": "1318:30:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage" + } + }, + "visibility": "internal" + } + ], + "src": "1317:42:1" + }, + "scope": 586, + "src": "1250:207:1", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 406, + "nodeType": "Block", + "src": "1531:7:1", + "statements": [] + }, + "id": 407, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 404, + "kind": "modifierInvocation", + "modifierName": { + "id": 403, + "name": "onlyInitializing", + "nameLocations": [ + "1514:16:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 749, + "src": "1514:16:1" + }, + "nodeType": "ModifierInvocation", + "src": "1514:16:1" + } + ], + "name": "__AccessControlEnumerable_init", + "nameLocation": "1472:30:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 402, + "nodeType": "ParameterList", + "parameters": [], + "src": "1502:2:1" + }, + "returnParameters": { + "id": 405, + "nodeType": "ParameterList", + "parameters": [], + "src": "1531:0:1" + }, + "scope": 586, + "src": "1463:75:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 412, + "nodeType": "Block", + "src": "1622:7:1", + "statements": [] + }, + "id": 413, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 410, + "kind": "modifierInvocation", + "modifierName": { + "id": 409, + "name": "onlyInitializing", + "nameLocations": [ + "1605:16:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 749, + "src": "1605:16:1" + }, + "nodeType": "ModifierInvocation", + "src": "1605:16:1" + } + ], + "name": "__AccessControlEnumerable_init_unchained", + "nameLocation": "1553:40:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 408, + "nodeType": "ParameterList", + "parameters": [], + "src": "1593:2:1" + }, + "returnParameters": { + "id": 411, + "nodeType": "ParameterList", + "parameters": [], + "src": "1622:0:1" + }, + "scope": 586, + "src": "1544:85:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 91 + ], + "body": { + "id": 434, + "nodeType": "Block", + "src": "1786:121:1", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 432, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 427, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 422, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 416, + "src": "1803:11:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 424, + "name": "IAccessControlEnumerable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3256, + "src": "1823:24:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IAccessControlEnumerable_$3256_$", + "typeString": "type(contract IAccessControlEnumerable)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_contract$_IAccessControlEnumerable_$3256_$", + "typeString": "type(contract IAccessControlEnumerable)" + } + ], + "id": 423, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "1818:4:1", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 425, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1818:30:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_contract$_IAccessControlEnumerable_$3256", + "typeString": "type(contract IAccessControlEnumerable)" + } + }, + "id": 426, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1849:11:1", + "memberName": "interfaceId", + "nodeType": "MemberAccess", + "src": "1818:42:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "1803:57:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "arguments": [ + { + "id": 430, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 416, + "src": "1888:11:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "expression": { + "id": 428, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "1864:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_AccessControlEnumerableUpgradeable_$586_$", + "typeString": "type(contract super AccessControlEnumerableUpgradeable)" + } + }, + "id": 429, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1870:17:1", + "memberName": "supportsInterface", + "nodeType": "MemberAccess", + "referencedDeclaration": 91, + "src": "1864:23:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$", + "typeString": "function (bytes4) view returns (bool)" + } + }, + "id": 431, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1864:36:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1803:97:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 421, + "id": 433, + "nodeType": "Return", + "src": "1796:104:1" + } + ] + }, + "documentation": { + "id": 414, + "nodeType": "StructuredDocumentation", + "src": "1634:56:1", + "text": " @dev See {IERC165-supportsInterface}." + }, + "functionSelector": "01ffc9a7", + "id": 435, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nameLocation": "1704:17:1", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 418, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "1762:8:1" + }, + "parameters": { + "id": 417, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 416, + "mutability": "mutable", + "name": "interfaceId", + "nameLocation": "1729:11:1", + "nodeType": "VariableDeclaration", + "scope": 435, + "src": "1722:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 415, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1722:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "1721:20:1" + }, + "returnParameters": { + "id": 421, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 420, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 435, + "src": "1780:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 419, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1780:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1779:6:1" + }, + "scope": 586, + "src": "1695:212:1", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 3247 + ], + "body": { + "id": 459, + "nodeType": "Block", + "src": "2582:143:1", + "statements": [ + { + "assignments": [ + 447 + ], + "declarations": [ + { + "constant": false, + "id": 447, + "mutability": "mutable", + "name": "$", + "nameLocation": "2631:1:1", + "nodeType": "VariableDeclaration", + "scope": 459, + "src": "2592:40:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage" + }, + "typeName": { + "id": 446, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 445, + "name": "AccessControlEnumerableStorage", + "nameLocations": [ + "2592:30:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 390, + "src": "2592:30:1" + }, + "referencedDeclaration": 390, + "src": "2592:30:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 450, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 448, + "name": "_getAccessControlEnumerableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 401, + "src": "2635:34:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_AccessControlEnumerableStorage_$390_storage_ptr_$", + "typeString": "function () pure returns (struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer)" + } + }, + "id": 449, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2635:36:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2592:79:1" + }, + { + "expression": { + "arguments": [ + { + "id": 456, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 440, + "src": "2712:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "baseExpression": { + "expression": { + "id": 451, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 447, + "src": "2688:1:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer" + } + }, + "id": 452, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2690:12:1", + "memberName": "_roleMembers", + "nodeType": "MemberAccess", + "referencedDeclaration": 389, + "src": "2688:14:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AddressSet_$10230_storage_$", + "typeString": "mapping(bytes32 => struct EnumerableSet.AddressSet storage ref)" + } + }, + "id": 454, + "indexExpression": { + "id": 453, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 438, + "src": "2703:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2688:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$10230_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 455, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2709:2:1", + "memberName": "at", + "nodeType": "MemberAccess", + "referencedDeclaration": 10353, + "src": "2688:23:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$10230_storage_ptr_$_t_uint256_$returns$_t_address_$attached_to$_t_struct$_AddressSet_$10230_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)" + } + }, + "id": 457, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2688:30:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 444, + "id": 458, + "nodeType": "Return", + "src": "2681:37:1" + } + ] + }, + "documentation": { + "id": 436, + "nodeType": "StructuredDocumentation", + "src": "1913:574:1", + "text": " @dev Returns one of the accounts that have `role`. `index` must be a\n value between 0 and {getRoleMemberCount}, non-inclusive.\n Role bearers are not sorted in any particular way, and their ordering may\n change at any point.\n WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\n you perform all queries on the same block. See the following\n https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\n for more information." + }, + "functionSelector": "9010d07c", + "id": 460, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getRoleMember", + "nameLocation": "2501:13:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 441, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 438, + "mutability": "mutable", + "name": "role", + "nameLocation": "2523:4:1", + "nodeType": "VariableDeclaration", + "scope": 460, + "src": "2515:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 437, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2515:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 440, + "mutability": "mutable", + "name": "index", + "nameLocation": "2537:5:1", + "nodeType": "VariableDeclaration", + "scope": 460, + "src": "2529:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 439, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2529:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2514:29:1" + }, + "returnParameters": { + "id": 444, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 443, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 460, + "src": "2573:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 442, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2573:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2572:9:1" + }, + "scope": 586, + "src": "2492:233:1", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 3255 + ], + "body": { + "id": 481, + "nodeType": "Block", + "src": "2973:142:1", + "statements": [ + { + "assignments": [ + 470 + ], + "declarations": [ + { + "constant": false, + "id": 470, + "mutability": "mutable", + "name": "$", + "nameLocation": "3022:1:1", + "nodeType": "VariableDeclaration", + "scope": 481, + "src": "2983:40:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage" + }, + "typeName": { + "id": 469, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 468, + "name": "AccessControlEnumerableStorage", + "nameLocations": [ + "2983:30:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 390, + "src": "2983:30:1" + }, + "referencedDeclaration": 390, + "src": "2983:30:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 473, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 471, + "name": "_getAccessControlEnumerableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 401, + "src": "3026:34:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_AccessControlEnumerableStorage_$390_storage_ptr_$", + "typeString": "function () pure returns (struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer)" + } + }, + "id": 472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3026:36:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2983:79:1" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "baseExpression": { + "expression": { + "id": 474, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 470, + "src": "3079:1:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer" + } + }, + "id": 475, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3081:12:1", + "memberName": "_roleMembers", + "nodeType": "MemberAccess", + "referencedDeclaration": 389, + "src": "3079:14:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AddressSet_$10230_storage_$", + "typeString": "mapping(bytes32 => struct EnumerableSet.AddressSet storage ref)" + } + }, + "id": 477, + "indexExpression": { + "id": 476, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 463, + "src": "3094:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3079:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$10230_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 478, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3100:6:1", + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": 10326, + "src": "3079:27:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$10230_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_AddressSet_$10230_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)" + } + }, + "id": 479, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3079:29:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 467, + "id": 480, + "nodeType": "Return", + "src": "3072:36:1" + } + ] + }, + "documentation": { + "id": 461, + "nodeType": "StructuredDocumentation", + "src": "2731:157:1", + "text": " @dev Returns the number of accounts that have `role`. Can be used\n together with {getRoleMember} to enumerate all bearers of a role." + }, + "functionSelector": "ca15c873", + "id": 482, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getRoleMemberCount", + "nameLocation": "2902:18:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 464, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 463, + "mutability": "mutable", + "name": "role", + "nameLocation": "2929:4:1", + "nodeType": "VariableDeclaration", + "scope": 482, + "src": "2921:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 462, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2921:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2920:14:1" + }, + "returnParameters": { + "id": 467, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 466, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 482, + "src": "2964:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 465, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2964:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2963:9:1" + }, + "scope": 586, + "src": "2893:222:1", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 504, + "nodeType": "Block", + "src": "3743:142:1", + "statements": [ + { + "assignments": [ + 493 + ], + "declarations": [ + { + "constant": false, + "id": 493, + "mutability": "mutable", + "name": "$", + "nameLocation": "3792:1:1", + "nodeType": "VariableDeclaration", + "scope": 504, + "src": "3753:40:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage" + }, + "typeName": { + "id": 492, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 491, + "name": "AccessControlEnumerableStorage", + "nameLocations": [ + "3753:30:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 390, + "src": "3753:30:1" + }, + "referencedDeclaration": 390, + "src": "3753:30:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 496, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 494, + "name": "_getAccessControlEnumerableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 401, + "src": "3796:34:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_AccessControlEnumerableStorage_$390_storage_ptr_$", + "typeString": "function () pure returns (struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer)" + } + }, + "id": 495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3796:36:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3753:79:1" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "baseExpression": { + "expression": { + "id": 497, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 493, + "src": "3849:1:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer" + } + }, + "id": 498, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3851:12:1", + "memberName": "_roleMembers", + "nodeType": "MemberAccess", + "referencedDeclaration": 389, + "src": "3849:14:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AddressSet_$10230_storage_$", + "typeString": "mapping(bytes32 => struct EnumerableSet.AddressSet storage ref)" + } + }, + "id": 500, + "indexExpression": { + "id": 499, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 485, + "src": "3864:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3849:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$10230_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 501, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3870:6:1", + "memberName": "values", + "nodeType": "MemberAccess", + "referencedDeclaration": 10383, + "src": "3849:27:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$10230_storage_ptr_$returns$_t_array$_t_address_$dyn_memory_ptr_$attached_to$_t_struct$_AddressSet_$10230_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer) view returns (address[] memory)" + } + }, + "id": 502, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3849:29:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "functionReturnParameters": 490, + "id": 503, + "nodeType": "Return", + "src": "3842:36:1" + } + ] + }, + "documentation": { + "id": 483, + "nodeType": "StructuredDocumentation", + "src": "3121:532:1", + "text": " @dev Return all accounts that have `role`\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block." + }, + "functionSelector": "a3246ad3", + "id": 505, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getRoleMembers", + "nameLocation": "3667:14:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 486, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 485, + "mutability": "mutable", + "name": "role", + "nameLocation": "3690:4:1", + "nodeType": "VariableDeclaration", + "scope": 505, + "src": "3682:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 484, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3682:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3681:14:1" + }, + "returnParameters": { + "id": 490, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 489, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 505, + "src": "3725:16:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 487, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3725:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 488, + "nodeType": "ArrayTypeName", + "src": "3725:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "src": "3724:18:1" + }, + "scope": 586, + "src": "3658:227:1", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 315 + ], + "body": { + "id": 544, + "nodeType": "Block", + "src": "4079:256:1", + "statements": [ + { + "assignments": [ + 518 + ], + "declarations": [ + { + "constant": false, + "id": 518, + "mutability": "mutable", + "name": "$", + "nameLocation": "4128:1:1", + "nodeType": "VariableDeclaration", + "scope": 544, + "src": "4089:40:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage" + }, + "typeName": { + "id": 517, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 516, + "name": "AccessControlEnumerableStorage", + "nameLocations": [ + "4089:30:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 390, + "src": "4089:30:1" + }, + "referencedDeclaration": 390, + "src": "4089:30:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 521, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 519, + "name": "_getAccessControlEnumerableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 401, + "src": "4132:34:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_AccessControlEnumerableStorage_$390_storage_ptr_$", + "typeString": "function () pure returns (struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer)" + } + }, + "id": 520, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4132:36:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4089:79:1" + }, + { + "assignments": [ + 523 + ], + "declarations": [ + { + "constant": false, + "id": 523, + "mutability": "mutable", + "name": "granted", + "nameLocation": "4183:7:1", + "nodeType": "VariableDeclaration", + "scope": 544, + "src": "4178:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 522, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4178:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 529, + "initialValue": { + "arguments": [ + { + "id": 526, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 508, + "src": "4210:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 527, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 510, + "src": "4216:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 524, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "4193:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_AccessControlEnumerableUpgradeable_$586_$", + "typeString": "type(contract super AccessControlEnumerableUpgradeable)" + } + }, + "id": 525, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4199:10:1", + "memberName": "_grantRole", + "nodeType": "MemberAccess", + "referencedDeclaration": 315, + "src": "4193:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 528, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4193:31:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4178:46:1" + }, + { + "condition": { + "id": 530, + "name": "granted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 523, + "src": "4238:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 541, + "nodeType": "IfStatement", + "src": "4234:71:1", + "trueBody": { + "id": 540, + "nodeType": "Block", + "src": "4247:58:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 537, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 510, + "src": "4286:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "baseExpression": { + "expression": { + "id": 531, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 518, + "src": "4261:1:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer" + } + }, + "id": 534, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4263:12:1", + "memberName": "_roleMembers", + "nodeType": "MemberAccess", + "referencedDeclaration": 389, + "src": "4261:14:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AddressSet_$10230_storage_$", + "typeString": "mapping(bytes32 => struct EnumerableSet.AddressSet storage ref)" + } + }, + "id": 535, + "indexExpression": { + "id": 533, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 508, + "src": "4276:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4261:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$10230_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 536, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4282:3:1", + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 10257, + "src": "4261:24:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_AddressSet_$10230_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$10230_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)" + } + }, + "id": 538, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4261:33:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 539, + "nodeType": "ExpressionStatement", + "src": "4261:33:1" + } + ] + } + }, + { + "expression": { + "id": 542, + "name": "granted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 523, + "src": "4321:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 515, + "id": 543, + "nodeType": "Return", + "src": "4314:14:1" + } + ] + }, + "documentation": { + "id": 506, + "nodeType": "StructuredDocumentation", + "src": "3891:91:1", + "text": " @dev Overload {AccessControl-_grantRole} to track enumerable memberships" + }, + "id": 545, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_grantRole", + "nameLocation": "3996:10:1", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 512, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4055:8:1" + }, + "parameters": { + "id": 511, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 508, + "mutability": "mutable", + "name": "role", + "nameLocation": "4015:4:1", + "nodeType": "VariableDeclaration", + "scope": 545, + "src": "4007:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 507, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4007:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 510, + "mutability": "mutable", + "name": "account", + "nameLocation": "4029:7:1", + "nodeType": "VariableDeclaration", + "scope": 545, + "src": "4021:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 509, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4021:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4006:31:1" + }, + "returnParameters": { + "id": 515, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 514, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 545, + "src": "4073:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 513, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4073:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4072:6:1" + }, + "scope": 586, + "src": "3987:348:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "baseFunctions": [ + 361 + ], + "body": { + "id": 584, + "nodeType": "Block", + "src": "4531:260:1", + "statements": [ + { + "assignments": [ + 558 + ], + "declarations": [ + { + "constant": false, + "id": 558, + "mutability": "mutable", + "name": "$", + "nameLocation": "4580:1:1", + "nodeType": "VariableDeclaration", + "scope": 584, + "src": "4541:40:1", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage" + }, + "typeName": { + "id": 557, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 556, + "name": "AccessControlEnumerableStorage", + "nameLocations": [ + "4541:30:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 390, + "src": "4541:30:1" + }, + "referencedDeclaration": 390, + "src": "4541:30:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 561, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 559, + "name": "_getAccessControlEnumerableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 401, + "src": "4584:34:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_AccessControlEnumerableStorage_$390_storage_ptr_$", + "typeString": "function () pure returns (struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer)" + } + }, + "id": 560, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4584:36:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4541:79:1" + }, + { + "assignments": [ + 563 + ], + "declarations": [ + { + "constant": false, + "id": 563, + "mutability": "mutable", + "name": "revoked", + "nameLocation": "4635:7:1", + "nodeType": "VariableDeclaration", + "scope": 584, + "src": "4630:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 562, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4630:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 569, + "initialValue": { + "arguments": [ + { + "id": 566, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 548, + "src": "4663:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 567, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 550, + "src": "4669:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 564, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "4645:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_AccessControlEnumerableUpgradeable_$586_$", + "typeString": "type(contract super AccessControlEnumerableUpgradeable)" + } + }, + "id": 565, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4651:11:1", + "memberName": "_revokeRole", + "nodeType": "MemberAccess", + "referencedDeclaration": 361, + "src": "4645:17:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4645:32:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4630:47:1" + }, + { + "condition": { + "id": 570, + "name": "revoked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "4691:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 581, + "nodeType": "IfStatement", + "src": "4687:74:1", + "trueBody": { + "id": 580, + "nodeType": "Block", + "src": "4700:61:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 577, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 550, + "src": "4742:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "baseExpression": { + "expression": { + "id": 571, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 558, + "src": "4714:1:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AccessControlEnumerableStorage_$390_storage_ptr", + "typeString": "struct AccessControlEnumerableUpgradeable.AccessControlEnumerableStorage storage pointer" + } + }, + "id": 574, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4716:12:1", + "memberName": "_roleMembers", + "nodeType": "MemberAccess", + "referencedDeclaration": 389, + "src": "4714:14:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_AddressSet_$10230_storage_$", + "typeString": "mapping(bytes32 => struct EnumerableSet.AddressSet storage ref)" + } + }, + "id": 575, + "indexExpression": { + "id": 573, + "name": "role", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 548, + "src": "4729:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4714:20:1", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$10230_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 576, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4735:6:1", + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 10284, + "src": "4714:27:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_AddressSet_$10230_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$10230_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)" + } + }, + "id": 578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4714:36:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 579, + "nodeType": "ExpressionStatement", + "src": "4714:36:1" + } + ] + } + }, + { + "expression": { + "id": 582, + "name": "revoked", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "4777:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 555, + "id": 583, + "nodeType": "Return", + "src": "4770:14:1" + } + ] + }, + "documentation": { + "id": 546, + "nodeType": "StructuredDocumentation", + "src": "4341:92:1", + "text": " @dev Overload {AccessControl-_revokeRole} to track enumerable memberships" + }, + "id": 585, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_revokeRole", + "nameLocation": "4447:11:1", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 552, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4507:8:1" + }, + "parameters": { + "id": 551, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 548, + "mutability": "mutable", + "name": "role", + "nameLocation": "4467:4:1", + "nodeType": "VariableDeclaration", + "scope": 585, + "src": "4459:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 547, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4459:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 550, + "mutability": "mutable", + "name": "account", + "nameLocation": "4481:7:1", + "nodeType": "VariableDeclaration", + "scope": 585, + "src": "4473:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 549, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4473:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4458:31:1" + }, + "returnParameters": { + "id": 555, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 554, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 585, + "src": "4525:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 553, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4525:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4524:6:1" + }, + "scope": 586, + "src": "4438:353:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 587, + "src": "592:4201:1", + "usedErrors": [ + 603, + 606, + 3157, + 3160 + ], + "usedEvents": [ + 611, + 3169, + 3178, + 3187 + ] + } + ], + "src": "129:4665:1" + }, + "id": 1 + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "exportedSymbols": { + "Initializable": [ + 840 + ] + }, + "id": 841, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 588, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "113:24:2" + }, + { + "abstract": true, + "baseContracts": [], + "canonicalName": "Initializable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 589, + "nodeType": "StructuredDocumentation", + "src": "139:2209:2", + "text": " @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n case an upgrade adds a module that needs to be initialized.\n For example:\n [.hljs-theme-light.nopadding]\n ```solidity\n contract MyToken is ERC20Upgradeable {\n function initialize() initializer public {\n __ERC20_init(\"MyToken\", \"MTK\");\n }\n }\n contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n function initializeV2() reinitializer(2) public {\n __ERC20Permit_init(\"MyToken\");\n }\n }\n ```\n TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n [CAUTION]\n ====\n Avoid leaving a contract uninitialized.\n An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n [.hljs-theme-light.nopadding]\n ```\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n _disableInitializers();\n }\n ```\n ====" + }, + "fullyImplemented": true, + "id": 840, + "linearizedBaseContracts": [ + 840 + ], + "name": "Initializable", + "nameLocation": "2367:13:2", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "Initializable.InitializableStorage", + "documentation": { + "id": 590, + "nodeType": "StructuredDocumentation", + "src": "2387:293:2", + "text": " @dev Storage of the initializable contract.\n It's implemented on a custom ERC-7201 namespace to reduce the risk of storage collisions\n when using with upgradeable contracts.\n @custom:storage-location erc7201:openzeppelin.storage.Initializable" + }, + "id": 597, + "members": [ + { + "constant": false, + "id": 593, + "mutability": "mutable", + "name": "_initialized", + "nameLocation": "2820:12:2", + "nodeType": "VariableDeclaration", + "scope": 597, + "src": "2813:19:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 592, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "2813:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 596, + "mutability": "mutable", + "name": "_initializing", + "nameLocation": "2955:13:2", + "nodeType": "VariableDeclaration", + "scope": 597, + "src": "2950:18:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 595, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2950:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "name": "InitializableStorage", + "nameLocation": "2692:20:2", + "nodeType": "StructDefinition", + "scope": 840, + "src": "2685:290:2", + "visibility": "public" + }, + { + "constant": true, + "id": 600, + "mutability": "constant", + "name": "INITIALIZABLE_STORAGE", + "nameLocation": "3123:21:2", + "nodeType": "VariableDeclaration", + "scope": 840, + "src": "3098:115:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 598, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3098:7:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307866306335376531363834306466303430663135303838646332663831666533393163333932336265633733653233613936363265666339633232396336613030", + "id": 599, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3147:66:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_108904022758810753673719992590105913556127789646572562039383141376366747609600_by_1", + "typeString": "int_const 1089...(70 digits omitted)...9600" + }, + "value": "0xf0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00" + }, + "visibility": "private" + }, + { + "documentation": { + "id": 601, + "nodeType": "StructuredDocumentation", + "src": "3220:60:2", + "text": " @dev The contract is already initialized." + }, + "errorSelector": "f92ee8a9", + "id": 603, + "name": "InvalidInitialization", + "nameLocation": "3291:21:2", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 602, + "nodeType": "ParameterList", + "parameters": [], + "src": "3312:2:2" + }, + "src": "3285:30:2" + }, + { + "documentation": { + "id": 604, + "nodeType": "StructuredDocumentation", + "src": "3321:57:2", + "text": " @dev The contract is not initializing." + }, + "errorSelector": "d7e6bcf8", + "id": 606, + "name": "NotInitializing", + "nameLocation": "3389:15:2", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 605, + "nodeType": "ParameterList", + "parameters": [], + "src": "3404:2:2" + }, + "src": "3383:24:2" + }, + { + "anonymous": false, + "documentation": { + "id": 607, + "nodeType": "StructuredDocumentation", + "src": "3413:90:2", + "text": " @dev Triggered when the contract has been initialized or reinitialized." + }, + "eventSelector": "c7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2", + "id": 611, + "name": "Initialized", + "nameLocation": "3514:11:2", + "nodeType": "EventDefinition", + "parameters": { + "id": 610, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 609, + "indexed": false, + "mutability": "mutable", + "name": "version", + "nameLocation": "3533:7:2", + "nodeType": "VariableDeclaration", + "scope": 611, + "src": "3526:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 608, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "3526:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + } + ], + "src": "3525:16:2" + }, + "src": "3508:34:2" + }, + { + "body": { + "id": 693, + "nodeType": "Block", + "src": "4092:1081:2", + "statements": [ + { + "assignments": [ + 616 + ], + "declarations": [ + { + "constant": false, + "id": 616, + "mutability": "mutable", + "name": "$", + "nameLocation": "4187:1:2", + "nodeType": "VariableDeclaration", + "scope": 693, + "src": "4158:30:2", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$597_storage_ptr", + "typeString": "struct Initializable.InitializableStorage" + }, + "typeName": { + "id": 615, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 614, + "name": "InitializableStorage", + "nameLocations": [ + "4158:20:2" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 597, + "src": "4158:20:2" + }, + "referencedDeclaration": 597, + "src": "4158:20:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$597_storage_ptr", + "typeString": "struct Initializable.InitializableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 619, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 617, + "name": "_getInitializableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 839, + "src": "4191:24:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$597_storage_ptr_$", + "typeString": "function () pure returns (struct Initializable.InitializableStorage storage pointer)" + } + }, + "id": 618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4191:26:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$597_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4158:59:2" + }, + { + "assignments": [ + 621 + ], + "declarations": [ + { + "constant": false, + "id": 621, + "mutability": "mutable", + "name": "isTopLevelCall", + "nameLocation": "4284:14:2", + "nodeType": "VariableDeclaration", + "scope": 693, + "src": "4279:19:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 620, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4279:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 625, + "initialValue": { + "id": 624, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4301:16:2", + "subExpression": { + "expression": { + "id": 622, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 616, + "src": "4302:1:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$597_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 623, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4304:13:2", + "memberName": "_initializing", + "nodeType": "MemberAccess", + "referencedDeclaration": 596, + "src": "4302:15:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4279:38:2" + }, + { + "assignments": [ + 627 + ], + "declarations": [ + { + "constant": false, + "id": 627, + "mutability": "mutable", + "name": "initialized", + "nameLocation": "4334:11:2", + "nodeType": "VariableDeclaration", + "scope": 693, + "src": "4327:18:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 626, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "4327:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + } + ], + "id": 630, + "initialValue": { + "expression": { + "id": 628, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 616, + "src": "4348:1:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$597_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 629, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4350:12:2", + "memberName": "_initialized", + "nodeType": "MemberAccess", + "referencedDeclaration": 593, + "src": "4348:14:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4327:35:2" + }, + { + "assignments": [ + 632 + ], + "declarations": [ + { + "constant": false, + "id": 632, + "mutability": "mutable", + "name": "initialSetup", + "nameLocation": "4711:12:2", + "nodeType": "VariableDeclaration", + "scope": 693, + "src": "4706:17:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 631, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4706:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 638, + "initialValue": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 637, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "id": 635, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 633, + "name": "initialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 627, + "src": "4726:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 634, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4741:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4726:16:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "id": 636, + "name": "isTopLevelCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 621, + "src": "4746:14:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4726:34:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4706:54:2" + }, + { + "assignments": [ + 640 + ], + "declarations": [ + { + "constant": false, + "id": 640, + "mutability": "mutable", + "name": "construction", + "nameLocation": "4775:12:2", + "nodeType": "VariableDeclaration", + "scope": 693, + "src": "4770:17:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 639, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4770:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 653, + "initialValue": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "id": 643, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 641, + "name": "initialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 627, + "src": "4790:11:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "31", + "id": 642, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4805:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4790:16:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 651, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "arguments": [ + { + "id": 646, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "4818:4:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Initializable_$840", + "typeString": "contract Initializable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Initializable_$840", + "typeString": "contract Initializable" + } + ], + "id": 645, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4810:7:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 644, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4810:7:2", + "typeDescriptions": {} + } + }, + "id": 647, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4810:13:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 648, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4824:4:2", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "4810:18:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4829:6:2", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "4810:25:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 650, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4839:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4810:30:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4790:50:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4770:70:2" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 658, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 655, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4855:13:2", + "subExpression": { + "id": 654, + "name": "initialSetup", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 632, + "src": "4856:12:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "id": 657, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4872:13:2", + "subExpression": { + "id": 656, + "name": "construction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 640, + "src": "4873:12:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4855:30:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 663, + "nodeType": "IfStatement", + "src": "4851:91:2", + "trueBody": { + "id": 662, + "nodeType": "Block", + "src": "4887:55:2", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 659, + "name": "InvalidInitialization", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 603, + "src": "4908:21:2", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4908:23:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 661, + "nodeType": "RevertStatement", + "src": "4901:30:2" + } + ] + } + }, + { + "expression": { + "id": 668, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 664, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 616, + "src": "4951:1:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$597_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 666, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "4953:12:2", + "memberName": "_initialized", + "nodeType": "MemberAccess", + "referencedDeclaration": 593, + "src": "4951:14:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "31", + "id": 667, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4968:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4951:18:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "id": 669, + "nodeType": "ExpressionStatement", + "src": "4951:18:2" + }, + { + "condition": { + "id": 670, + "name": "isTopLevelCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 621, + "src": "4983:14:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 678, + "nodeType": "IfStatement", + "src": "4979:67:2", + "trueBody": { + "id": 677, + "nodeType": "Block", + "src": "4999:47:2", + "statements": [ + { + "expression": { + "id": 675, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 671, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 616, + "src": "5013:1:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$597_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 673, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "5015:13:2", + "memberName": "_initializing", + "nodeType": "MemberAccess", + "referencedDeclaration": 596, + "src": "5013:15:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 674, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5031:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "5013:22:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 676, + "nodeType": "ExpressionStatement", + "src": "5013:22:2" + } + ] + } + }, + { + "id": 679, + "nodeType": "PlaceholderStatement", + "src": "5055:1:2" + }, + { + "condition": { + "id": 680, + "name": "isTopLevelCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 621, + "src": "5070:14:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 692, + "nodeType": "IfStatement", + "src": "5066:101:2", + "trueBody": { + "id": 691, + "nodeType": "Block", + "src": "5086:81:2", + "statements": [ + { + "expression": { + "id": 685, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 681, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 616, + "src": "5100:1:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$597_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 683, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "5102:13:2", + "memberName": "_initializing", + "nodeType": "MemberAccess", + "referencedDeclaration": 596, + "src": "5100:15:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "66616c7365", + "id": 684, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5118:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "5100:23:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 686, + "nodeType": "ExpressionStatement", + "src": "5100:23:2" + }, + { + "eventCall": { + "arguments": [ + { + "hexValue": "31", + "id": 688, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5154:1:2", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "id": 687, + "name": "Initialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 611, + "src": "5142:11:2", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", + "typeString": "function (uint64)" + } + }, + "id": 689, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5142:14:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 690, + "nodeType": "EmitStatement", + "src": "5137:19:2" + } + ] + } + } + ] + }, + "documentation": { + "id": 612, + "nodeType": "StructuredDocumentation", + "src": "3548:516:2", + "text": " @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n `onlyInitializing` functions can be used to initialize parent contracts.\n Similar to `reinitializer(1)`, except that in the context of a constructor an `initializer` may be invoked any\n number of times. This behavior in the constructor can be useful during testing and is not expected to be used in\n production.\n Emits an {Initialized} event." + }, + "id": 694, + "name": "initializer", + "nameLocation": "4078:11:2", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 613, + "nodeType": "ParameterList", + "parameters": [], + "src": "4089:2:2" + }, + "src": "4069:1104:2", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 740, + "nodeType": "Block", + "src": "6291:392:2", + "statements": [ + { + "assignments": [ + 701 + ], + "declarations": [ + { + "constant": false, + "id": 701, + "mutability": "mutable", + "name": "$", + "nameLocation": "6386:1:2", + "nodeType": "VariableDeclaration", + "scope": 740, + "src": "6357:30:2", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$597_storage_ptr", + "typeString": "struct Initializable.InitializableStorage" + }, + "typeName": { + "id": 700, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 699, + "name": "InitializableStorage", + "nameLocations": [ + "6357:20:2" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 597, + "src": "6357:20:2" + }, + "referencedDeclaration": 597, + "src": "6357:20:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$597_storage_ptr", + "typeString": "struct Initializable.InitializableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 704, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 702, + "name": "_getInitializableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 839, + "src": "6390:24:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$597_storage_ptr_$", + "typeString": "function () pure returns (struct Initializable.InitializableStorage storage pointer)" + } + }, + "id": 703, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6390:26:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$597_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6357:59:2" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 711, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 705, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 701, + "src": "6431:1:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$597_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 706, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6433:13:2", + "memberName": "_initializing", + "nodeType": "MemberAccess", + "referencedDeclaration": 596, + "src": "6431:15:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "id": 710, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 707, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 701, + "src": "6450:1:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$597_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 708, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6452:12:2", + "memberName": "_initialized", + "nodeType": "MemberAccess", + "referencedDeclaration": 593, + "src": "6450:14:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 709, + "name": "version", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 697, + "src": "6468:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "6450:25:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "6431:44:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 716, + "nodeType": "IfStatement", + "src": "6427:105:2", + "trueBody": { + "id": 715, + "nodeType": "Block", + "src": "6477:55:2", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 712, + "name": "InvalidInitialization", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 603, + "src": "6498:21:2", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 713, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6498:23:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 714, + "nodeType": "RevertStatement", + "src": "6491:30:2" + } + ] + } + }, + { + "expression": { + "id": 721, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 717, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 701, + "src": "6541:1:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$597_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 719, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "6543:12:2", + "memberName": "_initialized", + "nodeType": "MemberAccess", + "referencedDeclaration": 593, + "src": "6541:14:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 720, + "name": "version", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 697, + "src": "6558:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "6541:24:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "id": 722, + "nodeType": "ExpressionStatement", + "src": "6541:24:2" + }, + { + "expression": { + "id": 727, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 723, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 701, + "src": "6575:1:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$597_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 725, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "6577:13:2", + "memberName": "_initializing", + "nodeType": "MemberAccess", + "referencedDeclaration": 596, + "src": "6575:15:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 726, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6593:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "6575:22:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 728, + "nodeType": "ExpressionStatement", + "src": "6575:22:2" + }, + { + "id": 729, + "nodeType": "PlaceholderStatement", + "src": "6607:1:2" + }, + { + "expression": { + "id": 734, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 730, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 701, + "src": "6618:1:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$597_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 732, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "6620:13:2", + "memberName": "_initializing", + "nodeType": "MemberAccess", + "referencedDeclaration": 596, + "src": "6618:15:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "66616c7365", + "id": 733, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6636:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "6618:23:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 735, + "nodeType": "ExpressionStatement", + "src": "6618:23:2" + }, + { + "eventCall": { + "arguments": [ + { + "id": 737, + "name": "version", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 697, + "src": "6668:7:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "id": 736, + "name": "Initialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 611, + "src": "6656:11:2", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", + "typeString": "function (uint64)" + } + }, + "id": 738, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6656:20:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 739, + "nodeType": "EmitStatement", + "src": "6651:25:2" + } + ] + }, + "documentation": { + "id": 695, + "nodeType": "StructuredDocumentation", + "src": "5179:1068:2", + "text": " @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n used to initialize parent contracts.\n A reinitializer may be used after the original initialization step. This is essential to configure modules that\n are added through upgrades and that require initialization.\n When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n cannot be nested. If one is invoked in the context of another, execution will revert.\n Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n a contract, executing them in the right order is up to the developer or operator.\n WARNING: Setting the version to 2**64 - 1 will prevent any future reinitialization.\n Emits an {Initialized} event." + }, + "id": 741, + "name": "reinitializer", + "nameLocation": "6261:13:2", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 698, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 697, + "mutability": "mutable", + "name": "version", + "nameLocation": "6282:7:2", + "nodeType": "VariableDeclaration", + "scope": 741, + "src": "6275:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 696, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "6275:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + } + ], + "src": "6274:16:2" + }, + "src": "6252:431:2", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 748, + "nodeType": "Block", + "src": "6921:48:2", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 744, + "name": "_checkInitializing", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 762, + "src": "6931:18:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$__$", + "typeString": "function () view" + } + }, + "id": 745, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6931:20:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 746, + "nodeType": "ExpressionStatement", + "src": "6931:20:2" + }, + { + "id": 747, + "nodeType": "PlaceholderStatement", + "src": "6961:1:2" + } + ] + }, + "documentation": { + "id": 742, + "nodeType": "StructuredDocumentation", + "src": "6689:199:2", + "text": " @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n {initializer} and {reinitializer} modifiers, directly or indirectly." + }, + "id": 749, + "name": "onlyInitializing", + "nameLocation": "6902:16:2", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 743, + "nodeType": "ParameterList", + "parameters": [], + "src": "6918:2:2" + }, + "src": "6893:76:2", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 761, + "nodeType": "Block", + "src": "7136:89:2", + "statements": [ + { + "condition": { + "id": 755, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "7150:18:2", + "subExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 753, + "name": "_isInitializing", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 830, + "src": "7151:15:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7151:17:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 760, + "nodeType": "IfStatement", + "src": "7146:73:2", + "trueBody": { + "id": 759, + "nodeType": "Block", + "src": "7170:49:2", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 756, + "name": "NotInitializing", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 606, + "src": "7191:15:2", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 757, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7191:17:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 758, + "nodeType": "RevertStatement", + "src": "7184:24:2" + } + ] + } + } + ] + }, + "documentation": { + "id": 750, + "nodeType": "StructuredDocumentation", + "src": "6975:104:2", + "text": " @dev Reverts if the contract is not in an initializing state. See {onlyInitializing}." + }, + "id": 762, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkInitializing", + "nameLocation": "7093:18:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 751, + "nodeType": "ParameterList", + "parameters": [], + "src": "7111:2:2" + }, + "returnParameters": { + "id": 752, + "nodeType": "ParameterList", + "parameters": [], + "src": "7136:0:2" + }, + "scope": 840, + "src": "7084:141:2", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 807, + "nodeType": "Block", + "src": "7760:373:2", + "statements": [ + { + "assignments": [ + 768 + ], + "declarations": [ + { + "constant": false, + "id": 768, + "mutability": "mutable", + "name": "$", + "nameLocation": "7855:1:2", + "nodeType": "VariableDeclaration", + "scope": 807, + "src": "7826:30:2", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$597_storage_ptr", + "typeString": "struct Initializable.InitializableStorage" + }, + "typeName": { + "id": 767, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 766, + "name": "InitializableStorage", + "nameLocations": [ + "7826:20:2" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 597, + "src": "7826:20:2" + }, + "referencedDeclaration": 597, + "src": "7826:20:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$597_storage_ptr", + "typeString": "struct Initializable.InitializableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 771, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 769, + "name": "_getInitializableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 839, + "src": "7859:24:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$597_storage_ptr_$", + "typeString": "function () pure returns (struct Initializable.InitializableStorage storage pointer)" + } + }, + "id": 770, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7859:26:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$597_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7826:59:2" + }, + { + "condition": { + "expression": { + "id": 772, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 768, + "src": "7900:1:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$597_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 773, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7902:13:2", + "memberName": "_initializing", + "nodeType": "MemberAccess", + "referencedDeclaration": 596, + "src": "7900:15:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 778, + "nodeType": "IfStatement", + "src": "7896:76:2", + "trueBody": { + "id": 777, + "nodeType": "Block", + "src": "7917:55:2", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 774, + "name": "InvalidInitialization", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 603, + "src": "7938:21:2", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7938:23:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 776, + "nodeType": "RevertStatement", + "src": "7931:30:2" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "id": 786, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 779, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 768, + "src": "7985:1:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$597_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 780, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7987:12:2", + "memberName": "_initialized", + "nodeType": "MemberAccess", + "referencedDeclaration": 593, + "src": "7985:14:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 783, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8008:6:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + }, + "typeName": { + "id": 782, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "8008:6:2", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + } + ], + "id": 781, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "8003:4:2", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 784, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8003:12:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint64", + "typeString": "type(uint64)" + } + }, + "id": 785, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "8016:3:2", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "8003:16:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "7985:34:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 806, + "nodeType": "IfStatement", + "src": "7981:146:2", + "trueBody": { + "id": 805, + "nodeType": "Block", + "src": "8021:106:2", + "statements": [ + { + "expression": { + "id": 795, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 787, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 768, + "src": "8035:1:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$597_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 789, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "8037:12:2", + "memberName": "_initialized", + "nodeType": "MemberAccess", + "referencedDeclaration": 593, + "src": "8035:14:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "arguments": [ + { + "id": 792, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8057:6:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + }, + "typeName": { + "id": 791, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "8057:6:2", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + } + ], + "id": 790, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "8052:4:2", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 793, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8052:12:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint64", + "typeString": "type(uint64)" + } + }, + "id": 794, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "8065:3:2", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "8052:16:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "8035:33:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "id": 796, + "nodeType": "ExpressionStatement", + "src": "8035:33:2" + }, + { + "eventCall": { + "arguments": [ + { + "expression": { + "arguments": [ + { + "id": 800, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8104:6:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + }, + "typeName": { + "id": 799, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "8104:6:2", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + } + ], + "id": 798, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "8099:4:2", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 801, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8099:12:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint64", + "typeString": "type(uint64)" + } + }, + "id": 802, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "8112:3:2", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "8099:16:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + ], + "id": 797, + "name": "Initialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 611, + "src": "8087:11:2", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint64_$returns$__$", + "typeString": "function (uint64)" + } + }, + "id": 803, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8087:29:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 804, + "nodeType": "EmitStatement", + "src": "8082:34:2" + } + ] + } + } + ] + }, + "documentation": { + "id": 763, + "nodeType": "StructuredDocumentation", + "src": "7231:475:2", + "text": " @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n through proxies.\n Emits an {Initialized} event the first time it is successfully executed." + }, + "id": 808, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_disableInitializers", + "nameLocation": "7720:20:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 764, + "nodeType": "ParameterList", + "parameters": [], + "src": "7740:2:2" + }, + "returnParameters": { + "id": 765, + "nodeType": "ParameterList", + "parameters": [], + "src": "7760:0:2" + }, + "scope": 840, + "src": "7711:422:2", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 818, + "nodeType": "Block", + "src": "8308:63:2", + "statements": [ + { + "expression": { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 814, + "name": "_getInitializableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 839, + "src": "8325:24:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$597_storage_ptr_$", + "typeString": "function () pure returns (struct Initializable.InitializableStorage storage pointer)" + } + }, + "id": 815, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8325:26:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$597_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 816, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8352:12:2", + "memberName": "_initialized", + "nodeType": "MemberAccess", + "referencedDeclaration": 593, + "src": "8325:39:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "functionReturnParameters": 813, + "id": 817, + "nodeType": "Return", + "src": "8318:46:2" + } + ] + }, + "documentation": { + "id": 809, + "nodeType": "StructuredDocumentation", + "src": "8139:99:2", + "text": " @dev Returns the highest version that has been initialized. See {reinitializer}." + }, + "id": 819, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getInitializedVersion", + "nameLocation": "8252:22:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 810, + "nodeType": "ParameterList", + "parameters": [], + "src": "8274:2:2" + }, + "returnParameters": { + "id": 813, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 812, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 819, + "src": "8300:6:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 811, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "8300:6:2", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + } + ], + "src": "8299:8:2" + }, + "scope": 840, + "src": "8243:128:2", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 829, + "nodeType": "Block", + "src": "8543:64:2", + "statements": [ + { + "expression": { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 825, + "name": "_getInitializableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 839, + "src": "8560:24:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_InitializableStorage_$597_storage_ptr_$", + "typeString": "function () pure returns (struct Initializable.InitializableStorage storage pointer)" + } + }, + "id": 826, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8560:26:2", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$597_storage_ptr", + "typeString": "struct Initializable.InitializableStorage storage pointer" + } + }, + "id": 827, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8587:13:2", + "memberName": "_initializing", + "nodeType": "MemberAccess", + "referencedDeclaration": 596, + "src": "8560:40:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 824, + "id": 828, + "nodeType": "Return", + "src": "8553:47:2" + } + ] + }, + "documentation": { + "id": 820, + "nodeType": "StructuredDocumentation", + "src": "8377:105:2", + "text": " @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}." + }, + "id": 830, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_isInitializing", + "nameLocation": "8496:15:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 821, + "nodeType": "ParameterList", + "parameters": [], + "src": "8511:2:2" + }, + "returnParameters": { + "id": 824, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 823, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 830, + "src": "8537:4:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 822, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8537:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "8536:6:2" + }, + "scope": 840, + "src": "8487:120:2", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 838, + "nodeType": "Block", + "src": "8827:80:2", + "statements": [ + { + "AST": { + "nativeSrc": "8846:55:2", + "nodeType": "YulBlock", + "src": "8846:55:2", + "statements": [ + { + "nativeSrc": "8860:31:2", + "nodeType": "YulAssignment", + "src": "8860:31:2", + "value": { + "name": "INITIALIZABLE_STORAGE", + "nativeSrc": "8870:21:2", + "nodeType": "YulIdentifier", + "src": "8870:21:2" + }, + "variableNames": [ + { + "name": "$.slot", + "nativeSrc": "8860:6:2", + "nodeType": "YulIdentifier", + "src": "8860:6:2" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 835, + "isOffset": false, + "isSlot": true, + "src": "8860:6:2", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 600, + "isOffset": false, + "isSlot": false, + "src": "8870:21:2", + "valueSize": 1 + } + ], + "id": 837, + "nodeType": "InlineAssembly", + "src": "8837:64:2" + } + ] + }, + "documentation": { + "id": 831, + "nodeType": "StructuredDocumentation", + "src": "8613:67:2", + "text": " @dev Returns a pointer to the storage namespace." + }, + "id": 839, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getInitializableStorage", + "nameLocation": "8746:24:2", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 832, + "nodeType": "ParameterList", + "parameters": [], + "src": "8770:2:2" + }, + "returnParameters": { + "id": 836, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 835, + "mutability": "mutable", + "name": "$", + "nameLocation": "8824:1:2", + "nodeType": "VariableDeclaration", + "scope": 839, + "src": "8795:30:2", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$597_storage_ptr", + "typeString": "struct Initializable.InitializableStorage" + }, + "typeName": { + "id": 834, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 833, + "name": "InitializableStorage", + "nameLocations": [ + "8795:20:2" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 597, + "src": "8795:20:2" + }, + "referencedDeclaration": 597, + "src": "8795:20:2", + "typeDescriptions": { + "typeIdentifier": "t_struct$_InitializableStorage_$597_storage_ptr", + "typeString": "struct Initializable.InitializableStorage" + } + }, + "visibility": "internal" + } + ], + "src": "8794:32:2" + }, + "scope": 840, + "src": "8737:170:2", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + } + ], + "scope": 841, + "src": "2349:6560:2", + "usedErrors": [ + 603, + 606 + ], + "usedEvents": [ + 611 + ] + } + ], + "src": "113:8797:2" + }, + "id": 2 + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", + "exportedSymbols": { + "ERC1967Utils": [ + 3874 + ], + "IERC1822Proxiable": [ + 3405 + ], + "Initializable": [ + 840 + ], + "UUPSUpgradeable": [ + 1022 + ] + }, + "id": 1023, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 842, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "115:24:3" + }, + { + "absolutePath": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol", + "file": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol", + "id": 844, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1023, + "sourceUnit": 3406, + "src": "141:88:3", + "symbolAliases": [ + { + "foreign": { + "id": 843, + "name": "IERC1822Proxiable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3405, + "src": "149:17:3", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol", + "file": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol", + "id": 846, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1023, + "sourceUnit": 3875, + "src": "230:84:3", + "symbolAliases": [ + { + "foreign": { + "id": 845, + "name": "ERC1967Utils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3874, + "src": "238:12:3", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "./Initializable.sol", + "id": 848, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1023, + "sourceUnit": 841, + "src": "315:50:3", + "symbolAliases": [ + { + "foreign": { + "id": 847, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 840, + "src": "323:13:3", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 850, + "name": "Initializable", + "nameLocations": [ + "1023:13:3" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 840, + "src": "1023:13:3" + }, + "id": 851, + "nodeType": "InheritanceSpecifier", + "src": "1023:13:3" + }, + { + "baseName": { + "id": 852, + "name": "IERC1822Proxiable", + "nameLocations": [ + "1038:17:3" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3405, + "src": "1038:17:3" + }, + "id": 853, + "nodeType": "InheritanceSpecifier", + "src": "1038:17:3" + } + ], + "canonicalName": "UUPSUpgradeable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 849, + "nodeType": "StructuredDocumentation", + "src": "367:618:3", + "text": " @dev An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an\n {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy.\n A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is\n reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing\n `UUPSUpgradeable` with a custom implementation of upgrades.\n The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism." + }, + "fullyImplemented": false, + "id": 1022, + "linearizedBaseContracts": [ + 1022, + 3405, + 840 + ], + "name": "UUPSUpgradeable", + "nameLocation": "1004:15:3", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "documentation": { + "id": 854, + "nodeType": "StructuredDocumentation", + "src": "1062:61:3", + "text": "@custom:oz-upgrades-unsafe-allow state-variable-immutable" + }, + "id": 860, + "mutability": "immutable", + "name": "__self", + "nameLocation": "1154:6:3", + "nodeType": "VariableDeclaration", + "scope": 1022, + "src": "1128:48:3", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 855, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1128:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": { + "arguments": [ + { + "id": 858, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "1171:4:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UUPSUpgradeable_$1022", + "typeString": "contract UUPSUpgradeable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_UUPSUpgradeable_$1022", + "typeString": "contract UUPSUpgradeable" + } + ], + "id": 857, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1163:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 856, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1163:7:3", + "typeDescriptions": {} + } + }, + "id": 859, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1163:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "private" + }, + { + "constant": true, + "documentation": { + "id": 861, + "nodeType": "StructuredDocumentation", + "src": "1183:631:3", + "text": " @dev The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)`\n and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called,\n while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string.\n If the getter returns `\"5.0.0\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must\n be the empty byte string if no function should be called, making it impossible to invoke the `receive` function\n during an upgrade." + }, + "functionSelector": "ad3cb1cc", + "id": 864, + "mutability": "constant", + "name": "UPGRADE_INTERFACE_VERSION", + "nameLocation": "1842:25:3", + "nodeType": "VariableDeclaration", + "scope": 1022, + "src": "1819:58:3", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 862, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1819:6:3", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "hexValue": "352e302e30", + "id": 863, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1870:7:3", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2ade050ecfcf8ae20ae1d10a23573f9d7e0bad85e74a2cf8338a65401e64558c", + "typeString": "literal_string \"5.0.0\"" + }, + "value": "5.0.0" + }, + "visibility": "public" + }, + { + "documentation": { + "id": 865, + "nodeType": "StructuredDocumentation", + "src": "1884:65:3", + "text": " @dev The call is from an unauthorized context." + }, + "errorSelector": "e07c8dba", + "id": 867, + "name": "UUPSUnauthorizedCallContext", + "nameLocation": "1960:27:3", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 866, + "nodeType": "ParameterList", + "parameters": [], + "src": "1987:2:3" + }, + "src": "1954:36:3" + }, + { + "documentation": { + "id": 868, + "nodeType": "StructuredDocumentation", + "src": "1996:68:3", + "text": " @dev The storage `slot` is unsupported as a UUID." + }, + "errorSelector": "aa1d49a4", + "id": 872, + "name": "UUPSUnsupportedProxiableUUID", + "nameLocation": "2075:28:3", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 871, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 870, + "mutability": "mutable", + "name": "slot", + "nameLocation": "2112:4:3", + "nodeType": "VariableDeclaration", + "scope": 872, + "src": "2104:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 869, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2104:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2103:14:3" + }, + "src": "2069:49:3" + }, + { + "body": { + "id": 879, + "nodeType": "Block", + "src": "2645:41:3", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 875, + "name": "_checkProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 954, + "src": "2655:11:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$__$", + "typeString": "function () view" + } + }, + "id": 876, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2655:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 877, + "nodeType": "ExpressionStatement", + "src": "2655:13:3" + }, + { + "id": 878, + "nodeType": "PlaceholderStatement", + "src": "2678:1:3" + } + ] + }, + "documentation": { + "id": 873, + "nodeType": "StructuredDocumentation", + "src": "2124:495:3", + "text": " @dev Check that the execution is being performed through a delegatecall call and that the execution context is\n a proxy contract with an implementation (as defined in ERC-1967) pointing to self. This should only be the case\n for UUPS and transparent proxies that are using the current contract as their implementation. Execution of a\n function through ERC-1167 minimal proxies (clones) would not normally pass this test, but is not guaranteed to\n fail." + }, + "id": 880, + "name": "onlyProxy", + "nameLocation": "2633:9:3", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 874, + "nodeType": "ParameterList", + "parameters": [], + "src": "2642:2:3" + }, + "src": "2624:62:3", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 887, + "nodeType": "Block", + "src": "2916:48:3", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 883, + "name": "_checkNotDelegated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 970, + "src": "2926:18:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$__$", + "typeString": "function () view" + } + }, + "id": 884, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2926:20:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 885, + "nodeType": "ExpressionStatement", + "src": "2926:20:3" + }, + { + "id": 886, + "nodeType": "PlaceholderStatement", + "src": "2956:1:3" + } + ] + }, + "documentation": { + "id": 881, + "nodeType": "StructuredDocumentation", + "src": "2692:195:3", + "text": " @dev Check that the execution is not being performed through a delegate call. This allows a function to be\n callable on the implementing contract but not through proxies." + }, + "id": 888, + "name": "notDelegated", + "nameLocation": "2901:12:3", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 882, + "nodeType": "ParameterList", + "parameters": [], + "src": "2913:2:3" + }, + "src": "2892:72:3", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 893, + "nodeType": "Block", + "src": "3030:7:3", + "statements": [] + }, + "id": 894, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 891, + "kind": "modifierInvocation", + "modifierName": { + "id": 890, + "name": "onlyInitializing", + "nameLocations": [ + "3013:16:3" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 749, + "src": "3013:16:3" + }, + "nodeType": "ModifierInvocation", + "src": "3013:16:3" + } + ], + "name": "__UUPSUpgradeable_init", + "nameLocation": "2979:22:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 889, + "nodeType": "ParameterList", + "parameters": [], + "src": "3001:2:3" + }, + "returnParameters": { + "id": 892, + "nodeType": "ParameterList", + "parameters": [], + "src": "3030:0:3" + }, + "scope": 1022, + "src": "2970:67:3", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 899, + "nodeType": "Block", + "src": "3113:7:3", + "statements": [] + }, + "id": 900, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 897, + "kind": "modifierInvocation", + "modifierName": { + "id": 896, + "name": "onlyInitializing", + "nameLocations": [ + "3096:16:3" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 749, + "src": "3096:16:3" + }, + "nodeType": "ModifierInvocation", + "src": "3096:16:3" + } + ], + "name": "__UUPSUpgradeable_init_unchained", + "nameLocation": "3052:32:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 895, + "nodeType": "ParameterList", + "parameters": [], + "src": "3084:2:3" + }, + "returnParameters": { + "id": 898, + "nodeType": "ParameterList", + "parameters": [], + "src": "3113:0:3" + }, + "scope": 1022, + "src": "3043:77:3", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 3404 + ], + "body": { + "id": 911, + "nodeType": "Block", + "src": "3786:56:3", + "statements": [ + { + "expression": { + "expression": { + "id": 908, + "name": "ERC1967Utils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3874, + "src": "3803:12:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC1967Utils_$3874_$", + "typeString": "type(library ERC1967Utils)" + } + }, + "id": 909, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "3816:19:3", + "memberName": "IMPLEMENTATION_SLOT", + "nodeType": "MemberAccess", + "referencedDeclaration": 3595, + "src": "3803:32:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 907, + "id": 910, + "nodeType": "Return", + "src": "3796:39:3" + } + ] + }, + "documentation": { + "id": 901, + "nodeType": "StructuredDocumentation", + "src": "3125:578:3", + "text": " @dev Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the\n implementation. It is used to validate the implementation's compatibility when performing an upgrade.\n IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier." + }, + "functionSelector": "52d1902d", + "id": 912, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 904, + "kind": "modifierInvocation", + "modifierName": { + "id": 903, + "name": "notDelegated", + "nameLocations": [ + "3755:12:3" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 888, + "src": "3755:12:3" + }, + "nodeType": "ModifierInvocation", + "src": "3755:12:3" + } + ], + "name": "proxiableUUID", + "nameLocation": "3717:13:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 902, + "nodeType": "ParameterList", + "parameters": [], + "src": "3730:2:3" + }, + "returnParameters": { + "id": 907, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 906, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 912, + "src": "3777:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 905, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3777:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3776:9:3" + }, + "scope": 1022, + "src": "3708:134:3", + "stateMutability": "view", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 931, + "nodeType": "Block", + "src": "4266:109:3", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 923, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 915, + "src": "4294:17:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 922, + "name": "_authorizeUpgrade", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 976, + "src": "4276:17:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 924, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4276:36:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 925, + "nodeType": "ExpressionStatement", + "src": "4276:36:3" + }, + { + "expression": { + "arguments": [ + { + "id": 927, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 915, + "src": "4344:17:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 928, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 917, + "src": "4363:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 926, + "name": "_upgradeToAndCallUUPS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1021, + "src": "4322:21:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,bytes memory)" + } + }, + "id": 929, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4322:46:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 930, + "nodeType": "ExpressionStatement", + "src": "4322:46:3" + } + ] + }, + "documentation": { + "id": 913, + "nodeType": "StructuredDocumentation", + "src": "3848:308:3", + "text": " @dev Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call\n encoded in `data`.\n Calls {_authorizeUpgrade}.\n Emits an {Upgraded} event.\n @custom:oz-upgrades-unsafe-allow-reachable delegatecall" + }, + "functionSelector": "4f1ef286", + "id": 932, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 920, + "kind": "modifierInvocation", + "modifierName": { + "id": 919, + "name": "onlyProxy", + "nameLocations": [ + "4256:9:3" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 880, + "src": "4256:9:3" + }, + "nodeType": "ModifierInvocation", + "src": "4256:9:3" + } + ], + "name": "upgradeToAndCall", + "nameLocation": "4170:16:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 918, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 915, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "4195:17:3", + "nodeType": "VariableDeclaration", + "scope": 932, + "src": "4187:25:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 914, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4187:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 917, + "mutability": "mutable", + "name": "data", + "nameLocation": "4227:4:3", + "nodeType": "VariableDeclaration", + "scope": 932, + "src": "4214:17:3", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 916, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4214:5:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4186:46:3" + }, + "returnParameters": { + "id": 921, + "nodeType": "ParameterList", + "parameters": [], + "src": "4266:0:3" + }, + "scope": 1022, + "src": "4161:214:3", + "stateMutability": "payable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 953, + "nodeType": "Block", + "src": "4648:267:3", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 947, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 941, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 938, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "4683:4:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UUPSUpgradeable_$1022", + "typeString": "contract UUPSUpgradeable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_UUPSUpgradeable_$1022", + "typeString": "contract UUPSUpgradeable" + } + ], + "id": 937, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4675:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 936, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4675:7:3", + "typeDescriptions": {} + } + }, + "id": 939, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4675:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 940, + "name": "__self", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 860, + "src": "4692:6:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4675:23:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 946, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 942, + "name": "ERC1967Utils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3874, + "src": "4753:12:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC1967Utils_$3874_$", + "typeString": "type(library ERC1967Utils)" + } + }, + "id": 943, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4766:17:3", + "memberName": "getImplementation", + "nodeType": "MemberAccess", + "referencedDeclaration": 3626, + "src": "4753:30:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 944, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4753:32:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 945, + "name": "__self", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 860, + "src": "4789:6:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4753:42:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4675:120:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 952, + "nodeType": "IfStatement", + "src": "4658:251:3", + "trueBody": { + "id": 951, + "nodeType": "Block", + "src": "4848:61:3", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 948, + "name": "UUPSUnauthorizedCallContext", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 867, + "src": "4869:27:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 949, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4869:29:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 950, + "nodeType": "RevertStatement", + "src": "4862:36:3" + } + ] + } + } + ] + }, + "documentation": { + "id": 933, + "nodeType": "StructuredDocumentation", + "src": "4381:217:3", + "text": " @dev Reverts if the execution is not performed via delegatecall or the execution\n context is not of a proxy with an ERC-1967 compliant implementation pointing to self.\n See {_onlyProxy}." + }, + "id": 954, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkProxy", + "nameLocation": "4612:11:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 934, + "nodeType": "ParameterList", + "parameters": [], + "src": "4623:2:3" + }, + "returnParameters": { + "id": 935, + "nodeType": "ParameterList", + "parameters": [], + "src": "4648:0:3" + }, + "scope": 1022, + "src": "4603:312:3", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 969, + "nodeType": "Block", + "src": "5084:161:3", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 963, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 960, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "5106:4:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_UUPSUpgradeable_$1022", + "typeString": "contract UUPSUpgradeable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_UUPSUpgradeable_$1022", + "typeString": "contract UUPSUpgradeable" + } + ], + "id": 959, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5098:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 958, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5098:7:3", + "typeDescriptions": {} + } + }, + "id": 961, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5098:13:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 962, + "name": "__self", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 860, + "src": "5115:6:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5098:23:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 968, + "nodeType": "IfStatement", + "src": "5094:145:3", + "trueBody": { + "id": 967, + "nodeType": "Block", + "src": "5123:116:3", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 964, + "name": "UUPSUnauthorizedCallContext", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 867, + "src": "5199:27:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 965, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5199:29:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 966, + "nodeType": "RevertStatement", + "src": "5192:36:3" + } + ] + } + } + ] + }, + "documentation": { + "id": 955, + "nodeType": "StructuredDocumentation", + "src": "4921:106:3", + "text": " @dev Reverts if the execution is performed via delegatecall.\n See {notDelegated}." + }, + "id": 970, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkNotDelegated", + "nameLocation": "5041:18:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 956, + "nodeType": "ParameterList", + "parameters": [], + "src": "5059:2:3" + }, + "returnParameters": { + "id": 957, + "nodeType": "ParameterList", + "parameters": [], + "src": "5084:0:3" + }, + "scope": 1022, + "src": "5032:213:3", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "documentation": { + "id": 971, + "nodeType": "StructuredDocumentation", + "src": "5251:372:3", + "text": " @dev Function that should revert when `msg.sender` is not authorized to upgrade the contract. Called by\n {upgradeToAndCall}.\n Normally, this function will use an xref:access.adoc[access control] modifier such as {Ownable-onlyOwner}.\n ```solidity\n function _authorizeUpgrade(address) internal onlyOwner {}\n ```" + }, + "id": 976, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "_authorizeUpgrade", + "nameLocation": "5637:17:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 974, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 973, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "5663:17:3", + "nodeType": "VariableDeclaration", + "scope": 976, + "src": "5655:25:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 972, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5655:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5654:27:3" + }, + "returnParameters": { + "id": 975, + "nodeType": "ParameterList", + "parameters": [], + "src": "5698:0:3" + }, + "scope": 1022, + "src": "5628:71:3", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 1020, + "nodeType": "Block", + "src": "6142:453:3", + "statements": [ + { + "clauses": [ + { + "block": { + "id": 1009, + "nodeType": "Block", + "src": "6232:212:3", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 995, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 992, + "name": "slot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 990, + "src": "6250:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "id": 993, + "name": "ERC1967Utils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3874, + "src": "6258:12:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC1967Utils_$3874_$", + "typeString": "type(library ERC1967Utils)" + } + }, + "id": 994, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6271:19:3", + "memberName": "IMPLEMENTATION_SLOT", + "nodeType": "MemberAccess", + "referencedDeclaration": 3595, + "src": "6258:32:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "6250:40:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1001, + "nodeType": "IfStatement", + "src": "6246:120:3", + "trueBody": { + "id": 1000, + "nodeType": "Block", + "src": "6292:74:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 997, + "name": "slot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 990, + "src": "6346:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 996, + "name": "UUPSUnsupportedProxiableUUID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 872, + "src": "6317:28:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$", + "typeString": "function (bytes32) pure" + } + }, + "id": 998, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6317:34:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 999, + "nodeType": "RevertStatement", + "src": "6310:41:3" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 1005, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 979, + "src": "6409:17:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1006, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 981, + "src": "6428:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 1002, + "name": "ERC1967Utils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3874, + "src": "6379:12:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC1967Utils_$3874_$", + "typeString": "type(library ERC1967Utils)" + } + }, + "id": 1004, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6392:16:3", + "memberName": "upgradeToAndCall", + "nodeType": "MemberAccess", + "referencedDeclaration": 3689, + "src": "6379:29:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,bytes memory)" + } + }, + "id": 1007, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6379:54:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1008, + "nodeType": "ExpressionStatement", + "src": "6379:54:3" + } + ] + }, + "errorName": "", + "id": 1010, + "nodeType": "TryCatchClause", + "parameters": { + "id": 991, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 990, + "mutability": "mutable", + "name": "slot", + "nameLocation": "6226:4:3", + "nodeType": "VariableDeclaration", + "scope": 1010, + "src": "6218:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 989, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6218:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "6217:14:3" + }, + "src": "6209:235:3" + }, + { + "block": { + "id": 1017, + "nodeType": "Block", + "src": "6451:138:3", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 1014, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 979, + "src": "6560:17:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 1011, + "name": "ERC1967Utils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3874, + "src": "6518:12:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC1967Utils_$3874_$", + "typeString": "type(library ERC1967Utils)" + } + }, + "id": 1013, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6531:28:3", + "memberName": "ERC1967InvalidImplementation", + "nodeType": "MemberAccess", + "referencedDeclaration": 3600, + "src": "6518:41:3", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 1015, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6518:60:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1016, + "nodeType": "RevertStatement", + "src": "6511:67:3" + } + ] + }, + "errorName": "", + "id": 1018, + "nodeType": "TryCatchClause", + "src": "6445:144:3" + } + ], + "externalCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "id": 985, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 979, + "src": "6174:17:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 984, + "name": "IERC1822Proxiable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3405, + "src": "6156:17:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC1822Proxiable_$3405_$", + "typeString": "type(contract IERC1822Proxiable)" + } + }, + "id": 986, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6156:36:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1822Proxiable_$3405", + "typeString": "contract IERC1822Proxiable" + } + }, + "id": 987, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6193:13:3", + "memberName": "proxiableUUID", + "nodeType": "MemberAccess", + "referencedDeclaration": 3404, + "src": "6156:50:3", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$", + "typeString": "function () view external returns (bytes32)" + } + }, + "id": 988, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6156:52:3", + "tryCall": true, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 1019, + "nodeType": "TryStatement", + "src": "6152:437:3" + } + ] + }, + "documentation": { + "id": 977, + "nodeType": "StructuredDocumentation", + "src": "5705:347:3", + "text": " @dev Performs an implementation upgrade with a security check for UUPS proxies, and additional setup call.\n As a security check, {proxiableUUID} is invoked in the new implementation, and the return value\n is expected to be the implementation slot in ERC-1967.\n Emits an {IERC1967-Upgraded} event." + }, + "id": 1021, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_upgradeToAndCallUUPS", + "nameLocation": "6066:21:3", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 982, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 979, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "6096:17:3", + "nodeType": "VariableDeclaration", + "scope": 1021, + "src": "6088:25:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 978, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6088:7:3", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 981, + "mutability": "mutable", + "name": "data", + "nameLocation": "6128:4:3", + "nodeType": "VariableDeclaration", + "scope": 1021, + "src": "6115:17:3", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 980, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6115:5:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "6087:46:3" + }, + "returnParameters": { + "id": 983, + "nodeType": "ParameterList", + "parameters": [], + "src": "6142:0:3" + }, + "scope": 1022, + "src": "6057:538:3", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + } + ], + "scope": 1023, + "src": "986:5611:3", + "usedErrors": [ + 603, + 606, + 867, + 872, + 3600, + 3613, + 5232, + 5524 + ], + "usedEvents": [ + 611, + 3350 + ] + } + ], + "src": "115:6483:3" + }, + "id": 3 + }, + "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol", + "exportedSymbols": { + "ContextUpgradeable": [ + 2802 + ], + "ERC165Upgradeable": [ + 3147 + ], + "ERC721Upgradeable": [ + 2102 + ], + "ERC721Utils": [ + 5222 + ], + "IERC165": [ + 6389 + ], + "IERC721": [ + 5067 + ], + "IERC721Errors": [ + 3495 + ], + "IERC721Metadata": [ + 5145 + ], + "Initializable": [ + 840 + ], + "Strings": [ + 6029 + ] + }, + "id": 2103, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1024, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "107:24:4" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721.sol", + "file": "@openzeppelin/contracts/token/ERC721/IERC721.sol", + "id": 1026, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2103, + "sourceUnit": 5068, + "src": "133:73:4", + "symbolAliases": [ + { + "foreign": { + "id": 1025, + "name": "IERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5067, + "src": "141:7:4", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol", + "file": "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol", + "id": 1028, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2103, + "sourceUnit": 5146, + "src": "207:100:4", + "symbolAliases": [ + { + "foreign": { + "id": 1027, + "name": "IERC721Metadata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5145, + "src": "215:15:4", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol", + "file": "@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol", + "id": 1030, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2103, + "sourceUnit": 5223, + "src": "308:87:4", + "symbolAliases": [ + { + "foreign": { + "id": 1029, + "name": "ERC721Utils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5222, + "src": "316:11:4", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "file": "../../utils/ContextUpgradeable.sol", + "id": 1032, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2103, + "sourceUnit": 2803, + "src": "396:70:4", + "symbolAliases": [ + { + "foreign": { + "id": 1031, + "name": "ContextUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2802, + "src": "404:18:4", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/Strings.sol", + "file": "@openzeppelin/contracts/utils/Strings.sol", + "id": 1034, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2103, + "sourceUnit": 6030, + "src": "467:66:4", + "symbolAliases": [ + { + "foreign": { + "id": 1033, + "name": "Strings", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6029, + "src": "475:7:4", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol", + "file": "@openzeppelin/contracts/utils/introspection/IERC165.sol", + "id": 1036, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2103, + "sourceUnit": 6390, + "src": "534:80:4", + "symbolAliases": [ + { + "foreign": { + "id": 1035, + "name": "IERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6389, + "src": "542:7:4", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol", + "file": "../../utils/introspection/ERC165Upgradeable.sol", + "id": 1038, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2103, + "sourceUnit": 3148, + "src": "615:82:4", + "symbolAliases": [ + { + "foreign": { + "id": 1037, + "name": "ERC165Upgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3147, + "src": "623:17:4", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol", + "file": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol", + "id": 1040, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2103, + "sourceUnit": 3543, + "src": "698:84:4", + "symbolAliases": [ + { + "foreign": { + "id": 1039, + "name": "IERC721Errors", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3495, + "src": "706:13:4", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "../../proxy/utils/Initializable.sol", + "id": 1042, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2103, + "sourceUnit": 841, + "src": "783:66:4", + "symbolAliases": [ + { + "foreign": { + "id": 1041, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 840, + "src": "791:13:4", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 1044, + "name": "Initializable", + "nameLocations": [ + "1138:13:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 840, + "src": "1138:13:4" + }, + "id": 1045, + "nodeType": "InheritanceSpecifier", + "src": "1138:13:4" + }, + { + "baseName": { + "id": 1046, + "name": "ContextUpgradeable", + "nameLocations": [ + "1153:18:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2802, + "src": "1153:18:4" + }, + "id": 1047, + "nodeType": "InheritanceSpecifier", + "src": "1153:18:4" + }, + { + "baseName": { + "id": 1048, + "name": "ERC165Upgradeable", + "nameLocations": [ + "1173:17:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3147, + "src": "1173:17:4" + }, + "id": 1049, + "nodeType": "InheritanceSpecifier", + "src": "1173:17:4" + }, + { + "baseName": { + "id": 1050, + "name": "IERC721", + "nameLocations": [ + "1192:7:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5067, + "src": "1192:7:4" + }, + "id": 1051, + "nodeType": "InheritanceSpecifier", + "src": "1192:7:4" + }, + { + "baseName": { + "id": 1052, + "name": "IERC721Metadata", + "nameLocations": [ + "1201:15:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5145, + "src": "1201:15:4" + }, + "id": 1053, + "nodeType": "InheritanceSpecifier", + "src": "1201:15:4" + }, + { + "baseName": { + "id": 1054, + "name": "IERC721Errors", + "nameLocations": [ + "1218:13:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3495, + "src": "1218:13:4" + }, + "id": 1055, + "nodeType": "InheritanceSpecifier", + "src": "1218:13:4" + } + ], + "canonicalName": "ERC721Upgradeable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 1043, + "nodeType": "StructuredDocumentation", + "src": "851:247:4", + "text": " @dev Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC-721] Non-Fungible Token Standard, including\n the Metadata extension, but not including the Enumerable extension, which is available separately as\n {ERC721Enumerable}." + }, + "fullyImplemented": true, + "id": 2102, + "linearizedBaseContracts": [ + 2102, + 3495, + 5145, + 5067, + 3147, + 6389, + 2802, + 840 + ], + "name": "ERC721Upgradeable", + "nameLocation": "1117:17:4", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 1058, + "libraryName": { + "id": 1056, + "name": "Strings", + "nameLocations": [ + "1244:7:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6029, + "src": "1244:7:4" + }, + "nodeType": "UsingForDirective", + "src": "1238:26:4", + "typeName": { + "id": 1057, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1256:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "canonicalName": "ERC721Upgradeable.ERC721Storage", + "documentation": { + "id": 1059, + "nodeType": "StructuredDocumentation", + "src": "1270:64:4", + "text": "@custom:storage-location erc7201:openzeppelin.storage.ERC721" + }, + "id": 1082, + "members": [ + { + "constant": false, + "id": 1061, + "mutability": "mutable", + "name": "_name", + "nameLocation": "1399:5:4", + "nodeType": "VariableDeclaration", + "scope": 1082, + "src": "1392:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1060, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1392:6:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1063, + "mutability": "mutable", + "name": "_symbol", + "nameLocation": "1446:7:4", + "nodeType": "VariableDeclaration", + "scope": 1082, + "src": "1439:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1062, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1439:6:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1067, + "mutability": "mutable", + "name": "_owners", + "nameLocation": "1500:7:4", + "nodeType": "VariableDeclaration", + "scope": 1082, + "src": "1464:43:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + }, + "typeName": { + "id": 1066, + "keyName": "tokenId", + "keyNameLocation": "1480:7:4", + "keyType": { + "id": 1064, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1472:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "1464:35:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 1065, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1491:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1071, + "mutability": "mutable", + "name": "_balances", + "nameLocation": "1552:9:4", + "nodeType": "VariableDeclaration", + "scope": 1082, + "src": "1518:43:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 1070, + "keyName": "owner", + "keyNameLocation": "1534:5:4", + "keyType": { + "id": 1068, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1526:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1518:33:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 1069, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1543:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1075, + "mutability": "mutable", + "name": "_tokenApprovals", + "nameLocation": "1608:15:4", + "nodeType": "VariableDeclaration", + "scope": 1082, + "src": "1572:51:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + }, + "typeName": { + "id": 1074, + "keyName": "tokenId", + "keyNameLocation": "1588:7:4", + "keyType": { + "id": 1072, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1580:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "1572:35:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 1073, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1599:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1081, + "mutability": "mutable", + "name": "_operatorApprovals", + "nameLocation": "1694:18:4", + "nodeType": "VariableDeclaration", + "scope": 1082, + "src": "1634:78:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + }, + "typeName": { + "id": 1080, + "keyName": "owner", + "keyNameLocation": "1650:5:4", + "keyType": { + "id": 1076, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1642:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1634:59:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 1079, + "keyName": "operator", + "keyNameLocation": "1675:8:4", + "keyType": { + "id": 1077, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1667:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1659:33:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 1078, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1687:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + }, + "visibility": "internal" + } + ], + "name": "ERC721Storage", + "nameLocation": "1346:13:4", + "nodeType": "StructDefinition", + "scope": 2102, + "src": "1339:380:4", + "visibility": "public" + }, + { + "constant": true, + "id": 1085, + "mutability": "constant", + "name": "ERC721StorageLocation", + "nameLocation": "1860:21:4", + "nodeType": "VariableDeclaration", + "scope": 2102, + "src": "1835:115:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1083, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1835:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307838306262326236333863633230626334643061363064363639343066336162346130306331643762333133343937636138326662306234616230303739333030", + "id": 1084, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1884:66:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_58226744478722834339948329933988999792353370511964151963072532422914231210752_by_1", + "typeString": "int_const 5822...(69 digits omitted)...0752" + }, + "value": "0x80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab0079300" + }, + "visibility": "private" + }, + { + "body": { + "id": 1092, + "nodeType": "Block", + "src": "2033:80:4", + "statements": [ + { + "AST": { + "nativeSrc": "2052:55:4", + "nodeType": "YulBlock", + "src": "2052:55:4", + "statements": [ + { + "nativeSrc": "2066:31:4", + "nodeType": "YulAssignment", + "src": "2066:31:4", + "value": { + "name": "ERC721StorageLocation", + "nativeSrc": "2076:21:4", + "nodeType": "YulIdentifier", + "src": "2076:21:4" + }, + "variableNames": [ + { + "name": "$.slot", + "nativeSrc": "2066:6:4", + "nodeType": "YulIdentifier", + "src": "2066:6:4" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 1089, + "isOffset": false, + "isSlot": true, + "src": "2066:6:4", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 1085, + "isOffset": false, + "isSlot": false, + "src": "2076:21:4", + "valueSize": 1 + } + ], + "id": 1091, + "nodeType": "InlineAssembly", + "src": "2043:64:4" + } + ] + }, + "id": 1093, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getERC721Storage", + "nameLocation": "1966:17:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1086, + "nodeType": "ParameterList", + "parameters": [], + "src": "1983:2:4" + }, + "returnParameters": { + "id": 1090, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1089, + "mutability": "mutable", + "name": "$", + "nameLocation": "2030:1:4", + "nodeType": "VariableDeclaration", + "scope": 1093, + "src": "2008:23:4", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + }, + "typeName": { + "id": 1088, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1087, + "name": "ERC721Storage", + "nameLocations": [ + "2008:13:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1082, + "src": "2008:13:4" + }, + "referencedDeclaration": 1082, + "src": "2008:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + } + }, + "visibility": "internal" + } + ], + "src": "2007:25:4" + }, + "scope": 2102, + "src": "1957:156:4", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 1108, + "nodeType": "Block", + "src": "2325:56:4", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1104, + "name": "name_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1096, + "src": "2359:5:4", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "id": 1105, + "name": "symbol_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1098, + "src": "2366:7:4", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 1103, + "name": "__ERC721_init_unchained", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1137, + "src": "2335:23:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory,string memory)" + } + }, + "id": 1106, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2335:39:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1107, + "nodeType": "ExpressionStatement", + "src": "2335:39:4" + } + ] + }, + "documentation": { + "id": 1094, + "nodeType": "StructuredDocumentation", + "src": "2119:108:4", + "text": " @dev Initializes the contract by setting a `name` and a `symbol` to the token collection." + }, + "id": 1109, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1101, + "kind": "modifierInvocation", + "modifierName": { + "id": 1100, + "name": "onlyInitializing", + "nameLocations": [ + "2308:16:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 749, + "src": "2308:16:4" + }, + "nodeType": "ModifierInvocation", + "src": "2308:16:4" + } + ], + "name": "__ERC721_init", + "nameLocation": "2241:13:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1099, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1096, + "mutability": "mutable", + "name": "name_", + "nameLocation": "2269:5:4", + "nodeType": "VariableDeclaration", + "scope": 1109, + "src": "2255:19:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1095, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2255:6:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1098, + "mutability": "mutable", + "name": "symbol_", + "nameLocation": "2290:7:4", + "nodeType": "VariableDeclaration", + "scope": 1109, + "src": "2276:21:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1097, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2276:6:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "2254:44:4" + }, + "returnParameters": { + "id": 1102, + "nodeType": "ParameterList", + "parameters": [], + "src": "2325:0:4" + }, + "scope": 2102, + "src": "2232:149:4", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1136, + "nodeType": "Block", + "src": "2490:116:4", + "statements": [ + { + "assignments": [ + 1120 + ], + "declarations": [ + { + "constant": false, + "id": 1120, + "mutability": "mutable", + "name": "$", + "nameLocation": "2522:1:4", + "nodeType": "VariableDeclaration", + "scope": 1136, + "src": "2500:23:4", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + }, + "typeName": { + "id": 1119, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1118, + "name": "ERC721Storage", + "nameLocations": [ + "2500:13:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1082, + "src": "2500:13:4" + }, + "referencedDeclaration": 1082, + "src": "2500:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + } + }, + "visibility": "internal" + } + ], + "id": 1123, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1121, + "name": "_getERC721Storage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1093, + "src": "2526:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ERC721Storage_$1082_storage_ptr_$", + "typeString": "function () pure returns (struct ERC721Upgradeable.ERC721Storage storage pointer)" + } + }, + "id": 1122, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2526:19:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2500:45:4" + }, + { + "expression": { + "id": 1128, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 1124, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1120, + "src": "2555:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "id": 1126, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "2557:5:4", + "memberName": "_name", + "nodeType": "MemberAccess", + "referencedDeclaration": 1061, + "src": "2555:7:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1127, + "name": "name_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1111, + "src": "2565:5:4", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "2555:15:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 1129, + "nodeType": "ExpressionStatement", + "src": "2555:15:4" + }, + { + "expression": { + "id": 1134, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 1130, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1120, + "src": "2580:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "id": 1132, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "2582:7:4", + "memberName": "_symbol", + "nodeType": "MemberAccess", + "referencedDeclaration": 1063, + "src": "2580:9:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1133, + "name": "symbol_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1113, + "src": "2592:7:4", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "2580:19:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 1135, + "nodeType": "ExpressionStatement", + "src": "2580:19:4" + } + ] + }, + "id": 1137, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 1116, + "kind": "modifierInvocation", + "modifierName": { + "id": 1115, + "name": "onlyInitializing", + "nameLocations": [ + "2473:16:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 749, + "src": "2473:16:4" + }, + "nodeType": "ModifierInvocation", + "src": "2473:16:4" + } + ], + "name": "__ERC721_init_unchained", + "nameLocation": "2396:23:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1114, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1111, + "mutability": "mutable", + "name": "name_", + "nameLocation": "2434:5:4", + "nodeType": "VariableDeclaration", + "scope": 1137, + "src": "2420:19:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1110, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2420:6:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1113, + "mutability": "mutable", + "name": "symbol_", + "nameLocation": "2455:7:4", + "nodeType": "VariableDeclaration", + "scope": 1137, + "src": "2441:21:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1112, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2441:6:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "2419:44:4" + }, + "returnParameters": { + "id": 1117, + "nodeType": "ParameterList", + "parameters": [], + "src": "2490:0:4" + }, + "scope": 2102, + "src": "2387:219:4", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 3146, + 6388 + ], + "body": { + "id": 1167, + "nodeType": "Block", + "src": "2792:192:4", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 1153, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1148, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1140, + "src": "2821:11:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 1150, + "name": "IERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5067, + "src": "2841:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC721_$5067_$", + "typeString": "type(contract IERC721)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_contract$_IERC721_$5067_$", + "typeString": "type(contract IERC721)" + } + ], + "id": 1149, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "2836:4:4", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 1151, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2836:13:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721_$5067", + "typeString": "type(contract IERC721)" + } + }, + "id": 1152, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2850:11:4", + "memberName": "interfaceId", + "nodeType": "MemberAccess", + "src": "2836:25:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "2821:40:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 1159, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1154, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1140, + "src": "2877:11:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 1156, + "name": "IERC721Metadata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5145, + "src": "2897:15:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$5145_$", + "typeString": "type(contract IERC721Metadata)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_contract$_IERC721Metadata_$5145_$", + "typeString": "type(contract IERC721Metadata)" + } + ], + "id": 1155, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "2892:4:4", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 1157, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2892:21:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721Metadata_$5145", + "typeString": "type(contract IERC721Metadata)" + } + }, + "id": 1158, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2914:11:4", + "memberName": "interfaceId", + "nodeType": "MemberAccess", + "src": "2892:33:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "2877:48:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2821:104:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "arguments": [ + { + "id": 1163, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1140, + "src": "2965:11:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "expression": { + "id": 1161, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "2941:5:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_ERC721Upgradeable_$2102_$", + "typeString": "type(contract super ERC721Upgradeable)" + } + }, + "id": 1162, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2947:17:4", + "memberName": "supportsInterface", + "nodeType": "MemberAccess", + "referencedDeclaration": 3146, + "src": "2941:23:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$", + "typeString": "function (bytes4) view returns (bool)" + } + }, + "id": 1164, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2941:36:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2821:156:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1147, + "id": 1166, + "nodeType": "Return", + "src": "2802:175:4" + } + ] + }, + "documentation": { + "id": 1138, + "nodeType": "StructuredDocumentation", + "src": "2612:56:4", + "text": " @dev See {IERC165-supportsInterface}." + }, + "functionSelector": "01ffc9a7", + "id": 1168, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nameLocation": "2682:17:4", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 1144, + "nodeType": "OverrideSpecifier", + "overrides": [ + { + "id": 1142, + "name": "ERC165Upgradeable", + "nameLocations": [ + "2749:17:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3147, + "src": "2749:17:4" + }, + { + "id": 1143, + "name": "IERC165", + "nameLocations": [ + "2768:7:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6389, + "src": "2768:7:4" + } + ], + "src": "2740:36:4" + }, + "parameters": { + "id": 1141, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1140, + "mutability": "mutable", + "name": "interfaceId", + "nameLocation": "2707:11:4", + "nodeType": "VariableDeclaration", + "scope": 1168, + "src": "2700:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 1139, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "2700:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "2699:20:4" + }, + "returnParameters": { + "id": 1147, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1146, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1168, + "src": "2786:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1145, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2786:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2785:6:4" + }, + "scope": 2102, + "src": "2673:311:4", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 4992 + ], + "body": { + "id": 1202, + "nodeType": "Block", + "src": "3115:193:4", + "statements": [ + { + "assignments": [ + 1178 + ], + "declarations": [ + { + "constant": false, + "id": 1178, + "mutability": "mutable", + "name": "$", + "nameLocation": "3147:1:4", + "nodeType": "VariableDeclaration", + "scope": 1202, + "src": "3125:23:4", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + }, + "typeName": { + "id": 1177, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1176, + "name": "ERC721Storage", + "nameLocations": [ + "3125:13:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1082, + "src": "3125:13:4" + }, + "referencedDeclaration": 1082, + "src": "3125:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + } + }, + "visibility": "internal" + } + ], + "id": 1181, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1179, + "name": "_getERC721Storage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1093, + "src": "3151:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ERC721Storage_$1082_storage_ptr_$", + "typeString": "function () pure returns (struct ERC721Upgradeable.ERC721Storage storage pointer)" + } + }, + "id": 1180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3151:19:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3125:45:4" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1182, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1171, + "src": "3184:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1185, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3201:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1184, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3193:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1183, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3193:7:4", + "typeDescriptions": {} + } + }, + "id": 1186, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3193:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3184:19:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1196, + "nodeType": "IfStatement", + "src": "3180:87:4", + "trueBody": { + "id": 1195, + "nodeType": "Block", + "src": "3205:62:4", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 1191, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3253:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1190, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3245:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1189, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3245:7:4", + "typeDescriptions": {} + } + }, + "id": 1192, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3245:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1188, + "name": "ERC721InvalidOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3453, + "src": "3226:18:4", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 1193, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3226:30:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1194, + "nodeType": "RevertStatement", + "src": "3219:37:4" + } + ] + } + }, + { + "expression": { + "baseExpression": { + "expression": { + "id": 1197, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1178, + "src": "3283:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "id": 1198, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3285:9:4", + "memberName": "_balances", + "nodeType": "MemberAccess", + "referencedDeclaration": 1071, + "src": "3283:11:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1200, + "indexExpression": { + "id": 1199, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1171, + "src": "3295:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3283:18:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1175, + "id": 1201, + "nodeType": "Return", + "src": "3276:25:4" + } + ] + }, + "documentation": { + "id": 1169, + "nodeType": "StructuredDocumentation", + "src": "2990:48:4", + "text": " @dev See {IERC721-balanceOf}." + }, + "functionSelector": "70a08231", + "id": 1203, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "3052:9:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1172, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1171, + "mutability": "mutable", + "name": "owner", + "nameLocation": "3070:5:4", + "nodeType": "VariableDeclaration", + "scope": 1203, + "src": "3062:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1170, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3062:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3061:15:4" + }, + "returnParameters": { + "id": 1175, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1174, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1203, + "src": "3106:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1173, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3106:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3105:9:4" + }, + "scope": 2102, + "src": "3043:265:4", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 5000 + ], + "body": { + "id": 1215, + "nodeType": "Block", + "src": "3437:46:4", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1212, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1206, + "src": "3468:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1211, + "name": "_requireOwned", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2101, + "src": "3454:13:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 1213, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3454:22:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1210, + "id": 1214, + "nodeType": "Return", + "src": "3447:29:4" + } + ] + }, + "documentation": { + "id": 1204, + "nodeType": "StructuredDocumentation", + "src": "3314:46:4", + "text": " @dev See {IERC721-ownerOf}." + }, + "functionSelector": "6352211e", + "id": 1216, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ownerOf", + "nameLocation": "3374:7:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1207, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1206, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "3390:7:4", + "nodeType": "VariableDeclaration", + "scope": 1216, + "src": "3382:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1205, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3382:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3381:17:4" + }, + "returnParameters": { + "id": 1210, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1209, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1216, + "src": "3428:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1208, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3428:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3427:9:4" + }, + "scope": 2102, + "src": "3365:118:4", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 5130 + ], + "body": { + "id": 1231, + "nodeType": "Block", + "src": "3605:86:4", + "statements": [ + { + "assignments": [ + 1224 + ], + "declarations": [ + { + "constant": false, + "id": 1224, + "mutability": "mutable", + "name": "$", + "nameLocation": "3637:1:4", + "nodeType": "VariableDeclaration", + "scope": 1231, + "src": "3615:23:4", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + }, + "typeName": { + "id": 1223, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1222, + "name": "ERC721Storage", + "nameLocations": [ + "3615:13:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1082, + "src": "3615:13:4" + }, + "referencedDeclaration": 1082, + "src": "3615:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + } + }, + "visibility": "internal" + } + ], + "id": 1227, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1225, + "name": "_getERC721Storage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1093, + "src": "3641:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ERC721Storage_$1082_storage_ptr_$", + "typeString": "function () pure returns (struct ERC721Upgradeable.ERC721Storage storage pointer)" + } + }, + "id": 1226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3641:19:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3615:45:4" + }, + { + "expression": { + "expression": { + "id": 1228, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1224, + "src": "3677:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "id": 1229, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3679:5:4", + "memberName": "_name", + "nodeType": "MemberAccess", + "referencedDeclaration": 1061, + "src": "3677:7:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 1221, + "id": 1230, + "nodeType": "Return", + "src": "3670:14:4" + } + ] + }, + "documentation": { + "id": 1217, + "nodeType": "StructuredDocumentation", + "src": "3489:51:4", + "text": " @dev See {IERC721Metadata-name}." + }, + "functionSelector": "06fdde03", + "id": 1232, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "name", + "nameLocation": "3554:4:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1218, + "nodeType": "ParameterList", + "parameters": [], + "src": "3558:2:4" + }, + "returnParameters": { + "id": 1221, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1220, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1232, + "src": "3590:13:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1219, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3590:6:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "3589:15:4" + }, + "scope": 2102, + "src": "3545:146:4", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 5136 + ], + "body": { + "id": 1247, + "nodeType": "Block", + "src": "3817:88:4", + "statements": [ + { + "assignments": [ + 1240 + ], + "declarations": [ + { + "constant": false, + "id": 1240, + "mutability": "mutable", + "name": "$", + "nameLocation": "3849:1:4", + "nodeType": "VariableDeclaration", + "scope": 1247, + "src": "3827:23:4", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + }, + "typeName": { + "id": 1239, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1238, + "name": "ERC721Storage", + "nameLocations": [ + "3827:13:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1082, + "src": "3827:13:4" + }, + "referencedDeclaration": 1082, + "src": "3827:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + } + }, + "visibility": "internal" + } + ], + "id": 1243, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1241, + "name": "_getERC721Storage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1093, + "src": "3853:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ERC721Storage_$1082_storage_ptr_$", + "typeString": "function () pure returns (struct ERC721Upgradeable.ERC721Storage storage pointer)" + } + }, + "id": 1242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3853:19:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3827:45:4" + }, + { + "expression": { + "expression": { + "id": 1244, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1240, + "src": "3889:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "id": 1245, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3891:7:4", + "memberName": "_symbol", + "nodeType": "MemberAccess", + "referencedDeclaration": 1063, + "src": "3889:9:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 1237, + "id": 1246, + "nodeType": "Return", + "src": "3882:16:4" + } + ] + }, + "documentation": { + "id": 1233, + "nodeType": "StructuredDocumentation", + "src": "3697:53:4", + "text": " @dev See {IERC721Metadata-symbol}." + }, + "functionSelector": "95d89b41", + "id": 1248, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nameLocation": "3764:6:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1234, + "nodeType": "ParameterList", + "parameters": [], + "src": "3770:2:4" + }, + "returnParameters": { + "id": 1237, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1236, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1248, + "src": "3802:13:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1235, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3802:6:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "3801:15:4" + }, + "scope": 2102, + "src": "3755:150:4", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 5144 + ], + "body": { + "id": 1283, + "nodeType": "Block", + "src": "4050:176:4", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1257, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1251, + "src": "4074:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1256, + "name": "_requireOwned", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2101, + "src": "4060:13:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 1258, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4060:22:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1259, + "nodeType": "ExpressionStatement", + "src": "4060:22:4" + }, + { + "assignments": [ + 1261 + ], + "declarations": [ + { + "constant": false, + "id": 1261, + "mutability": "mutable", + "name": "baseURI", + "nameLocation": "4107:7:4", + "nodeType": "VariableDeclaration", + "scope": 1283, + "src": "4093:21:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1260, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4093:6:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "id": 1264, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1262, + "name": "_baseURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1293, + "src": "4117:8:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$", + "typeString": "function () view returns (string memory)" + } + }, + "id": 1263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4117:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4093:34:4" + }, + { + "expression": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1271, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "arguments": [ + { + "id": 1267, + "name": "baseURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1261, + "src": "4150:7:4", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 1266, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4144:5:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 1265, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4144:5:4", + "typeDescriptions": {} + } + }, + "id": 1268, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4144:14:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1269, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4159:6:4", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "4144:21:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 1270, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4168:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4144:25:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "hexValue": "", + "id": 1280, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4217:2:4", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + }, + "id": 1281, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "4144:75:4", + "trueExpression": { + "arguments": [ + { + "id": 1275, + "name": "baseURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1261, + "src": "4186:7:4", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 1276, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1251, + "src": "4195:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1277, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4203:8:4", + "memberName": "toString", + "nodeType": "MemberAccess", + "referencedDeclaration": 5777, + "src": "4195:16:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$attached_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (string memory)" + } + }, + "id": 1278, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4195:18:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "expression": { + "id": 1273, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4172:6:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 1272, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4172:6:4", + "typeDescriptions": {} + } + }, + "id": 1274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4179:6:4", + "memberName": "concat", + "nodeType": "MemberAccess", + "src": "4172:13:4", + "typeDescriptions": { + "typeIdentifier": "t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$", + "typeString": "function () pure returns (string memory)" + } + }, + "id": 1279, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4172:42:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 1255, + "id": 1282, + "nodeType": "Return", + "src": "4137:82:4" + } + ] + }, + "documentation": { + "id": 1249, + "nodeType": "StructuredDocumentation", + "src": "3911:55:4", + "text": " @dev See {IERC721Metadata-tokenURI}." + }, + "functionSelector": "c87b56dd", + "id": 1284, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tokenURI", + "nameLocation": "3980:8:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1252, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1251, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "3997:7:4", + "nodeType": "VariableDeclaration", + "scope": 1284, + "src": "3989:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1250, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3989:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3988:17:4" + }, + "returnParameters": { + "id": 1255, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1254, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1284, + "src": "4035:13:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1253, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4035:6:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "4034:15:4" + }, + "scope": 2102, + "src": "3971:255:4", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 1292, + "nodeType": "Block", + "src": "4534:26:4", + "statements": [ + { + "expression": { + "hexValue": "", + "id": 1290, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4551:2:4", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + }, + "functionReturnParameters": 1289, + "id": 1291, + "nodeType": "Return", + "src": "4544:9:4" + } + ] + }, + "documentation": { + "id": 1285, + "nodeType": "StructuredDocumentation", + "src": "4232:231:4", + "text": " @dev Base URI for computing {tokenURI}. If set, the resulting URI for each\n token will be the concatenation of the `baseURI` and the `tokenId`. Empty\n by default, can be overridden in child contracts." + }, + "id": 1293, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_baseURI", + "nameLocation": "4477:8:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1286, + "nodeType": "ParameterList", + "parameters": [], + "src": "4485:2:4" + }, + "returnParameters": { + "id": 1289, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1288, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1293, + "src": "4519:13:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1287, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4519:6:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "4518:15:4" + }, + "scope": 2102, + "src": "4468:92:4", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "baseFunctions": [ + 5040 + ], + "body": { + "id": 1308, + "nodeType": "Block", + "src": "4678:52:4", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1302, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1296, + "src": "4697:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1303, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1298, + "src": "4701:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1304, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2784, + "src": "4710:10:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 1305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4710:12:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1301, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1953, + 2027 + ], + "referencedDeclaration": 1953, + "src": "4688:8:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$", + "typeString": "function (address,uint256,address)" + } + }, + "id": 1306, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4688:35:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1307, + "nodeType": "ExpressionStatement", + "src": "4688:35:4" + } + ] + }, + "documentation": { + "id": 1294, + "nodeType": "StructuredDocumentation", + "src": "4566:46:4", + "text": " @dev See {IERC721-approve}." + }, + "functionSelector": "095ea7b3", + "id": 1309, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nameLocation": "4626:7:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1299, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1296, + "mutability": "mutable", + "name": "to", + "nameLocation": "4642:2:4", + "nodeType": "VariableDeclaration", + "scope": 1309, + "src": "4634:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1295, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4634:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1298, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "4654:7:4", + "nodeType": "VariableDeclaration", + "scope": 1309, + "src": "4646:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1297, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4646:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4633:29:4" + }, + "returnParameters": { + "id": 1300, + "nodeType": "ParameterList", + "parameters": [], + "src": "4678:0:4" + }, + "scope": 2102, + "src": "4617:113:4", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 5056 + ], + "body": { + "id": 1325, + "nodeType": "Block", + "src": "4867:78:4", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1318, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1312, + "src": "4891:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1317, + "name": "_requireOwned", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2101, + "src": "4877:13:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 1319, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4877:22:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1320, + "nodeType": "ExpressionStatement", + "src": "4877:22:4" + }, + { + "expression": { + "arguments": [ + { + "id": 1322, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1312, + "src": "4930:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1321, + "name": "_getApproved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1500, + "src": "4917:12:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 1323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4917:21:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1316, + "id": 1324, + "nodeType": "Return", + "src": "4910:28:4" + } + ] + }, + "documentation": { + "id": 1310, + "nodeType": "StructuredDocumentation", + "src": "4736:50:4", + "text": " @dev See {IERC721-getApproved}." + }, + "functionSelector": "081812fc", + "id": 1326, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getApproved", + "nameLocation": "4800:11:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1313, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1312, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "4820:7:4", + "nodeType": "VariableDeclaration", + "scope": 1326, + "src": "4812:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1311, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4812:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4811:17:4" + }, + "returnParameters": { + "id": 1316, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1315, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1326, + "src": "4858:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1314, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4858:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4857:9:4" + }, + "scope": 2102, + "src": "4791:154:4", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 5048 + ], + "body": { + "id": 1341, + "nodeType": "Block", + "src": "5087:69:4", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1335, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2784, + "src": "5116:10:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 1336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5116:12:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1337, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1329, + "src": "5130:8:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1338, + "name": "approved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1331, + "src": "5140:8:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1334, + "name": "_setApprovalForAll", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2072, + "src": "5097:18:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$", + "typeString": "function (address,address,bool)" + } + }, + "id": 1339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5097:52:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1340, + "nodeType": "ExpressionStatement", + "src": "5097:52:4" + } + ] + }, + "documentation": { + "id": 1327, + "nodeType": "StructuredDocumentation", + "src": "4951:56:4", + "text": " @dev See {IERC721-setApprovalForAll}." + }, + "functionSelector": "a22cb465", + "id": 1342, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setApprovalForAll", + "nameLocation": "5021:17:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1332, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1329, + "mutability": "mutable", + "name": "operator", + "nameLocation": "5047:8:4", + "nodeType": "VariableDeclaration", + "scope": 1342, + "src": "5039:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1328, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5039:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1331, + "mutability": "mutable", + "name": "approved", + "nameLocation": "5062:8:4", + "nodeType": "VariableDeclaration", + "scope": 1342, + "src": "5057:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1330, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5057:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "5038:33:4" + }, + "returnParameters": { + "id": 1333, + "nodeType": "ParameterList", + "parameters": [], + "src": "5087:0:4" + }, + "scope": 2102, + "src": "5012:144:4", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 5066 + ], + "body": { + "id": 1365, + "nodeType": "Block", + "src": "5316:116:4", + "statements": [ + { + "assignments": [ + 1354 + ], + "declarations": [ + { + "constant": false, + "id": 1354, + "mutability": "mutable", + "name": "$", + "nameLocation": "5348:1:4", + "nodeType": "VariableDeclaration", + "scope": 1365, + "src": "5326:23:4", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + }, + "typeName": { + "id": 1353, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1352, + "name": "ERC721Storage", + "nameLocations": [ + "5326:13:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1082, + "src": "5326:13:4" + }, + "referencedDeclaration": 1082, + "src": "5326:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + } + }, + "visibility": "internal" + } + ], + "id": 1357, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1355, + "name": "_getERC721Storage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1093, + "src": "5352:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ERC721Storage_$1082_storage_ptr_$", + "typeString": "function () pure returns (struct ERC721Upgradeable.ERC721Storage storage pointer)" + } + }, + "id": 1356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5352:19:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5326:45:4" + }, + { + "expression": { + "baseExpression": { + "baseExpression": { + "expression": { + "id": 1358, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1354, + "src": "5388:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "id": 1359, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5390:18:4", + "memberName": "_operatorApprovals", + "nodeType": "MemberAccess", + "referencedDeclaration": 1081, + "src": "5388:20:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + } + }, + "id": 1361, + "indexExpression": { + "id": 1360, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1345, + "src": "5409:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5388:27:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1363, + "indexExpression": { + "id": 1362, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1347, + "src": "5416:8:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5388:37:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1351, + "id": 1364, + "nodeType": "Return", + "src": "5381:44:4" + } + ] + }, + "documentation": { + "id": 1343, + "nodeType": "StructuredDocumentation", + "src": "5162:55:4", + "text": " @dev See {IERC721-isApprovedForAll}." + }, + "functionSelector": "e985e9c5", + "id": 1366, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isApprovedForAll", + "nameLocation": "5231:16:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1348, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1345, + "mutability": "mutable", + "name": "owner", + "nameLocation": "5256:5:4", + "nodeType": "VariableDeclaration", + "scope": 1366, + "src": "5248:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1344, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5248:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1347, + "mutability": "mutable", + "name": "operator", + "nameLocation": "5271:8:4", + "nodeType": "VariableDeclaration", + "scope": 1366, + "src": "5263:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1346, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5263:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5247:33:4" + }, + "returnParameters": { + "id": 1351, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1350, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1366, + "src": "5310:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1349, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5310:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "5309:6:4" + }, + "scope": 2102, + "src": "5222:210:4", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 5032 + ], + "body": { + "id": 1411, + "nodeType": "Block", + "src": "5574:498:4", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1381, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1376, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1371, + "src": "5588:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1379, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5602:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1378, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5594:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1377, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5594:7:4", + "typeDescriptions": {} + } + }, + "id": 1380, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5594:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5588:16:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1390, + "nodeType": "IfStatement", + "src": "5584:87:4", + "trueBody": { + "id": 1389, + "nodeType": "Block", + "src": "5606:65:4", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 1385, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5657:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1384, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5649:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1383, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5649:7:4", + "typeDescriptions": {} + } + }, + "id": 1386, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5649:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1382, + "name": "ERC721InvalidReceiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3477, + "src": "5627:21:4", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 1387, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5627:33:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1388, + "nodeType": "RevertStatement", + "src": "5620:40:4" + } + ] + } + }, + { + "assignments": [ + 1392 + ], + "declarations": [ + { + "constant": false, + "id": 1392, + "mutability": "mutable", + "name": "previousOwner", + "nameLocation": "5897:13:4", + "nodeType": "VariableDeclaration", + "scope": 1411, + "src": "5889:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1391, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5889:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 1399, + "initialValue": { + "arguments": [ + { + "id": 1394, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1371, + "src": "5921:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1395, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1373, + "src": "5925:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1396, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2784, + "src": "5934:10:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 1397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5934:12:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1393, + "name": "_update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1699, + "src": "5913:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$", + "typeString": "function (address,uint256,address) returns (address)" + } + }, + "id": 1398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5913:34:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5889:58:4" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1400, + "name": "previousOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1392, + "src": "5961:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 1401, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1369, + "src": "5978:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5961:21:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1410, + "nodeType": "IfStatement", + "src": "5957:109:4", + "trueBody": { + "id": 1409, + "nodeType": "Block", + "src": "5984:82:4", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 1404, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1369, + "src": "6026:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1405, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1373, + "src": "6032:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1406, + "name": "previousOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1392, + "src": "6041:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1403, + "name": "ERC721IncorrectOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3467, + "src": "6005:20:4", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$", + "typeString": "function (address,uint256,address) pure" + } + }, + "id": 1407, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6005:50:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1408, + "nodeType": "RevertStatement", + "src": "5998:57:4" + } + ] + } + } + ] + }, + "documentation": { + "id": 1367, + "nodeType": "StructuredDocumentation", + "src": "5438:51:4", + "text": " @dev See {IERC721-transferFrom}." + }, + "functionSelector": "23b872dd", + "id": 1412, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nameLocation": "5503:12:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1374, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1369, + "mutability": "mutable", + "name": "from", + "nameLocation": "5524:4:4", + "nodeType": "VariableDeclaration", + "scope": 1412, + "src": "5516:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1368, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5516:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1371, + "mutability": "mutable", + "name": "to", + "nameLocation": "5538:2:4", + "nodeType": "VariableDeclaration", + "scope": 1412, + "src": "5530:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1370, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5530:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1373, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "5550:7:4", + "nodeType": "VariableDeclaration", + "scope": 1412, + "src": "5542:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1372, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5542:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5515:43:4" + }, + "returnParameters": { + "id": 1375, + "nodeType": "ParameterList", + "parameters": [], + "src": "5574:0:4" + }, + "scope": 2102, + "src": "5494:578:4", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 5022 + ], + "body": { + "id": 1429, + "nodeType": "Block", + "src": "6214:56:4", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1423, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1415, + "src": "6241:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1424, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1417, + "src": "6247:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1425, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1419, + "src": "6251:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "", + "id": 1426, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6260:2:4", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "id": 1422, + "name": "safeTransferFrom", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1430, + 1460 + ], + "referencedDeclaration": 1460, + "src": "6224:16:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,uint256,bytes memory)" + } + }, + "id": 1427, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6224:39:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1428, + "nodeType": "ExpressionStatement", + "src": "6224:39:4" + } + ] + }, + "documentation": { + "id": 1413, + "nodeType": "StructuredDocumentation", + "src": "6078:55:4", + "text": " @dev See {IERC721-safeTransferFrom}." + }, + "functionSelector": "42842e0e", + "id": 1430, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nameLocation": "6147:16:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1420, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1415, + "mutability": "mutable", + "name": "from", + "nameLocation": "6172:4:4", + "nodeType": "VariableDeclaration", + "scope": 1430, + "src": "6164:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1414, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6164:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1417, + "mutability": "mutable", + "name": "to", + "nameLocation": "6186:2:4", + "nodeType": "VariableDeclaration", + "scope": 1430, + "src": "6178:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1416, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6178:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1419, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "6198:7:4", + "nodeType": "VariableDeclaration", + "scope": 1430, + "src": "6190:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1418, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6190:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6163:43:4" + }, + "returnParameters": { + "id": 1421, + "nodeType": "ParameterList", + "parameters": [], + "src": "6214:0:4" + }, + "scope": 2102, + "src": "6138:132:4", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 5012 + ], + "body": { + "id": 1459, + "nodeType": "Block", + "src": "6439:130:4", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1443, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1433, + "src": "6462:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1444, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1435, + "src": "6468:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1445, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1437, + "src": "6472:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1442, + "name": "transferFrom", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1412, + "src": "6449:12:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6449:31:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1447, + "nodeType": "ExpressionStatement", + "src": "6449:31:4" + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1451, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2784, + "src": "6524:10:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 1452, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6524:12:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1453, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1433, + "src": "6538:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1454, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1435, + "src": "6544:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1455, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1437, + "src": "6548:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1456, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1439, + "src": "6557:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 1448, + "name": "ERC721Utils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5222, + "src": "6490:11:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721Utils_$5222_$", + "typeString": "type(library ERC721Utils)" + } + }, + "id": 1450, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6502:21:4", + "memberName": "checkOnERC721Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 5221, + "src": "6490:33:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,address,uint256,bytes memory)" + } + }, + "id": 1457, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6490:72:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1458, + "nodeType": "ExpressionStatement", + "src": "6490:72:4" + } + ] + }, + "documentation": { + "id": 1431, + "nodeType": "StructuredDocumentation", + "src": "6276:55:4", + "text": " @dev See {IERC721-safeTransferFrom}." + }, + "functionSelector": "b88d4fde", + "id": 1460, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nameLocation": "6345:16:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1440, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1433, + "mutability": "mutable", + "name": "from", + "nameLocation": "6370:4:4", + "nodeType": "VariableDeclaration", + "scope": 1460, + "src": "6362:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1432, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6362:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1435, + "mutability": "mutable", + "name": "to", + "nameLocation": "6384:2:4", + "nodeType": "VariableDeclaration", + "scope": 1460, + "src": "6376:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1434, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6376:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1437, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "6396:7:4", + "nodeType": "VariableDeclaration", + "scope": 1460, + "src": "6388:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1436, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6388:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1439, + "mutability": "mutable", + "name": "data", + "nameLocation": "6418:4:4", + "nodeType": "VariableDeclaration", + "scope": 1460, + "src": "6405:17:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1438, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6405:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "6361:62:4" + }, + "returnParameters": { + "id": 1441, + "nodeType": "ParameterList", + "parameters": [], + "src": "6439:0:4" + }, + "scope": 2102, + "src": "6336:233:4", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 1479, + "nodeType": "Block", + "src": "7159:97:4", + "statements": [ + { + "assignments": [ + 1470 + ], + "declarations": [ + { + "constant": false, + "id": 1470, + "mutability": "mutable", + "name": "$", + "nameLocation": "7191:1:4", + "nodeType": "VariableDeclaration", + "scope": 1479, + "src": "7169:23:4", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + }, + "typeName": { + "id": 1469, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1468, + "name": "ERC721Storage", + "nameLocations": [ + "7169:13:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1082, + "src": "7169:13:4" + }, + "referencedDeclaration": 1082, + "src": "7169:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + } + }, + "visibility": "internal" + } + ], + "id": 1473, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1471, + "name": "_getERC721Storage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1093, + "src": "7195:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ERC721Storage_$1082_storage_ptr_$", + "typeString": "function () pure returns (struct ERC721Upgradeable.ERC721Storage storage pointer)" + } + }, + "id": 1472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7195:19:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7169:45:4" + }, + { + "expression": { + "baseExpression": { + "expression": { + "id": 1474, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1470, + "src": "7231:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "id": 1475, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7233:7:4", + "memberName": "_owners", + "nodeType": "MemberAccess", + "referencedDeclaration": 1067, + "src": "7231:9:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 1477, + "indexExpression": { + "id": 1476, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1463, + "src": "7241:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7231:18:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1467, + "id": 1478, + "nodeType": "Return", + "src": "7224:25:4" + } + ] + }, + "documentation": { + "id": 1461, + "nodeType": "StructuredDocumentation", + "src": "6575:504:4", + "text": " @dev Returns the owner of the `tokenId`. Does NOT revert if token doesn't exist\n IMPORTANT: Any overrides to this function that add ownership of tokens not tracked by the\n core ERC-721 logic MUST be matched with the use of {_increaseBalance} to keep balances\n consistent with ownership. The invariant to preserve is that for any address `a` the value returned by\n `balanceOf(a)` must be equal to the number of tokens such that `_ownerOf(tokenId)` is `a`." + }, + "id": 1480, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_ownerOf", + "nameLocation": "7093:8:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1464, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1463, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "7110:7:4", + "nodeType": "VariableDeclaration", + "scope": 1480, + "src": "7102:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1462, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7102:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7101:17:4" + }, + "returnParameters": { + "id": 1467, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1466, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1480, + "src": "7150:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1465, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7150:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "7149:9:4" + }, + "scope": 2102, + "src": "7084:172:4", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 1499, + "nodeType": "Block", + "src": "7451:105:4", + "statements": [ + { + "assignments": [ + 1490 + ], + "declarations": [ + { + "constant": false, + "id": 1490, + "mutability": "mutable", + "name": "$", + "nameLocation": "7483:1:4", + "nodeType": "VariableDeclaration", + "scope": 1499, + "src": "7461:23:4", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + }, + "typeName": { + "id": 1489, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1488, + "name": "ERC721Storage", + "nameLocations": [ + "7461:13:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1082, + "src": "7461:13:4" + }, + "referencedDeclaration": 1082, + "src": "7461:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + } + }, + "visibility": "internal" + } + ], + "id": 1493, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1491, + "name": "_getERC721Storage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1093, + "src": "7487:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ERC721Storage_$1082_storage_ptr_$", + "typeString": "function () pure returns (struct ERC721Upgradeable.ERC721Storage storage pointer)" + } + }, + "id": 1492, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7487:19:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7461:45:4" + }, + { + "expression": { + "baseExpression": { + "expression": { + "id": 1494, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1490, + "src": "7523:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "id": 1495, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7525:15:4", + "memberName": "_tokenApprovals", + "nodeType": "MemberAccess", + "referencedDeclaration": 1075, + "src": "7523:17:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 1497, + "indexExpression": { + "id": 1496, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1483, + "src": "7541:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7523:26:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1487, + "id": 1498, + "nodeType": "Return", + "src": "7516:33:4" + } + ] + }, + "documentation": { + "id": 1481, + "nodeType": "StructuredDocumentation", + "src": "7262:105:4", + "text": " @dev Returns the approved address for `tokenId`. Returns 0 if `tokenId` is not minted." + }, + "id": 1500, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getApproved", + "nameLocation": "7381:12:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1484, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1483, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "7402:7:4", + "nodeType": "VariableDeclaration", + "scope": 1500, + "src": "7394:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1482, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7394:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7393:17:4" + }, + "returnParameters": { + "id": 1487, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1486, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1500, + "src": "7442:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1485, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7442:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "7441:9:4" + }, + "scope": 2102, + "src": "7372:184:4", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 1535, + "nodeType": "Block", + "src": "7976:163:4", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1533, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1517, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1512, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1505, + "src": "8005:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1515, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8024:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1514, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8016:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1513, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8016:7:4", + "typeDescriptions": {} + } + }, + "id": 1516, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8016:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8005:21:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1531, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1525, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1520, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1518, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1503, + "src": "8043:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 1519, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1505, + "src": "8052:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8043:16:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "arguments": [ + { + "id": 1522, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1503, + "src": "8080:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1523, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1505, + "src": "8087:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1521, + "name": "isApprovedForAll", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1366, + "src": "8063:16:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", + "typeString": "function (address,address) view returns (bool)" + } + }, + "id": 1524, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8063:32:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8043:52:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1530, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 1527, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1507, + "src": "8112:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1526, + "name": "_getApproved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1500, + "src": "8099:12:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 1528, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8099:21:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 1529, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1505, + "src": "8124:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8099:32:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8043:88:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 1532, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8042:90:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "8005:127:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1511, + "id": 1534, + "nodeType": "Return", + "src": "7986:146:4" + } + ] + }, + "documentation": { + "id": 1501, + "nodeType": "StructuredDocumentation", + "src": "7562:300:4", + "text": " @dev Returns whether `spender` is allowed to manage `owner`'s tokens, or `tokenId` in\n particular (ignoring whether it is owned by `owner`).\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption." + }, + "id": 1536, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_isAuthorized", + "nameLocation": "7876:13:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1508, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1503, + "mutability": "mutable", + "name": "owner", + "nameLocation": "7898:5:4", + "nodeType": "VariableDeclaration", + "scope": 1536, + "src": "7890:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1502, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7890:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1505, + "mutability": "mutable", + "name": "spender", + "nameLocation": "7913:7:4", + "nodeType": "VariableDeclaration", + "scope": 1536, + "src": "7905:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1504, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7905:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1507, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "7930:7:4", + "nodeType": "VariableDeclaration", + "scope": 1536, + "src": "7922:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1506, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7922:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7889:49:4" + }, + "returnParameters": { + "id": 1511, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1510, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1536, + "src": "7970:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1509, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7970:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "7969:6:4" + }, + "scope": 2102, + "src": "7867:272:4", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 1572, + "nodeType": "Block", + "src": "8668:271:4", + "statements": [ + { + "condition": { + "id": 1551, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "8682:39:4", + "subExpression": { + "arguments": [ + { + "id": 1547, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1539, + "src": "8697:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1548, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1541, + "src": "8704:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1549, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1543, + "src": "8713:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1546, + "name": "_isAuthorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1536, + "src": "8683:13:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) view returns (bool)" + } + }, + "id": 1550, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8683:38:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1571, + "nodeType": "IfStatement", + "src": "8678:255:4", + "trueBody": { + "id": 1570, + "nodeType": "Block", + "src": "8723:210:4", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1557, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1552, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1539, + "src": "8741:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1555, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8758:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1554, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8750:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1553, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8750:7:4", + "typeDescriptions": {} + } + }, + "id": 1556, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8750:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8741:19:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1568, + "nodeType": "Block", + "src": "8839:84:4", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 1564, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1541, + "src": "8891:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1565, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1543, + "src": "8900:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1563, + "name": "ERC721InsufficientApproval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3484, + "src": "8864:26:4", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) pure" + } + }, + "id": 1566, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8864:44:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1567, + "nodeType": "RevertStatement", + "src": "8857:51:4" + } + ] + }, + "id": 1569, + "nodeType": "IfStatement", + "src": "8737:186:4", + "trueBody": { + "id": 1562, + "nodeType": "Block", + "src": "8762:71:4", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 1559, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1543, + "src": "8810:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1558, + "name": "ERC721NonexistentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3458, + "src": "8787:22:4", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", + "typeString": "function (uint256) pure" + } + }, + "id": 1560, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8787:31:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1561, + "nodeType": "RevertStatement", + "src": "8780:38:4" + } + ] + } + } + ] + } + } + ] + }, + "documentation": { + "id": 1537, + "nodeType": "StructuredDocumentation", + "src": "8145:421:4", + "text": " @dev Checks if `spender` can operate on `tokenId`, assuming the provided `owner` is the actual owner.\n Reverts if:\n - `spender` does not have approval from `owner` for `tokenId`.\n - `spender` does not have approval to manage all of `owner`'s assets.\n WARNING: This function assumes that `owner` is the actual owner of `tokenId` and does not verify this\n assumption." + }, + "id": 1573, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkAuthorized", + "nameLocation": "8580:16:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1544, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1539, + "mutability": "mutable", + "name": "owner", + "nameLocation": "8605:5:4", + "nodeType": "VariableDeclaration", + "scope": 1573, + "src": "8597:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1538, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8597:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1541, + "mutability": "mutable", + "name": "spender", + "nameLocation": "8620:7:4", + "nodeType": "VariableDeclaration", + "scope": 1573, + "src": "8612:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1540, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8612:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1543, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "8637:7:4", + "nodeType": "VariableDeclaration", + "scope": 1573, + "src": "8629:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1542, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8629:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8596:49:4" + }, + "returnParameters": { + "id": 1545, + "nodeType": "ParameterList", + "parameters": [], + "src": "8668:0:4" + }, + "scope": 2102, + "src": "8571:368:4", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 1596, + "nodeType": "Block", + "src": "9656:135:4", + "statements": [ + { + "assignments": [ + 1583 + ], + "declarations": [ + { + "constant": false, + "id": 1583, + "mutability": "mutable", + "name": "$", + "nameLocation": "9688:1:4", + "nodeType": "VariableDeclaration", + "scope": 1596, + "src": "9666:23:4", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + }, + "typeName": { + "id": 1582, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1581, + "name": "ERC721Storage", + "nameLocations": [ + "9666:13:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1082, + "src": "9666:13:4" + }, + "referencedDeclaration": 1082, + "src": "9666:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + } + }, + "visibility": "internal" + } + ], + "id": 1586, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1584, + "name": "_getERC721Storage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1093, + "src": "9692:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ERC721Storage_$1082_storage_ptr_$", + "typeString": "function () pure returns (struct ERC721Upgradeable.ERC721Storage storage pointer)" + } + }, + "id": 1585, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9692:19:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9666:45:4" + }, + { + "id": 1595, + "nodeType": "UncheckedBlock", + "src": "9721:64:4", + "statements": [ + { + "expression": { + "id": 1593, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 1587, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1583, + "src": "9745:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "id": 1590, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9747:9:4", + "memberName": "_balances", + "nodeType": "MemberAccess", + "referencedDeclaration": 1071, + "src": "9745:11:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1591, + "indexExpression": { + "id": 1589, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1576, + "src": "9757:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "9745:20:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 1592, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1578, + "src": "9769:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "9745:29:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1594, + "nodeType": "ExpressionStatement", + "src": "9745:29:4" + } + ] + } + ] + }, + "documentation": { + "id": 1574, + "nodeType": "StructuredDocumentation", + "src": "8945:631:4", + "text": " @dev Unsafe write access to the balances, used by extensions that \"mint\" tokens using an {ownerOf} override.\n NOTE: the value is limited to type(uint128).max. This protect against _balance overflow. It is unrealistic that\n a uint256 would ever overflow from increments when these increments are bounded to uint128 values.\n WARNING: Increasing an account's balance using this function tends to be paired with an override of the\n {_ownerOf} function to resolve the ownership of the corresponding tokens so that balances and ownership\n remain consistent with one another." + }, + "id": 1597, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_increaseBalance", + "nameLocation": "9590:16:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1579, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1576, + "mutability": "mutable", + "name": "account", + "nameLocation": "9615:7:4", + "nodeType": "VariableDeclaration", + "scope": 1597, + "src": "9607:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1575, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9607:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1578, + "mutability": "mutable", + "name": "value", + "nameLocation": "9632:5:4", + "nodeType": "VariableDeclaration", + "scope": 1597, + "src": "9624:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 1577, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "9624:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "9606:32:4" + }, + "returnParameters": { + "id": 1580, + "nodeType": "ParameterList", + "parameters": [], + "src": "9656:0:4" + }, + "scope": 2102, + "src": "9581:210:4", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 1698, + "nodeType": "Block", + "src": "10479:761:4", + "statements": [ + { + "assignments": [ + 1611 + ], + "declarations": [ + { + "constant": false, + "id": 1611, + "mutability": "mutable", + "name": "$", + "nameLocation": "10511:1:4", + "nodeType": "VariableDeclaration", + "scope": 1698, + "src": "10489:23:4", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + }, + "typeName": { + "id": 1610, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1609, + "name": "ERC721Storage", + "nameLocations": [ + "10489:13:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1082, + "src": "10489:13:4" + }, + "referencedDeclaration": 1082, + "src": "10489:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + } + }, + "visibility": "internal" + } + ], + "id": 1614, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1612, + "name": "_getERC721Storage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1093, + "src": "10515:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ERC721Storage_$1082_storage_ptr_$", + "typeString": "function () pure returns (struct ERC721Upgradeable.ERC721Storage storage pointer)" + } + }, + "id": 1613, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10515:19:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10489:45:4" + }, + { + "assignments": [ + 1616 + ], + "declarations": [ + { + "constant": false, + "id": 1616, + "mutability": "mutable", + "name": "from", + "nameLocation": "10552:4:4", + "nodeType": "VariableDeclaration", + "scope": 1698, + "src": "10544:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1615, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10544:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 1620, + "initialValue": { + "arguments": [ + { + "id": 1618, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1602, + "src": "10568:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1617, + "name": "_ownerOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1480, + "src": "10559:8:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 1619, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10559:17:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10544:32:4" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1626, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1621, + "name": "auth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1604, + "src": "10636:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1624, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10652:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1623, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10644:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1622, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10644:7:4", + "typeDescriptions": {} + } + }, + "id": 1625, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10644:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10636:18:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1634, + "nodeType": "IfStatement", + "src": "10632:86:4", + "trueBody": { + "id": 1633, + "nodeType": "Block", + "src": "10656:62:4", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1628, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1616, + "src": "10687:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1629, + "name": "auth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1604, + "src": "10693:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1630, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1602, + "src": "10699:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1627, + "name": "_checkAuthorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1573, + "src": "10670:16:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256) view" + } + }, + "id": 1631, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10670:37:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1632, + "nodeType": "ExpressionStatement", + "src": "10670:37:4" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1640, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1635, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1616, + "src": "10762:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1638, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10778:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1637, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10770:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1636, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10770:7:4", + "typeDescriptions": {} + } + }, + "id": 1639, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10770:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10762:18:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1664, + "nodeType": "IfStatement", + "src": "10758:258:4", + "trueBody": { + "id": 1663, + "nodeType": "Block", + "src": "10782:234:4", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 1644, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10895:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1643, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10887:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1642, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10887:7:4", + "typeDescriptions": {} + } + }, + "id": 1645, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10887:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1646, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1602, + "src": "10899:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 1649, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10916:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1648, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10908:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1647, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10908:7:4", + "typeDescriptions": {} + } + }, + "id": 1650, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10908:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "hexValue": "66616c7365", + "id": 1651, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10920:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1641, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1953, + 2027 + ], + "referencedDeclaration": 2027, + "src": "10878:8:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$", + "typeString": "function (address,uint256,address,bool)" + } + }, + "id": 1652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10878:48:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1653, + "nodeType": "ExpressionStatement", + "src": "10878:48:4" + }, + { + "id": 1662, + "nodeType": "UncheckedBlock", + "src": "10941:65:4", + "statements": [ + { + "expression": { + "id": 1660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 1654, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1611, + "src": "10969:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "id": 1657, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10971:9:4", + "memberName": "_balances", + "nodeType": "MemberAccess", + "referencedDeclaration": 1071, + "src": "10969:11:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1658, + "indexExpression": { + "id": 1656, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1616, + "src": "10981:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10969:17:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "hexValue": "31", + "id": 1659, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10990:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "10969:22:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1661, + "nodeType": "ExpressionStatement", + "src": "10969:22:4" + } + ] + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1670, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1665, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1600, + "src": "11030:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1668, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11044:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1667, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11036:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1666, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11036:7:4", + "typeDescriptions": {} + } + }, + "id": 1669, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11036:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "11030:16:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1681, + "nodeType": "IfStatement", + "src": "11026:109:4", + "trueBody": { + "id": 1680, + "nodeType": "Block", + "src": "11048:87:4", + "statements": [ + { + "id": 1679, + "nodeType": "UncheckedBlock", + "src": "11062:63:4", + "statements": [ + { + "expression": { + "id": 1677, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 1671, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1611, + "src": "11090:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "id": 1674, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11092:9:4", + "memberName": "_balances", + "nodeType": "MemberAccess", + "referencedDeclaration": 1071, + "src": "11090:11:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1675, + "indexExpression": { + "id": 1673, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1600, + "src": "11102:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "11090:15:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "31", + "id": 1676, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11109:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "11090:20:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1678, + "nodeType": "ExpressionStatement", + "src": "11090:20:4" + } + ] + } + ] + } + }, + { + "expression": { + "id": 1688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 1682, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1611, + "src": "11145:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "id": 1685, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11147:7:4", + "memberName": "_owners", + "nodeType": "MemberAccess", + "referencedDeclaration": 1067, + "src": "11145:9:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 1686, + "indexExpression": { + "id": 1684, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1602, + "src": "11155:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "11145:18:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 1687, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1600, + "src": "11166:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "11145:23:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1689, + "nodeType": "ExpressionStatement", + "src": "11145:23:4" + }, + { + "eventCall": { + "arguments": [ + { + "id": 1691, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1616, + "src": "11193:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1692, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1600, + "src": "11199:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1693, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1602, + "src": "11203:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1690, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4966, + "src": "11184:8:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1694, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11184:27:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1695, + "nodeType": "EmitStatement", + "src": "11179:32:4" + }, + { + "expression": { + "id": 1696, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1616, + "src": "11229:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1608, + "id": 1697, + "nodeType": "Return", + "src": "11222:11:4" + } + ] + }, + "documentation": { + "id": 1598, + "nodeType": "StructuredDocumentation", + "src": "9797:582:4", + "text": " @dev Transfers `tokenId` from its current owner to `to`, or alternatively mints (or burns) if the current owner\n (or `to`) is the zero address. Returns the owner of the `tokenId` before the update.\n The `auth` argument is optional. If the value passed is non 0, then this function will check that\n `auth` is either the owner of the token, or approved to operate on the token (by the owner).\n Emits a {Transfer} event.\n NOTE: If overriding this function in a way that tracks balances, see also {_increaseBalance}." + }, + "id": 1699, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_update", + "nameLocation": "10393:7:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1605, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1600, + "mutability": "mutable", + "name": "to", + "nameLocation": "10409:2:4", + "nodeType": "VariableDeclaration", + "scope": 1699, + "src": "10401:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1599, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10401:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1602, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "10421:7:4", + "nodeType": "VariableDeclaration", + "scope": 1699, + "src": "10413:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1601, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10413:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1604, + "mutability": "mutable", + "name": "auth", + "nameLocation": "10438:4:4", + "nodeType": "VariableDeclaration", + "scope": 1699, + "src": "10430:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1603, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10430:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "10400:43:4" + }, + "returnParameters": { + "id": 1608, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1607, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1699, + "src": "10470:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1606, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10470:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "10469:9:4" + }, + "scope": 2102, + "src": "10384:856:4", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 1748, + "nodeType": "Block", + "src": "11615:274:4", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1712, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1707, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1702, + "src": "11629:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1710, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11643:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1709, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11635:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1708, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11635:7:4", + "typeDescriptions": {} + } + }, + "id": 1711, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11635:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "11629:16:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1721, + "nodeType": "IfStatement", + "src": "11625:87:4", + "trueBody": { + "id": 1720, + "nodeType": "Block", + "src": "11647:65:4", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 1716, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11698:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1715, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11690:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1714, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11690:7:4", + "typeDescriptions": {} + } + }, + "id": 1717, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11690:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1713, + "name": "ERC721InvalidReceiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3477, + "src": "11668:21:4", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 1718, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11668:33:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1719, + "nodeType": "RevertStatement", + "src": "11661:40:4" + } + ] + } + }, + { + "assignments": [ + 1723 + ], + "declarations": [ + { + "constant": false, + "id": 1723, + "mutability": "mutable", + "name": "previousOwner", + "nameLocation": "11729:13:4", + "nodeType": "VariableDeclaration", + "scope": 1748, + "src": "11721:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1722, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11721:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 1732, + "initialValue": { + "arguments": [ + { + "id": 1725, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1702, + "src": "11753:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1726, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1704, + "src": "11757:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 1729, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11774:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1728, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11766:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1727, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11766:7:4", + "typeDescriptions": {} + } + }, + "id": 1730, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11766:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1724, + "name": "_update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1699, + "src": "11745:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$", + "typeString": "function (address,uint256,address) returns (address)" + } + }, + "id": 1731, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11745:32:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11721:56:4" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1738, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1733, + "name": "previousOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1723, + "src": "11791:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1736, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11816:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1735, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11808:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1734, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11808:7:4", + "typeDescriptions": {} + } + }, + "id": 1737, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11808:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "11791:27:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1747, + "nodeType": "IfStatement", + "src": "11787:96:4", + "trueBody": { + "id": 1746, + "nodeType": "Block", + "src": "11820:63:4", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 1742, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11869:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1741, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11861:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1740, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11861:7:4", + "typeDescriptions": {} + } + }, + "id": 1743, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11861:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1739, + "name": "ERC721InvalidSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3472, + "src": "11841:19:4", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 1744, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11841:31:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1745, + "nodeType": "RevertStatement", + "src": "11834:38:4" + } + ] + } + } + ] + }, + "documentation": { + "id": 1700, + "nodeType": "StructuredDocumentation", + "src": "11246:311:4", + "text": " @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event." + }, + "id": 1749, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nameLocation": "11571:5:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1705, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1702, + "mutability": "mutable", + "name": "to", + "nameLocation": "11585:2:4", + "nodeType": "VariableDeclaration", + "scope": 1749, + "src": "11577:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1701, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11577:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1704, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "11597:7:4", + "nodeType": "VariableDeclaration", + "scope": 1749, + "src": "11589:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1703, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11589:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11576:29:4" + }, + "returnParameters": { + "id": 1706, + "nodeType": "ParameterList", + "parameters": [], + "src": "11615:0:4" + }, + "scope": 2102, + "src": "11562:327:4", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1763, + "nodeType": "Block", + "src": "12297:43:4", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1758, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1752, + "src": "12317:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1759, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1754, + "src": "12321:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "", + "id": 1760, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12330:2:4", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "id": 1757, + "name": "_safeMint", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1764, + 1794 + ], + "referencedDeclaration": 1794, + "src": "12307:9:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,bytes memory)" + } + }, + "id": 1761, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12307:26:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1762, + "nodeType": "ExpressionStatement", + "src": "12307:26:4" + } + ] + }, + "documentation": { + "id": 1750, + "nodeType": "StructuredDocumentation", + "src": "11895:340:4", + "text": " @dev Mints `tokenId`, transfers it to `to` and checks for `to` acceptance.\n Requirements:\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event." + }, + "id": 1764, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_safeMint", + "nameLocation": "12249:9:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1755, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1752, + "mutability": "mutable", + "name": "to", + "nameLocation": "12267:2:4", + "nodeType": "VariableDeclaration", + "scope": 1764, + "src": "12259:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1751, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12259:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1754, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "12279:7:4", + "nodeType": "VariableDeclaration", + "scope": 1764, + "src": "12271:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1753, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12271:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12258:29:4" + }, + "returnParameters": { + "id": 1756, + "nodeType": "ParameterList", + "parameters": [], + "src": "12297:0:4" + }, + "scope": 2102, + "src": "12240:100:4", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1793, + "nodeType": "Block", + "src": "12645:123:4", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1775, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1767, + "src": "12661:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1776, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1769, + "src": "12665:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1774, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1749, + "src": "12655:5:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1777, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12655:18:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1778, + "nodeType": "ExpressionStatement", + "src": "12655:18:4" + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1782, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2784, + "src": "12717:10:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 1783, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12717:12:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 1786, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12739:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1785, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12731:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1784, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12731:7:4", + "typeDescriptions": {} + } + }, + "id": 1787, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12731:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1788, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1767, + "src": "12743:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1789, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1769, + "src": "12747:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1790, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1771, + "src": "12756:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 1779, + "name": "ERC721Utils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5222, + "src": "12683:11:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721Utils_$5222_$", + "typeString": "type(library ERC721Utils)" + } + }, + "id": 1781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12695:21:4", + "memberName": "checkOnERC721Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 5221, + "src": "12683:33:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,address,uint256,bytes memory)" + } + }, + "id": 1791, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12683:78:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1792, + "nodeType": "ExpressionStatement", + "src": "12683:78:4" + } + ] + }, + "documentation": { + "id": 1765, + "nodeType": "StructuredDocumentation", + "src": "12346:210:4", + "text": " @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients." + }, + "id": 1794, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_safeMint", + "nameLocation": "12570:9:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1772, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1767, + "mutability": "mutable", + "name": "to", + "nameLocation": "12588:2:4", + "nodeType": "VariableDeclaration", + "scope": 1794, + "src": "12580:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1766, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12580:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1769, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "12600:7:4", + "nodeType": "VariableDeclaration", + "scope": 1794, + "src": "12592:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1768, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12592:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1771, + "mutability": "mutable", + "name": "data", + "nameLocation": "12622:4:4", + "nodeType": "VariableDeclaration", + "scope": 1794, + "src": "12609:17:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1770, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12609:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "12579:48:4" + }, + "returnParameters": { + "id": 1773, + "nodeType": "ParameterList", + "parameters": [], + "src": "12645:0:4" + }, + "scope": 2102, + "src": "12561:207:4", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 1826, + "nodeType": "Block", + "src": "13135:186:4", + "statements": [ + { + "assignments": [ + 1801 + ], + "declarations": [ + { + "constant": false, + "id": 1801, + "mutability": "mutable", + "name": "previousOwner", + "nameLocation": "13153:13:4", + "nodeType": "VariableDeclaration", + "scope": 1826, + "src": "13145:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1800, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13145:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 1813, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 1805, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13185:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1804, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13177:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1803, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13177:7:4", + "typeDescriptions": {} + } + }, + "id": 1806, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13177:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1807, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1797, + "src": "13189:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 1810, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13206:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1809, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13198:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1808, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13198:7:4", + "typeDescriptions": {} + } + }, + "id": 1811, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13198:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1802, + "name": "_update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1699, + "src": "13169:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$", + "typeString": "function (address,uint256,address) returns (address)" + } + }, + "id": 1812, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13169:40:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13145:64:4" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1819, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1814, + "name": "previousOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1801, + "src": "13223:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1817, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13248:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1816, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13240:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1815, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13240:7:4", + "typeDescriptions": {} + } + }, + "id": 1818, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13240:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "13223:27:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1825, + "nodeType": "IfStatement", + "src": "13219:96:4", + "trueBody": { + "id": 1824, + "nodeType": "Block", + "src": "13252:63:4", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 1821, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1797, + "src": "13296:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1820, + "name": "ERC721NonexistentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3458, + "src": "13273:22:4", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", + "typeString": "function (uint256) pure" + } + }, + "id": 1822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13273:31:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1823, + "nodeType": "RevertStatement", + "src": "13266:38:4" + } + ] + } + } + ] + }, + "documentation": { + "id": 1795, + "nodeType": "StructuredDocumentation", + "src": "12774:315:4", + "text": " @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n This is an internal function that does not check if the sender is authorized to operate on the token.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event." + }, + "id": 1827, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burn", + "nameLocation": "13103:5:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1798, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1797, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "13117:7:4", + "nodeType": "VariableDeclaration", + "scope": 1827, + "src": "13109:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1796, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13109:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "13108:17:4" + }, + "returnParameters": { + "id": 1799, + "nodeType": "ParameterList", + "parameters": [], + "src": "13135:0:4" + }, + "scope": 2102, + "src": "13094:227:4", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1886, + "nodeType": "Block", + "src": "13716:389:4", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1842, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1837, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1832, + "src": "13730:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1840, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13744:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1839, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13736:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1838, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13736:7:4", + "typeDescriptions": {} + } + }, + "id": 1841, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13736:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "13730:16:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1851, + "nodeType": "IfStatement", + "src": "13726:87:4", + "trueBody": { + "id": 1850, + "nodeType": "Block", + "src": "13748:65:4", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 1846, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13799:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1845, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13791:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1844, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13791:7:4", + "typeDescriptions": {} + } + }, + "id": 1847, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13791:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1843, + "name": "ERC721InvalidReceiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3477, + "src": "13769:21:4", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 1848, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13769:33:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1849, + "nodeType": "RevertStatement", + "src": "13762:40:4" + } + ] + } + }, + { + "assignments": [ + 1853 + ], + "declarations": [ + { + "constant": false, + "id": 1853, + "mutability": "mutable", + "name": "previousOwner", + "nameLocation": "13830:13:4", + "nodeType": "VariableDeclaration", + "scope": 1886, + "src": "13822:21:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1852, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13822:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 1862, + "initialValue": { + "arguments": [ + { + "id": 1855, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1832, + "src": "13854:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1856, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1834, + "src": "13858:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 1859, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13875:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1858, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13867:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1857, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13867:7:4", + "typeDescriptions": {} + } + }, + "id": 1860, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13867:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1854, + "name": "_update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1699, + "src": "13846:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$", + "typeString": "function (address,uint256,address) returns (address)" + } + }, + "id": 1861, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13846:32:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13822:56:4" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1863, + "name": "previousOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1853, + "src": "13892:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1866, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13917:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1865, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13909:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1864, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13909:7:4", + "typeDescriptions": {} + } + }, + "id": 1867, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13909:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "13892:27:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1876, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1874, + "name": "previousOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1853, + "src": "13994:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 1875, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1830, + "src": "14011:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "13994:21:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1884, + "nodeType": "IfStatement", + "src": "13990:109:4", + "trueBody": { + "id": 1883, + "nodeType": "Block", + "src": "14017:82:4", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 1878, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1830, + "src": "14059:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1879, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1834, + "src": "14065:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1880, + "name": "previousOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1853, + "src": "14074:13:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1877, + "name": "ERC721IncorrectOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3467, + "src": "14038:20:4", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_uint256_$_t_address_$returns$__$", + "typeString": "function (address,uint256,address) pure" + } + }, + "id": 1881, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14038:50:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1882, + "nodeType": "RevertStatement", + "src": "14031:57:4" + } + ] + } + }, + "id": 1885, + "nodeType": "IfStatement", + "src": "13888:211:4", + "trueBody": { + "id": 1873, + "nodeType": "Block", + "src": "13921:63:4", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 1870, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1834, + "src": "13965:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1869, + "name": "ERC721NonexistentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3458, + "src": "13942:22:4", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", + "typeString": "function (uint256) pure" + } + }, + "id": 1871, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13942:31:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1872, + "nodeType": "RevertStatement", + "src": "13935:38:4" + } + ] + } + } + ] + }, + "documentation": { + "id": 1828, + "nodeType": "StructuredDocumentation", + "src": "13327:313:4", + "text": " @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event." + }, + "id": 1887, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_transfer", + "nameLocation": "13654:9:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1835, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1830, + "mutability": "mutable", + "name": "from", + "nameLocation": "13672:4:4", + "nodeType": "VariableDeclaration", + "scope": 1887, + "src": "13664:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1829, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13664:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1832, + "mutability": "mutable", + "name": "to", + "nameLocation": "13686:2:4", + "nodeType": "VariableDeclaration", + "scope": 1887, + "src": "13678:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1831, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13678:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1834, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "13698:7:4", + "nodeType": "VariableDeclaration", + "scope": 1887, + "src": "13690:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1833, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13690:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "13663:43:4" + }, + "returnParameters": { + "id": 1836, + "nodeType": "ParameterList", + "parameters": [], + "src": "13716:0:4" + }, + "scope": 2102, + "src": "13645:460:4", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1904, + "nodeType": "Block", + "src": "15114:53:4", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1898, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1890, + "src": "15138:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1899, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1892, + "src": "15144:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1900, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1894, + "src": "15148:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "", + "id": 1901, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15157:2:4", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "id": 1897, + "name": "_safeTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1905, + 1935 + ], + "referencedDeclaration": 1935, + "src": "15124:13:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,uint256,bytes memory)" + } + }, + "id": 1902, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15124:36:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1903, + "nodeType": "ExpressionStatement", + "src": "15124:36:4" + } + ] + }, + "documentation": { + "id": 1888, + "nodeType": "StructuredDocumentation", + "src": "14111:923:4", + "text": " @dev Safely transfers `tokenId` token from `from` to `to`, checking that contract recipients\n are aware of the ERC-721 standard to prevent tokens from being forever locked.\n `data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is like {safeTransferFrom} in the sense that it invokes\n {IERC721Receiver-onERC721Received} on the receiver, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `tokenId` token must exist and be owned by `from`.\n - `to` cannot be the zero address.\n - `from` cannot be the zero address.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event." + }, + "id": 1905, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_safeTransfer", + "nameLocation": "15048:13:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1895, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1890, + "mutability": "mutable", + "name": "from", + "nameLocation": "15070:4:4", + "nodeType": "VariableDeclaration", + "scope": 1905, + "src": "15062:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1889, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15062:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1892, + "mutability": "mutable", + "name": "to", + "nameLocation": "15084:2:4", + "nodeType": "VariableDeclaration", + "scope": 1905, + "src": "15076:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1891, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15076:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1894, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "15096:7:4", + "nodeType": "VariableDeclaration", + "scope": 1905, + "src": "15088:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1893, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15088:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "15061:43:4" + }, + "returnParameters": { + "id": 1896, + "nodeType": "ParameterList", + "parameters": [], + "src": "15114:0:4" + }, + "scope": 2102, + "src": "15039:128:4", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 1934, + "nodeType": "Block", + "src": "15506:127:4", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1918, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1908, + "src": "15526:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1919, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1910, + "src": "15532:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1920, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1912, + "src": "15536:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1917, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1887, + "src": "15516:9:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 1921, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15516:28:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1922, + "nodeType": "ExpressionStatement", + "src": "15516:28:4" + }, + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1926, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2784, + "src": "15588:10:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 1927, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15588:12:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1928, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1908, + "src": "15602:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1929, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1910, + "src": "15608:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1930, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1912, + "src": "15612:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1931, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1914, + "src": "15621:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 1923, + "name": "ERC721Utils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5222, + "src": "15554:11:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721Utils_$5222_$", + "typeString": "type(library ERC721Utils)" + } + }, + "id": 1925, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15566:21:4", + "memberName": "checkOnERC721Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 5221, + "src": "15554:33:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,address,uint256,bytes memory)" + } + }, + "id": 1932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15554:72:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1933, + "nodeType": "ExpressionStatement", + "src": "15554:72:4" + } + ] + }, + "documentation": { + "id": 1906, + "nodeType": "StructuredDocumentation", + "src": "15173:226:4", + "text": " @dev Same as {xref-ERC721-_safeTransfer-address-address-uint256-}[`_safeTransfer`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients." + }, + "id": 1935, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_safeTransfer", + "nameLocation": "15413:13:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1915, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1908, + "mutability": "mutable", + "name": "from", + "nameLocation": "15435:4:4", + "nodeType": "VariableDeclaration", + "scope": 1935, + "src": "15427:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1907, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15427:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1910, + "mutability": "mutable", + "name": "to", + "nameLocation": "15449:2:4", + "nodeType": "VariableDeclaration", + "scope": 1935, + "src": "15441:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1909, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15441:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1912, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "15461:7:4", + "nodeType": "VariableDeclaration", + "scope": 1935, + "src": "15453:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1911, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15453:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1914, + "mutability": "mutable", + "name": "data", + "nameLocation": "15483:4:4", + "nodeType": "VariableDeclaration", + "scope": 1935, + "src": "15470:17:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1913, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "15470:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "15426:62:4" + }, + "returnParameters": { + "id": 1916, + "nodeType": "ParameterList", + "parameters": [], + "src": "15506:0:4" + }, + "scope": 2102, + "src": "15404:229:4", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 1952, + "nodeType": "Block", + "src": "16146:50:4", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1946, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1938, + "src": "16165:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1947, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1940, + "src": "16169:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 1948, + "name": "auth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1942, + "src": "16178:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "hexValue": "74727565", + "id": 1949, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16184:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1945, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1953, + 2027 + ], + "referencedDeclaration": 2027, + "src": "16156:8:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_bool_$returns$__$", + "typeString": "function (address,uint256,address,bool)" + } + }, + "id": 1950, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16156:33:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1951, + "nodeType": "ExpressionStatement", + "src": "16156:33:4" + } + ] + }, + "documentation": { + "id": 1936, + "nodeType": "StructuredDocumentation", + "src": "15639:432:4", + "text": " @dev Approve `to` to operate on `tokenId`\n The `auth` argument is optional. If the value passed is non 0, then this function will check that `auth` is\n either the owner of the token, or approved to operate on all tokens held by this owner.\n Emits an {Approval} event.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument." + }, + "id": 1953, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_approve", + "nameLocation": "16085:8:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1943, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1938, + "mutability": "mutable", + "name": "to", + "nameLocation": "16102:2:4", + "nodeType": "VariableDeclaration", + "scope": 1953, + "src": "16094:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1937, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16094:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1940, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "16114:7:4", + "nodeType": "VariableDeclaration", + "scope": 1953, + "src": "16106:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1939, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16106:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1942, + "mutability": "mutable", + "name": "auth", + "nameLocation": "16131:4:4", + "nodeType": "VariableDeclaration", + "scope": 1953, + "src": "16123:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1941, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16123:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "16093:43:4" + }, + "returnParameters": { + "id": 1944, + "nodeType": "ParameterList", + "parameters": [], + "src": "16146:0:4" + }, + "scope": 2102, + "src": "16076:120:4", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2026, + "nodeType": "Block", + "src": "16472:625:4", + "statements": [ + { + "assignments": [ + 1967 + ], + "declarations": [ + { + "constant": false, + "id": 1967, + "mutability": "mutable", + "name": "$", + "nameLocation": "16504:1:4", + "nodeType": "VariableDeclaration", + "scope": 2026, + "src": "16482:23:4", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + }, + "typeName": { + "id": 1966, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1965, + "name": "ERC721Storage", + "nameLocations": [ + "16482:13:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1082, + "src": "16482:13:4" + }, + "referencedDeclaration": 1082, + "src": "16482:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + } + }, + "visibility": "internal" + } + ], + "id": 1970, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1968, + "name": "_getERC721Storage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1093, + "src": "16508:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ERC721Storage_$1082_storage_ptr_$", + "typeString": "function () pure returns (struct ERC721Upgradeable.ERC721Storage storage pointer)" + } + }, + "id": 1969, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16508:19:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16482:45:4" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1978, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1971, + "name": "emitEvent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1962, + "src": "16593:9:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1977, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1972, + "name": "auth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1960, + "src": "16606:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1975, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16622:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1974, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16614:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1973, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16614:7:4", + "typeDescriptions": {} + } + }, + "id": 1976, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16614:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "16606:18:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "16593:31:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2017, + "nodeType": "IfStatement", + "src": "16589:460:4", + "trueBody": { + "id": 2016, + "nodeType": "Block", + "src": "16626:423:4", + "statements": [ + { + "assignments": [ + 1980 + ], + "declarations": [ + { + "constant": false, + "id": 1980, + "mutability": "mutable", + "name": "owner", + "nameLocation": "16648:5:4", + "nodeType": "VariableDeclaration", + "scope": 2016, + "src": "16640:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1979, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16640:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 1984, + "initialValue": { + "arguments": [ + { + "id": 1982, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1958, + "src": "16670:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1981, + "name": "_requireOwned", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2101, + "src": "16656:13:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 1983, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16656:22:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16640:38:4" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2000, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1994, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1990, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1985, + "name": "auth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1960, + "src": "16806:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 1988, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16822:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1987, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16814:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1986, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16814:7:4", + "typeDescriptions": {} + } + }, + "id": 1989, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16814:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "16806:18:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1993, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 1991, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1980, + "src": "16828:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 1992, + "name": "auth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1960, + "src": "16837:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "16828:13:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "16806:35:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "id": 1999, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "16845:30:4", + "subExpression": { + "arguments": [ + { + "id": 1996, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1980, + "src": "16863:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 1997, + "name": "auth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1960, + "src": "16870:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1995, + "name": "isApprovedForAll", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1366, + "src": "16846:16:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", + "typeString": "function (address,address) view returns (bool)" + } + }, + "id": 1998, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16846:29:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "16806:69:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2006, + "nodeType": "IfStatement", + "src": "16802:142:4", + "trueBody": { + "id": 2005, + "nodeType": "Block", + "src": "16877:67:4", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 2002, + "name": "auth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1960, + "src": "16924:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2001, + "name": "ERC721InvalidApprover", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3489, + "src": "16902:21:4", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 2003, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16902:27:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2004, + "nodeType": "RevertStatement", + "src": "16895:34:4" + } + ] + } + }, + { + "condition": { + "id": 2007, + "name": "emitEvent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1962, + "src": "16962:9:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2015, + "nodeType": "IfStatement", + "src": "16958:81:4", + "trueBody": { + "id": 2014, + "nodeType": "Block", + "src": "16973:66:4", + "statements": [ + { + "eventCall": { + "arguments": [ + { + "id": 2009, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1980, + "src": "17005:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2010, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1956, + "src": "17012:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2011, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1958, + "src": "17016:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2008, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4975, + "src": "16996:8:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 2012, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16996:28:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2013, + "nodeType": "EmitStatement", + "src": "16991:33:4" + } + ] + } + } + ] + } + }, + { + "expression": { + "id": 2024, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 2018, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1967, + "src": "17059:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "id": 2021, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17061:15:4", + "memberName": "_tokenApprovals", + "nodeType": "MemberAccess", + "referencedDeclaration": 1075, + "src": "17059:17:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 2022, + "indexExpression": { + "id": 2020, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1958, + "src": "17077:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "17059:26:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2023, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1956, + "src": "17088:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "17059:31:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2025, + "nodeType": "ExpressionStatement", + "src": "17059:31:4" + } + ] + }, + "documentation": { + "id": 1954, + "nodeType": "StructuredDocumentation", + "src": "16202:171:4", + "text": " @dev Variant of `_approve` with an optional flag to enable or disable the {Approval} event. The event is not\n emitted in the context of transfers." + }, + "id": 2027, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_approve", + "nameLocation": "16387:8:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1963, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1956, + "mutability": "mutable", + "name": "to", + "nameLocation": "16404:2:4", + "nodeType": "VariableDeclaration", + "scope": 2027, + "src": "16396:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1955, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16396:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1958, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "16416:7:4", + "nodeType": "VariableDeclaration", + "scope": 2027, + "src": "16408:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1957, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16408:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1960, + "mutability": "mutable", + "name": "auth", + "nameLocation": "16433:4:4", + "nodeType": "VariableDeclaration", + "scope": 2027, + "src": "16425:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1959, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16425:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1962, + "mutability": "mutable", + "name": "emitEvent", + "nameLocation": "16444:9:4", + "nodeType": "VariableDeclaration", + "scope": 2027, + "src": "16439:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1961, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "16439:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "16395:59:4" + }, + "returnParameters": { + "id": 1964, + "nodeType": "ParameterList", + "parameters": [], + "src": "16472:0:4" + }, + "scope": 2102, + "src": "16378:719:4", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2071, + "nodeType": "Block", + "src": "17399:276:4", + "statements": [ + { + "assignments": [ + 2039 + ], + "declarations": [ + { + "constant": false, + "id": 2039, + "mutability": "mutable", + "name": "$", + "nameLocation": "17431:1:4", + "nodeType": "VariableDeclaration", + "scope": 2071, + "src": "17409:23:4", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + }, + "typeName": { + "id": 2038, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2037, + "name": "ERC721Storage", + "nameLocations": [ + "17409:13:4" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1082, + "src": "17409:13:4" + }, + "referencedDeclaration": 1082, + "src": "17409:13:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage" + } + }, + "visibility": "internal" + } + ], + "id": 2042, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2040, + "name": "_getERC721Storage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1093, + "src": "17435:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ERC721Storage_$1082_storage_ptr_$", + "typeString": "function () pure returns (struct ERC721Upgradeable.ERC721Storage storage pointer)" + } + }, + "id": 2041, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17435:19:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17409:45:4" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2048, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2043, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2032, + "src": "17468:8:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 2046, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17488:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2045, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "17480:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2044, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17480:7:4", + "typeDescriptions": {} + } + }, + "id": 2047, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17480:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "17468:22:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2054, + "nodeType": "IfStatement", + "src": "17464:91:4", + "trueBody": { + "id": 2053, + "nodeType": "Block", + "src": "17492:63:4", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 2050, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2032, + "src": "17535:8:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2049, + "name": "ERC721InvalidOperator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3494, + "src": "17513:21:4", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 2051, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17513:31:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2052, + "nodeType": "RevertStatement", + "src": "17506:38:4" + } + ] + } + }, + { + "expression": { + "id": 2063, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "baseExpression": { + "expression": { + "id": 2055, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2039, + "src": "17564:1:4", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721Storage_$1082_storage_ptr", + "typeString": "struct ERC721Upgradeable.ERC721Storage storage pointer" + } + }, + "id": 2059, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17566:18:4", + "memberName": "_operatorApprovals", + "nodeType": "MemberAccess", + "referencedDeclaration": 1081, + "src": "17564:20:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + } + }, + "id": 2060, + "indexExpression": { + "id": 2057, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2030, + "src": "17585:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17564:27:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2061, + "indexExpression": { + "id": 2058, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2032, + "src": "17592:8:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "17564:37:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2062, + "name": "approved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2034, + "src": "17604:8:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "17564:48:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2064, + "nodeType": "ExpressionStatement", + "src": "17564:48:4" + }, + { + "eventCall": { + "arguments": [ + { + "id": 2066, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2030, + "src": "17642:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2067, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2032, + "src": "17649:8:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2068, + "name": "approved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2034, + "src": "17659:8:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2065, + "name": "ApprovalForAll", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4984, + "src": "17627:14:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$", + "typeString": "function (address,address,bool)" + } + }, + "id": 2069, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17627:41:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2070, + "nodeType": "EmitStatement", + "src": "17622:46:4" + } + ] + }, + "documentation": { + "id": 2028, + "nodeType": "StructuredDocumentation", + "src": "17103:198:4", + "text": " @dev Approve `operator` to operate on all of `owner` tokens\n Requirements:\n - operator can't be the address zero.\n Emits an {ApprovalForAll} event." + }, + "id": 2072, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setApprovalForAll", + "nameLocation": "17315:18:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2035, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2030, + "mutability": "mutable", + "name": "owner", + "nameLocation": "17342:5:4", + "nodeType": "VariableDeclaration", + "scope": 2072, + "src": "17334:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2029, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17334:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2032, + "mutability": "mutable", + "name": "operator", + "nameLocation": "17357:8:4", + "nodeType": "VariableDeclaration", + "scope": 2072, + "src": "17349:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2031, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17349:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2034, + "mutability": "mutable", + "name": "approved", + "nameLocation": "17372:8:4", + "nodeType": "VariableDeclaration", + "scope": 2072, + "src": "17367:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2033, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "17367:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "17333:48:4" + }, + "returnParameters": { + "id": 2036, + "nodeType": "ParameterList", + "parameters": [], + "src": "17399:0:4" + }, + "scope": 2102, + "src": "17306:369:4", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2100, + "nodeType": "Block", + "src": "17982:169:4", + "statements": [ + { + "assignments": [ + 2081 + ], + "declarations": [ + { + "constant": false, + "id": 2081, + "mutability": "mutable", + "name": "owner", + "nameLocation": "18000:5:4", + "nodeType": "VariableDeclaration", + "scope": 2100, + "src": "17992:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2080, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17992:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 2085, + "initialValue": { + "arguments": [ + { + "id": 2083, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2075, + "src": "18017:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2082, + "name": "_ownerOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1480, + "src": "18008:8:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 2084, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18008:17:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17992:33:4" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2091, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2086, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2081, + "src": "18039:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 2089, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18056:1:4", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2088, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "18048:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2087, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18048:7:4", + "typeDescriptions": {} + } + }, + "id": 2090, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18048:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "18039:19:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2097, + "nodeType": "IfStatement", + "src": "18035:88:4", + "trueBody": { + "id": 2096, + "nodeType": "Block", + "src": "18060:63:4", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 2093, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2075, + "src": "18104:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2092, + "name": "ERC721NonexistentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3458, + "src": "18081:22:4", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", + "typeString": "function (uint256) pure" + } + }, + "id": 2094, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18081:31:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2095, + "nodeType": "RevertStatement", + "src": "18074:38:4" + } + ] + } + }, + { + "expression": { + "id": 2098, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2081, + "src": "18139:5:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2079, + "id": 2099, + "nodeType": "Return", + "src": "18132:12:4" + } + ] + }, + "documentation": { + "id": 2073, + "nodeType": "StructuredDocumentation", + "src": "17681:224:4", + "text": " @dev Reverts if the `tokenId` doesn't have a current owner (it hasn't been minted, or it has been burned).\n Returns the owner.\n Overrides to ownership logic should be done to {_ownerOf}." + }, + "id": 2101, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_requireOwned", + "nameLocation": "17919:13:4", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2076, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2075, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "17941:7:4", + "nodeType": "VariableDeclaration", + "scope": 2101, + "src": "17933:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2074, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17933:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "17932:17:4" + }, + "returnParameters": { + "id": 2079, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2078, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2101, + "src": "17973:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2077, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17973:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "17972:9:4" + }, + "scope": 2102, + "src": "17910:241:4", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 2103, + "src": "1099:17054:4", + "usedErrors": [ + 603, + 606, + 3453, + 3458, + 3467, + 3472, + 3477, + 3484, + 3489, + 3494 + ], + "usedEvents": [ + 611, + 4966, + 4975, + 4984 + ] + } + ], + "src": "107:18047:4" + }, + "id": 4 + }, + "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol", + "exportedSymbols": { + "ERC721EnumerableUpgradeable": [ + 2586 + ], + "ERC721Upgradeable": [ + 2102 + ], + "IERC165": [ + 6389 + ], + "IERC721Enumerable": [ + 5117 + ], + "Initializable": [ + 840 + ] + }, + "id": 2587, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2104, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "128:24:5" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol", + "file": "../ERC721Upgradeable.sol", + "id": 2106, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2587, + "sourceUnit": 2103, + "src": "154:59:5", + "symbolAliases": [ + { + "foreign": { + "id": 2105, + "name": "ERC721Upgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2102, + "src": "162:17:5", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol", + "file": "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol", + "id": 2108, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2587, + "sourceUnit": 5118, + "src": "214:104:5", + "symbolAliases": [ + { + "foreign": { + "id": 2107, + "name": "IERC721Enumerable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5117, + "src": "222:17:5", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol", + "file": "@openzeppelin/contracts/utils/introspection/IERC165.sol", + "id": 2110, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2587, + "sourceUnit": 6390, + "src": "319:80:5", + "symbolAliases": [ + { + "foreign": { + "id": 2109, + "name": "IERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6389, + "src": "327:7:5", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "../../../proxy/utils/Initializable.sol", + "id": 2112, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2587, + "sourceUnit": 841, + "src": "400:69:5", + "symbolAliases": [ + { + "foreign": { + "id": 2111, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 840, + "src": "408:13:5", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 2114, + "name": "Initializable", + "nameLocations": [ + "911:13:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 840, + "src": "911:13:5" + }, + "id": 2115, + "nodeType": "InheritanceSpecifier", + "src": "911:13:5" + }, + { + "baseName": { + "id": 2116, + "name": "ERC721Upgradeable", + "nameLocations": [ + "926:17:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2102, + "src": "926:17:5" + }, + "id": 2117, + "nodeType": "InheritanceSpecifier", + "src": "926:17:5" + }, + { + "baseName": { + "id": 2118, + "name": "IERC721Enumerable", + "nameLocations": [ + "945:17:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5117, + "src": "945:17:5" + }, + "id": 2119, + "nodeType": "InheritanceSpecifier", + "src": "945:17:5" + } + ], + "canonicalName": "ERC721EnumerableUpgradeable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 2113, + "nodeType": "StructuredDocumentation", + "src": "471:390:5", + "text": " @dev This implements an optional extension of {ERC721} defined in the ERC that adds enumerability\n of all the token ids in the contract as well as all token ids owned by each account.\n CAUTION: {ERC721} extensions that implement custom `balanceOf` logic, such as {ERC721Consecutive},\n interfere with enumerability and should not be used together with {ERC721Enumerable}." + }, + "fullyImplemented": true, + "id": 2586, + "linearizedBaseContracts": [ + 2586, + 5117, + 2102, + 3495, + 5145, + 5067, + 3147, + 6389, + 2802, + 840 + ], + "name": "ERC721EnumerableUpgradeable", + "nameLocation": "880:27:5", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "ERC721EnumerableUpgradeable.ERC721EnumerableStorage", + "documentation": { + "id": 2120, + "nodeType": "StructuredDocumentation", + "src": "969:74:5", + "text": "@custom:storage-location erc7201:openzeppelin.storage.ERC721Enumerable" + }, + "id": 2138, + "members": [ + { + "constant": false, + "id": 2126, + "mutability": "mutable", + "name": "_ownedTokens", + "nameLocation": "1149:12:5", + "nodeType": "VariableDeclaration", + "scope": 2138, + "src": "1089:72:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(uint256 => uint256))" + }, + "typeName": { + "id": 2125, + "keyName": "owner", + "keyNameLocation": "1105:5:5", + "keyType": { + "id": 2121, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1097:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1089:59:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(uint256 => uint256))" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 2124, + "keyName": "index", + "keyNameLocation": "1130:5:5", + "keyType": { + "id": 2122, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1122:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "1114:33:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 2123, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1139:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2130, + "mutability": "mutable", + "name": "_ownedTokensIndex", + "nameLocation": "1207:17:5", + "nodeType": "VariableDeclaration", + "scope": 2138, + "src": "1171:53:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + }, + "typeName": { + "id": 2129, + "keyName": "tokenId", + "keyNameLocation": "1187:7:5", + "keyType": { + "id": 2127, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1179:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "1171:35:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 2128, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1198:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2133, + "mutability": "mutable", + "name": "_allTokens", + "nameLocation": "1245:10:5", + "nodeType": "VariableDeclaration", + "scope": 2138, + "src": "1235:20:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 2131, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1235:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2132, + "nodeType": "ArrayTypeName", + "src": "1235:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2137, + "mutability": "mutable", + "name": "_allTokensIndex", + "nameLocation": "1301:15:5", + "nodeType": "VariableDeclaration", + "scope": 2138, + "src": "1265:51:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + }, + "typeName": { + "id": 2136, + "keyName": "tokenId", + "keyNameLocation": "1281:7:5", + "keyType": { + "id": 2134, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1273:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "1265:35:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 2135, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1292:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "internal" + } + ], + "name": "ERC721EnumerableStorage", + "nameLocation": "1055:23:5", + "nodeType": "StructDefinition", + "scope": 2586, + "src": "1048:275:5", + "visibility": "public" + }, + { + "constant": true, + "id": 2141, + "mutability": "constant", + "name": "ERC721EnumerableStorageLocation", + "nameLocation": "1474:31:5", + "nodeType": "VariableDeclaration", + "scope": 2586, + "src": "1449:125:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2139, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1449:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307836343565303339373035343930303838646161643839626165323530343961333466346139303732643339383533376231616232343235663234636265643030", + "id": 2140, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1508:66:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_45397393259163386851312917324915499687179714947200100876063949632302666738944_by_1", + "typeString": "int_const 4539...(69 digits omitted)...8944" + }, + "value": "0x645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed00" + }, + "visibility": "private" + }, + { + "body": { + "id": 2148, + "nodeType": "Block", + "src": "1677:90:5", + "statements": [ + { + "AST": { + "nativeSrc": "1696:65:5", + "nodeType": "YulBlock", + "src": "1696:65:5", + "statements": [ + { + "nativeSrc": "1710:41:5", + "nodeType": "YulAssignment", + "src": "1710:41:5", + "value": { + "name": "ERC721EnumerableStorageLocation", + "nativeSrc": "1720:31:5", + "nodeType": "YulIdentifier", + "src": "1720:31:5" + }, + "variableNames": [ + { + "name": "$.slot", + "nativeSrc": "1710:6:5", + "nodeType": "YulIdentifier", + "src": "1710:6:5" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2145, + "isOffset": false, + "isSlot": true, + "src": "1710:6:5", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 2141, + "isOffset": false, + "isSlot": false, + "src": "1720:31:5", + "valueSize": 1 + } + ], + "id": 2147, + "nodeType": "InlineAssembly", + "src": "1687:74:5" + } + ] + }, + "id": 2149, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getERC721EnumerableStorage", + "nameLocation": "1590:27:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2142, + "nodeType": "ParameterList", + "parameters": [], + "src": "1617:2:5" + }, + "returnParameters": { + "id": 2146, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2145, + "mutability": "mutable", + "name": "$", + "nameLocation": "1674:1:5", + "nodeType": "VariableDeclaration", + "scope": 2149, + "src": "1642:33:5", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2138_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage" + }, + "typeName": { + "id": 2144, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2143, + "name": "ERC721EnumerableStorage", + "nameLocations": [ + "1642:23:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2138, + "src": "1642:23:5" + }, + "referencedDeclaration": 2138, + "src": "1642:23:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2138_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage" + } + }, + "visibility": "internal" + } + ], + "src": "1641:35:5" + }, + "scope": 2586, + "src": "1581:186:5", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "documentation": { + "id": 2150, + "nodeType": "StructuredDocumentation", + "src": "1773:168:5", + "text": " @dev An `owner`'s token query was out of bounds for `index`.\n NOTE: The owner being `address(0)` indicates a global out of bounds index." + }, + "errorSelector": "a57d13dc", + "id": 2156, + "name": "ERC721OutOfBoundsIndex", + "nameLocation": "1952:22:5", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 2155, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2152, + "mutability": "mutable", + "name": "owner", + "nameLocation": "1983:5:5", + "nodeType": "VariableDeclaration", + "scope": 2156, + "src": "1975:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2151, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1975:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2154, + "mutability": "mutable", + "name": "index", + "nameLocation": "1998:5:5", + "nodeType": "VariableDeclaration", + "scope": 2156, + "src": "1990:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2153, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1990:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1974:30:5" + }, + "src": "1946:59:5" + }, + { + "documentation": { + "id": 2157, + "nodeType": "StructuredDocumentation", + "src": "2011:50:5", + "text": " @dev Batch mint is not allowed." + }, + "errorSelector": "59171fc1", + "id": 2159, + "name": "ERC721EnumerableForbiddenBatchMint", + "nameLocation": "2072:34:5", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 2158, + "nodeType": "ParameterList", + "parameters": [], + "src": "2106:2:5" + }, + "src": "2066:43:5" + }, + { + "body": { + "id": 2164, + "nodeType": "Block", + "src": "2176:7:5", + "statements": [] + }, + "id": 2165, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2162, + "kind": "modifierInvocation", + "modifierName": { + "id": 2161, + "name": "onlyInitializing", + "nameLocations": [ + "2159:16:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 749, + "src": "2159:16:5" + }, + "nodeType": "ModifierInvocation", + "src": "2159:16:5" + } + ], + "name": "__ERC721Enumerable_init", + "nameLocation": "2124:23:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2160, + "nodeType": "ParameterList", + "parameters": [], + "src": "2147:2:5" + }, + "returnParameters": { + "id": 2163, + "nodeType": "ParameterList", + "parameters": [], + "src": "2176:0:5" + }, + "scope": 2586, + "src": "2115:68:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2170, + "nodeType": "Block", + "src": "2260:7:5", + "statements": [] + }, + "id": 2171, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2168, + "kind": "modifierInvocation", + "modifierName": { + "id": 2167, + "name": "onlyInitializing", + "nameLocations": [ + "2243:16:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 749, + "src": "2243:16:5" + }, + "nodeType": "ModifierInvocation", + "src": "2243:16:5" + } + ], + "name": "__ERC721Enumerable_init_unchained", + "nameLocation": "2198:33:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2166, + "nodeType": "ParameterList", + "parameters": [], + "src": "2231:2:5" + }, + "returnParameters": { + "id": 2169, + "nodeType": "ParameterList", + "parameters": [], + "src": "2260:0:5" + }, + "scope": 2586, + "src": "2189:78:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 1168, + 6388 + ], + "body": { + "id": 2194, + "nodeType": "Block", + "src": "2452:114:5", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 2187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2182, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2174, + "src": "2469:11:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 2184, + "name": "IERC721Enumerable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5117, + "src": "2489:17:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC721Enumerable_$5117_$", + "typeString": "type(contract IERC721Enumerable)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_contract$_IERC721Enumerable_$5117_$", + "typeString": "type(contract IERC721Enumerable)" + } + ], + "id": 2183, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "2484:4:5", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2185, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2484:23:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_contract$_IERC721Enumerable_$5117", + "typeString": "type(contract IERC721Enumerable)" + } + }, + "id": 2186, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2508:11:5", + "memberName": "interfaceId", + "nodeType": "MemberAccess", + "src": "2484:35:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "2469:50:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "arguments": [ + { + "id": 2190, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2174, + "src": "2547:11:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "expression": { + "id": 2188, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "2523:5:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_ERC721EnumerableUpgradeable_$2586_$", + "typeString": "type(contract super ERC721EnumerableUpgradeable)" + } + }, + "id": 2189, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2529:17:5", + "memberName": "supportsInterface", + "nodeType": "MemberAccess", + "referencedDeclaration": 1168, + "src": "2523:23:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$", + "typeString": "function (bytes4) view returns (bool)" + } + }, + "id": 2191, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2523:36:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2469:90:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2181, + "id": 2193, + "nodeType": "Return", + "src": "2462:97:5" + } + ] + }, + "documentation": { + "id": 2172, + "nodeType": "StructuredDocumentation", + "src": "2272:56:5", + "text": " @dev See {IERC165-supportsInterface}." + }, + "functionSelector": "01ffc9a7", + "id": 2195, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nameLocation": "2342:17:5", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2178, + "nodeType": "OverrideSpecifier", + "overrides": [ + { + "id": 2176, + "name": "IERC165", + "nameLocations": [ + "2409:7:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6389, + "src": "2409:7:5" + }, + { + "id": 2177, + "name": "ERC721Upgradeable", + "nameLocations": [ + "2418:17:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2102, + "src": "2418:17:5" + } + ], + "src": "2400:36:5" + }, + "parameters": { + "id": 2175, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2174, + "mutability": "mutable", + "name": "interfaceId", + "nameLocation": "2367:11:5", + "nodeType": "VariableDeclaration", + "scope": 2195, + "src": "2360:18:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 2173, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "2360:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "2359:20:5" + }, + "returnParameters": { + "id": 2181, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2180, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2195, + "src": "2446:4:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2179, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2446:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2445:6:5" + }, + "scope": 2586, + "src": "2333:233:5", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 5108 + ], + "body": { + "id": 2230, + "nodeType": "Block", + "src": "2742:235:5", + "statements": [ + { + "assignments": [ + 2207 + ], + "declarations": [ + { + "constant": false, + "id": 2207, + "mutability": "mutable", + "name": "$", + "nameLocation": "2784:1:5", + "nodeType": "VariableDeclaration", + "scope": 2230, + "src": "2752:33:5", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2138_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage" + }, + "typeName": { + "id": 2206, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2205, + "name": "ERC721EnumerableStorage", + "nameLocations": [ + "2752:23:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2138, + "src": "2752:23:5" + }, + "referencedDeclaration": 2138, + "src": "2752:23:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2138_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 2210, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2208, + "name": "_getERC721EnumerableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2149, + "src": "2788:27:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ERC721EnumerableStorage_$2138_storage_ptr_$", + "typeString": "function () pure returns (struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer)" + } + }, + "id": 2209, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2788:29:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2138_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2752:65:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2215, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2211, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2200, + "src": "2831:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "arguments": [ + { + "id": 2213, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2198, + "src": "2850:5:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2212, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1203, + "src": "2840:9:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view returns (uint256)" + } + }, + "id": 2214, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2840:16:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2831:25:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2222, + "nodeType": "IfStatement", + "src": "2827:99:5", + "trueBody": { + "id": 2221, + "nodeType": "Block", + "src": "2858:68:5", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 2217, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2198, + "src": "2902:5:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2218, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2200, + "src": "2909:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2216, + "name": "ERC721OutOfBoundsIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2156, + "src": "2879:22:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) pure" + } + }, + "id": 2219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2879:36:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2220, + "nodeType": "RevertStatement", + "src": "2872:43:5" + } + ] + } + }, + { + "expression": { + "baseExpression": { + "baseExpression": { + "expression": { + "id": 2223, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2207, + "src": "2942:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2138_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "id": 2224, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2944:12:5", + "memberName": "_ownedTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 2126, + "src": "2942:14:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(uint256 => uint256))" + } + }, + "id": 2226, + "indexExpression": { + "id": 2225, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2198, + "src": "2957:5:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2942:21:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 2228, + "indexExpression": { + "id": 2227, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2200, + "src": "2964:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2942:28:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2204, + "id": 2229, + "nodeType": "Return", + "src": "2935:35:5" + } + ] + }, + "documentation": { + "id": 2196, + "nodeType": "StructuredDocumentation", + "src": "2572:68:5", + "text": " @dev See {IERC721Enumerable-tokenOfOwnerByIndex}." + }, + "functionSelector": "2f745c59", + "id": 2231, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tokenOfOwnerByIndex", + "nameLocation": "2654:19:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2201, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2198, + "mutability": "mutable", + "name": "owner", + "nameLocation": "2682:5:5", + "nodeType": "VariableDeclaration", + "scope": 2231, + "src": "2674:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2197, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2674:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2200, + "mutability": "mutable", + "name": "index", + "nameLocation": "2697:5:5", + "nodeType": "VariableDeclaration", + "scope": 2231, + "src": "2689:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2199, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2689:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2673:30:5" + }, + "returnParameters": { + "id": 2204, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2203, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2231, + "src": "2733:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2202, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2733:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2732:9:5" + }, + "scope": 2586, + "src": "2645:332:5", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 5098 + ], + "body": { + "id": 2247, + "nodeType": "Block", + "src": "3109:118:5", + "statements": [ + { + "assignments": [ + 2239 + ], + "declarations": [ + { + "constant": false, + "id": 2239, + "mutability": "mutable", + "name": "$", + "nameLocation": "3151:1:5", + "nodeType": "VariableDeclaration", + "scope": 2247, + "src": "3119:33:5", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2138_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage" + }, + "typeName": { + "id": 2238, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2237, + "name": "ERC721EnumerableStorage", + "nameLocations": [ + "3119:23:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2138, + "src": "3119:23:5" + }, + "referencedDeclaration": 2138, + "src": "3119:23:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2138_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 2242, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2240, + "name": "_getERC721EnumerableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2149, + "src": "3155:27:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ERC721EnumerableStorage_$2138_storage_ptr_$", + "typeString": "function () pure returns (struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer)" + } + }, + "id": 2241, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3155:29:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2138_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3119:65:5" + }, + { + "expression": { + "expression": { + "expression": { + "id": 2243, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2239, + "src": "3201:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2138_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "id": 2244, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3203:10:5", + "memberName": "_allTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 2133, + "src": "3201:12:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 2245, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3214:6:5", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "3201:19:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2236, + "id": 2246, + "nodeType": "Return", + "src": "3194:26:5" + } + ] + }, + "documentation": { + "id": 2232, + "nodeType": "StructuredDocumentation", + "src": "2983:60:5", + "text": " @dev See {IERC721Enumerable-totalSupply}." + }, + "functionSelector": "18160ddd", + "id": 2248, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nameLocation": "3057:11:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2233, + "nodeType": "ParameterList", + "parameters": [], + "src": "3068:2:5" + }, + "returnParameters": { + "id": 2236, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2235, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2248, + "src": "3100:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2234, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3100:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3099:9:5" + }, + "scope": 2586, + "src": "3048:179:5", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 5116 + ], + "body": { + "id": 2281, + "nodeType": "Block", + "src": "3374:228:5", + "statements": [ + { + "assignments": [ + 2258 + ], + "declarations": [ + { + "constant": false, + "id": 2258, + "mutability": "mutable", + "name": "$", + "nameLocation": "3416:1:5", + "nodeType": "VariableDeclaration", + "scope": 2281, + "src": "3384:33:5", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2138_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage" + }, + "typeName": { + "id": 2257, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2256, + "name": "ERC721EnumerableStorage", + "nameLocations": [ + "3384:23:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2138, + "src": "3384:23:5" + }, + "referencedDeclaration": 2138, + "src": "3384:23:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2138_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 2261, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2259, + "name": "_getERC721EnumerableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2149, + "src": "3420:27:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ERC721EnumerableStorage_$2138_storage_ptr_$", + "typeString": "function () pure returns (struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer)" + } + }, + "id": 2260, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3420:29:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2138_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3384:65:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2265, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2262, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2251, + "src": "3463:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2263, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2248, + "src": "3472:11:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 2264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3472:13:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3463:22:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2275, + "nodeType": "IfStatement", + "src": "3459:101:5", + "trueBody": { + "id": 2274, + "nodeType": "Block", + "src": "3487:73:5", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 2269, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3539:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2268, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3531:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2267, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3531:7:5", + "typeDescriptions": {} + } + }, + "id": 2270, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3531:10:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2271, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2251, + "src": "3543:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2266, + "name": "ERC721OutOfBoundsIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2156, + "src": "3508:22:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256) pure" + } + }, + "id": 2272, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3508:41:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2273, + "nodeType": "RevertStatement", + "src": "3501:48:5" + } + ] + } + }, + { + "expression": { + "baseExpression": { + "expression": { + "id": 2276, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2258, + "src": "3576:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2138_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "id": 2277, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3578:10:5", + "memberName": "_allTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 2133, + "src": "3576:12:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 2279, + "indexExpression": { + "id": 2278, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2251, + "src": "3589:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3576:19:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2255, + "id": 2280, + "nodeType": "Return", + "src": "3569:26:5" + } + ] + }, + "documentation": { + "id": 2249, + "nodeType": "StructuredDocumentation", + "src": "3233:61:5", + "text": " @dev See {IERC721Enumerable-tokenByIndex}." + }, + "functionSelector": "4f6ccce7", + "id": 2282, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tokenByIndex", + "nameLocation": "3308:12:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2252, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2251, + "mutability": "mutable", + "name": "index", + "nameLocation": "3329:5:5", + "nodeType": "VariableDeclaration", + "scope": 2282, + "src": "3321:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2250, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3321:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3320:15:5" + }, + "returnParameters": { + "id": 2255, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2254, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2282, + "src": "3365:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2253, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3365:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3364:9:5" + }, + "scope": 2586, + "src": "3299:303:5", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 1699 + ], + "body": { + "id": 2350, + "nodeType": "Block", + "src": "3762:521:5", + "statements": [ + { + "assignments": [ + 2296 + ], + "declarations": [ + { + "constant": false, + "id": 2296, + "mutability": "mutable", + "name": "previousOwner", + "nameLocation": "3780:13:5", + "nodeType": "VariableDeclaration", + "scope": 2350, + "src": "3772:21:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2295, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3772:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 2303, + "initialValue": { + "arguments": [ + { + "id": 2299, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2285, + "src": "3810:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2300, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2287, + "src": "3814:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 2301, + "name": "auth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2289, + "src": "3823:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 2297, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "3796:5:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_ERC721EnumerableUpgradeable_$2586_$", + "typeString": "type(contract super ERC721EnumerableUpgradeable)" + } + }, + "id": 2298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3802:7:5", + "memberName": "_update", + "nodeType": "MemberAccess", + "referencedDeclaration": 1699, + "src": "3796:13:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$", + "typeString": "function (address,uint256,address) returns (address)" + } + }, + "id": 2302, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3796:32:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3772:56:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2309, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2304, + "name": "previousOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2296, + "src": "3843:13:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 2307, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3868:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2306, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3860:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2305, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3860:7:5", + "typeDescriptions": {} + } + }, + "id": 2308, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3860:10:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3843:27:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2317, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2315, + "name": "previousOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2296, + "src": "3947:13:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 2316, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2285, + "src": "3964:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3947:19:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2324, + "nodeType": "IfStatement", + "src": "3943:106:5", + "trueBody": { + "id": 2323, + "nodeType": "Block", + "src": "3968:81:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2319, + "name": "previousOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2296, + "src": "4015:13:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2320, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2287, + "src": "4030:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2318, + "name": "_removeTokenFromOwnerEnumeration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2496, + "src": "3982:32:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 2321, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3982:56:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2322, + "nodeType": "ExpressionStatement", + "src": "3982:56:5" + } + ] + } + }, + "id": 2325, + "nodeType": "IfStatement", + "src": "3839:210:5", + "trueBody": { + "id": 2314, + "nodeType": "Block", + "src": "3872:65:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2311, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2287, + "src": "3918:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2310, + "name": "_addTokenToAllTokensEnumeration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2423, + "src": "3886:31:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 2312, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3886:40:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2313, + "nodeType": "ExpressionStatement", + "src": "3886:40:5" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2331, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2326, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2285, + "src": "4062:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 2329, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4076:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2328, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4068:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2327, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4068:7:5", + "typeDescriptions": {} + } + }, + "id": 2330, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4068:10:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4062:16:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2337, + "name": "previousOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2296, + "src": "4160:13:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 2338, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2285, + "src": "4177:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4160:19:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2346, + "nodeType": "IfStatement", + "src": "4156:90:5", + "trueBody": { + "id": 2345, + "nodeType": "Block", + "src": "4181:65:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2341, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2285, + "src": "4223:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2342, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2287, + "src": "4227:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2340, + "name": "_addTokenToOwnerEnumeration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2392, + "src": "4195:27:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 2343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4195:40:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2344, + "nodeType": "ExpressionStatement", + "src": "4195:40:5" + } + ] + } + }, + "id": 2347, + "nodeType": "IfStatement", + "src": "4058:188:5", + "trueBody": { + "id": 2336, + "nodeType": "Block", + "src": "4080:70:5", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2333, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2287, + "src": "4131:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2332, + "name": "_removeTokenFromAllTokensEnumeration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2560, + "src": "4094:36:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 2334, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4094:45:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2335, + "nodeType": "ExpressionStatement", + "src": "4094:45:5" + } + ] + } + }, + { + "expression": { + "id": 2348, + "name": "previousOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2296, + "src": "4263:13:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2294, + "id": 2349, + "nodeType": "Return", + "src": "4256:20:5" + } + ] + }, + "documentation": { + "id": 2283, + "nodeType": "StructuredDocumentation", + "src": "3608:45:5", + "text": " @dev See {ERC721-_update}." + }, + "id": 2351, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_update", + "nameLocation": "3667:7:5", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2291, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3735:8:5" + }, + "parameters": { + "id": 2290, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2285, + "mutability": "mutable", + "name": "to", + "nameLocation": "3683:2:5", + "nodeType": "VariableDeclaration", + "scope": 2351, + "src": "3675:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2284, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3675:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2287, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "3695:7:5", + "nodeType": "VariableDeclaration", + "scope": 2351, + "src": "3687:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2286, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3687:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2289, + "mutability": "mutable", + "name": "auth", + "nameLocation": "3712:4:5", + "nodeType": "VariableDeclaration", + "scope": 2351, + "src": "3704:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2288, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3704:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3674:43:5" + }, + "returnParameters": { + "id": 2294, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2293, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2351, + "src": "3753:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2292, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3753:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3752:9:5" + }, + "scope": 2586, + "src": "3658:625:5", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2391, + "nodeType": "Block", + "src": "4651:219:5", + "statements": [ + { + "assignments": [ + 2361 + ], + "declarations": [ + { + "constant": false, + "id": 2361, + "mutability": "mutable", + "name": "$", + "nameLocation": "4693:1:5", + "nodeType": "VariableDeclaration", + "scope": 2391, + "src": "4661:33:5", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2138_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage" + }, + "typeName": { + "id": 2360, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2359, + "name": "ERC721EnumerableStorage", + "nameLocations": [ + "4661:23:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2138, + "src": "4661:23:5" + }, + "referencedDeclaration": 2138, + "src": "4661:23:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2138_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 2364, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2362, + "name": "_getERC721EnumerableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2149, + "src": "4697:27:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ERC721EnumerableStorage_$2138_storage_ptr_$", + "typeString": "function () pure returns (struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer)" + } + }, + "id": 2363, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4697:29:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2138_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4661:65:5" + }, + { + "assignments": [ + 2366 + ], + "declarations": [ + { + "constant": false, + "id": 2366, + "mutability": "mutable", + "name": "length", + "nameLocation": "4744:6:5", + "nodeType": "VariableDeclaration", + "scope": 2391, + "src": "4736:14:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2365, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4736:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2372, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2371, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 2368, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2354, + "src": "4763:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2367, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1203, + "src": "4753:9:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view returns (uint256)" + } + }, + "id": 2369, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4753:13:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 2370, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4769:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4753:17:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4736:34:5" + }, + { + "expression": { + "id": 2381, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "baseExpression": { + "expression": { + "id": 2373, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2361, + "src": "4780:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2138_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "id": 2377, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4782:12:5", + "memberName": "_ownedTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 2126, + "src": "4780:14:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(uint256 => uint256))" + } + }, + "id": 2378, + "indexExpression": { + "id": 2375, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2354, + "src": "4795:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4780:18:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 2379, + "indexExpression": { + "id": 2376, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2366, + "src": "4799:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4780:26:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2380, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2356, + "src": "4809:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4780:36:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2382, + "nodeType": "ExpressionStatement", + "src": "4780:36:5" + }, + { + "expression": { + "id": 2389, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 2383, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2361, + "src": "4826:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2138_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "id": 2386, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4828:17:5", + "memberName": "_ownedTokensIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 2130, + "src": "4826:19:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 2387, + "indexExpression": { + "id": 2385, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2356, + "src": "4846:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4826:28:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2388, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2366, + "src": "4857:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4826:37:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2390, + "nodeType": "ExpressionStatement", + "src": "4826:37:5" + } + ] + }, + "documentation": { + "id": 2352, + "nodeType": "StructuredDocumentation", + "src": "4289:283:5", + "text": " @dev Private function to add a token to this extension's ownership-tracking data structures.\n @param to address representing the new owner of the given token ID\n @param tokenId uint256 ID of the token to be added to the tokens list of the given address" + }, + "id": 2392, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addTokenToOwnerEnumeration", + "nameLocation": "4586:27:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2357, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2354, + "mutability": "mutable", + "name": "to", + "nameLocation": "4622:2:5", + "nodeType": "VariableDeclaration", + "scope": 2392, + "src": "4614:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2353, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4614:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2356, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "4634:7:5", + "nodeType": "VariableDeclaration", + "scope": 2392, + "src": "4626:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2355, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4626:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4613:29:5" + }, + "returnParameters": { + "id": 2358, + "nodeType": "ParameterList", + "parameters": [], + "src": "4651:0:5" + }, + "scope": 2586, + "src": "4577:293:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 2422, + "nodeType": "Block", + "src": "5131:176:5", + "statements": [ + { + "assignments": [ + 2400 + ], + "declarations": [ + { + "constant": false, + "id": 2400, + "mutability": "mutable", + "name": "$", + "nameLocation": "5173:1:5", + "nodeType": "VariableDeclaration", + "scope": 2422, + "src": "5141:33:5", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2138_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage" + }, + "typeName": { + "id": 2399, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2398, + "name": "ERC721EnumerableStorage", + "nameLocations": [ + "5141:23:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2138, + "src": "5141:23:5" + }, + "referencedDeclaration": 2138, + "src": "5141:23:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2138_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 2403, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2401, + "name": "_getERC721EnumerableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2149, + "src": "5177:27:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ERC721EnumerableStorage_$2138_storage_ptr_$", + "typeString": "function () pure returns (struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer)" + } + }, + "id": 2402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5177:29:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2138_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5141:65:5" + }, + { + "expression": { + "id": 2412, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 2404, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2400, + "src": "5216:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2138_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "id": 2407, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5218:15:5", + "memberName": "_allTokensIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 2137, + "src": "5216:17:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 2408, + "indexExpression": { + "id": 2406, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2395, + "src": "5234:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5216:26:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "expression": { + "id": 2409, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2400, + "src": "5245:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2138_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "id": 2410, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5247:10:5", + "memberName": "_allTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 2133, + "src": "5245:12:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 2411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5258:6:5", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "5245:19:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5216:48:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2413, + "nodeType": "ExpressionStatement", + "src": "5216:48:5" + }, + { + "expression": { + "arguments": [ + { + "id": 2419, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2395, + "src": "5292:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "expression": { + "id": 2414, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2400, + "src": "5274:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2138_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "id": 2417, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5276:10:5", + "memberName": "_allTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 2133, + "src": "5274:12:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 2418, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5287:4:5", + "memberName": "push", + "nodeType": "MemberAccess", + "src": "5274:17:5", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$_t_uint256_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$", + "typeString": "function (uint256[] storage pointer,uint256)" + } + }, + "id": 2420, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5274:26:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2421, + "nodeType": "ExpressionStatement", + "src": "5274:26:5" + } + ] + }, + "documentation": { + "id": 2393, + "nodeType": "StructuredDocumentation", + "src": "4876:184:5", + "text": " @dev Private function to add a token to this extension's token tracking data structures.\n @param tokenId uint256 ID of the token to be added to the tokens list" + }, + "id": 2423, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addTokenToAllTokensEnumeration", + "nameLocation": "5074:31:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2396, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2395, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "5114:7:5", + "nodeType": "VariableDeclaration", + "scope": 2423, + "src": "5106:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2394, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5106:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5105:17:5" + }, + "returnParameters": { + "id": 2397, + "nodeType": "ParameterList", + "parameters": [], + "src": "5131:0:5" + }, + "scope": 2586, + "src": "5065:242:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 2495, + "nodeType": "Block", + "src": "6005:1057:5", + "statements": [ + { + "assignments": [ + 2433 + ], + "declarations": [ + { + "constant": false, + "id": 2433, + "mutability": "mutable", + "name": "$", + "nameLocation": "6047:1:5", + "nodeType": "VariableDeclaration", + "scope": 2495, + "src": "6015:33:5", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2138_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage" + }, + "typeName": { + "id": 2432, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2431, + "name": "ERC721EnumerableStorage", + "nameLocations": [ + "6015:23:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2138, + "src": "6015:23:5" + }, + "referencedDeclaration": 2138, + "src": "6015:23:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2138_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 2436, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2434, + "name": "_getERC721EnumerableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2149, + "src": "6051:27:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ERC721EnumerableStorage_$2138_storage_ptr_$", + "typeString": "function () pure returns (struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer)" + } + }, + "id": 2435, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6051:29:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2138_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6015:65:5" + }, + { + "assignments": [ + 2438 + ], + "declarations": [ + { + "constant": false, + "id": 2438, + "mutability": "mutable", + "name": "lastTokenIndex", + "nameLocation": "6269:14:5", + "nodeType": "VariableDeclaration", + "scope": 2495, + "src": "6261:22:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2437, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6261:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2442, + "initialValue": { + "arguments": [ + { + "id": 2440, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2426, + "src": "6296:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2439, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1203, + "src": "6286:9:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) view returns (uint256)" + } + }, + "id": 2441, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6286:15:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6261:40:5" + }, + { + "assignments": [ + 2444 + ], + "declarations": [ + { + "constant": false, + "id": 2444, + "mutability": "mutable", + "name": "tokenIndex", + "nameLocation": "6319:10:5", + "nodeType": "VariableDeclaration", + "scope": 2495, + "src": "6311:18:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2443, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6311:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2449, + "initialValue": { + "baseExpression": { + "expression": { + "id": 2445, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2433, + "src": "6332:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2138_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "id": 2446, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6334:17:5", + "memberName": "_ownedTokensIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 2130, + "src": "6332:19:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 2448, + "indexExpression": { + "id": 2447, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2428, + "src": "6352:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6332:28:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6311:49:5" + }, + { + "assignments": [ + 2453 + ], + "declarations": [ + { + "constant": false, + "id": 2453, + "mutability": "mutable", + "name": "_ownedTokensByOwner", + "nameLocation": "6413:19:5", + "nodeType": "VariableDeclaration", + "scope": 2495, + "src": "6371:61:5", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + }, + "typeName": { + "id": 2452, + "keyName": "index", + "keyNameLocation": "6387:5:5", + "keyType": { + "id": 2450, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6379:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "6371:33:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 2451, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6396:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "internal" + } + ], + "id": 2458, + "initialValue": { + "baseExpression": { + "expression": { + "id": 2454, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2433, + "src": "6435:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2138_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "id": 2455, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6437:12:5", + "memberName": "_ownedTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 2126, + "src": "6435:14:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(uint256 => uint256))" + } + }, + "id": 2457, + "indexExpression": { + "id": 2456, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2426, + "src": "6450:4:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6435:20:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6371:84:5" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2461, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2459, + "name": "tokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2444, + "src": "6559:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 2460, + "name": "lastTokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2438, + "src": "6573:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6559:28:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2483, + "nodeType": "IfStatement", + "src": "6555:327:5", + "trueBody": { + "id": 2482, + "nodeType": "Block", + "src": "6589:293:5", + "statements": [ + { + "assignments": [ + 2463 + ], + "declarations": [ + { + "constant": false, + "id": 2463, + "mutability": "mutable", + "name": "lastTokenId", + "nameLocation": "6611:11:5", + "nodeType": "VariableDeclaration", + "scope": 2482, + "src": "6603:19:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2462, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6603:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2467, + "initialValue": { + "baseExpression": { + "id": 2464, + "name": "_ownedTokensByOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2453, + "src": "6625:19:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 2466, + "indexExpression": { + "id": 2465, + "name": "lastTokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2438, + "src": "6645:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6625:35:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6603:57:5" + }, + { + "expression": { + "id": 2472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 2468, + "name": "_ownedTokensByOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2453, + "src": "6675:19:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 2470, + "indexExpression": { + "id": 2469, + "name": "tokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2444, + "src": "6695:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6675:31:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2471, + "name": "lastTokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2463, + "src": "6709:11:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6675:45:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2473, + "nodeType": "ExpressionStatement", + "src": "6675:45:5" + }, + { + "expression": { + "id": 2480, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 2474, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2433, + "src": "6792:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2138_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "id": 2477, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6794:17:5", + "memberName": "_ownedTokensIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 2130, + "src": "6792:19:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 2478, + "indexExpression": { + "id": 2476, + "name": "lastTokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2463, + "src": "6812:11:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6792:32:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2479, + "name": "tokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2444, + "src": "6827:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6792:45:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2481, + "nodeType": "ExpressionStatement", + "src": "6792:45:5" + } + ] + } + }, + { + "expression": { + "id": 2488, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "6968:35:5", + "subExpression": { + "baseExpression": { + "expression": { + "id": 2484, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2433, + "src": "6975:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2138_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "id": 2485, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6977:17:5", + "memberName": "_ownedTokensIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 2130, + "src": "6975:19:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 2487, + "indexExpression": { + "id": 2486, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2428, + "src": "6995:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6975:28:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2489, + "nodeType": "ExpressionStatement", + "src": "6968:35:5" + }, + { + "expression": { + "id": 2493, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "7013:42:5", + "subExpression": { + "baseExpression": { + "id": 2490, + "name": "_ownedTokensByOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2453, + "src": "7020:19:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 2492, + "indexExpression": { + "id": 2491, + "name": "lastTokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2438, + "src": "7040:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7020:35:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2494, + "nodeType": "ExpressionStatement", + "src": "7013:42:5" + } + ] + }, + "documentation": { + "id": 2424, + "nodeType": "StructuredDocumentation", + "src": "5313:606:5", + "text": " @dev Private function to remove a token from this extension's ownership-tracking data structures. Note that\n while the token is not assigned a new owner, the `_ownedTokensIndex` mapping is _not_ updated: this allows for\n gas optimizations e.g. when performing a transfer operation (avoiding double writes).\n This has O(1) time complexity, but alters the order of the _ownedTokens array.\n @param from address representing the previous owner of the given token ID\n @param tokenId uint256 ID of the token to be removed from the tokens list of the given address" + }, + "id": 2496, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeTokenFromOwnerEnumeration", + "nameLocation": "5933:32:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2429, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2426, + "mutability": "mutable", + "name": "from", + "nameLocation": "5974:4:5", + "nodeType": "VariableDeclaration", + "scope": 2496, + "src": "5966:12:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2425, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5966:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2428, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "5988:7:5", + "nodeType": "VariableDeclaration", + "scope": 2496, + "src": "5980:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2427, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5980:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5965:31:5" + }, + "returnParameters": { + "id": 2430, + "nodeType": "ParameterList", + "parameters": [], + "src": "6005:0:5" + }, + "scope": 2586, + "src": "5924:1138:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 2559, + "nodeType": "Block", + "src": "7421:1079:5", + "statements": [ + { + "assignments": [ + 2504 + ], + "declarations": [ + { + "constant": false, + "id": 2504, + "mutability": "mutable", + "name": "$", + "nameLocation": "7463:1:5", + "nodeType": "VariableDeclaration", + "scope": 2559, + "src": "7431:33:5", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2138_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage" + }, + "typeName": { + "id": 2503, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2502, + "name": "ERC721EnumerableStorage", + "nameLocations": [ + "7431:23:5" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2138, + "src": "7431:23:5" + }, + "referencedDeclaration": 2138, + "src": "7431:23:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2138_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 2507, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2505, + "name": "_getERC721EnumerableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2149, + "src": "7467:27:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ERC721EnumerableStorage_$2138_storage_ptr_$", + "typeString": "function () pure returns (struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer)" + } + }, + "id": 2506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7467:29:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2138_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7431:65:5" + }, + { + "assignments": [ + 2509 + ], + "declarations": [ + { + "constant": false, + "id": 2509, + "mutability": "mutable", + "name": "lastTokenIndex", + "nameLocation": "7682:14:5", + "nodeType": "VariableDeclaration", + "scope": 2559, + "src": "7674:22:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2508, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7674:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2515, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2514, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 2510, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2504, + "src": "7699:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2138_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "id": 2511, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7701:10:5", + "memberName": "_allTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 2133, + "src": "7699:12:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 2512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7712:6:5", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "7699:19:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 2513, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7721:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "7699:23:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7674:48:5" + }, + { + "assignments": [ + 2517 + ], + "declarations": [ + { + "constant": false, + "id": 2517, + "mutability": "mutable", + "name": "tokenIndex", + "nameLocation": "7740:10:5", + "nodeType": "VariableDeclaration", + "scope": 2559, + "src": "7732:18:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2516, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7732:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2522, + "initialValue": { + "baseExpression": { + "expression": { + "id": 2518, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2504, + "src": "7753:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2138_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "id": 2519, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7755:15:5", + "memberName": "_allTokensIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 2137, + "src": "7753:17:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 2521, + "indexExpression": { + "id": 2520, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2499, + "src": "7771:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7753:26:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7732:47:5" + }, + { + "assignments": [ + 2524 + ], + "declarations": [ + { + "constant": false, + "id": 2524, + "mutability": "mutable", + "name": "lastTokenId", + "nameLocation": "8109:11:5", + "nodeType": "VariableDeclaration", + "scope": 2559, + "src": "8101:19:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2523, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8101:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 2529, + "initialValue": { + "baseExpression": { + "expression": { + "id": 2525, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2504, + "src": "8123:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2138_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "id": 2526, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8125:10:5", + "memberName": "_allTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 2133, + "src": "8123:12:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 2528, + "indexExpression": { + "id": 2527, + "name": "lastTokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2509, + "src": "8136:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8123:28:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8101:50:5" + }, + { + "expression": { + "id": 2536, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 2530, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2504, + "src": "8162:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2138_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "id": 2533, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8164:10:5", + "memberName": "_allTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 2133, + "src": "8162:12:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 2534, + "indexExpression": { + "id": 2532, + "name": "tokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2517, + "src": "8175:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8162:24:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2535, + "name": "lastTokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2524, + "src": "8189:11:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8162:38:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2537, + "nodeType": "ExpressionStatement", + "src": "8162:38:5" + }, + { + "expression": { + "id": 2544, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 2538, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2504, + "src": "8268:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2138_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "id": 2541, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8270:15:5", + "memberName": "_allTokensIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 2137, + "src": "8268:17:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 2542, + "indexExpression": { + "id": 2540, + "name": "lastTokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2524, + "src": "8286:11:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8268:30:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2543, + "name": "tokenIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2517, + "src": "8301:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8268:43:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2545, + "nodeType": "ExpressionStatement", + "src": "8268:43:5" + }, + { + "expression": { + "id": 2550, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "8432:33:5", + "subExpression": { + "baseExpression": { + "expression": { + "id": 2546, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2504, + "src": "8439:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2138_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "id": 2547, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8441:15:5", + "memberName": "_allTokensIndex", + "nodeType": "MemberAccess", + "referencedDeclaration": 2137, + "src": "8439:17:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$", + "typeString": "mapping(uint256 => uint256)" + } + }, + "id": 2549, + "indexExpression": { + "id": 2548, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2499, + "src": "8457:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8439:26:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2551, + "nodeType": "ExpressionStatement", + "src": "8432:33:5" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "expression": { + "id": 2552, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2504, + "src": "8475:1:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721EnumerableStorage_$2138_storage_ptr", + "typeString": "struct ERC721EnumerableUpgradeable.ERC721EnumerableStorage storage pointer" + } + }, + "id": 2555, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8477:10:5", + "memberName": "_allTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 2133, + "src": "8475:12:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage", + "typeString": "uint256[] storage ref" + } + }, + "id": 2556, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8488:3:5", + "memberName": "pop", + "nodeType": "MemberAccess", + "src": "8475:16:5", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypop_nonpayable$_t_array$_t_uint256_$dyn_storage_ptr_$returns$__$attached_to$_t_array$_t_uint256_$dyn_storage_ptr_$", + "typeString": "function (uint256[] storage pointer)" + } + }, + "id": 2557, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8475:18:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2558, + "nodeType": "ExpressionStatement", + "src": "8475:18:5" + } + ] + }, + "documentation": { + "id": 2497, + "nodeType": "StructuredDocumentation", + "src": "7068:277:5", + "text": " @dev Private function to remove a token from this extension's token tracking data structures.\n This has O(1) time complexity, but alters the order of the _allTokens array.\n @param tokenId uint256 ID of the token to be removed from the tokens list" + }, + "id": 2560, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeTokenFromAllTokensEnumeration", + "nameLocation": "7359:36:5", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2500, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2499, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "7404:7:5", + "nodeType": "VariableDeclaration", + "scope": 2560, + "src": "7396:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2498, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7396:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7395:17:5" + }, + "returnParameters": { + "id": 2501, + "nodeType": "ParameterList", + "parameters": [], + "src": "7421:0:5" + }, + "scope": 2586, + "src": "7350:1150:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "baseFunctions": [ + 1597 + ], + "body": { + "id": 2584, + "nodeType": "Block", + "src": "8702:149:5", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "id": 2571, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2569, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2565, + "src": "8716:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 2570, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8725:1:5", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8716:10:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2576, + "nodeType": "IfStatement", + "src": "8712:84:5", + "trueBody": { + "id": 2575, + "nodeType": "Block", + "src": "8728:68:5", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2572, + "name": "ERC721EnumerableForbiddenBatchMint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2159, + "src": "8749:34:5", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2573, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8749:36:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2574, + "nodeType": "RevertStatement", + "src": "8742:43:5" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 2580, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2563, + "src": "8828:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 2581, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2565, + "src": "8837:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + ], + "expression": { + "id": 2577, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "8805:5:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_ERC721EnumerableUpgradeable_$2586_$", + "typeString": "type(contract super ERC721EnumerableUpgradeable)" + } + }, + "id": 2579, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8811:16:5", + "memberName": "_increaseBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 1597, + "src": "8805:22:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$__$", + "typeString": "function (address,uint128)" + } + }, + "id": 2582, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8805:39:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2583, + "nodeType": "ExpressionStatement", + "src": "8805:39:5" + } + ] + }, + "documentation": { + "id": 2561, + "nodeType": "StructuredDocumentation", + "src": "8506:106:5", + "text": " See {ERC721-_increaseBalance}. We need that to account tokens that were minted in batch" + }, + "id": 2585, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_increaseBalance", + "nameLocation": "8626:16:5", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2567, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "8693:8:5" + }, + "parameters": { + "id": 2566, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2563, + "mutability": "mutable", + "name": "account", + "nameLocation": "8651:7:5", + "nodeType": "VariableDeclaration", + "scope": 2585, + "src": "8643:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2562, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8643:7:5", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2565, + "mutability": "mutable", + "name": "amount", + "nameLocation": "8668:6:5", + "nodeType": "VariableDeclaration", + "scope": 2585, + "src": "8660:14:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 2564, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "8660:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "8642:33:5" + }, + "returnParameters": { + "id": 2568, + "nodeType": "ParameterList", + "parameters": [], + "src": "8702:0:5" + }, + "scope": 2586, + "src": "8617:234:5", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 2587, + "src": "862:7991:5", + "usedErrors": [ + 603, + 606, + 2156, + 2159, + 3453, + 3458, + 3467, + 3472, + 3477, + 3484, + 3489, + 3494 + ], + "usedEvents": [ + 611, + 4966, + 4975, + 4984 + ] + } + ], + "src": "128:8726:5" + }, + "id": 5 + }, + "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol", + "exportedSymbols": { + "ERC721URIStorageUpgradeable": [ + 2756 + ], + "ERC721Upgradeable": [ + 2102 + ], + "IERC165": [ + 6389 + ], + "IERC4906": [ + 3391 + ], + "Initializable": [ + 840 + ], + "Strings": [ + 6029 + ] + }, + "id": 2757, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2588, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "128:24:6" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol", + "file": "../ERC721Upgradeable.sol", + "id": 2590, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2757, + "sourceUnit": 2103, + "src": "154:59:6", + "symbolAliases": [ + { + "foreign": { + "id": 2589, + "name": "ERC721Upgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2102, + "src": "162:17:6", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/Strings.sol", + "file": "@openzeppelin/contracts/utils/Strings.sol", + "id": 2592, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2757, + "sourceUnit": 6030, + "src": "214:66:6", + "symbolAliases": [ + { + "foreign": { + "id": 2591, + "name": "Strings", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6029, + "src": "222:7:6", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/interfaces/IERC4906.sol", + "file": "@openzeppelin/contracts/interfaces/IERC4906.sol", + "id": 2594, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2757, + "sourceUnit": 3392, + "src": "281:73:6", + "symbolAliases": [ + { + "foreign": { + "id": 2593, + "name": "IERC4906", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3391, + "src": "289:8:6", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol", + "file": "@openzeppelin/contracts/utils/introspection/IERC165.sol", + "id": 2596, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2757, + "sourceUnit": 6390, + "src": "355:80:6", + "symbolAliases": [ + { + "foreign": { + "id": 2595, + "name": "IERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6389, + "src": "363:7:6", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "../../../proxy/utils/Initializable.sol", + "id": 2598, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2757, + "sourceUnit": 841, + "src": "436:69:6", + "symbolAliases": [ + { + "foreign": { + "id": 2597, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 840, + "src": "444:13:6", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 2600, + "name": "Initializable", + "nameLocations": [ + "627:13:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 840, + "src": "627:13:6" + }, + "id": 2601, + "nodeType": "InheritanceSpecifier", + "src": "627:13:6" + }, + { + "baseName": { + "id": 2602, + "name": "IERC4906", + "nameLocations": [ + "642:8:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3391, + "src": "642:8:6" + }, + "id": 2603, + "nodeType": "InheritanceSpecifier", + "src": "642:8:6" + }, + { + "baseName": { + "id": 2604, + "name": "ERC721Upgradeable", + "nameLocations": [ + "652:17:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2102, + "src": "652:17:6" + }, + "id": 2605, + "nodeType": "InheritanceSpecifier", + "src": "652:17:6" + } + ], + "canonicalName": "ERC721URIStorageUpgradeable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 2599, + "nodeType": "StructuredDocumentation", + "src": "507:70:6", + "text": " @dev ERC-721 token with storage based token URI management." + }, + "fullyImplemented": true, + "id": 2756, + "linearizedBaseContracts": [ + 2756, + 2102, + 3495, + 5145, + 3391, + 5067, + 3147, + 6389, + 2802, + 840 + ], + "name": "ERC721URIStorageUpgradeable", + "nameLocation": "596:27:6", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 2608, + "libraryName": { + "id": 2606, + "name": "Strings", + "nameLocations": [ + "682:7:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6029, + "src": "682:7:6" + }, + "nodeType": "UsingForDirective", + "src": "676:26:6", + "typeName": { + "id": 2607, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "694:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": true, + "id": 2614, + "mutability": "constant", + "name": "ERC4906_INTERFACE_ID", + "nameLocation": "914:20:6", + "nodeType": "VariableDeclaration", + "scope": 2756, + "src": "890:65:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 2609, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "890:6:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "arguments": [ + { + "hexValue": "30783439303634393036", + "id": 2612, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "944:10:6", + "typeDescriptions": { + "typeIdentifier": "t_rational_1225148678_by_1", + "typeString": "int_const 1225148678" + }, + "value": "0x49064906" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1225148678_by_1", + "typeString": "int_const 1225148678" + } + ], + "id": 2611, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "937:6:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes4_$", + "typeString": "type(bytes4)" + }, + "typeName": { + "id": 2610, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "937:6:6", + "typeDescriptions": {} + } + }, + "id": 2613, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "937:18:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "private" + }, + { + "canonicalName": "ERC721URIStorageUpgradeable.ERC721URIStorageStorage", + "documentation": { + "id": 2615, + "nodeType": "StructuredDocumentation", + "src": "962:74:6", + "text": "@custom:storage-location erc7201:openzeppelin.storage.ERC721URIStorage" + }, + "id": 2620, + "members": [ + { + "constant": false, + "id": 2619, + "mutability": "mutable", + "name": "_tokenURIs", + "nameLocation": "1160:10:6", + "nodeType": "VariableDeclaration", + "scope": 2620, + "src": "1125:45:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string)" + }, + "typeName": { + "id": 2618, + "keyName": "tokenId", + "keyNameLocation": "1141:7:6", + "keyType": { + "id": 2616, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1133:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "1125:34:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 2617, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1152:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + } + }, + "visibility": "internal" + } + ], + "name": "ERC721URIStorageStorage", + "nameLocation": "1048:23:6", + "nodeType": "StructDefinition", + "scope": 2756, + "src": "1041:136:6", + "visibility": "public" + }, + { + "constant": true, + "id": 2623, + "mutability": "constant", + "name": "ERC721URIStorageStorageLocation", + "nameLocation": "1328:31:6", + "nodeType": "VariableDeclaration", + "scope": 2756, + "src": "1303:125:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2621, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1303:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307830353432613431383831656531323861333635613732376232383263383666613835393537393439306239626234356161623835303336343863386537393030", + "id": 2622, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1362:66:6", + "typeDescriptions": { + "typeIdentifier": "t_rational_2379308696314521910557677063879631722299242421128561970643328499819886835968_by_1", + "typeString": "int_const 2379...(68 digits omitted)...5968" + }, + "value": "0x0542a41881ee128a365a727b282c86fa859579490b9bb45aab8503648c8e7900" + }, + "visibility": "private" + }, + { + "body": { + "id": 2630, + "nodeType": "Block", + "src": "1531:90:6", + "statements": [ + { + "AST": { + "nativeSrc": "1550:65:6", + "nodeType": "YulBlock", + "src": "1550:65:6", + "statements": [ + { + "nativeSrc": "1564:41:6", + "nodeType": "YulAssignment", + "src": "1564:41:6", + "value": { + "name": "ERC721URIStorageStorageLocation", + "nativeSrc": "1574:31:6", + "nodeType": "YulIdentifier", + "src": "1574:31:6" + }, + "variableNames": [ + { + "name": "$.slot", + "nativeSrc": "1564:6:6", + "nodeType": "YulIdentifier", + "src": "1564:6:6" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2627, + "isOffset": false, + "isSlot": true, + "src": "1564:6:6", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 2623, + "isOffset": false, + "isSlot": false, + "src": "1574:31:6", + "valueSize": 1 + } + ], + "id": 2629, + "nodeType": "InlineAssembly", + "src": "1541:74:6" + } + ] + }, + "id": 2631, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getERC721URIStorageStorage", + "nameLocation": "1444:27:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2624, + "nodeType": "ParameterList", + "parameters": [], + "src": "1471:2:6" + }, + "returnParameters": { + "id": 2628, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2627, + "mutability": "mutable", + "name": "$", + "nameLocation": "1528:1:6", + "nodeType": "VariableDeclaration", + "scope": 2631, + "src": "1496:33:6", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721URIStorageStorage_$2620_storage_ptr", + "typeString": "struct ERC721URIStorageUpgradeable.ERC721URIStorageStorage" + }, + "typeName": { + "id": 2626, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2625, + "name": "ERC721URIStorageStorage", + "nameLocations": [ + "1496:23:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2620, + "src": "1496:23:6" + }, + "referencedDeclaration": 2620, + "src": "1496:23:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721URIStorageStorage_$2620_storage_ptr", + "typeString": "struct ERC721URIStorageUpgradeable.ERC721URIStorageStorage" + } + }, + "visibility": "internal" + } + ], + "src": "1495:35:6" + }, + "scope": 2756, + "src": "1435:186:6", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 2636, + "nodeType": "Block", + "src": "1688:7:6", + "statements": [] + }, + "id": 2637, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2634, + "kind": "modifierInvocation", + "modifierName": { + "id": 2633, + "name": "onlyInitializing", + "nameLocations": [ + "1671:16:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 749, + "src": "1671:16:6" + }, + "nodeType": "ModifierInvocation", + "src": "1671:16:6" + } + ], + "name": "__ERC721URIStorage_init", + "nameLocation": "1636:23:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2632, + "nodeType": "ParameterList", + "parameters": [], + "src": "1659:2:6" + }, + "returnParameters": { + "id": 2635, + "nodeType": "ParameterList", + "parameters": [], + "src": "1688:0:6" + }, + "scope": 2756, + "src": "1627:68:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2642, + "nodeType": "Block", + "src": "1772:7:6", + "statements": [] + }, + "id": 2643, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2640, + "kind": "modifierInvocation", + "modifierName": { + "id": 2639, + "name": "onlyInitializing", + "nameLocations": [ + "1755:16:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 749, + "src": "1755:16:6" + }, + "nodeType": "ModifierInvocation", + "src": "1755:16:6" + } + ], + "name": "__ERC721URIStorage_init_unchained", + "nameLocation": "1710:33:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2638, + "nodeType": "ParameterList", + "parameters": [], + "src": "1743:2:6" + }, + "returnParameters": { + "id": 2641, + "nodeType": "ParameterList", + "parameters": [], + "src": "1772:0:6" + }, + "scope": 2756, + "src": "1701:78:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 1168, + 6388 + ], + "body": { + "id": 2663, + "nodeType": "Block", + "src": "1963:99:6", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2661, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 2656, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 2654, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2646, + "src": "1980:11:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 2655, + "name": "ERC4906_INTERFACE_ID", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2614, + "src": "1995:20:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "1980:35:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "arguments": [ + { + "id": 2659, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2646, + "src": "2043:11:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "expression": { + "id": 2657, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "2019:5:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_ERC721URIStorageUpgradeable_$2756_$", + "typeString": "type(contract super ERC721URIStorageUpgradeable)" + } + }, + "id": 2658, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2025:17:6", + "memberName": "supportsInterface", + "nodeType": "MemberAccess", + "referencedDeclaration": 1168, + "src": "2019:23:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$", + "typeString": "function (bytes4) view returns (bool)" + } + }, + "id": 2660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2019:36:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1980:75:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2653, + "id": 2662, + "nodeType": "Return", + "src": "1973:82:6" + } + ] + }, + "documentation": { + "id": 2644, + "nodeType": "StructuredDocumentation", + "src": "1784:55:6", + "text": " @dev See {IERC165-supportsInterface}" + }, + "functionSelector": "01ffc9a7", + "id": 2664, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nameLocation": "1853:17:6", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2650, + "nodeType": "OverrideSpecifier", + "overrides": [ + { + "id": 2648, + "name": "ERC721Upgradeable", + "nameLocations": [ + "1920:17:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2102, + "src": "1920:17:6" + }, + { + "id": 2649, + "name": "IERC165", + "nameLocations": [ + "1939:7:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6389, + "src": "1939:7:6" + } + ], + "src": "1911:36:6" + }, + "parameters": { + "id": 2647, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2646, + "mutability": "mutable", + "name": "interfaceId", + "nameLocation": "1878:11:6", + "nodeType": "VariableDeclaration", + "scope": 2664, + "src": "1871:18:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 2645, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1871:6:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "1870:20:6" + }, + "returnParameters": { + "id": 2653, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2652, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2664, + "src": "1957:4:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2651, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1957:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1956:6:6" + }, + "scope": 2756, + "src": "1844:218:6", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 1284 + ], + "body": { + "id": 2727, + "nodeType": "Block", + "src": "2216:582:6", + "statements": [ + { + "assignments": [ + 2675 + ], + "declarations": [ + { + "constant": false, + "id": 2675, + "mutability": "mutable", + "name": "$", + "nameLocation": "2258:1:6", + "nodeType": "VariableDeclaration", + "scope": 2727, + "src": "2226:33:6", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721URIStorageStorage_$2620_storage_ptr", + "typeString": "struct ERC721URIStorageUpgradeable.ERC721URIStorageStorage" + }, + "typeName": { + "id": 2674, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2673, + "name": "ERC721URIStorageStorage", + "nameLocations": [ + "2226:23:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2620, + "src": "2226:23:6" + }, + "referencedDeclaration": 2620, + "src": "2226:23:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721URIStorageStorage_$2620_storage_ptr", + "typeString": "struct ERC721URIStorageUpgradeable.ERC721URIStorageStorage" + } + }, + "visibility": "internal" + } + ], + "id": 2678, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2676, + "name": "_getERC721URIStorageStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2631, + "src": "2262:27:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ERC721URIStorageStorage_$2620_storage_ptr_$", + "typeString": "function () pure returns (struct ERC721URIStorageUpgradeable.ERC721URIStorageStorage storage pointer)" + } + }, + "id": 2677, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2262:29:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721URIStorageStorage_$2620_storage_ptr", + "typeString": "struct ERC721URIStorageUpgradeable.ERC721URIStorageStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2226:65:6" + }, + { + "expression": { + "arguments": [ + { + "id": 2680, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2667, + "src": "2315:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2679, + "name": "_requireOwned", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2101, + "src": "2301:13:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 2681, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2301:22:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2682, + "nodeType": "ExpressionStatement", + "src": "2301:22:6" + }, + { + "assignments": [ + 2684 + ], + "declarations": [ + { + "constant": false, + "id": 2684, + "mutability": "mutable", + "name": "_tokenURI", + "nameLocation": "2348:9:6", + "nodeType": "VariableDeclaration", + "scope": 2727, + "src": "2334:23:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2683, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2334:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "id": 2689, + "initialValue": { + "baseExpression": { + "expression": { + "id": 2685, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2675, + "src": "2360:1:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721URIStorageStorage_$2620_storage_ptr", + "typeString": "struct ERC721URIStorageUpgradeable.ERC721URIStorageStorage storage pointer" + } + }, + "id": 2686, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2362:10:6", + "memberName": "_tokenURIs", + "nodeType": "MemberAccess", + "referencedDeclaration": 2619, + "src": "2360:12:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string storage ref)" + } + }, + "id": 2688, + "indexExpression": { + "id": 2687, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2667, + "src": "2373:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2360:21:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2334:47:6" + }, + { + "assignments": [ + 2691 + ], + "declarations": [ + { + "constant": false, + "id": 2691, + "mutability": "mutable", + "name": "base", + "nameLocation": "2405:4:6", + "nodeType": "VariableDeclaration", + "scope": 2727, + "src": "2391:18:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2690, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2391:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "id": 2694, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2692, + "name": "_baseURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1293, + "src": "2412:8:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$", + "typeString": "function () view returns (string memory)" + } + }, + "id": 2693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2412:10:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2391:31:6" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2701, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "arguments": [ + { + "id": 2697, + "name": "base", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2691, + "src": "2501:4:6", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 2696, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2495:5:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 2695, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2495:5:6", + "typeDescriptions": {} + } + }, + "id": 2698, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2495:11:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 2699, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2507:6:6", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2495:18:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 2700, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2517:1:6", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2495:23:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2705, + "nodeType": "IfStatement", + "src": "2491:70:6", + "trueBody": { + "id": 2704, + "nodeType": "Block", + "src": "2520:41:6", + "statements": [ + { + "expression": { + "id": 2702, + "name": "_tokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2684, + "src": "2541:9:6", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 2672, + "id": 2703, + "nodeType": "Return", + "src": "2534:16:6" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2712, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "arguments": [ + { + "id": 2708, + "name": "_tokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2684, + "src": "2666:9:6", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 2707, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2660:5:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 2706, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2660:5:6", + "typeDescriptions": {} + } + }, + "id": 2709, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2660:16:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 2710, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2677:6:6", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2660:23:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 2711, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2686:1:6", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2660:27:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2721, + "nodeType": "IfStatement", + "src": "2656:95:6", + "trueBody": { + "id": 2720, + "nodeType": "Block", + "src": "2689:62:6", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 2716, + "name": "base", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2691, + "src": "2724:4:6", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "id": 2717, + "name": "_tokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2684, + "src": "2730:9:6", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "expression": { + "id": 2714, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2710:6:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 2713, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2710:6:6", + "typeDescriptions": {} + } + }, + "id": 2715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2717:6:6", + "memberName": "concat", + "nodeType": "MemberAccess", + "src": "2710:13:6", + "typeDescriptions": { + "typeIdentifier": "t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$", + "typeString": "function () pure returns (string memory)" + } + }, + "id": 2718, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2710:30:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 2672, + "id": 2719, + "nodeType": "Return", + "src": "2703:37:6" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 2724, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2667, + "src": "2783:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 2722, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "2768:5:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_ERC721URIStorageUpgradeable_$2756_$", + "typeString": "type(contract super ERC721URIStorageUpgradeable)" + } + }, + "id": 2723, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2774:8:6", + "memberName": "tokenURI", + "nodeType": "MemberAccess", + "referencedDeclaration": 1284, + "src": "2768:14:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_string_memory_ptr_$", + "typeString": "function (uint256) view returns (string memory)" + } + }, + "id": 2725, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2768:23:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 2672, + "id": 2726, + "nodeType": "Return", + "src": "2761:30:6" + } + ] + }, + "documentation": { + "id": 2665, + "nodeType": "StructuredDocumentation", + "src": "2068:55:6", + "text": " @dev See {IERC721Metadata-tokenURI}." + }, + "functionSelector": "c87b56dd", + "id": 2728, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tokenURI", + "nameLocation": "2137:8:6", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2669, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2183:8:6" + }, + "parameters": { + "id": 2668, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2667, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "2154:7:6", + "nodeType": "VariableDeclaration", + "scope": 2728, + "src": "2146:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2666, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2146:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2145:17:6" + }, + "returnParameters": { + "id": 2672, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2671, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2728, + "src": "2201:13:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2670, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2201:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "2200:15:6" + }, + "scope": 2756, + "src": "2128:670:6", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 2754, + "nodeType": "Block", + "src": "2998:163:6", + "statements": [ + { + "assignments": [ + 2738 + ], + "declarations": [ + { + "constant": false, + "id": 2738, + "mutability": "mutable", + "name": "$", + "nameLocation": "3040:1:6", + "nodeType": "VariableDeclaration", + "scope": 2754, + "src": "3008:33:6", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721URIStorageStorage_$2620_storage_ptr", + "typeString": "struct ERC721URIStorageUpgradeable.ERC721URIStorageStorage" + }, + "typeName": { + "id": 2737, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2736, + "name": "ERC721URIStorageStorage", + "nameLocations": [ + "3008:23:6" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2620, + "src": "3008:23:6" + }, + "referencedDeclaration": 2620, + "src": "3008:23:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721URIStorageStorage_$2620_storage_ptr", + "typeString": "struct ERC721URIStorageUpgradeable.ERC721URIStorageStorage" + } + }, + "visibility": "internal" + } + ], + "id": 2741, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2739, + "name": "_getERC721URIStorageStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2631, + "src": "3044:27:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ERC721URIStorageStorage_$2620_storage_ptr_$", + "typeString": "function () pure returns (struct ERC721URIStorageUpgradeable.ERC721URIStorageStorage storage pointer)" + } + }, + "id": 2740, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3044:29:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721URIStorageStorage_$2620_storage_ptr", + "typeString": "struct ERC721URIStorageUpgradeable.ERC721URIStorageStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3008:65:6" + }, + { + "expression": { + "id": 2748, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 2742, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2738, + "src": "3083:1:6", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ERC721URIStorageStorage_$2620_storage_ptr", + "typeString": "struct ERC721URIStorageUpgradeable.ERC721URIStorageStorage storage pointer" + } + }, + "id": 2745, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3085:10:6", + "memberName": "_tokenURIs", + "nodeType": "MemberAccess", + "referencedDeclaration": 2619, + "src": "3083:12:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string storage ref)" + } + }, + "id": 2746, + "indexExpression": { + "id": 2744, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2731, + "src": "3096:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3083:21:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 2747, + "name": "_tokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2733, + "src": "3107:9:6", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "3083:33:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 2749, + "nodeType": "ExpressionStatement", + "src": "3083:33:6" + }, + { + "eventCall": { + "arguments": [ + { + "id": 2751, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2731, + "src": "3146:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2750, + "name": "MetadataUpdate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3383, + "src": "3131:14:6", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 2752, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3131:23:6", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2753, + "nodeType": "EmitStatement", + "src": "3126:28:6" + } + ] + }, + "documentation": { + "id": 2729, + "nodeType": "StructuredDocumentation", + "src": "2804:108:6", + "text": " @dev Sets `_tokenURI` as the tokenURI of `tokenId`.\n Emits {MetadataUpdate}." + }, + "id": 2755, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setTokenURI", + "nameLocation": "2926:12:6", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2734, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2731, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "2947:7:6", + "nodeType": "VariableDeclaration", + "scope": 2755, + "src": "2939:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2730, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2939:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 2733, + "mutability": "mutable", + "name": "_tokenURI", + "nameLocation": "2970:9:6", + "nodeType": "VariableDeclaration", + "scope": 2755, + "src": "2956:23:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2732, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2956:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "2938:42:6" + }, + "returnParameters": { + "id": 2735, + "nodeType": "ParameterList", + "parameters": [], + "src": "2998:0:6" + }, + "scope": 2756, + "src": "2917:244:6", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 2757, + "src": "578:2585:6", + "usedErrors": [ + 603, + 606, + 3453, + 3458, + 3467, + 3472, + 3477, + 3484, + 3489, + 3494 + ], + "usedEvents": [ + 611, + 3383, + 3390, + 4966, + 4975, + 4984 + ] + } + ], + "src": "128:3036:6" + }, + "id": 6 + }, + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "exportedSymbols": { + "ContextUpgradeable": [ + 2802 + ], + "Initializable": [ + 840 + ] + }, + "id": 2803, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2758, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "101:24:7" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "../proxy/utils/Initializable.sol", + "id": 2760, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2803, + "sourceUnit": 841, + "src": "126:63:7", + "symbolAliases": [ + { + "foreign": { + "id": 2759, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 840, + "src": "134:13:7", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 2762, + "name": "Initializable", + "nameLocations": [ + "728:13:7" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 840, + "src": "728:13:7" + }, + "id": 2763, + "nodeType": "InheritanceSpecifier", + "src": "728:13:7" + } + ], + "canonicalName": "ContextUpgradeable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 2761, + "nodeType": "StructuredDocumentation", + "src": "191:496:7", + "text": " @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts." + }, + "fullyImplemented": true, + "id": 2802, + "linearizedBaseContracts": [ + 2802, + 840 + ], + "name": "ContextUpgradeable", + "nameLocation": "706:18:7", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 2768, + "nodeType": "Block", + "src": "800:7:7", + "statements": [] + }, + "id": 2769, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2766, + "kind": "modifierInvocation", + "modifierName": { + "id": 2765, + "name": "onlyInitializing", + "nameLocations": [ + "783:16:7" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 749, + "src": "783:16:7" + }, + "nodeType": "ModifierInvocation", + "src": "783:16:7" + } + ], + "name": "__Context_init", + "nameLocation": "757:14:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2764, + "nodeType": "ParameterList", + "parameters": [], + "src": "771:2:7" + }, + "returnParameters": { + "id": 2767, + "nodeType": "ParameterList", + "parameters": [], + "src": "800:0:7" + }, + "scope": 2802, + "src": "748:59:7", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2774, + "nodeType": "Block", + "src": "875:7:7", + "statements": [] + }, + "id": 2775, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2772, + "kind": "modifierInvocation", + "modifierName": { + "id": 2771, + "name": "onlyInitializing", + "nameLocations": [ + "858:16:7" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 749, + "src": "858:16:7" + }, + "nodeType": "ModifierInvocation", + "src": "858:16:7" + } + ], + "name": "__Context_init_unchained", + "nameLocation": "822:24:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2770, + "nodeType": "ParameterList", + "parameters": [], + "src": "846:2:7" + }, + "returnParameters": { + "id": 2773, + "nodeType": "ParameterList", + "parameters": [], + "src": "875:0:7" + }, + "scope": 2802, + "src": "813:69:7", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2783, + "nodeType": "Block", + "src": "949:34:7", + "statements": [ + { + "expression": { + "expression": { + "id": 2780, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "966:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "970:6:7", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "966:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2779, + "id": 2782, + "nodeType": "Return", + "src": "959:17:7" + } + ] + }, + "id": 2784, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgSender", + "nameLocation": "896:10:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2776, + "nodeType": "ParameterList", + "parameters": [], + "src": "906:2:7" + }, + "returnParameters": { + "id": 2779, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2778, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2784, + "src": "940:7:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2777, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "940:7:7", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "939:9:7" + }, + "scope": 2802, + "src": "887:96:7", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2792, + "nodeType": "Block", + "src": "1056:32:7", + "statements": [ + { + "expression": { + "expression": { + "id": 2789, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1073:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2790, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1077:4:7", + "memberName": "data", + "nodeType": "MemberAccess", + "src": "1073:8:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "functionReturnParameters": 2788, + "id": 2791, + "nodeType": "Return", + "src": "1066:15:7" + } + ] + }, + "id": 2793, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgData", + "nameLocation": "998:8:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2785, + "nodeType": "ParameterList", + "parameters": [], + "src": "1006:2:7" + }, + "returnParameters": { + "id": 2788, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2787, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2793, + "src": "1040:14:7", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2786, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1040:5:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "1039:16:7" + }, + "scope": 2802, + "src": "989:99:7", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2800, + "nodeType": "Block", + "src": "1166:25:7", + "statements": [ + { + "expression": { + "hexValue": "30", + "id": 2798, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1183:1:7", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 2797, + "id": 2799, + "nodeType": "Return", + "src": "1176:8:7" + } + ] + }, + "id": 2801, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_contextSuffixLength", + "nameLocation": "1103:20:7", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2794, + "nodeType": "ParameterList", + "parameters": [], + "src": "1123:2:7" + }, + "returnParameters": { + "id": 2797, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2796, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2801, + "src": "1157:7:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2795, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1157:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1156:9:7" + }, + "scope": 2802, + "src": "1094:97:7", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 2803, + "src": "688:505:7", + "usedErrors": [ + 603, + 606 + ], + "usedEvents": [ + 611 + ] + } + ], + "src": "101:1093:7" + }, + "id": 7 + }, + "@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol", + "exportedSymbols": { + "ContextUpgradeable": [ + 2802 + ], + "Initializable": [ + 840 + ], + "PausableUpgradeable": [ + 2978 + ] + }, + "id": 2979, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2804, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "102:24:8" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol", + "file": "../utils/ContextUpgradeable.sol", + "id": 2806, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2979, + "sourceUnit": 2803, + "src": "128:67:8", + "symbolAliases": [ + { + "foreign": { + "id": 2805, + "name": "ContextUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2802, + "src": "136:18:8", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "../proxy/utils/Initializable.sol", + "id": 2808, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 2979, + "sourceUnit": 841, + "src": "196:63:8", + "symbolAliases": [ + { + "foreign": { + "id": 2807, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 840, + "src": "204:13:8", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 2810, + "name": "Initializable", + "nameLocations": [ + "742:13:8" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 840, + "src": "742:13:8" + }, + "id": 2811, + "nodeType": "InheritanceSpecifier", + "src": "742:13:8" + }, + { + "baseName": { + "id": 2812, + "name": "ContextUpgradeable", + "nameLocations": [ + "757:18:8" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2802, + "src": "757:18:8" + }, + "id": 2813, + "nodeType": "InheritanceSpecifier", + "src": "757:18:8" + } + ], + "canonicalName": "PausableUpgradeable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 2809, + "nodeType": "StructuredDocumentation", + "src": "261:439:8", + "text": " @dev Contract module which allows children to implement an emergency stop\n mechanism that can be triggered by an authorized account.\n This module is used through inheritance. It will make available the\n modifiers `whenNotPaused` and `whenPaused`, which can be applied to\n the functions of your contract. Note that they will not be pausable by\n simply including this module, only once the modifiers are put in place." + }, + "fullyImplemented": true, + "id": 2978, + "linearizedBaseContracts": [ + 2978, + 2802, + 840 + ], + "name": "PausableUpgradeable", + "nameLocation": "719:19:8", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "PausableUpgradeable.PausableStorage", + "documentation": { + "id": 2814, + "nodeType": "StructuredDocumentation", + "src": "782:66:8", + "text": "@custom:storage-location erc7201:openzeppelin.storage.Pausable" + }, + "id": 2817, + "members": [ + { + "constant": false, + "id": 2816, + "mutability": "mutable", + "name": "_paused", + "nameLocation": "891:7:8", + "nodeType": "VariableDeclaration", + "scope": 2817, + "src": "886:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2815, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "886:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "name": "PausableStorage", + "nameLocation": "860:15:8", + "nodeType": "StructDefinition", + "scope": 2978, + "src": "853:52:8", + "visibility": "public" + }, + { + "constant": true, + "id": 2820, + "mutability": "constant", + "name": "PausableStorageLocation", + "nameLocation": "1048:23:8", + "nodeType": "VariableDeclaration", + "scope": 2978, + "src": "1023:117:8", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2818, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1023:7:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307863643565643135633665313837653737653961656538383138346332316634663231383261623538323763623362376530376662656463643633663033333030", + "id": 2819, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1074:66:8", + "typeDescriptions": { + "typeIdentifier": "t_rational_92891662540554778686986514950364265630913525426840345632122912437671245656832_by_1", + "typeString": "int_const 9289...(69 digits omitted)...6832" + }, + "value": "0xcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300" + }, + "visibility": "private" + }, + { + "body": { + "id": 2827, + "nodeType": "Block", + "src": "1227:82:8", + "statements": [ + { + "AST": { + "nativeSrc": "1246:57:8", + "nodeType": "YulBlock", + "src": "1246:57:8", + "statements": [ + { + "nativeSrc": "1260:33:8", + "nodeType": "YulAssignment", + "src": "1260:33:8", + "value": { + "name": "PausableStorageLocation", + "nativeSrc": "1270:23:8", + "nodeType": "YulIdentifier", + "src": "1270:23:8" + }, + "variableNames": [ + { + "name": "$.slot", + "nativeSrc": "1260:6:8", + "nodeType": "YulIdentifier", + "src": "1260:6:8" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 2824, + "isOffset": false, + "isSlot": true, + "src": "1260:6:8", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 2820, + "isOffset": false, + "isSlot": false, + "src": "1270:23:8", + "valueSize": 1 + } + ], + "id": 2826, + "nodeType": "InlineAssembly", + "src": "1237:66:8" + } + ] + }, + "id": 2828, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getPausableStorage", + "nameLocation": "1156:19:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2821, + "nodeType": "ParameterList", + "parameters": [], + "src": "1175:2:8" + }, + "returnParameters": { + "id": 2825, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2824, + "mutability": "mutable", + "name": "$", + "nameLocation": "1224:1:8", + "nodeType": "VariableDeclaration", + "scope": 2828, + "src": "1200:25:8", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PausableStorage_$2817_storage_ptr", + "typeString": "struct PausableUpgradeable.PausableStorage" + }, + "typeName": { + "id": 2823, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2822, + "name": "PausableStorage", + "nameLocations": [ + "1200:15:8" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2817, + "src": "1200:15:8" + }, + "referencedDeclaration": 2817, + "src": "1200:15:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PausableStorage_$2817_storage_ptr", + "typeString": "struct PausableUpgradeable.PausableStorage" + } + }, + "visibility": "internal" + } + ], + "src": "1199:27:8" + }, + "scope": 2978, + "src": "1147:162:8", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": { + "id": 2829, + "nodeType": "StructuredDocumentation", + "src": "1315:73:8", + "text": " @dev Emitted when the pause is triggered by `account`." + }, + "eventSelector": "62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258", + "id": 2833, + "name": "Paused", + "nameLocation": "1399:6:8", + "nodeType": "EventDefinition", + "parameters": { + "id": 2832, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2831, + "indexed": false, + "mutability": "mutable", + "name": "account", + "nameLocation": "1414:7:8", + "nodeType": "VariableDeclaration", + "scope": 2833, + "src": "1406:15:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2830, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1406:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1405:17:8" + }, + "src": "1393:30:8" + }, + { + "anonymous": false, + "documentation": { + "id": 2834, + "nodeType": "StructuredDocumentation", + "src": "1429:70:8", + "text": " @dev Emitted when the pause is lifted by `account`." + }, + "eventSelector": "5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa", + "id": 2838, + "name": "Unpaused", + "nameLocation": "1510:8:8", + "nodeType": "EventDefinition", + "parameters": { + "id": 2837, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2836, + "indexed": false, + "mutability": "mutable", + "name": "account", + "nameLocation": "1527:7:8", + "nodeType": "VariableDeclaration", + "scope": 2838, + "src": "1519:15:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2835, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1519:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1518:17:8" + }, + "src": "1504:32:8" + }, + { + "documentation": { + "id": 2839, + "nodeType": "StructuredDocumentation", + "src": "1542:76:8", + "text": " @dev The operation failed because the contract is paused." + }, + "errorSelector": "d93c0665", + "id": 2841, + "name": "EnforcedPause", + "nameLocation": "1629:13:8", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 2840, + "nodeType": "ParameterList", + "parameters": [], + "src": "1642:2:8" + }, + "src": "1623:22:8" + }, + { + "documentation": { + "id": 2842, + "nodeType": "StructuredDocumentation", + "src": "1651:80:8", + "text": " @dev The operation failed because the contract is not paused." + }, + "errorSelector": "8dfc202b", + "id": 2844, + "name": "ExpectedPause", + "nameLocation": "1742:13:8", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 2843, + "nodeType": "ParameterList", + "parameters": [], + "src": "1755:2:8" + }, + "src": "1736:22:8" + }, + { + "body": { + "id": 2853, + "nodeType": "Block", + "src": "1889:44:8", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2850, + "name": "__Pausable_init_unchained", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2872, + "src": "1899:25:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 2851, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1899:27:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2852, + "nodeType": "ExpressionStatement", + "src": "1899:27:8" + } + ] + }, + "documentation": { + "id": 2845, + "nodeType": "StructuredDocumentation", + "src": "1764:67:8", + "text": " @dev Initializes the contract in unpaused state." + }, + "id": 2854, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2848, + "kind": "modifierInvocation", + "modifierName": { + "id": 2847, + "name": "onlyInitializing", + "nameLocations": [ + "1872:16:8" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 749, + "src": "1872:16:8" + }, + "nodeType": "ModifierInvocation", + "src": "1872:16:8" + } + ], + "name": "__Pausable_init", + "nameLocation": "1845:15:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2846, + "nodeType": "ParameterList", + "parameters": [], + "src": "1860:2:8" + }, + "returnParameters": { + "id": 2849, + "nodeType": "ParameterList", + "parameters": [], + "src": "1889:0:8" + }, + "scope": 2978, + "src": "1836:97:8", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2871, + "nodeType": "Block", + "src": "2002:93:8", + "statements": [ + { + "assignments": [ + 2861 + ], + "declarations": [ + { + "constant": false, + "id": 2861, + "mutability": "mutable", + "name": "$", + "nameLocation": "2036:1:8", + "nodeType": "VariableDeclaration", + "scope": 2871, + "src": "2012:25:8", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PausableStorage_$2817_storage_ptr", + "typeString": "struct PausableUpgradeable.PausableStorage" + }, + "typeName": { + "id": 2860, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2859, + "name": "PausableStorage", + "nameLocations": [ + "2012:15:8" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2817, + "src": "2012:15:8" + }, + "referencedDeclaration": 2817, + "src": "2012:15:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PausableStorage_$2817_storage_ptr", + "typeString": "struct PausableUpgradeable.PausableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 2864, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2862, + "name": "_getPausableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2828, + "src": "2040:19:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PausableStorage_$2817_storage_ptr_$", + "typeString": "function () pure returns (struct PausableUpgradeable.PausableStorage storage pointer)" + } + }, + "id": 2863, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2040:21:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PausableStorage_$2817_storage_ptr", + "typeString": "struct PausableUpgradeable.PausableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2012:49:8" + }, + { + "expression": { + "id": 2869, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 2865, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2861, + "src": "2071:1:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PausableStorage_$2817_storage_ptr", + "typeString": "struct PausableUpgradeable.PausableStorage storage pointer" + } + }, + "id": 2867, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "2073:7:8", + "memberName": "_paused", + "nodeType": "MemberAccess", + "referencedDeclaration": 2816, + "src": "2071:9:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "66616c7365", + "id": 2868, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2083:5:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "2071:17:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2870, + "nodeType": "ExpressionStatement", + "src": "2071:17:8" + } + ] + }, + "id": 2872, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2857, + "kind": "modifierInvocation", + "modifierName": { + "id": 2856, + "name": "onlyInitializing", + "nameLocations": [ + "1985:16:8" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 749, + "src": "1985:16:8" + }, + "nodeType": "ModifierInvocation", + "src": "1985:16:8" + } + ], + "name": "__Pausable_init_unchained", + "nameLocation": "1948:25:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2855, + "nodeType": "ParameterList", + "parameters": [], + "src": "1973:2:8" + }, + "returnParameters": { + "id": 2858, + "nodeType": "ParameterList", + "parameters": [], + "src": "2002:0:8" + }, + "scope": 2978, + "src": "1939:156:8", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2879, + "nodeType": "Block", + "src": "2306:47:8", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2875, + "name": "_requireNotPaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2916, + "src": "2316:17:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$__$", + "typeString": "function () view" + } + }, + "id": 2876, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2316:19:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2877, + "nodeType": "ExpressionStatement", + "src": "2316:19:8" + }, + { + "id": 2878, + "nodeType": "PlaceholderStatement", + "src": "2345:1:8" + } + ] + }, + "documentation": { + "id": 2873, + "nodeType": "StructuredDocumentation", + "src": "2101:175:8", + "text": " @dev Modifier to make a function callable only when the contract is not paused.\n Requirements:\n - The contract must not be paused." + }, + "id": 2880, + "name": "whenNotPaused", + "nameLocation": "2290:13:8", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 2874, + "nodeType": "ParameterList", + "parameters": [], + "src": "2303:2:8" + }, + "src": "2281:72:8", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2887, + "nodeType": "Block", + "src": "2553:44:8", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2883, + "name": "_requirePaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2929, + "src": "2563:14:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$__$", + "typeString": "function () view" + } + }, + "id": 2884, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2563:16:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2885, + "nodeType": "ExpressionStatement", + "src": "2563:16:8" + }, + { + "id": 2886, + "nodeType": "PlaceholderStatement", + "src": "2589:1:8" + } + ] + }, + "documentation": { + "id": 2881, + "nodeType": "StructuredDocumentation", + "src": "2359:167:8", + "text": " @dev Modifier to make a function callable only when the contract is paused.\n Requirements:\n - The contract must be paused." + }, + "id": 2888, + "name": "whenPaused", + "nameLocation": "2540:10:8", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 2882, + "nodeType": "ParameterList", + "parameters": [], + "src": "2550:2:8" + }, + "src": "2531:66:8", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 2903, + "nodeType": "Block", + "src": "2745:92:8", + "statements": [ + { + "assignments": [ + 2896 + ], + "declarations": [ + { + "constant": false, + "id": 2896, + "mutability": "mutable", + "name": "$", + "nameLocation": "2779:1:8", + "nodeType": "VariableDeclaration", + "scope": 2903, + "src": "2755:25:8", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PausableStorage_$2817_storage_ptr", + "typeString": "struct PausableUpgradeable.PausableStorage" + }, + "typeName": { + "id": 2895, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2894, + "name": "PausableStorage", + "nameLocations": [ + "2755:15:8" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2817, + "src": "2755:15:8" + }, + "referencedDeclaration": 2817, + "src": "2755:15:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PausableStorage_$2817_storage_ptr", + "typeString": "struct PausableUpgradeable.PausableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 2899, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2897, + "name": "_getPausableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2828, + "src": "2783:19:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PausableStorage_$2817_storage_ptr_$", + "typeString": "function () pure returns (struct PausableUpgradeable.PausableStorage storage pointer)" + } + }, + "id": 2898, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2783:21:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PausableStorage_$2817_storage_ptr", + "typeString": "struct PausableUpgradeable.PausableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2755:49:8" + }, + { + "expression": { + "expression": { + "id": 2900, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2896, + "src": "2821:1:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PausableStorage_$2817_storage_ptr", + "typeString": "struct PausableUpgradeable.PausableStorage storage pointer" + } + }, + "id": 2901, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2823:7:8", + "memberName": "_paused", + "nodeType": "MemberAccess", + "referencedDeclaration": 2816, + "src": "2821:9:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2893, + "id": 2902, + "nodeType": "Return", + "src": "2814:16:8" + } + ] + }, + "documentation": { + "id": 2889, + "nodeType": "StructuredDocumentation", + "src": "2603:84:8", + "text": " @dev Returns true if the contract is paused, and false otherwise." + }, + "functionSelector": "5c975abb", + "id": 2904, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "paused", + "nameLocation": "2701:6:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2890, + "nodeType": "ParameterList", + "parameters": [], + "src": "2707:2:8" + }, + "returnParameters": { + "id": 2893, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2892, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 2904, + "src": "2739:4:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2891, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2739:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2738:6:8" + }, + "scope": 2978, + "src": "2692:145:8", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 2915, + "nodeType": "Block", + "src": "2956:77:8", + "statements": [ + { + "condition": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2908, + "name": "paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2904, + "src": "2970:6:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 2909, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2970:8:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2914, + "nodeType": "IfStatement", + "src": "2966:61:8", + "trueBody": { + "id": 2913, + "nodeType": "Block", + "src": "2980:47:8", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2910, + "name": "EnforcedPause", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2841, + "src": "3001:13:8", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2911, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3001:15:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2912, + "nodeType": "RevertStatement", + "src": "2994:22:8" + } + ] + } + } + ] + }, + "documentation": { + "id": 2905, + "nodeType": "StructuredDocumentation", + "src": "2843:57:8", + "text": " @dev Throws if the contract is paused." + }, + "id": 2916, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_requireNotPaused", + "nameLocation": "2914:17:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2906, + "nodeType": "ParameterList", + "parameters": [], + "src": "2931:2:8" + }, + "returnParameters": { + "id": 2907, + "nodeType": "ParameterList", + "parameters": [], + "src": "2956:0:8" + }, + "scope": 2978, + "src": "2905:128:8", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2928, + "nodeType": "Block", + "src": "3153:78:8", + "statements": [ + { + "condition": { + "id": 2922, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "3167:9:8", + "subExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2920, + "name": "paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2904, + "src": "3168:6:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bool_$", + "typeString": "function () view returns (bool)" + } + }, + "id": 2921, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3168:8:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2927, + "nodeType": "IfStatement", + "src": "3163:62:8", + "trueBody": { + "id": 2926, + "nodeType": "Block", + "src": "3178:47:8", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2923, + "name": "ExpectedPause", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2844, + "src": "3199:13:8", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2924, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3199:15:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2925, + "nodeType": "RevertStatement", + "src": "3192:22:8" + } + ] + } + } + ] + }, + "documentation": { + "id": 2917, + "nodeType": "StructuredDocumentation", + "src": "3039:61:8", + "text": " @dev Throws if the contract is not paused." + }, + "id": 2929, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_requirePaused", + "nameLocation": "3114:14:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2918, + "nodeType": "ParameterList", + "parameters": [], + "src": "3128:2:8" + }, + "returnParameters": { + "id": 2919, + "nodeType": "ParameterList", + "parameters": [], + "src": "3153:0:8" + }, + "scope": 2978, + "src": "3105:126:8", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2952, + "nodeType": "Block", + "src": "3415:127:8", + "statements": [ + { + "assignments": [ + 2937 + ], + "declarations": [ + { + "constant": false, + "id": 2937, + "mutability": "mutable", + "name": "$", + "nameLocation": "3449:1:8", + "nodeType": "VariableDeclaration", + "scope": 2952, + "src": "3425:25:8", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PausableStorage_$2817_storage_ptr", + "typeString": "struct PausableUpgradeable.PausableStorage" + }, + "typeName": { + "id": 2936, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2935, + "name": "PausableStorage", + "nameLocations": [ + "3425:15:8" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2817, + "src": "3425:15:8" + }, + "referencedDeclaration": 2817, + "src": "3425:15:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PausableStorage_$2817_storage_ptr", + "typeString": "struct PausableUpgradeable.PausableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 2940, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2938, + "name": "_getPausableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2828, + "src": "3453:19:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PausableStorage_$2817_storage_ptr_$", + "typeString": "function () pure returns (struct PausableUpgradeable.PausableStorage storage pointer)" + } + }, + "id": 2939, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3453:21:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PausableStorage_$2817_storage_ptr", + "typeString": "struct PausableUpgradeable.PausableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3425:49:8" + }, + { + "expression": { + "id": 2945, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 2941, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2937, + "src": "3484:1:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PausableStorage_$2817_storage_ptr", + "typeString": "struct PausableUpgradeable.PausableStorage storage pointer" + } + }, + "id": 2943, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "3486:7:8", + "memberName": "_paused", + "nodeType": "MemberAccess", + "referencedDeclaration": 2816, + "src": "3484:9:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 2944, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3496:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "3484:16:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2946, + "nodeType": "ExpressionStatement", + "src": "3484:16:8" + }, + { + "eventCall": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2948, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2784, + "src": "3522:10:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 2949, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3522:12:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2947, + "name": "Paused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2833, + "src": "3515:6:8", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 2950, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3515:20:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2951, + "nodeType": "EmitStatement", + "src": "3510:25:8" + } + ] + }, + "documentation": { + "id": 2930, + "nodeType": "StructuredDocumentation", + "src": "3237:124:8", + "text": " @dev Triggers stopped state.\n Requirements:\n - The contract must not be paused." + }, + "id": 2953, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2933, + "kind": "modifierInvocation", + "modifierName": { + "id": 2932, + "name": "whenNotPaused", + "nameLocations": [ + "3401:13:8" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2880, + "src": "3401:13:8" + }, + "nodeType": "ModifierInvocation", + "src": "3401:13:8" + } + ], + "name": "_pause", + "nameLocation": "3375:6:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2931, + "nodeType": "ParameterList", + "parameters": [], + "src": "3381:2:8" + }, + "returnParameters": { + "id": 2934, + "nodeType": "ParameterList", + "parameters": [], + "src": "3415:0:8" + }, + "scope": 2978, + "src": "3366:176:8", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2976, + "nodeType": "Block", + "src": "3722:130:8", + "statements": [ + { + "assignments": [ + 2961 + ], + "declarations": [ + { + "constant": false, + "id": 2961, + "mutability": "mutable", + "name": "$", + "nameLocation": "3756:1:8", + "nodeType": "VariableDeclaration", + "scope": 2976, + "src": "3732:25:8", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PausableStorage_$2817_storage_ptr", + "typeString": "struct PausableUpgradeable.PausableStorage" + }, + "typeName": { + "id": 2960, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 2959, + "name": "PausableStorage", + "nameLocations": [ + "3732:15:8" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2817, + "src": "3732:15:8" + }, + "referencedDeclaration": 2817, + "src": "3732:15:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PausableStorage_$2817_storage_ptr", + "typeString": "struct PausableUpgradeable.PausableStorage" + } + }, + "visibility": "internal" + } + ], + "id": 2964, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2962, + "name": "_getPausableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2828, + "src": "3760:19:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PausableStorage_$2817_storage_ptr_$", + "typeString": "function () pure returns (struct PausableUpgradeable.PausableStorage storage pointer)" + } + }, + "id": 2963, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3760:21:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PausableStorage_$2817_storage_ptr", + "typeString": "struct PausableUpgradeable.PausableStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3732:49:8" + }, + { + "expression": { + "id": 2969, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 2965, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2961, + "src": "3791:1:8", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PausableStorage_$2817_storage_ptr", + "typeString": "struct PausableUpgradeable.PausableStorage storage pointer" + } + }, + "id": 2967, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "3793:7:8", + "memberName": "_paused", + "nodeType": "MemberAccess", + "referencedDeclaration": 2816, + "src": "3791:9:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "66616c7365", + "id": 2968, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3803:5:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "3791:17:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2970, + "nodeType": "ExpressionStatement", + "src": "3791:17:8" + }, + { + "eventCall": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2972, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2784, + "src": "3832:10:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 2973, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3832:12:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2971, + "name": "Unpaused", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2838, + "src": "3823:8:8", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 2974, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3823:22:8", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2975, + "nodeType": "EmitStatement", + "src": "3818:27:8" + } + ] + }, + "documentation": { + "id": 2954, + "nodeType": "StructuredDocumentation", + "src": "3548:121:8", + "text": " @dev Returns to normal state.\n Requirements:\n - The contract must be paused." + }, + "id": 2977, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 2957, + "kind": "modifierInvocation", + "modifierName": { + "id": 2956, + "name": "whenPaused", + "nameLocations": [ + "3711:10:8" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2888, + "src": "3711:10:8" + }, + "nodeType": "ModifierInvocation", + "src": "3711:10:8" + } + ], + "name": "_unpause", + "nameLocation": "3683:8:8", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2955, + "nodeType": "ParameterList", + "parameters": [], + "src": "3691:2:8" + }, + "returnParameters": { + "id": 2958, + "nodeType": "ParameterList", + "parameters": [], + "src": "3722:0:8" + }, + "scope": 2978, + "src": "3674:178:8", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 2979, + "src": "701:3153:8", + "usedErrors": [ + 603, + 606, + 2841, + 2844 + ], + "usedEvents": [ + 611, + 2833, + 2838 + ] + } + ], + "src": "102:3753:8" + }, + "id": 8 + }, + "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol", + "exportedSymbols": { + "Initializable": [ + 840 + ], + "ReentrancyGuardUpgradeable": [ + 3107 + ] + }, + "id": 3108, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2980, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "109:24:9" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "../proxy/utils/Initializable.sol", + "id": 2982, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3108, + "sourceUnit": 841, + "src": "134:63:9", + "symbolAliases": [ + { + "foreign": { + "id": 2981, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 840, + "src": "142:13:9", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 2984, + "name": "Initializable", + "nameLocations": [ + "1142:13:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 840, + "src": "1142:13:9" + }, + "id": 2985, + "nodeType": "InheritanceSpecifier", + "src": "1142:13:9" + } + ], + "canonicalName": "ReentrancyGuardUpgradeable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 2983, + "nodeType": "StructuredDocumentation", + "src": "199:894:9", + "text": " @dev Contract module that helps prevent reentrant calls to a function.\n Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n available, which can be applied to functions to make sure there are no nested\n (reentrant) calls to them.\n Note that because there is a single `nonReentrant` guard, functions marked as\n `nonReentrant` may not call one another. This can be worked around by making\n those functions `private`, and then adding `external` `nonReentrant` entry\n points to them.\n TIP: If EIP-1153 (transient storage) is available on the chain you're deploying at,\n consider using {ReentrancyGuardTransient} instead.\n TIP: If you would like to learn more about reentrancy and alternative ways\n to protect against it, check out our blog post\n https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]." + }, + "fullyImplemented": true, + "id": 3107, + "linearizedBaseContracts": [ + 3107, + 840 + ], + "name": "ReentrancyGuardUpgradeable", + "nameLocation": "1112:26:9", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 2988, + "mutability": "constant", + "name": "NOT_ENTERED", + "nameLocation": "1935:11:9", + "nodeType": "VariableDeclaration", + "scope": 3107, + "src": "1910:40:9", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2986, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1910:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "31", + "id": 2987, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1949:1:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "visibility": "private" + }, + { + "constant": true, + "id": 2991, + "mutability": "constant", + "name": "ENTERED", + "nameLocation": "1981:7:9", + "nodeType": "VariableDeclaration", + "scope": 3107, + "src": "1956:36:9", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2989, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1956:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "32", + "id": 2990, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1991:1:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "visibility": "private" + }, + { + "canonicalName": "ReentrancyGuardUpgradeable.ReentrancyGuardStorage", + "documentation": { + "id": 2992, + "nodeType": "StructuredDocumentation", + "src": "1999:73:9", + "text": "@custom:storage-location erc7201:openzeppelin.storage.ReentrancyGuard" + }, + "id": 2995, + "members": [ + { + "constant": false, + "id": 2994, + "mutability": "mutable", + "name": "_status", + "nameLocation": "2125:7:9", + "nodeType": "VariableDeclaration", + "scope": 2995, + "src": "2117:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2993, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2117:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "ReentrancyGuardStorage", + "nameLocation": "2084:22:9", + "nodeType": "StructDefinition", + "scope": 3107, + "src": "2077:62:9", + "visibility": "public" + }, + { + "constant": true, + "id": 2998, + "mutability": "constant", + "name": "ReentrancyGuardStorageLocation", + "nameLocation": "2289:30:9", + "nodeType": "VariableDeclaration", + "scope": 3107, + "src": "2264:124:9", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2996, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2264:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307839623737396231373432326430646639323232333031386233326234643166613436653037313732336436383137653234383664303033626563633535663030", + "id": 2997, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2322:66:9", + "typeDescriptions": { + "typeIdentifier": "t_rational_70319816728846589445362000750570655803700195216363692647688146666176345628416_by_1", + "typeString": "int_const 7031...(69 digits omitted)...8416" + }, + "value": "0x9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00" + }, + "visibility": "private" + }, + { + "body": { + "id": 3005, + "nodeType": "Block", + "src": "2489:89:9", + "statements": [ + { + "AST": { + "nativeSrc": "2508:64:9", + "nodeType": "YulBlock", + "src": "2508:64:9", + "statements": [ + { + "nativeSrc": "2522:40:9", + "nodeType": "YulAssignment", + "src": "2522:40:9", + "value": { + "name": "ReentrancyGuardStorageLocation", + "nativeSrc": "2532:30:9", + "nodeType": "YulIdentifier", + "src": "2532:30:9" + }, + "variableNames": [ + { + "name": "$.slot", + "nativeSrc": "2522:6:9", + "nodeType": "YulIdentifier", + "src": "2522:6:9" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3002, + "isOffset": false, + "isSlot": true, + "src": "2522:6:9", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 2998, + "isOffset": false, + "isSlot": false, + "src": "2532:30:9", + "valueSize": 1 + } + ], + "id": 3004, + "nodeType": "InlineAssembly", + "src": "2499:73:9" + } + ] + }, + "id": 3006, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getReentrancyGuardStorage", + "nameLocation": "2404:26:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2999, + "nodeType": "ParameterList", + "parameters": [], + "src": "2430:2:9" + }, + "returnParameters": { + "id": 3003, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3002, + "mutability": "mutable", + "name": "$", + "nameLocation": "2486:1:9", + "nodeType": "VariableDeclaration", + "scope": 3006, + "src": "2455:32:9", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$2995_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage" + }, + "typeName": { + "id": 3001, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3000, + "name": "ReentrancyGuardStorage", + "nameLocations": [ + "2455:22:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2995, + "src": "2455:22:9" + }, + "referencedDeclaration": 2995, + "src": "2455:22:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$2995_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage" + } + }, + "visibility": "internal" + } + ], + "src": "2454:34:9" + }, + "scope": 3107, + "src": "2395:183:9", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "documentation": { + "id": 3007, + "nodeType": "StructuredDocumentation", + "src": "2584:52:9", + "text": " @dev Unauthorized reentrant call." + }, + "errorSelector": "3ee5aeb5", + "id": 3009, + "name": "ReentrancyGuardReentrantCall", + "nameLocation": "2647:28:9", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3008, + "nodeType": "ParameterList", + "parameters": [], + "src": "2675:2:9" + }, + "src": "2641:37:9" + }, + { + "body": { + "id": 3017, + "nodeType": "Block", + "src": "2744:51:9", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3014, + "name": "__ReentrancyGuard_init_unchained", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3036, + "src": "2754:32:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 3015, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2754:34:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3016, + "nodeType": "ExpressionStatement", + "src": "2754:34:9" + } + ] + }, + "id": 3018, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 3012, + "kind": "modifierInvocation", + "modifierName": { + "id": 3011, + "name": "onlyInitializing", + "nameLocations": [ + "2727:16:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 749, + "src": "2727:16:9" + }, + "nodeType": "ModifierInvocation", + "src": "2727:16:9" + } + ], + "name": "__ReentrancyGuard_init", + "nameLocation": "2693:22:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3010, + "nodeType": "ParameterList", + "parameters": [], + "src": "2715:2:9" + }, + "returnParameters": { + "id": 3013, + "nodeType": "ParameterList", + "parameters": [], + "src": "2744:0:9" + }, + "scope": 3107, + "src": "2684:111:9", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3035, + "nodeType": "Block", + "src": "2871:113:9", + "statements": [ + { + "assignments": [ + 3025 + ], + "declarations": [ + { + "constant": false, + "id": 3025, + "mutability": "mutable", + "name": "$", + "nameLocation": "2912:1:9", + "nodeType": "VariableDeclaration", + "scope": 3035, + "src": "2881:32:9", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$2995_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage" + }, + "typeName": { + "id": 3024, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3023, + "name": "ReentrancyGuardStorage", + "nameLocations": [ + "2881:22:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2995, + "src": "2881:22:9" + }, + "referencedDeclaration": 2995, + "src": "2881:22:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$2995_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage" + } + }, + "visibility": "internal" + } + ], + "id": 3028, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3026, + "name": "_getReentrancyGuardStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3006, + "src": "2916:26:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ReentrancyGuardStorage_$2995_storage_ptr_$", + "typeString": "function () pure returns (struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer)" + } + }, + "id": 3027, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2916:28:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$2995_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2881:63:9" + }, + { + "expression": { + "id": 3033, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 3029, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3025, + "src": "2954:1:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$2995_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer" + } + }, + "id": 3031, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "2956:7:9", + "memberName": "_status", + "nodeType": "MemberAccess", + "referencedDeclaration": 2994, + "src": "2954:9:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3032, + "name": "NOT_ENTERED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2988, + "src": "2966:11:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2954:23:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3034, + "nodeType": "ExpressionStatement", + "src": "2954:23:9" + } + ] + }, + "id": 3036, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 3021, + "kind": "modifierInvocation", + "modifierName": { + "id": 3020, + "name": "onlyInitializing", + "nameLocations": [ + "2854:16:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 749, + "src": "2854:16:9" + }, + "nodeType": "ModifierInvocation", + "src": "2854:16:9" + } + ], + "name": "__ReentrancyGuard_init_unchained", + "nameLocation": "2810:32:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3019, + "nodeType": "ParameterList", + "parameters": [], + "src": "2842:2:9" + }, + "returnParameters": { + "id": 3022, + "nodeType": "ParameterList", + "parameters": [], + "src": "2871:0:9" + }, + "scope": 3107, + "src": "2801:183:9", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3046, + "nodeType": "Block", + "src": "3385:79:9", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3039, + "name": "_nonReentrantBefore", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3072, + "src": "3395:19:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 3040, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3395:21:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3041, + "nodeType": "ExpressionStatement", + "src": "3395:21:9" + }, + { + "id": 3042, + "nodeType": "PlaceholderStatement", + "src": "3426:1:9" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3043, + "name": "_nonReentrantAfter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3088, + "src": "3437:18:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 3044, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3437:20:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3045, + "nodeType": "ExpressionStatement", + "src": "3437:20:9" + } + ] + }, + "documentation": { + "id": 3037, + "nodeType": "StructuredDocumentation", + "src": "2990:366:9", + "text": " @dev Prevents a contract from calling itself, directly or indirectly.\n Calling a `nonReentrant` function from another `nonReentrant`\n function is not supported. It is possible to prevent this from happening\n by making the `nonReentrant` function external, and making it call a\n `private` function that does the actual work." + }, + "id": 3047, + "name": "nonReentrant", + "nameLocation": "3370:12:9", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 3038, + "nodeType": "ParameterList", + "parameters": [], + "src": "3382:2:9" + }, + "src": "3361:103:9", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3071, + "nodeType": "Block", + "src": "3509:345:9", + "statements": [ + { + "assignments": [ + 3052 + ], + "declarations": [ + { + "constant": false, + "id": 3052, + "mutability": "mutable", + "name": "$", + "nameLocation": "3550:1:9", + "nodeType": "VariableDeclaration", + "scope": 3071, + "src": "3519:32:9", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$2995_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage" + }, + "typeName": { + "id": 3051, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3050, + "name": "ReentrancyGuardStorage", + "nameLocations": [ + "3519:22:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2995, + "src": "3519:22:9" + }, + "referencedDeclaration": 2995, + "src": "3519:22:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$2995_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage" + } + }, + "visibility": "internal" + } + ], + "id": 3055, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3053, + "name": "_getReentrancyGuardStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3006, + "src": "3554:26:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ReentrancyGuardStorage_$2995_storage_ptr_$", + "typeString": "function () pure returns (struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer)" + } + }, + "id": 3054, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3554:28:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$2995_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3519:63:9" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3059, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3056, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3052, + "src": "3670:1:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$2995_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer" + } + }, + "id": 3057, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3672:7:9", + "memberName": "_status", + "nodeType": "MemberAccess", + "referencedDeclaration": 2994, + "src": "3670:9:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 3058, + "name": "ENTERED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2991, + "src": "3683:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3670:20:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3064, + "nodeType": "IfStatement", + "src": "3666:88:9", + "trueBody": { + "id": 3063, + "nodeType": "Block", + "src": "3692:62:9", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3060, + "name": "ReentrancyGuardReentrantCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3009, + "src": "3713:28:9", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 3061, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3713:30:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3062, + "nodeType": "RevertStatement", + "src": "3706:37:9" + } + ] + } + }, + { + "expression": { + "id": 3069, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 3065, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3052, + "src": "3828:1:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$2995_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer" + } + }, + "id": 3067, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "3830:7:9", + "memberName": "_status", + "nodeType": "MemberAccess", + "referencedDeclaration": 2994, + "src": "3828:9:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3068, + "name": "ENTERED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2991, + "src": "3840:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3828:19:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3070, + "nodeType": "ExpressionStatement", + "src": "3828:19:9" + } + ] + }, + "id": 3072, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_nonReentrantBefore", + "nameLocation": "3479:19:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3048, + "nodeType": "ParameterList", + "parameters": [], + "src": "3498:2:9" + }, + "returnParameters": { + "id": 3049, + "nodeType": "ParameterList", + "parameters": [], + "src": "3509:0:9" + }, + "scope": 3107, + "src": "3470:384:9", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 3087, + "nodeType": "Block", + "src": "3898:245:9", + "statements": [ + { + "assignments": [ + 3077 + ], + "declarations": [ + { + "constant": false, + "id": 3077, + "mutability": "mutable", + "name": "$", + "nameLocation": "3939:1:9", + "nodeType": "VariableDeclaration", + "scope": 3087, + "src": "3908:32:9", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$2995_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage" + }, + "typeName": { + "id": 3076, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3075, + "name": "ReentrancyGuardStorage", + "nameLocations": [ + "3908:22:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2995, + "src": "3908:22:9" + }, + "referencedDeclaration": 2995, + "src": "3908:22:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$2995_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage" + } + }, + "visibility": "internal" + } + ], + "id": 3080, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3078, + "name": "_getReentrancyGuardStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3006, + "src": "3943:26:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ReentrancyGuardStorage_$2995_storage_ptr_$", + "typeString": "function () pure returns (struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer)" + } + }, + "id": 3079, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3943:28:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$2995_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3908:63:9" + }, + { + "expression": { + "id": 3085, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 3081, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3077, + "src": "4113:1:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$2995_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer" + } + }, + "id": 3083, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "4115:7:9", + "memberName": "_status", + "nodeType": "MemberAccess", + "referencedDeclaration": 2994, + "src": "4113:9:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3084, + "name": "NOT_ENTERED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2988, + "src": "4125:11:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4113:23:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3086, + "nodeType": "ExpressionStatement", + "src": "4113:23:9" + } + ] + }, + "id": 3088, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_nonReentrantAfter", + "nameLocation": "3869:18:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3073, + "nodeType": "ParameterList", + "parameters": [], + "src": "3887:2:9" + }, + "returnParameters": { + "id": 3074, + "nodeType": "ParameterList", + "parameters": [], + "src": "3898:0:9" + }, + "scope": 3107, + "src": "3860:283:9", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 3105, + "nodeType": "Block", + "src": "4386:117:9", + "statements": [ + { + "assignments": [ + 3096 + ], + "declarations": [ + { + "constant": false, + "id": 3096, + "mutability": "mutable", + "name": "$", + "nameLocation": "4427:1:9", + "nodeType": "VariableDeclaration", + "scope": 3105, + "src": "4396:32:9", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$2995_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage" + }, + "typeName": { + "id": 3095, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 3094, + "name": "ReentrancyGuardStorage", + "nameLocations": [ + "4396:22:9" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2995, + "src": "4396:22:9" + }, + "referencedDeclaration": 2995, + "src": "4396:22:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$2995_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage" + } + }, + "visibility": "internal" + } + ], + "id": 3099, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3097, + "name": "_getReentrancyGuardStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3006, + "src": "4431:26:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ReentrancyGuardStorage_$2995_storage_ptr_$", + "typeString": "function () pure returns (struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer)" + } + }, + "id": 3098, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4431:28:9", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$2995_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4396:63:9" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3103, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3100, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3096, + "src": "4476:1:9", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ReentrancyGuardStorage_$2995_storage_ptr", + "typeString": "struct ReentrancyGuardUpgradeable.ReentrancyGuardStorage storage pointer" + } + }, + "id": 3101, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4478:7:9", + "memberName": "_status", + "nodeType": "MemberAccess", + "referencedDeclaration": 2994, + "src": "4476:9:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 3102, + "name": "ENTERED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2991, + "src": "4489:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4476:20:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3093, + "id": 3104, + "nodeType": "Return", + "src": "4469:27:9" + } + ] + }, + "documentation": { + "id": 3089, + "nodeType": "StructuredDocumentation", + "src": "4149:168:9", + "text": " @dev Returns true if the reentrancy guard is currently set to \"entered\", which indicates there is a\n `nonReentrant` function in the call stack." + }, + "id": 3106, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_reentrancyGuardEntered", + "nameLocation": "4331:23:9", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3090, + "nodeType": "ParameterList", + "parameters": [], + "src": "4354:2:9" + }, + "returnParameters": { + "id": 3093, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3092, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3106, + "src": "4380:4:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3091, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4380:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4379:6:9" + }, + "scope": 3107, + "src": "4322:181:9", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 3108, + "src": "1094:3411:9", + "usedErrors": [ + 603, + 606, + 3009 + ], + "usedEvents": [ + 611 + ] + } + ], + "src": "109:4397:9" + }, + "id": 9 + }, + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol", + "exportedSymbols": { + "ERC165Upgradeable": [ + 3147 + ], + "IERC165": [ + 6389 + ], + "Initializable": [ + 840 + ] + }, + "id": 3148, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3109, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "114:24:10" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol", + "file": "@openzeppelin/contracts/utils/introspection/IERC165.sol", + "id": 3111, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3148, + "sourceUnit": 6390, + "src": "140:80:10", + "symbolAliases": [ + { + "foreign": { + "id": 3110, + "name": "IERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6389, + "src": "148:7:10", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "../../proxy/utils/Initializable.sol", + "id": 3113, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3148, + "sourceUnit": 841, + "src": "221:66:10", + "symbolAliases": [ + { + "foreign": { + "id": 3112, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 840, + "src": "229:13:10", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 3115, + "name": "Initializable", + "nameLocations": [ + "808:13:10" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 840, + "src": "808:13:10" + }, + "id": 3116, + "nodeType": "InheritanceSpecifier", + "src": "808:13:10" + }, + { + "baseName": { + "id": 3117, + "name": "IERC165", + "nameLocations": [ + "823:7:10" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6389, + "src": "823:7:10" + }, + "id": 3118, + "nodeType": "InheritanceSpecifier", + "src": "823:7:10" + } + ], + "canonicalName": "ERC165Upgradeable", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 3114, + "nodeType": "StructuredDocumentation", + "src": "289:479:10", + "text": " @dev Implementation of the {IERC165} interface.\n Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check\n for the additional interface id that will be supported. For example:\n ```solidity\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId);\n }\n ```" + }, + "fullyImplemented": true, + "id": 3147, + "linearizedBaseContracts": [ + 3147, + 6389, + 840 + ], + "name": "ERC165Upgradeable", + "nameLocation": "787:17:10", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 3123, + "nodeType": "Block", + "src": "888:7:10", + "statements": [] + }, + "id": 3124, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 3121, + "kind": "modifierInvocation", + "modifierName": { + "id": 3120, + "name": "onlyInitializing", + "nameLocations": [ + "871:16:10" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 749, + "src": "871:16:10" + }, + "nodeType": "ModifierInvocation", + "src": "871:16:10" + } + ], + "name": "__ERC165_init", + "nameLocation": "846:13:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3119, + "nodeType": "ParameterList", + "parameters": [], + "src": "859:2:10" + }, + "returnParameters": { + "id": 3122, + "nodeType": "ParameterList", + "parameters": [], + "src": "888:0:10" + }, + "scope": 3147, + "src": "837:58:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3129, + "nodeType": "Block", + "src": "962:7:10", + "statements": [] + }, + "id": 3130, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 3127, + "kind": "modifierInvocation", + "modifierName": { + "id": 3126, + "name": "onlyInitializing", + "nameLocations": [ + "945:16:10" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 749, + "src": "945:16:10" + }, + "nodeType": "ModifierInvocation", + "src": "945:16:10" + } + ], + "name": "__ERC165_init_unchained", + "nameLocation": "910:23:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3125, + "nodeType": "ParameterList", + "parameters": [], + "src": "933:2:10" + }, + "returnParameters": { + "id": 3128, + "nodeType": "ParameterList", + "parameters": [], + "src": "962:0:10" + }, + "scope": 3147, + "src": "901:68:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 6388 + ], + "body": { + "id": 3145, + "nodeType": "Block", + "src": "1117:64:10", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 3143, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3138, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3133, + "src": "1134:11:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 3140, + "name": "IERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6389, + "src": "1154:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC165_$6389_$", + "typeString": "type(contract IERC165)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_contract$_IERC165_$6389_$", + "typeString": "type(contract IERC165)" + } + ], + "id": 3139, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "1149:4:10", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 3141, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1149:13:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_contract$_IERC165_$6389", + "typeString": "type(contract IERC165)" + } + }, + "id": 3142, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1163:11:10", + "memberName": "interfaceId", + "nodeType": "MemberAccess", + "src": "1149:25:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "1134:40:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3137, + "id": 3144, + "nodeType": "Return", + "src": "1127:47:10" + } + ] + }, + "documentation": { + "id": 3131, + "nodeType": "StructuredDocumentation", + "src": "974:56:10", + "text": " @dev See {IERC165-supportsInterface}." + }, + "functionSelector": "01ffc9a7", + "id": 3146, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nameLocation": "1044:17:10", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3134, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3133, + "mutability": "mutable", + "name": "interfaceId", + "nameLocation": "1069:11:10", + "nodeType": "VariableDeclaration", + "scope": 3146, + "src": "1062:18:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 3132, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1062:6:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "1061:20:10" + }, + "returnParameters": { + "id": 3137, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3136, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3146, + "src": "1111:4:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3135, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1111:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1110:6:10" + }, + "scope": 3147, + "src": "1035:146:10", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + } + ], + "scope": 3148, + "src": "769:414:10", + "usedErrors": [ + 603, + 606 + ], + "usedEvents": [ + 611 + ] + } + ], + "src": "114:1070:10" + }, + "id": 10 + }, + "@openzeppelin/contracts/access/IAccessControl.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/access/IAccessControl.sol", + "exportedSymbols": { + "IAccessControl": [ + 3230 + ] + }, + "id": 3231, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3149, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "109:24:11" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IAccessControl", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 3150, + "nodeType": "StructuredDocumentation", + "src": "135:90:11", + "text": " @dev External interface of AccessControl declared to support ERC-165 detection." + }, + "fullyImplemented": false, + "id": 3230, + "linearizedBaseContracts": [ + 3230 + ], + "name": "IAccessControl", + "nameLocation": "236:14:11", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 3151, + "nodeType": "StructuredDocumentation", + "src": "257:56:11", + "text": " @dev The `account` is missing a role." + }, + "errorSelector": "e2517d3f", + "id": 3157, + "name": "AccessControlUnauthorizedAccount", + "nameLocation": "324:32:11", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3156, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3153, + "mutability": "mutable", + "name": "account", + "nameLocation": "365:7:11", + "nodeType": "VariableDeclaration", + "scope": 3157, + "src": "357:15:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3152, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "357:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3155, + "mutability": "mutable", + "name": "neededRole", + "nameLocation": "382:10:11", + "nodeType": "VariableDeclaration", + "scope": 3157, + "src": "374:18:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3154, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "374:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "356:37:11" + }, + "src": "318:76:11" + }, + { + "documentation": { + "id": 3158, + "nodeType": "StructuredDocumentation", + "src": "400:148:11", + "text": " @dev The caller of a function is not the expected one.\n NOTE: Don't confuse with {AccessControlUnauthorizedAccount}." + }, + "errorSelector": "6697b232", + "id": 3160, + "name": "AccessControlBadConfirmation", + "nameLocation": "559:28:11", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3159, + "nodeType": "ParameterList", + "parameters": [], + "src": "587:2:11" + }, + "src": "553:37:11" + }, + { + "anonymous": false, + "documentation": { + "id": 3161, + "nodeType": "StructuredDocumentation", + "src": "596:254:11", + "text": " @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`\n `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite\n {RoleAdminChanged} not being emitted signaling this." + }, + "eventSelector": "bd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff", + "id": 3169, + "name": "RoleAdminChanged", + "nameLocation": "861:16:11", + "nodeType": "EventDefinition", + "parameters": { + "id": 3168, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3163, + "indexed": true, + "mutability": "mutable", + "name": "role", + "nameLocation": "894:4:11", + "nodeType": "VariableDeclaration", + "scope": 3169, + "src": "878:20:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3162, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "878:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3165, + "indexed": true, + "mutability": "mutable", + "name": "previousAdminRole", + "nameLocation": "916:17:11", + "nodeType": "VariableDeclaration", + "scope": 3169, + "src": "900:33:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3164, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "900:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3167, + "indexed": true, + "mutability": "mutable", + "name": "newAdminRole", + "nameLocation": "951:12:11", + "nodeType": "VariableDeclaration", + "scope": 3169, + "src": "935:28:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3166, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "935:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "877:87:11" + }, + "src": "855:110:11" + }, + { + "anonymous": false, + "documentation": { + "id": 3170, + "nodeType": "StructuredDocumentation", + "src": "971:295:11", + "text": " @dev Emitted when `account` is granted `role`.\n `sender` is the account that originated the contract call. This account bears the admin role (for the granted role).\n Expected in cases where the role was granted using the internal {AccessControl-_grantRole}." + }, + "eventSelector": "2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d", + "id": 3178, + "name": "RoleGranted", + "nameLocation": "1277:11:11", + "nodeType": "EventDefinition", + "parameters": { + "id": 3177, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3172, + "indexed": true, + "mutability": "mutable", + "name": "role", + "nameLocation": "1305:4:11", + "nodeType": "VariableDeclaration", + "scope": 3178, + "src": "1289:20:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3171, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1289:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3174, + "indexed": true, + "mutability": "mutable", + "name": "account", + "nameLocation": "1327:7:11", + "nodeType": "VariableDeclaration", + "scope": 3178, + "src": "1311:23:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3173, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1311:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3176, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "1352:6:11", + "nodeType": "VariableDeclaration", + "scope": 3178, + "src": "1336:22:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3175, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1336:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1288:71:11" + }, + "src": "1271:89:11" + }, + { + "anonymous": false, + "documentation": { + "id": 3179, + "nodeType": "StructuredDocumentation", + "src": "1366:275:11", + "text": " @dev Emitted when `account` is revoked `role`.\n `sender` is the account that originated the contract call:\n - if using `revokeRole`, it is the admin role bearer\n - if using `renounceRole`, it is the role bearer (i.e. `account`)" + }, + "eventSelector": "f6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b", + "id": 3187, + "name": "RoleRevoked", + "nameLocation": "1652:11:11", + "nodeType": "EventDefinition", + "parameters": { + "id": 3186, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3181, + "indexed": true, + "mutability": "mutable", + "name": "role", + "nameLocation": "1680:4:11", + "nodeType": "VariableDeclaration", + "scope": 3187, + "src": "1664:20:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3180, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1664:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3183, + "indexed": true, + "mutability": "mutable", + "name": "account", + "nameLocation": "1702:7:11", + "nodeType": "VariableDeclaration", + "scope": 3187, + "src": "1686:23:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3182, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1686:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3185, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "1727:6:11", + "nodeType": "VariableDeclaration", + "scope": 3187, + "src": "1711:22:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3184, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1711:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1663:71:11" + }, + "src": "1646:89:11" + }, + { + "documentation": { + "id": 3188, + "nodeType": "StructuredDocumentation", + "src": "1741:76:11", + "text": " @dev Returns `true` if `account` has been granted `role`." + }, + "functionSelector": "91d14854", + "id": 3197, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "hasRole", + "nameLocation": "1831:7:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3193, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3190, + "mutability": "mutable", + "name": "role", + "nameLocation": "1847:4:11", + "nodeType": "VariableDeclaration", + "scope": 3197, + "src": "1839:12:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3189, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1839:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3192, + "mutability": "mutable", + "name": "account", + "nameLocation": "1861:7:11", + "nodeType": "VariableDeclaration", + "scope": 3197, + "src": "1853:15:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3191, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1853:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1838:31:11" + }, + "returnParameters": { + "id": 3196, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3195, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3197, + "src": "1893:4:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3194, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1893:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1892:6:11" + }, + "scope": 3230, + "src": "1822:77:11", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 3198, + "nodeType": "StructuredDocumentation", + "src": "1905:184:11", + "text": " @dev Returns the admin role that controls `role`. See {grantRole} and\n {revokeRole}.\n To change a role's admin, use {AccessControl-_setRoleAdmin}." + }, + "functionSelector": "248a9ca3", + "id": 3205, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getRoleAdmin", + "nameLocation": "2103:12:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3201, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3200, + "mutability": "mutable", + "name": "role", + "nameLocation": "2124:4:11", + "nodeType": "VariableDeclaration", + "scope": 3205, + "src": "2116:12:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3199, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2116:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2115:14:11" + }, + "returnParameters": { + "id": 3204, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3203, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3205, + "src": "2153:7:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3202, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2153:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2152:9:11" + }, + "scope": 3230, + "src": "2094:68:11", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 3206, + "nodeType": "StructuredDocumentation", + "src": "2168:239:11", + "text": " @dev Grants `role` to `account`.\n If `account` had not been already granted `role`, emits a {RoleGranted}\n event.\n Requirements:\n - the caller must have ``role``'s admin role." + }, + "functionSelector": "2f2ff15d", + "id": 3213, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "grantRole", + "nameLocation": "2421:9:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3211, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3208, + "mutability": "mutable", + "name": "role", + "nameLocation": "2439:4:11", + "nodeType": "VariableDeclaration", + "scope": 3213, + "src": "2431:12:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3207, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2431:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3210, + "mutability": "mutable", + "name": "account", + "nameLocation": "2453:7:11", + "nodeType": "VariableDeclaration", + "scope": 3213, + "src": "2445:15:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3209, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2445:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2430:31:11" + }, + "returnParameters": { + "id": 3212, + "nodeType": "ParameterList", + "parameters": [], + "src": "2470:0:11" + }, + "scope": 3230, + "src": "2412:59:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 3214, + "nodeType": "StructuredDocumentation", + "src": "2477:223:11", + "text": " @dev Revokes `role` from `account`.\n If `account` had been granted `role`, emits a {RoleRevoked} event.\n Requirements:\n - the caller must have ``role``'s admin role." + }, + "functionSelector": "d547741f", + "id": 3221, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "revokeRole", + "nameLocation": "2714:10:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3219, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3216, + "mutability": "mutable", + "name": "role", + "nameLocation": "2733:4:11", + "nodeType": "VariableDeclaration", + "scope": 3221, + "src": "2725:12:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3215, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2725:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3218, + "mutability": "mutable", + "name": "account", + "nameLocation": "2747:7:11", + "nodeType": "VariableDeclaration", + "scope": 3221, + "src": "2739:15:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3217, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2739:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2724:31:11" + }, + "returnParameters": { + "id": 3220, + "nodeType": "ParameterList", + "parameters": [], + "src": "2764:0:11" + }, + "scope": 3230, + "src": "2705:60:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 3222, + "nodeType": "StructuredDocumentation", + "src": "2771:491:11", + "text": " @dev Revokes `role` from the calling account.\n Roles are often managed via {grantRole} and {revokeRole}: this function's\n purpose is to provide a mechanism for accounts to lose their privileges\n if they are compromised (such as when a trusted device is misplaced).\n If the calling account had been granted `role`, emits a {RoleRevoked}\n event.\n Requirements:\n - the caller must be `callerConfirmation`." + }, + "functionSelector": "36568abe", + "id": 3229, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "renounceRole", + "nameLocation": "3276:12:11", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3227, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3224, + "mutability": "mutable", + "name": "role", + "nameLocation": "3297:4:11", + "nodeType": "VariableDeclaration", + "scope": 3229, + "src": "3289:12:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3223, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3289:7:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3226, + "mutability": "mutable", + "name": "callerConfirmation", + "nameLocation": "3311:18:11", + "nodeType": "VariableDeclaration", + "scope": 3229, + "src": "3303:26:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3225, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3303:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3288:42:11" + }, + "returnParameters": { + "id": 3228, + "nodeType": "ParameterList", + "parameters": [], + "src": "3339:0:11" + }, + "scope": 3230, + "src": "3267:73:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 3231, + "src": "226:3116:11", + "usedErrors": [ + 3157, + 3160 + ], + "usedEvents": [ + 3169, + 3178, + 3187 + ] + } + ], + "src": "109:3234:11" + }, + "id": 11 + }, + "@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.sol", + "exportedSymbols": { + "IAccessControl": [ + 3230 + ], + "IAccessControlEnumerable": [ + 3256 + ] + }, + "id": 3257, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3232, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "130:24:12" + }, + { + "absolutePath": "@openzeppelin/contracts/access/IAccessControl.sol", + "file": "../IAccessControl.sol", + "id": 3234, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3257, + "sourceUnit": 3231, + "src": "156:53:12", + "symbolAliases": [ + { + "foreign": { + "id": 3233, + "name": "IAccessControl", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3230, + "src": "164:14:12", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 3236, + "name": "IAccessControl", + "nameLocations": [ + "350:14:12" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3230, + "src": "350:14:12" + }, + "id": 3237, + "nodeType": "InheritanceSpecifier", + "src": "350:14:12" + } + ], + "canonicalName": "IAccessControlEnumerable", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 3235, + "nodeType": "StructuredDocumentation", + "src": "211:100:12", + "text": " @dev External interface of AccessControlEnumerable declared to support ERC-165 detection." + }, + "fullyImplemented": false, + "id": 3256, + "linearizedBaseContracts": [ + 3256, + 3230 + ], + "name": "IAccessControlEnumerable", + "nameLocation": "322:24:12", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 3238, + "nodeType": "StructuredDocumentation", + "src": "371:574:12", + "text": " @dev Returns one of the accounts that have `role`. `index` must be a\n value between 0 and {getRoleMemberCount}, non-inclusive.\n Role bearers are not sorted in any particular way, and their ordering may\n change at any point.\n WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure\n you perform all queries on the same block. See the following\n https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]\n for more information." + }, + "functionSelector": "9010d07c", + "id": 3247, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getRoleMember", + "nameLocation": "959:13:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3243, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3240, + "mutability": "mutable", + "name": "role", + "nameLocation": "981:4:12", + "nodeType": "VariableDeclaration", + "scope": 3247, + "src": "973:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3239, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "973:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3242, + "mutability": "mutable", + "name": "index", + "nameLocation": "995:5:12", + "nodeType": "VariableDeclaration", + "scope": 3247, + "src": "987:13:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3241, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "987:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "972:29:12" + }, + "returnParameters": { + "id": 3246, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3245, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3247, + "src": "1025:7:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3244, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1025:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1024:9:12" + }, + "scope": 3256, + "src": "950:84:12", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 3248, + "nodeType": "StructuredDocumentation", + "src": "1040:157:12", + "text": " @dev Returns the number of accounts that have `role`. Can be used\n together with {getRoleMember} to enumerate all bearers of a role." + }, + "functionSelector": "ca15c873", + "id": 3255, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getRoleMemberCount", + "nameLocation": "1211:18:12", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3251, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3250, + "mutability": "mutable", + "name": "role", + "nameLocation": "1238:4:12", + "nodeType": "VariableDeclaration", + "scope": 3255, + "src": "1230:12:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3249, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1230:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1229:14:12" + }, + "returnParameters": { + "id": 3254, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3253, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3255, + "src": "1267:7:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3252, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1267:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1266:9:12" + }, + "scope": 3256, + "src": "1202:74:12", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 3257, + "src": "312:966:12", + "usedErrors": [ + 3157, + 3160 + ], + "usedEvents": [ + 3169, + 3178, + 3187 + ] + } + ], + "src": "130:1149:12" + }, + "id": 12 + }, + "@openzeppelin/contracts/interfaces/IERC1363.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/interfaces/IERC1363.sol", + "exportedSymbols": { + "IERC1363": [ + 3338 + ], + "IERC165": [ + 6389 + ], + "IERC20": [ + 4513 + ] + }, + "id": 3339, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3258, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "107:24:13" + }, + { + "absolutePath": "@openzeppelin/contracts/interfaces/IERC20.sol", + "file": "./IERC20.sol", + "id": 3260, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3339, + "sourceUnit": 3368, + "src": "133:36:13", + "symbolAliases": [ + { + "foreign": { + "id": 3259, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4513, + "src": "141:6:13", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/interfaces/IERC165.sol", + "file": "./IERC165.sol", + "id": 3262, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3339, + "sourceUnit": 3343, + "src": "170:38:13", + "symbolAliases": [ + { + "foreign": { + "id": 3261, + "name": "IERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6389, + "src": "178:7:13", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 3264, + "name": "IERC20", + "nameLocations": [ + "590:6:13" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4513, + "src": "590:6:13" + }, + "id": 3265, + "nodeType": "InheritanceSpecifier", + "src": "590:6:13" + }, + { + "baseName": { + "id": 3266, + "name": "IERC165", + "nameLocations": [ + "598:7:13" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6389, + "src": "598:7:13" + }, + "id": 3267, + "nodeType": "InheritanceSpecifier", + "src": "598:7:13" + } + ], + "canonicalName": "IERC1363", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 3263, + "nodeType": "StructuredDocumentation", + "src": "210:357:13", + "text": " @title IERC1363\n @dev Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363].\n Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract\n after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction." + }, + "fullyImplemented": false, + "id": 3338, + "linearizedBaseContracts": [ + 3338, + 6389, + 4513 + ], + "name": "IERC1363", + "nameLocation": "578:8:13", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 3268, + "nodeType": "StructuredDocumentation", + "src": "1148:370:13", + "text": " @dev Moves a `value` amount of tokens from the caller's account to `to`\n and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n @param to The address which you want to transfer to.\n @param value The amount of tokens to be transferred.\n @return A boolean value indicating whether the operation succeeded unless throwing." + }, + "functionSelector": "1296ee62", + "id": 3277, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferAndCall", + "nameLocation": "1532:15:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3273, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3270, + "mutability": "mutable", + "name": "to", + "nameLocation": "1556:2:13", + "nodeType": "VariableDeclaration", + "scope": 3277, + "src": "1548:10:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3269, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1548:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3272, + "mutability": "mutable", + "name": "value", + "nameLocation": "1568:5:13", + "nodeType": "VariableDeclaration", + "scope": 3277, + "src": "1560:13:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3271, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1560:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1547:27:13" + }, + "returnParameters": { + "id": 3276, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3275, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3277, + "src": "1593:4:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3274, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1593:4:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1592:6:13" + }, + "scope": 3338, + "src": "1523:76:13", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 3278, + "nodeType": "StructuredDocumentation", + "src": "1605:453:13", + "text": " @dev Moves a `value` amount of tokens from the caller's account to `to`\n and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n @param to The address which you want to transfer to.\n @param value The amount of tokens to be transferred.\n @param data Additional data with no specified format, sent in call to `to`.\n @return A boolean value indicating whether the operation succeeded unless throwing." + }, + "functionSelector": "4000aea0", + "id": 3289, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferAndCall", + "nameLocation": "2072:15:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3285, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3280, + "mutability": "mutable", + "name": "to", + "nameLocation": "2096:2:13", + "nodeType": "VariableDeclaration", + "scope": 3289, + "src": "2088:10:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3279, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2088:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3282, + "mutability": "mutable", + "name": "value", + "nameLocation": "2108:5:13", + "nodeType": "VariableDeclaration", + "scope": 3289, + "src": "2100:13:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3281, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2100:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3284, + "mutability": "mutable", + "name": "data", + "nameLocation": "2130:4:13", + "nodeType": "VariableDeclaration", + "scope": 3289, + "src": "2115:19:13", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3283, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2115:5:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "2087:48:13" + }, + "returnParameters": { + "id": 3288, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3287, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3289, + "src": "2154:4:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3286, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2154:4:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2153:6:13" + }, + "scope": 3338, + "src": "2063:97:13", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 3290, + "nodeType": "StructuredDocumentation", + "src": "2166:453:13", + "text": " @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\n and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n @param from The address which you want to send tokens from.\n @param to The address which you want to transfer to.\n @param value The amount of tokens to be transferred.\n @return A boolean value indicating whether the operation succeeded unless throwing." + }, + "functionSelector": "d8fbe994", + "id": 3301, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFromAndCall", + "nameLocation": "2633:19:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3297, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3292, + "mutability": "mutable", + "name": "from", + "nameLocation": "2661:4:13", + "nodeType": "VariableDeclaration", + "scope": 3301, + "src": "2653:12:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3291, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2653:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3294, + "mutability": "mutable", + "name": "to", + "nameLocation": "2675:2:13", + "nodeType": "VariableDeclaration", + "scope": 3301, + "src": "2667:10:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3293, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2667:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3296, + "mutability": "mutable", + "name": "value", + "nameLocation": "2687:5:13", + "nodeType": "VariableDeclaration", + "scope": 3301, + "src": "2679:13:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3295, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2679:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2652:41:13" + }, + "returnParameters": { + "id": 3300, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3299, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3301, + "src": "2712:4:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3298, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2712:4:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2711:6:13" + }, + "scope": 3338, + "src": "2624:94:13", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 3302, + "nodeType": "StructuredDocumentation", + "src": "2724:536:13", + "text": " @dev Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism\n and then calls {IERC1363Receiver-onTransferReceived} on `to`.\n @param from The address which you want to send tokens from.\n @param to The address which you want to transfer to.\n @param value The amount of tokens to be transferred.\n @param data Additional data with no specified format, sent in call to `to`.\n @return A boolean value indicating whether the operation succeeded unless throwing." + }, + "functionSelector": "c1d34b89", + "id": 3315, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFromAndCall", + "nameLocation": "3274:19:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3311, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3304, + "mutability": "mutable", + "name": "from", + "nameLocation": "3302:4:13", + "nodeType": "VariableDeclaration", + "scope": 3315, + "src": "3294:12:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3303, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3294:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3306, + "mutability": "mutable", + "name": "to", + "nameLocation": "3316:2:13", + "nodeType": "VariableDeclaration", + "scope": 3315, + "src": "3308:10:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3305, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3308:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3308, + "mutability": "mutable", + "name": "value", + "nameLocation": "3328:5:13", + "nodeType": "VariableDeclaration", + "scope": 3315, + "src": "3320:13:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3307, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3320:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3310, + "mutability": "mutable", + "name": "data", + "nameLocation": "3350:4:13", + "nodeType": "VariableDeclaration", + "scope": 3315, + "src": "3335:19:13", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3309, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3335:5:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3293:62:13" + }, + "returnParameters": { + "id": 3314, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3313, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3315, + "src": "3374:4:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3312, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3374:4:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3373:6:13" + }, + "scope": 3338, + "src": "3265:115:13", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 3316, + "nodeType": "StructuredDocumentation", + "src": "3386:390:13", + "text": " @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\n @param spender The address which will spend the funds.\n @param value The amount of tokens to be spent.\n @return A boolean value indicating whether the operation succeeded unless throwing." + }, + "functionSelector": "3177029f", + "id": 3325, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "approveAndCall", + "nameLocation": "3790:14:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3321, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3318, + "mutability": "mutable", + "name": "spender", + "nameLocation": "3813:7:13", + "nodeType": "VariableDeclaration", + "scope": 3325, + "src": "3805:15:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3317, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3805:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3320, + "mutability": "mutable", + "name": "value", + "nameLocation": "3830:5:13", + "nodeType": "VariableDeclaration", + "scope": 3325, + "src": "3822:13:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3319, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3822:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3804:32:13" + }, + "returnParameters": { + "id": 3324, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3323, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3325, + "src": "3855:4:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3322, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3855:4:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3854:6:13" + }, + "scope": 3338, + "src": "3781:80:13", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 3326, + "nodeType": "StructuredDocumentation", + "src": "3867:478:13", + "text": " @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\n @param spender The address which will spend the funds.\n @param value The amount of tokens to be spent.\n @param data Additional data with no specified format, sent in call to `spender`.\n @return A boolean value indicating whether the operation succeeded unless throwing." + }, + "functionSelector": "cae9ca51", + "id": 3337, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "approveAndCall", + "nameLocation": "4359:14:13", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3333, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3328, + "mutability": "mutable", + "name": "spender", + "nameLocation": "4382:7:13", + "nodeType": "VariableDeclaration", + "scope": 3337, + "src": "4374:15:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3327, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4374:7:13", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3330, + "mutability": "mutable", + "name": "value", + "nameLocation": "4399:5:13", + "nodeType": "VariableDeclaration", + "scope": 3337, + "src": "4391:13:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3329, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4391:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3332, + "mutability": "mutable", + "name": "data", + "nameLocation": "4421:4:13", + "nodeType": "VariableDeclaration", + "scope": 3337, + "src": "4406:19:13", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3331, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4406:5:13", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4373:53:13" + }, + "returnParameters": { + "id": 3336, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3335, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3337, + "src": "4445:4:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3334, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4445:4:13", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4444:6:13" + }, + "scope": 3338, + "src": "4350:101:13", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 3339, + "src": "568:3885:13", + "usedErrors": [], + "usedEvents": [ + 4447, + 4456 + ] + } + ], + "src": "107:4347:13" + }, + "id": 13 + }, + "@openzeppelin/contracts/interfaces/IERC165.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/interfaces/IERC165.sol", + "exportedSymbols": { + "IERC165": [ + 6389 + ] + }, + "id": 3343, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3340, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "106:24:14" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol", + "file": "../utils/introspection/IERC165.sol", + "id": 3342, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3343, + "sourceUnit": 6390, + "src": "132:59:14", + "symbolAliases": [ + { + "foreign": { + "id": 3341, + "name": "IERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6389, + "src": "140:7:14", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + } + ], + "src": "106:86:14" + }, + "id": 14 + }, + "@openzeppelin/contracts/interfaces/IERC1967.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/interfaces/IERC1967.sol", + "exportedSymbols": { + "IERC1967": [ + 3363 + ] + }, + "id": 3364, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3344, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "107:24:15" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IERC1967", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 3345, + "nodeType": "StructuredDocumentation", + "src": "133:101:15", + "text": " @dev ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC." + }, + "fullyImplemented": true, + "id": 3363, + "linearizedBaseContracts": [ + 3363 + ], + "name": "IERC1967", + "nameLocation": "245:8:15", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "documentation": { + "id": 3346, + "nodeType": "StructuredDocumentation", + "src": "260:68:15", + "text": " @dev Emitted when the implementation is upgraded." + }, + "eventSelector": "bc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "id": 3350, + "name": "Upgraded", + "nameLocation": "339:8:15", + "nodeType": "EventDefinition", + "parameters": { + "id": 3349, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3348, + "indexed": true, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "364:14:15", + "nodeType": "VariableDeclaration", + "scope": 3350, + "src": "348:30:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3347, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "348:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "347:32:15" + }, + "src": "333:47:15" + }, + { + "anonymous": false, + "documentation": { + "id": 3351, + "nodeType": "StructuredDocumentation", + "src": "386:67:15", + "text": " @dev Emitted when the admin account has changed." + }, + "eventSelector": "7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f", + "id": 3357, + "name": "AdminChanged", + "nameLocation": "464:12:15", + "nodeType": "EventDefinition", + "parameters": { + "id": 3356, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3353, + "indexed": false, + "mutability": "mutable", + "name": "previousAdmin", + "nameLocation": "485:13:15", + "nodeType": "VariableDeclaration", + "scope": 3357, + "src": "477:21:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3352, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "477:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3355, + "indexed": false, + "mutability": "mutable", + "name": "newAdmin", + "nameLocation": "508:8:15", + "nodeType": "VariableDeclaration", + "scope": 3357, + "src": "500:16:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3354, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "500:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "476:41:15" + }, + "src": "458:60:15" + }, + { + "anonymous": false, + "documentation": { + "id": 3358, + "nodeType": "StructuredDocumentation", + "src": "524:59:15", + "text": " @dev Emitted when the beacon is changed." + }, + "eventSelector": "1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e", + "id": 3362, + "name": "BeaconUpgraded", + "nameLocation": "594:14:15", + "nodeType": "EventDefinition", + "parameters": { + "id": 3361, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3360, + "indexed": true, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "625:6:15", + "nodeType": "VariableDeclaration", + "scope": 3362, + "src": "609:22:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3359, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "609:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "608:24:15" + }, + "src": "588:45:15" + } + ], + "scope": 3364, + "src": "235:400:15", + "usedErrors": [], + "usedEvents": [ + 3350, + 3357, + 3362 + ] + } + ], + "src": "107:529:15" + }, + "id": 15 + }, + "@openzeppelin/contracts/interfaces/IERC20.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/interfaces/IERC20.sol", + "exportedSymbols": { + "IERC20": [ + 4513 + ] + }, + "id": 3368, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3365, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "105:24:16" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "file": "../token/ERC20/IERC20.sol", + "id": 3367, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3368, + "sourceUnit": 4514, + "src": "131:49:16", + "symbolAliases": [ + { + "foreign": { + "id": 3366, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4513, + "src": "139:6:16", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + } + ], + "src": "105:76:16" + }, + "id": 16 + }, + "@openzeppelin/contracts/interfaces/IERC4906.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/interfaces/IERC4906.sol", + "exportedSymbols": { + "IERC165": [ + 6389 + ], + "IERC4906": [ + 3391 + ], + "IERC721": [ + 5067 + ] + }, + "id": 3392, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3369, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "107:24:17" + }, + { + "absolutePath": "@openzeppelin/contracts/interfaces/IERC165.sol", + "file": "./IERC165.sol", + "id": 3371, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3392, + "sourceUnit": 3343, + "src": "133:38:17", + "symbolAliases": [ + { + "foreign": { + "id": 3370, + "name": "IERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6389, + "src": "141:7:17", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/interfaces/IERC721.sol", + "file": "./IERC721.sol", + "id": 3373, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3392, + "sourceUnit": 3396, + "src": "172:38:17", + "symbolAliases": [ + { + "foreign": { + "id": 3372, + "name": "IERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5067, + "src": "180:7:17", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 3375, + "name": "IERC165", + "nameLocations": [ + "279:7:17" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6389, + "src": "279:7:17" + }, + "id": 3376, + "nodeType": "InheritanceSpecifier", + "src": "279:7:17" + }, + { + "baseName": { + "id": 3377, + "name": "IERC721", + "nameLocations": [ + "288:7:17" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5067, + "src": "288:7:17" + }, + "id": 3378, + "nodeType": "InheritanceSpecifier", + "src": "288:7:17" + } + ], + "canonicalName": "IERC4906", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 3374, + "nodeType": "StructuredDocumentation", + "src": "212:45:17", + "text": "@title ERC-721 Metadata Update Extension" + }, + "fullyImplemented": false, + "id": 3391, + "linearizedBaseContracts": [ + 3391, + 5067, + 6389 + ], + "name": "IERC4906", + "nameLocation": "267:8:17", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "documentation": { + "id": 3379, + "nodeType": "StructuredDocumentation", + "src": "302:201:17", + "text": "@dev This event emits when the metadata of a token is changed.\n So that the third-party platforms such as NFT market could\n timely update the images and related attributes of the NFT." + }, + "eventSelector": "f8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7", + "id": 3383, + "name": "MetadataUpdate", + "nameLocation": "514:14:17", + "nodeType": "EventDefinition", + "parameters": { + "id": 3382, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3381, + "indexed": false, + "mutability": "mutable", + "name": "_tokenId", + "nameLocation": "537:8:17", + "nodeType": "VariableDeclaration", + "scope": 3383, + "src": "529:16:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3380, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "529:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "528:18:17" + }, + "src": "508:39:17" + }, + { + "anonymous": false, + "documentation": { + "id": 3384, + "nodeType": "StructuredDocumentation", + "src": "553:212:17", + "text": "@dev This event emits when the metadata of a range of tokens is changed.\n So that the third-party platforms such as NFT market could\n timely update the images and related attributes of the NFTs." + }, + "eventSelector": "6bd5c950a8d8df17f772f5af37cb3655737899cbf903264b9795592da439661c", + "id": 3390, + "name": "BatchMetadataUpdate", + "nameLocation": "776:19:17", + "nodeType": "EventDefinition", + "parameters": { + "id": 3389, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3386, + "indexed": false, + "mutability": "mutable", + "name": "_fromTokenId", + "nameLocation": "804:12:17", + "nodeType": "VariableDeclaration", + "scope": 3390, + "src": "796:20:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3385, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "796:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3388, + "indexed": false, + "mutability": "mutable", + "name": "_toTokenId", + "nameLocation": "826:10:17", + "nodeType": "VariableDeclaration", + "scope": 3390, + "src": "818:18:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3387, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "818:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "795:42:17" + }, + "src": "770:68:17" + } + ], + "scope": 3392, + "src": "257:583:17", + "usedErrors": [], + "usedEvents": [ + 3383, + 3390, + 4966, + 4975, + 4984 + ] + } + ], + "src": "107:734:17" + }, + "id": 17 + }, + "@openzeppelin/contracts/interfaces/IERC721.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/interfaces/IERC721.sol", + "exportedSymbols": { + "IERC721": [ + 5067 + ] + }, + "id": 3396, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3393, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "106:24:18" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721.sol", + "file": "../token/ERC721/IERC721.sol", + "id": 3395, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3396, + "sourceUnit": 5068, + "src": "132:52:18", + "symbolAliases": [ + { + "foreign": { + "id": 3394, + "name": "IERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5067, + "src": "140:7:18", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + } + ], + "src": "106:79:18" + }, + "id": 18 + }, + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/interfaces/draft-IERC1822.sol", + "exportedSymbols": { + "IERC1822Proxiable": [ + 3405 + ] + }, + "id": 3406, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3397, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "113:24:19" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IERC1822Proxiable", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 3398, + "nodeType": "StructuredDocumentation", + "src": "139:204:19", + "text": " @dev ERC-1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified\n proxy whose upgrades are fully controlled by the current implementation." + }, + "fullyImplemented": false, + "id": 3405, + "linearizedBaseContracts": [ + 3405 + ], + "name": "IERC1822Proxiable", + "nameLocation": "354:17:19", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 3399, + "nodeType": "StructuredDocumentation", + "src": "378:438:19", + "text": " @dev Returns the storage slot that the proxiable contract assumes is being used to store the implementation\n address.\n IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks\n bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this\n function revert if invoked through a proxy." + }, + "functionSelector": "52d1902d", + "id": 3404, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "proxiableUUID", + "nameLocation": "830:13:19", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3400, + "nodeType": "ParameterList", + "parameters": [], + "src": "843:2:19" + }, + "returnParameters": { + "id": 3403, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3402, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3404, + "src": "869:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3401, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "869:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "868:9:19" + }, + "scope": 3405, + "src": "821:57:19", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 3406, + "src": "344:536:19", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "113:768:19" + }, + "id": 19 + }, + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol", + "exportedSymbols": { + "IERC1155Errors": [ + 3542 + ], + "IERC20Errors": [ + 3447 + ], + "IERC721Errors": [ + 3495 + ] + }, + "id": 3543, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3407, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "112:24:20" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IERC20Errors", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 3408, + "nodeType": "StructuredDocumentation", + "src": "138:141:20", + "text": " @dev Standard ERC-20 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens." + }, + "fullyImplemented": true, + "id": 3447, + "linearizedBaseContracts": [ + 3447 + ], + "name": "IERC20Errors", + "nameLocation": "290:12:20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 3409, + "nodeType": "StructuredDocumentation", + "src": "309:309:20", + "text": " @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer." + }, + "errorSelector": "e450d38c", + "id": 3417, + "name": "ERC20InsufficientBalance", + "nameLocation": "629:24:20", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3416, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3411, + "mutability": "mutable", + "name": "sender", + "nameLocation": "662:6:20", + "nodeType": "VariableDeclaration", + "scope": 3417, + "src": "654:14:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3410, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "654:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3413, + "mutability": "mutable", + "name": "balance", + "nameLocation": "678:7:20", + "nodeType": "VariableDeclaration", + "scope": 3417, + "src": "670:15:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3412, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "670:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3415, + "mutability": "mutable", + "name": "needed", + "nameLocation": "695:6:20", + "nodeType": "VariableDeclaration", + "scope": 3417, + "src": "687:14:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3414, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "687:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "653:49:20" + }, + "src": "623:80:20" + }, + { + "documentation": { + "id": 3418, + "nodeType": "StructuredDocumentation", + "src": "709:152:20", + "text": " @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred." + }, + "errorSelector": "96c6fd1e", + "id": 3422, + "name": "ERC20InvalidSender", + "nameLocation": "872:18:20", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3421, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3420, + "mutability": "mutable", + "name": "sender", + "nameLocation": "899:6:20", + "nodeType": "VariableDeclaration", + "scope": 3422, + "src": "891:14:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3419, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "891:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "890:16:20" + }, + "src": "866:41:20" + }, + { + "documentation": { + "id": 3423, + "nodeType": "StructuredDocumentation", + "src": "913:159:20", + "text": " @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred." + }, + "errorSelector": "ec442f05", + "id": 3427, + "name": "ERC20InvalidReceiver", + "nameLocation": "1083:20:20", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3426, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3425, + "mutability": "mutable", + "name": "receiver", + "nameLocation": "1112:8:20", + "nodeType": "VariableDeclaration", + "scope": 3427, + "src": "1104:16:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3424, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1104:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1103:18:20" + }, + "src": "1077:45:20" + }, + { + "documentation": { + "id": 3428, + "nodeType": "StructuredDocumentation", + "src": "1128:345:20", + "text": " @dev Indicates a failure with the `spender`’s `allowance`. Used in transfers.\n @param spender Address that may be allowed to operate on tokens without being their owner.\n @param allowance Amount of tokens a `spender` is allowed to operate with.\n @param needed Minimum amount required to perform a transfer." + }, + "errorSelector": "fb8f41b2", + "id": 3436, + "name": "ERC20InsufficientAllowance", + "nameLocation": "1484:26:20", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3435, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3430, + "mutability": "mutable", + "name": "spender", + "nameLocation": "1519:7:20", + "nodeType": "VariableDeclaration", + "scope": 3436, + "src": "1511:15:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3429, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1511:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3432, + "mutability": "mutable", + "name": "allowance", + "nameLocation": "1536:9:20", + "nodeType": "VariableDeclaration", + "scope": 3436, + "src": "1528:17:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3431, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1528:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3434, + "mutability": "mutable", + "name": "needed", + "nameLocation": "1555:6:20", + "nodeType": "VariableDeclaration", + "scope": 3436, + "src": "1547:14:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3433, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1547:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1510:52:20" + }, + "src": "1478:85:20" + }, + { + "documentation": { + "id": 3437, + "nodeType": "StructuredDocumentation", + "src": "1569:174:20", + "text": " @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation." + }, + "errorSelector": "e602df05", + "id": 3441, + "name": "ERC20InvalidApprover", + "nameLocation": "1754:20:20", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3440, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3439, + "mutability": "mutable", + "name": "approver", + "nameLocation": "1783:8:20", + "nodeType": "VariableDeclaration", + "scope": 3441, + "src": "1775:16:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3438, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1775:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1774:18:20" + }, + "src": "1748:45:20" + }, + { + "documentation": { + "id": 3442, + "nodeType": "StructuredDocumentation", + "src": "1799:195:20", + "text": " @dev Indicates a failure with the `spender` to be approved. Used in approvals.\n @param spender Address that may be allowed to operate on tokens without being their owner." + }, + "errorSelector": "94280d62", + "id": 3446, + "name": "ERC20InvalidSpender", + "nameLocation": "2005:19:20", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3445, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3444, + "mutability": "mutable", + "name": "spender", + "nameLocation": "2033:7:20", + "nodeType": "VariableDeclaration", + "scope": 3446, + "src": "2025:15:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3443, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2025:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2024:17:20" + }, + "src": "1999:43:20" + } + ], + "scope": 3543, + "src": "280:1764:20", + "usedErrors": [ + 3417, + 3422, + 3427, + 3436, + 3441, + 3446 + ], + "usedEvents": [] + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IERC721Errors", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 3448, + "nodeType": "StructuredDocumentation", + "src": "2046:143:20", + "text": " @dev Standard ERC-721 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens." + }, + "fullyImplemented": true, + "id": 3495, + "linearizedBaseContracts": [ + 3495 + ], + "name": "IERC721Errors", + "nameLocation": "2200:13:20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 3449, + "nodeType": "StructuredDocumentation", + "src": "2220:219:20", + "text": " @dev Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20.\n Used in balance queries.\n @param owner Address of the current owner of a token." + }, + "errorSelector": "89c62b64", + "id": 3453, + "name": "ERC721InvalidOwner", + "nameLocation": "2450:18:20", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3452, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3451, + "mutability": "mutable", + "name": "owner", + "nameLocation": "2477:5:20", + "nodeType": "VariableDeclaration", + "scope": 3453, + "src": "2469:13:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3450, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2469:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2468:15:20" + }, + "src": "2444:40:20" + }, + { + "documentation": { + "id": 3454, + "nodeType": "StructuredDocumentation", + "src": "2490:132:20", + "text": " @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token." + }, + "errorSelector": "7e273289", + "id": 3458, + "name": "ERC721NonexistentToken", + "nameLocation": "2633:22:20", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3457, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3456, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "2664:7:20", + "nodeType": "VariableDeclaration", + "scope": 3458, + "src": "2656:15:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3455, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2656:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2655:17:20" + }, + "src": "2627:46:20" + }, + { + "documentation": { + "id": 3459, + "nodeType": "StructuredDocumentation", + "src": "2679:289:20", + "text": " @dev Indicates an error related to the ownership over a particular token. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param tokenId Identifier number of a token.\n @param owner Address of the current owner of a token." + }, + "errorSelector": "64283d7b", + "id": 3467, + "name": "ERC721IncorrectOwner", + "nameLocation": "2979:20:20", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3466, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3461, + "mutability": "mutable", + "name": "sender", + "nameLocation": "3008:6:20", + "nodeType": "VariableDeclaration", + "scope": 3467, + "src": "3000:14:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3460, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3000:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3463, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "3024:7:20", + "nodeType": "VariableDeclaration", + "scope": 3467, + "src": "3016:15:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3462, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3016:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3465, + "mutability": "mutable", + "name": "owner", + "nameLocation": "3041:5:20", + "nodeType": "VariableDeclaration", + "scope": 3467, + "src": "3033:13:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3464, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3033:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2999:48:20" + }, + "src": "2973:75:20" + }, + { + "documentation": { + "id": 3468, + "nodeType": "StructuredDocumentation", + "src": "3054:152:20", + "text": " @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred." + }, + "errorSelector": "73c6ac6e", + "id": 3472, + "name": "ERC721InvalidSender", + "nameLocation": "3217:19:20", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3471, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3470, + "mutability": "mutable", + "name": "sender", + "nameLocation": "3245:6:20", + "nodeType": "VariableDeclaration", + "scope": 3472, + "src": "3237:14:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3469, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3237:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3236:16:20" + }, + "src": "3211:42:20" + }, + { + "documentation": { + "id": 3473, + "nodeType": "StructuredDocumentation", + "src": "3259:159:20", + "text": " @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred." + }, + "errorSelector": "64a0ae92", + "id": 3477, + "name": "ERC721InvalidReceiver", + "nameLocation": "3429:21:20", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3476, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3475, + "mutability": "mutable", + "name": "receiver", + "nameLocation": "3459:8:20", + "nodeType": "VariableDeclaration", + "scope": 3477, + "src": "3451:16:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3474, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3451:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3450:18:20" + }, + "src": "3423:46:20" + }, + { + "documentation": { + "id": 3478, + "nodeType": "StructuredDocumentation", + "src": "3475:247:20", + "text": " @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param tokenId Identifier number of a token." + }, + "errorSelector": "177e802f", + "id": 3484, + "name": "ERC721InsufficientApproval", + "nameLocation": "3733:26:20", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3483, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3480, + "mutability": "mutable", + "name": "operator", + "nameLocation": "3768:8:20", + "nodeType": "VariableDeclaration", + "scope": 3484, + "src": "3760:16:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3479, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3760:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3482, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "3786:7:20", + "nodeType": "VariableDeclaration", + "scope": 3484, + "src": "3778:15:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3481, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3778:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3759:35:20" + }, + "src": "3727:68:20" + }, + { + "documentation": { + "id": 3485, + "nodeType": "StructuredDocumentation", + "src": "3801:174:20", + "text": " @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation." + }, + "errorSelector": "a9fbf51f", + "id": 3489, + "name": "ERC721InvalidApprover", + "nameLocation": "3986:21:20", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3488, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3487, + "mutability": "mutable", + "name": "approver", + "nameLocation": "4016:8:20", + "nodeType": "VariableDeclaration", + "scope": 3489, + "src": "4008:16:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3486, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4008:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4007:18:20" + }, + "src": "3980:46:20" + }, + { + "documentation": { + "id": 3490, + "nodeType": "StructuredDocumentation", + "src": "4032:197:20", + "text": " @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner." + }, + "errorSelector": "5b08ba18", + "id": 3494, + "name": "ERC721InvalidOperator", + "nameLocation": "4240:21:20", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3493, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3492, + "mutability": "mutable", + "name": "operator", + "nameLocation": "4270:8:20", + "nodeType": "VariableDeclaration", + "scope": 3494, + "src": "4262:16:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3491, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4262:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4261:18:20" + }, + "src": "4234:46:20" + } + ], + "scope": 3543, + "src": "2190:2092:20", + "usedErrors": [ + 3453, + 3458, + 3467, + 3472, + 3477, + 3484, + 3489, + 3494 + ], + "usedEvents": [] + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IERC1155Errors", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 3496, + "nodeType": "StructuredDocumentation", + "src": "4284:145:20", + "text": " @dev Standard ERC-1155 Errors\n Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens." + }, + "fullyImplemented": true, + "id": 3542, + "linearizedBaseContracts": [ + 3542 + ], + "name": "IERC1155Errors", + "nameLocation": "4440:14:20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 3497, + "nodeType": "StructuredDocumentation", + "src": "4461:361:20", + "text": " @dev Indicates an error related to the current `balance` of a `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred.\n @param balance Current balance for the interacting account.\n @param needed Minimum amount required to perform a transfer.\n @param tokenId Identifier number of a token." + }, + "errorSelector": "03dee4c5", + "id": 3507, + "name": "ERC1155InsufficientBalance", + "nameLocation": "4833:26:20", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3506, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3499, + "mutability": "mutable", + "name": "sender", + "nameLocation": "4868:6:20", + "nodeType": "VariableDeclaration", + "scope": 3507, + "src": "4860:14:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3498, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4860:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3501, + "mutability": "mutable", + "name": "balance", + "nameLocation": "4884:7:20", + "nodeType": "VariableDeclaration", + "scope": 3507, + "src": "4876:15:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3500, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4876:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3503, + "mutability": "mutable", + "name": "needed", + "nameLocation": "4901:6:20", + "nodeType": "VariableDeclaration", + "scope": 3507, + "src": "4893:14:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3502, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4893:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3505, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "4917:7:20", + "nodeType": "VariableDeclaration", + "scope": 3507, + "src": "4909:15:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3504, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4909:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4859:66:20" + }, + "src": "4827:99:20" + }, + { + "documentation": { + "id": 3508, + "nodeType": "StructuredDocumentation", + "src": "4932:152:20", + "text": " @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred." + }, + "errorSelector": "01a83514", + "id": 3512, + "name": "ERC1155InvalidSender", + "nameLocation": "5095:20:20", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3511, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3510, + "mutability": "mutable", + "name": "sender", + "nameLocation": "5124:6:20", + "nodeType": "VariableDeclaration", + "scope": 3512, + "src": "5116:14:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3509, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5116:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5115:16:20" + }, + "src": "5089:43:20" + }, + { + "documentation": { + "id": 3513, + "nodeType": "StructuredDocumentation", + "src": "5138:159:20", + "text": " @dev Indicates a failure with the token `receiver`. Used in transfers.\n @param receiver Address to which tokens are being transferred." + }, + "errorSelector": "57f447ce", + "id": 3517, + "name": "ERC1155InvalidReceiver", + "nameLocation": "5308:22:20", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3516, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3515, + "mutability": "mutable", + "name": "receiver", + "nameLocation": "5339:8:20", + "nodeType": "VariableDeclaration", + "scope": 3517, + "src": "5331:16:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3514, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5331:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5330:18:20" + }, + "src": "5302:47:20" + }, + { + "documentation": { + "id": 3518, + "nodeType": "StructuredDocumentation", + "src": "5355:256:20", + "text": " @dev Indicates a failure with the `operator`’s approval. Used in transfers.\n @param operator Address that may be allowed to operate on tokens without being their owner.\n @param owner Address of the current owner of a token." + }, + "errorSelector": "e237d922", + "id": 3524, + "name": "ERC1155MissingApprovalForAll", + "nameLocation": "5622:28:20", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3523, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3520, + "mutability": "mutable", + "name": "operator", + "nameLocation": "5659:8:20", + "nodeType": "VariableDeclaration", + "scope": 3524, + "src": "5651:16:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3519, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5651:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3522, + "mutability": "mutable", + "name": "owner", + "nameLocation": "5677:5:20", + "nodeType": "VariableDeclaration", + "scope": 3524, + "src": "5669:13:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3521, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5669:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5650:33:20" + }, + "src": "5616:68:20" + }, + { + "documentation": { + "id": 3525, + "nodeType": "StructuredDocumentation", + "src": "5690:174:20", + "text": " @dev Indicates a failure with the `approver` of a token to be approved. Used in approvals.\n @param approver Address initiating an approval operation." + }, + "errorSelector": "3e31884e", + "id": 3529, + "name": "ERC1155InvalidApprover", + "nameLocation": "5875:22:20", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3528, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3527, + "mutability": "mutable", + "name": "approver", + "nameLocation": "5906:8:20", + "nodeType": "VariableDeclaration", + "scope": 3529, + "src": "5898:16:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3526, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5898:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5897:18:20" + }, + "src": "5869:47:20" + }, + { + "documentation": { + "id": 3530, + "nodeType": "StructuredDocumentation", + "src": "5922:197:20", + "text": " @dev Indicates a failure with the `operator` to be approved. Used in approvals.\n @param operator Address that may be allowed to operate on tokens without being their owner." + }, + "errorSelector": "ced3e100", + "id": 3534, + "name": "ERC1155InvalidOperator", + "nameLocation": "6130:22:20", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3533, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3532, + "mutability": "mutable", + "name": "operator", + "nameLocation": "6161:8:20", + "nodeType": "VariableDeclaration", + "scope": 3534, + "src": "6153:16:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3531, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6153:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6152:18:20" + }, + "src": "6124:47:20" + }, + { + "documentation": { + "id": 3535, + "nodeType": "StructuredDocumentation", + "src": "6177:280:20", + "text": " @dev Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation.\n Used in batch transfers.\n @param idsLength Length of the array of token identifiers\n @param valuesLength Length of the array of token amounts" + }, + "errorSelector": "5b059991", + "id": 3541, + "name": "ERC1155InvalidArrayLength", + "nameLocation": "6468:25:20", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3540, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3537, + "mutability": "mutable", + "name": "idsLength", + "nameLocation": "6502:9:20", + "nodeType": "VariableDeclaration", + "scope": 3541, + "src": "6494:17:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3536, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6494:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3539, + "mutability": "mutable", + "name": "valuesLength", + "nameLocation": "6521:12:20", + "nodeType": "VariableDeclaration", + "scope": 3541, + "src": "6513:20:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3538, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6513:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6493:41:20" + }, + "src": "6462:73:20" + } + ], + "scope": 3543, + "src": "4430:2107:20", + "usedErrors": [ + 3507, + 3512, + 3517, + 3524, + 3529, + 3534, + 3541 + ], + "usedEvents": [] + } + ], + "src": "112:6426:20" + }, + "id": 20 + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", + "exportedSymbols": { + "ERC1967Proxy": [ + 3580 + ], + "ERC1967Utils": [ + 3874 + ], + "Proxy": [ + 3910 + ] + }, + "id": 3581, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3544, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "114:24:21" + }, + { + "absolutePath": "@openzeppelin/contracts/proxy/Proxy.sol", + "file": "../Proxy.sol", + "id": 3546, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3581, + "sourceUnit": 3911, + "src": "140:35:21", + "symbolAliases": [ + { + "foreign": { + "id": 3545, + "name": "Proxy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3910, + "src": "148:5:21", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol", + "file": "./ERC1967Utils.sol", + "id": 3548, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3581, + "sourceUnit": 3875, + "src": "176:48:21", + "symbolAliases": [ + { + "foreign": { + "id": 3547, + "name": "ERC1967Utils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3874, + "src": "184:12:21", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 3550, + "name": "Proxy", + "nameLocations": [ + "625:5:21" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3910, + "src": "625:5:21" + }, + "id": 3551, + "nodeType": "InheritanceSpecifier", + "src": "625:5:21" + } + ], + "canonicalName": "ERC1967Proxy", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 3549, + "nodeType": "StructuredDocumentation", + "src": "226:373:21", + "text": " @dev This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an\n implementation address that can be changed. This address is stored in storage in the location specified by\n https://eips.ethereum.org/EIPS/eip-1967[ERC-1967], so that it doesn't conflict with the storage layout of the\n implementation behind the proxy." + }, + "fullyImplemented": true, + "id": 3580, + "linearizedBaseContracts": [ + 3580, + 3910 + ], + "name": "ERC1967Proxy", + "nameLocation": "609:12:21", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 3566, + "nodeType": "Block", + "src": "1145:69:21", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 3562, + "name": "implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3554, + "src": "1185:14:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3563, + "name": "_data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3556, + "src": "1201:5:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 3559, + "name": "ERC1967Utils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3874, + "src": "1155:12:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC1967Utils_$3874_$", + "typeString": "type(library ERC1967Utils)" + } + }, + "id": 3561, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1168:16:21", + "memberName": "upgradeToAndCall", + "nodeType": "MemberAccess", + "referencedDeclaration": 3689, + "src": "1155:29:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,bytes memory)" + } + }, + "id": 3564, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1155:52:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3565, + "nodeType": "ExpressionStatement", + "src": "1155:52:21" + } + ] + }, + "documentation": { + "id": 3552, + "nodeType": "StructuredDocumentation", + "src": "637:439:21", + "text": " @dev Initializes the upgradeable proxy with an initial implementation specified by `implementation`.\n If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an\n encoded function call, and allows initializing the storage of the proxy like a Solidity constructor.\n Requirements:\n - If `data` is empty, `msg.value` must be zero." + }, + "id": 3567, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3557, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3554, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "1101:14:21", + "nodeType": "VariableDeclaration", + "scope": 3567, + "src": "1093:22:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3553, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1093:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3556, + "mutability": "mutable", + "name": "_data", + "nameLocation": "1130:5:21", + "nodeType": "VariableDeclaration", + "scope": 3567, + "src": "1117:18:21", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3555, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1117:5:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "1092:44:21" + }, + "returnParameters": { + "id": 3558, + "nodeType": "ParameterList", + "parameters": [], + "src": "1145:0:21" + }, + "scope": 3580, + "src": "1081:133:21", + "stateMutability": "payable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 3891 + ], + "body": { + "id": 3578, + "nodeType": "Block", + "src": "1659:56:21", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 3574, + "name": "ERC1967Utils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3874, + "src": "1676:12:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC1967Utils_$3874_$", + "typeString": "type(library ERC1967Utils)" + } + }, + "id": 3575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1689:17:21", + "memberName": "getImplementation", + "nodeType": "MemberAccess", + "referencedDeclaration": 3626, + "src": "1676:30:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 3576, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1676:32:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 3573, + "id": 3577, + "nodeType": "Return", + "src": "1669:39:21" + } + ] + }, + "documentation": { + "id": 3568, + "nodeType": "StructuredDocumentation", + "src": "1220:358:21", + "text": " @dev Returns the current implementation address.\n TIP: To get this value clients can read directly from the storage slot shown below (specified by ERC-1967) using\n the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n `0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc`" + }, + "id": 3579, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_implementation", + "nameLocation": "1592:15:21", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 3570, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "1632:8:21" + }, + "parameters": { + "id": 3569, + "nodeType": "ParameterList", + "parameters": [], + "src": "1607:2:21" + }, + "returnParameters": { + "id": 3573, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3572, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3579, + "src": "1650:7:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3571, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1650:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1649:9:21" + }, + "scope": 3580, + "src": "1583:132:21", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 3581, + "src": "600:1117:21", + "usedErrors": [ + 3600, + 3613, + 5232, + 5524 + ], + "usedEvents": [ + 3350 + ] + } + ], + "src": "114:1604:21" + }, + "id": 21 + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol", + "exportedSymbols": { + "Address": [ + 5481 + ], + "ERC1967Utils": [ + 3874 + ], + "IBeacon": [ + 3920 + ], + "IERC1967": [ + 3363 + ], + "StorageSlot": [ + 5709 + ] + }, + "id": 3875, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3582, + "literals": [ + "solidity", + "^", + "0.8", + ".21" + ], + "nodeType": "PragmaDirective", + "src": "114:24:22" + }, + { + "absolutePath": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol", + "file": "../beacon/IBeacon.sol", + "id": 3584, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3875, + "sourceUnit": 3921, + "src": "140:46:22", + "symbolAliases": [ + { + "foreign": { + "id": 3583, + "name": "IBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3920, + "src": "148:7:22", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/interfaces/IERC1967.sol", + "file": "../../interfaces/IERC1967.sol", + "id": 3586, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3875, + "sourceUnit": 3364, + "src": "187:55:22", + "symbolAliases": [ + { + "foreign": { + "id": 3585, + "name": "IERC1967", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3363, + "src": "195:8:22", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/Address.sol", + "file": "../../utils/Address.sol", + "id": 3588, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3875, + "sourceUnit": 5482, + "src": "243:48:22", + "symbolAliases": [ + { + "foreign": { + "id": 3587, + "name": "Address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5481, + "src": "251:7:22", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/StorageSlot.sol", + "file": "../../utils/StorageSlot.sol", + "id": 3590, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 3875, + "sourceUnit": 5710, + "src": "292:56:22", + "symbolAliases": [ + { + "foreign": { + "id": 3589, + "name": "StorageSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5709, + "src": "300:11:22", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "ERC1967Utils", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 3591, + "nodeType": "StructuredDocumentation", + "src": "350:145:22", + "text": " @dev This library provides getters and event emitting update functions for\n https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] slots." + }, + "fullyImplemented": true, + "id": 3874, + "linearizedBaseContracts": [ + 3874 + ], + "name": "ERC1967Utils", + "nameLocation": "504:12:22", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "documentation": { + "id": 3592, + "nodeType": "StructuredDocumentation", + "src": "523:170:22", + "text": " @dev Storage slot with the address of the current implementation.\n This is the keccak-256 hash of \"eip1967.proxy.implementation\" subtracted by 1." + }, + "id": 3595, + "mutability": "constant", + "name": "IMPLEMENTATION_SLOT", + "nameLocation": "789:19:22", + "nodeType": "VariableDeclaration", + "scope": 3874, + "src": "763:114:22", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3593, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "763:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307833363038393461313362613161333231303636376338323834393264623938646361336532303736636333373335613932306133636135303564333832626263", + "id": 3594, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "811:66:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_24440054405305269366569402256811496959409073762505157381672968839269610695612_by_1", + "typeString": "int_const 2444...(69 digits omitted)...5612" + }, + "value": "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc" + }, + "visibility": "internal" + }, + { + "documentation": { + "id": 3596, + "nodeType": "StructuredDocumentation", + "src": "884:69:22", + "text": " @dev The `implementation` of the proxy is invalid." + }, + "errorSelector": "4c9c8ce3", + "id": 3600, + "name": "ERC1967InvalidImplementation", + "nameLocation": "964:28:22", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3599, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3598, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "1001:14:22", + "nodeType": "VariableDeclaration", + "scope": 3600, + "src": "993:22:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3597, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "993:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "992:24:22" + }, + "src": "958:59:22" + }, + { + "documentation": { + "id": 3601, + "nodeType": "StructuredDocumentation", + "src": "1023:60:22", + "text": " @dev The `admin` of the proxy is invalid." + }, + "errorSelector": "62e77ba2", + "id": 3605, + "name": "ERC1967InvalidAdmin", + "nameLocation": "1094:19:22", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3604, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3603, + "mutability": "mutable", + "name": "admin", + "nameLocation": "1122:5:22", + "nodeType": "VariableDeclaration", + "scope": 3605, + "src": "1114:13:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3602, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1114:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1113:15:22" + }, + "src": "1088:41:22" + }, + { + "documentation": { + "id": 3606, + "nodeType": "StructuredDocumentation", + "src": "1135:61:22", + "text": " @dev The `beacon` of the proxy is invalid." + }, + "errorSelector": "64ced0ec", + "id": 3610, + "name": "ERC1967InvalidBeacon", + "nameLocation": "1207:20:22", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3609, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3608, + "mutability": "mutable", + "name": "beacon", + "nameLocation": "1236:6:22", + "nodeType": "VariableDeclaration", + "scope": 3610, + "src": "1228:14:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3607, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1228:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1227:16:22" + }, + "src": "1201:43:22" + }, + { + "documentation": { + "id": 3611, + "nodeType": "StructuredDocumentation", + "src": "1250:82:22", + "text": " @dev An upgrade function sees `msg.value > 0` that may be lost." + }, + "errorSelector": "b398979f", + "id": 3613, + "name": "ERC1967NonPayable", + "nameLocation": "1343:17:22", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 3612, + "nodeType": "ParameterList", + "parameters": [], + "src": "1360:2:22" + }, + "src": "1337:26:22" + }, + { + "body": { + "id": 3625, + "nodeType": "Block", + "src": "1502:77:22", + "statements": [ + { + "expression": { + "expression": { + "arguments": [ + { + "id": 3621, + "name": "IMPLEMENTATION_SLOT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3595, + "src": "1546:19:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 3619, + "name": "StorageSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5709, + "src": "1519:11:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_StorageSlot_$5709_$", + "typeString": "type(library StorageSlot)" + } + }, + "id": 3620, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1531:14:22", + "memberName": "getAddressSlot", + "nodeType": "MemberAccess", + "referencedDeclaration": 5620, + "src": "1519:26:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$5591_storage_ptr_$", + "typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)" + } + }, + "id": 3622, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1519:47:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSlot_$5591_storage_ptr", + "typeString": "struct StorageSlot.AddressSlot storage pointer" + } + }, + "id": 3623, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1567:5:22", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 5590, + "src": "1519:53:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 3618, + "id": 3624, + "nodeType": "Return", + "src": "1512:60:22" + } + ] + }, + "documentation": { + "id": 3614, + "nodeType": "StructuredDocumentation", + "src": "1369:67:22", + "text": " @dev Returns the current implementation address." + }, + "id": 3626, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getImplementation", + "nameLocation": "1450:17:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3615, + "nodeType": "ParameterList", + "parameters": [], + "src": "1467:2:22" + }, + "returnParameters": { + "id": 3618, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3617, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3626, + "src": "1493:7:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3616, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1493:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1492:9:22" + }, + "scope": 3874, + "src": "1441:138:22", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3652, + "nodeType": "Block", + "src": "1734:218:22", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 3632, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3629, + "src": "1748:17:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3633, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1766:4:22", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "1748:22:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 3634, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1771:6:22", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "1748:29:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 3635, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1781:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1748:34:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3642, + "nodeType": "IfStatement", + "src": "1744:119:22", + "trueBody": { + "id": 3641, + "nodeType": "Block", + "src": "1784:79:22", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 3638, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3629, + "src": "1834:17:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3637, + "name": "ERC1967InvalidImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3600, + "src": "1805:28:22", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 3639, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1805:47:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3640, + "nodeType": "RevertStatement", + "src": "1798:54:22" + } + ] + } + }, + { + "expression": { + "id": 3650, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "arguments": [ + { + "id": 3646, + "name": "IMPLEMENTATION_SLOT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3595, + "src": "1899:19:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 3643, + "name": "StorageSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5709, + "src": "1872:11:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_StorageSlot_$5709_$", + "typeString": "type(library StorageSlot)" + } + }, + "id": 3645, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1884:14:22", + "memberName": "getAddressSlot", + "nodeType": "MemberAccess", + "referencedDeclaration": 5620, + "src": "1872:26:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$5591_storage_ptr_$", + "typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)" + } + }, + "id": 3647, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1872:47:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSlot_$5591_storage_ptr", + "typeString": "struct StorageSlot.AddressSlot storage pointer" + } + }, + "id": 3648, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "1920:5:22", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 5590, + "src": "1872:53:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3649, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3629, + "src": "1928:17:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1872:73:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3651, + "nodeType": "ExpressionStatement", + "src": "1872:73:22" + } + ] + }, + "documentation": { + "id": 3627, + "nodeType": "StructuredDocumentation", + "src": "1585:81:22", + "text": " @dev Stores a new address in the ERC-1967 implementation slot." + }, + "id": 3653, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setImplementation", + "nameLocation": "1680:18:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3630, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3629, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "1707:17:22", + "nodeType": "VariableDeclaration", + "scope": 3653, + "src": "1699:25:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3628, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1699:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1698:27:22" + }, + "returnParameters": { + "id": 3631, + "nodeType": "ParameterList", + "parameters": [], + "src": "1734:0:22" + }, + "scope": 3874, + "src": "1671:281:22", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 3688, + "nodeType": "Block", + "src": "2345:263:22", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 3662, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3656, + "src": "2374:17:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3661, + "name": "_setImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3653, + "src": "2355:18:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 3663, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2355:37:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3664, + "nodeType": "ExpressionStatement", + "src": "2355:37:22" + }, + { + "eventCall": { + "arguments": [ + { + "id": 3668, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3656, + "src": "2425:17:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 3665, + "name": "IERC1967", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3363, + "src": "2407:8:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC1967_$3363_$", + "typeString": "type(contract IERC1967)" + } + }, + "id": 3667, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2416:8:22", + "memberName": "Upgraded", + "nodeType": "MemberAccess", + "referencedDeclaration": 3350, + "src": "2407:17:22", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 3669, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2407:36:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3670, + "nodeType": "EmitStatement", + "src": "2402:41:22" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3674, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3671, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3658, + "src": "2458:4:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 3672, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2463:6:22", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2458:11:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 3673, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2472:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2458:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 3686, + "nodeType": "Block", + "src": "2559:43:22", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3683, + "name": "_checkNonPayable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3873, + "src": "2573:16:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 3684, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2573:18:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3685, + "nodeType": "ExpressionStatement", + "src": "2573:18:22" + } + ] + }, + "id": 3687, + "nodeType": "IfStatement", + "src": "2454:148:22", + "trueBody": { + "id": 3682, + "nodeType": "Block", + "src": "2475:78:22", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 3678, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3656, + "src": "2518:17:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3679, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3658, + "src": "2537:4:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 3675, + "name": "Address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5481, + "src": "2489:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Address_$5481_$", + "typeString": "type(library Address)" + } + }, + "id": 3677, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2497:20:22", + "memberName": "functionDelegateCall", + "nodeType": "MemberAccess", + "referencedDeclaration": 5398, + "src": "2489:28:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bytes memory) returns (bytes memory)" + } + }, + "id": 3680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2489:53:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 3681, + "nodeType": "ExpressionStatement", + "src": "2489:53:22" + } + ] + } + } + ] + }, + "documentation": { + "id": 3654, + "nodeType": "StructuredDocumentation", + "src": "1958:301:22", + "text": " @dev Performs implementation upgrade with additional setup call if data is nonempty.\n This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n to avoid stuck value in the contract.\n Emits an {IERC1967-Upgraded} event." + }, + "id": 3689, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "upgradeToAndCall", + "nameLocation": "2273:16:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3659, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3656, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "2298:17:22", + "nodeType": "VariableDeclaration", + "scope": 3689, + "src": "2290:25:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3655, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2290:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3658, + "mutability": "mutable", + "name": "data", + "nameLocation": "2330:4:22", + "nodeType": "VariableDeclaration", + "scope": 3689, + "src": "2317:17:22", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3657, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2317:5:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "2289:46:22" + }, + "returnParameters": { + "id": 3660, + "nodeType": "ParameterList", + "parameters": [], + "src": "2345:0:22" + }, + "scope": 3874, + "src": "2264:344:22", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 3690, + "nodeType": "StructuredDocumentation", + "src": "2614:145:22", + "text": " @dev Storage slot with the admin of the contract.\n This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1." + }, + "id": 3693, + "mutability": "constant", + "name": "ADMIN_SLOT", + "nameLocation": "2855:10:22", + "nodeType": "VariableDeclaration", + "scope": 3874, + "src": "2829:105:22", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3691, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2829:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307862353331323736383461353638623331373361653133623966386136303136653234336536336236653865653131373864366137313738353062356436313033", + "id": 3692, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2868:66:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_81955473079516046949633743016697847541294818689821282749996681496272635257091_by_1", + "typeString": "int_const 8195...(69 digits omitted)...7091" + }, + "value": "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103" + }, + "visibility": "internal" + }, + { + "body": { + "id": 3705, + "nodeType": "Block", + "src": "3339:68:22", + "statements": [ + { + "expression": { + "expression": { + "arguments": [ + { + "id": 3701, + "name": "ADMIN_SLOT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3693, + "src": "3383:10:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 3699, + "name": "StorageSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5709, + "src": "3356:11:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_StorageSlot_$5709_$", + "typeString": "type(library StorageSlot)" + } + }, + "id": 3700, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3368:14:22", + "memberName": "getAddressSlot", + "nodeType": "MemberAccess", + "referencedDeclaration": 5620, + "src": "3356:26:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$5591_storage_ptr_$", + "typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)" + } + }, + "id": 3702, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3356:38:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSlot_$5591_storage_ptr", + "typeString": "struct StorageSlot.AddressSlot storage pointer" + } + }, + "id": 3703, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3395:5:22", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 5590, + "src": "3356:44:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 3698, + "id": 3704, + "nodeType": "Return", + "src": "3349:51:22" + } + ] + }, + "documentation": { + "id": 3694, + "nodeType": "StructuredDocumentation", + "src": "2941:341:22", + "text": " @dev Returns the current admin.\n TIP: To get this value clients can read directly from the storage slot shown below (specified by ERC-1967) using\n the https://eth.wiki/json-rpc/API#eth_getstorageat[`eth_getStorageAt`] RPC call.\n `0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103`" + }, + "id": 3706, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAdmin", + "nameLocation": "3296:8:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3695, + "nodeType": "ParameterList", + "parameters": [], + "src": "3304:2:22" + }, + "returnParameters": { + "id": 3698, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3697, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3706, + "src": "3330:7:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3696, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3330:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3329:9:22" + }, + "scope": 3874, + "src": "3287:120:22", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3736, + "nodeType": "Block", + "src": "3535:172:22", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 3717, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 3712, + "name": "newAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3709, + "src": "3549:8:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 3715, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3569:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 3714, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3561:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3713, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3561:7:22", + "typeDescriptions": {} + } + }, + "id": 3716, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3561:10:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3549:22:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3726, + "nodeType": "IfStatement", + "src": "3545:91:22", + "trueBody": { + "id": 3725, + "nodeType": "Block", + "src": "3573:63:22", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 3721, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3622:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 3720, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3614:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3719, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3614:7:22", + "typeDescriptions": {} + } + }, + "id": 3722, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3614:10:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3718, + "name": "ERC1967InvalidAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3605, + "src": "3594:19:22", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 3723, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3594:31:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3724, + "nodeType": "RevertStatement", + "src": "3587:38:22" + } + ] + } + }, + { + "expression": { + "id": 3734, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "arguments": [ + { + "id": 3730, + "name": "ADMIN_SLOT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3693, + "src": "3672:10:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 3727, + "name": "StorageSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5709, + "src": "3645:11:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_StorageSlot_$5709_$", + "typeString": "type(library StorageSlot)" + } + }, + "id": 3729, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3657:14:22", + "memberName": "getAddressSlot", + "nodeType": "MemberAccess", + "referencedDeclaration": 5620, + "src": "3645:26:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$5591_storage_ptr_$", + "typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)" + } + }, + "id": 3731, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3645:38:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSlot_$5591_storage_ptr", + "typeString": "struct StorageSlot.AddressSlot storage pointer" + } + }, + "id": 3732, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "3684:5:22", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 5590, + "src": "3645:44:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3733, + "name": "newAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3709, + "src": "3692:8:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3645:55:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3735, + "nodeType": "ExpressionStatement", + "src": "3645:55:22" + } + ] + }, + "documentation": { + "id": 3707, + "nodeType": "StructuredDocumentation", + "src": "3413:72:22", + "text": " @dev Stores a new address in the ERC-1967 admin slot." + }, + "id": 3737, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setAdmin", + "nameLocation": "3499:9:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3710, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3709, + "mutability": "mutable", + "name": "newAdmin", + "nameLocation": "3517:8:22", + "nodeType": "VariableDeclaration", + "scope": 3737, + "src": "3509:16:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3708, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3509:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3508:18:22" + }, + "returnParameters": { + "id": 3711, + "nodeType": "ParameterList", + "parameters": [], + "src": "3535:0:22" + }, + "scope": 3874, + "src": "3490:217:22", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 3755, + "nodeType": "Block", + "src": "3875:94:22", + "statements": [ + { + "eventCall": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3746, + "name": "getAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3706, + "src": "3912:8:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 3747, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3912:10:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3748, + "name": "newAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3740, + "src": "3924:8:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 3743, + "name": "IERC1967", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3363, + "src": "3890:8:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC1967_$3363_$", + "typeString": "type(contract IERC1967)" + } + }, + "id": 3745, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3899:12:22", + "memberName": "AdminChanged", + "nodeType": "MemberAccess", + "referencedDeclaration": 3357, + "src": "3890:21:22", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 3749, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3890:43:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3750, + "nodeType": "EmitStatement", + "src": "3885:48:22" + }, + { + "expression": { + "arguments": [ + { + "id": 3752, + "name": "newAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3740, + "src": "3953:8:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3751, + "name": "_setAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3737, + "src": "3943:9:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 3753, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3943:19:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3754, + "nodeType": "ExpressionStatement", + "src": "3943:19:22" + } + ] + }, + "documentation": { + "id": 3738, + "nodeType": "StructuredDocumentation", + "src": "3713:109:22", + "text": " @dev Changes the admin of the proxy.\n Emits an {IERC1967-AdminChanged} event." + }, + "id": 3756, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "changeAdmin", + "nameLocation": "3836:11:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3741, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3740, + "mutability": "mutable", + "name": "newAdmin", + "nameLocation": "3856:8:22", + "nodeType": "VariableDeclaration", + "scope": 3756, + "src": "3848:16:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3739, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3848:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3847:18:22" + }, + "returnParameters": { + "id": 3742, + "nodeType": "ParameterList", + "parameters": [], + "src": "3875:0:22" + }, + "scope": 3874, + "src": "3827:142:22", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 3757, + "nodeType": "StructuredDocumentation", + "src": "3975:201:22", + "text": " @dev The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy.\n This is the keccak-256 hash of \"eip1967.proxy.beacon\" subtracted by 1." + }, + "id": 3760, + "mutability": "constant", + "name": "BEACON_SLOT", + "nameLocation": "4272:11:22", + "nodeType": "VariableDeclaration", + "scope": 3874, + "src": "4246:106:22", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3758, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4246:7:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307861336630616437346535343233616562666438306433656634333436353738333335613961373261656165653539666636636233353832623335313333643530", + "id": 3759, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4286:66:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_74152234768234802001998023604048924213078445070507226371336425913862612794704_by_1", + "typeString": "int_const 7415...(69 digits omitted)...4704" + }, + "value": "0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50" + }, + "visibility": "internal" + }, + { + "body": { + "id": 3772, + "nodeType": "Block", + "src": "4468:69:22", + "statements": [ + { + "expression": { + "expression": { + "arguments": [ + { + "id": 3768, + "name": "BEACON_SLOT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3760, + "src": "4512:11:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 3766, + "name": "StorageSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5709, + "src": "4485:11:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_StorageSlot_$5709_$", + "typeString": "type(library StorageSlot)" + } + }, + "id": 3767, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4497:14:22", + "memberName": "getAddressSlot", + "nodeType": "MemberAccess", + "referencedDeclaration": 5620, + "src": "4485:26:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$5591_storage_ptr_$", + "typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)" + } + }, + "id": 3769, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4485:39:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSlot_$5591_storage_ptr", + "typeString": "struct StorageSlot.AddressSlot storage pointer" + } + }, + "id": 3770, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4525:5:22", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 5590, + "src": "4485:45:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 3765, + "id": 3771, + "nodeType": "Return", + "src": "4478:52:22" + } + ] + }, + "documentation": { + "id": 3761, + "nodeType": "StructuredDocumentation", + "src": "4359:51:22", + "text": " @dev Returns the current beacon." + }, + "id": 3773, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getBeacon", + "nameLocation": "4424:9:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3762, + "nodeType": "ParameterList", + "parameters": [], + "src": "4433:2:22" + }, + "returnParameters": { + "id": 3765, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3764, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3773, + "src": "4459:7:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3763, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4459:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4458:9:22" + }, + "scope": 3874, + "src": "4415:122:22", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3818, + "nodeType": "Block", + "src": "4667:390:22", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3783, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 3779, + "name": "newBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3776, + "src": "4681:9:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4691:4:22", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "4681:14:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 3781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4696:6:22", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "4681:21:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 3782, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4706:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4681:26:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3789, + "nodeType": "IfStatement", + "src": "4677:95:22", + "trueBody": { + "id": 3788, + "nodeType": "Block", + "src": "4709:63:22", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 3785, + "name": "newBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3776, + "src": "4751:9:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3784, + "name": "ERC1967InvalidBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3610, + "src": "4730:20:22", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 3786, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4730:31:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3787, + "nodeType": "RevertStatement", + "src": "4723:38:22" + } + ] + } + }, + { + "expression": { + "id": 3797, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "arguments": [ + { + "id": 3793, + "name": "BEACON_SLOT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3760, + "src": "4809:11:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 3790, + "name": "StorageSlot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5709, + "src": "4782:11:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_StorageSlot_$5709_$", + "typeString": "type(library StorageSlot)" + } + }, + "id": 3792, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4794:14:22", + "memberName": "getAddressSlot", + "nodeType": "MemberAccess", + "referencedDeclaration": 5620, + "src": "4782:26:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$returns$_t_struct$_AddressSlot_$5591_storage_ptr_$", + "typeString": "function (bytes32) pure returns (struct StorageSlot.AddressSlot storage pointer)" + } + }, + "id": 3794, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4782:39:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSlot_$5591_storage_ptr", + "typeString": "struct StorageSlot.AddressSlot storage pointer" + } + }, + "id": 3795, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "4822:5:22", + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 5590, + "src": "4782:45:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3796, + "name": "newBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3776, + "src": "4830:9:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4782:57:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3798, + "nodeType": "ExpressionStatement", + "src": "4782:57:22" + }, + { + "assignments": [ + 3800 + ], + "declarations": [ + { + "constant": false, + "id": 3800, + "mutability": "mutable", + "name": "beaconImplementation", + "nameLocation": "4858:20:22", + "nodeType": "VariableDeclaration", + "scope": 3818, + "src": "4850:28:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3799, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4850:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 3806, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "id": 3802, + "name": "newBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3776, + "src": "4889:9:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3801, + "name": "IBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3920, + "src": "4881:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBeacon_$3920_$", + "typeString": "type(contract IBeacon)" + } + }, + "id": 3803, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4881:18:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBeacon_$3920", + "typeString": "contract IBeacon" + } + }, + "id": 3804, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4900:14:22", + "memberName": "implementation", + "nodeType": "MemberAccess", + "referencedDeclaration": 3919, + "src": "4881:33:22", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", + "typeString": "function () view external returns (address)" + } + }, + "id": 3805, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4881:35:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4850:66:22" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3811, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 3807, + "name": "beaconImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3800, + "src": "4930:20:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3808, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4951:4:22", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "4930:25:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 3809, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4956:6:22", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "4930:32:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 3810, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4966:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4930:37:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3817, + "nodeType": "IfStatement", + "src": "4926:125:22", + "trueBody": { + "id": 3816, + "nodeType": "Block", + "src": "4969:82:22", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 3813, + "name": "beaconImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3800, + "src": "5019:20:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3812, + "name": "ERC1967InvalidImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3600, + "src": "4990:28:22", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 3814, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4990:50:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3815, + "nodeType": "RevertStatement", + "src": "4983:57:22" + } + ] + } + } + ] + }, + "documentation": { + "id": 3774, + "nodeType": "StructuredDocumentation", + "src": "4543:72:22", + "text": " @dev Stores a new beacon in the ERC-1967 beacon slot." + }, + "id": 3819, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setBeacon", + "nameLocation": "4629:10:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3777, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3776, + "mutability": "mutable", + "name": "newBeacon", + "nameLocation": "4648:9:22", + "nodeType": "VariableDeclaration", + "scope": 3819, + "src": "4640:17:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3775, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4640:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4639:19:22" + }, + "returnParameters": { + "id": 3778, + "nodeType": "ParameterList", + "parameters": [], + "src": "4667:0:22" + }, + "scope": 3874, + "src": "4620:437:22", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 3858, + "nodeType": "Block", + "src": "5661:263:22", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 3828, + "name": "newBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3822, + "src": "5682:9:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3827, + "name": "_setBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3819, + "src": "5671:10:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 3829, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5671:21:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3830, + "nodeType": "ExpressionStatement", + "src": "5671:21:22" + }, + { + "eventCall": { + "arguments": [ + { + "id": 3834, + "name": "newBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3822, + "src": "5731:9:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 3831, + "name": "IERC1967", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3363, + "src": "5707:8:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC1967_$3363_$", + "typeString": "type(contract IERC1967)" + } + }, + "id": 3833, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5716:14:22", + "memberName": "BeaconUpgraded", + "nodeType": "MemberAccess", + "referencedDeclaration": 3362, + "src": "5707:23:22", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 3835, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5707:34:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3836, + "nodeType": "EmitStatement", + "src": "5702:39:22" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3840, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3837, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3824, + "src": "5756:4:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 3838, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5761:6:22", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "5756:11:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 3839, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5770:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5756:15:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 3856, + "nodeType": "Block", + "src": "5875:43:22", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3853, + "name": "_checkNonPayable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3873, + "src": "5889:16:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 3854, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5889:18:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3855, + "nodeType": "ExpressionStatement", + "src": "5889:18:22" + } + ] + }, + "id": 3857, + "nodeType": "IfStatement", + "src": "5752:166:22", + "trueBody": { + "id": 3852, + "nodeType": "Block", + "src": "5773:96:22", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "id": 3845, + "name": "newBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3822, + "src": "5824:9:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3844, + "name": "IBeacon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3920, + "src": "5816:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBeacon_$3920_$", + "typeString": "type(contract IBeacon)" + } + }, + "id": 3846, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5816:18:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBeacon_$3920", + "typeString": "contract IBeacon" + } + }, + "id": 3847, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5835:14:22", + "memberName": "implementation", + "nodeType": "MemberAccess", + "referencedDeclaration": 3919, + "src": "5816:33:22", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", + "typeString": "function () view external returns (address)" + } + }, + "id": 3848, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5816:35:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 3849, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3824, + "src": "5853:4:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 3841, + "name": "Address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5481, + "src": "5787:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Address_$5481_$", + "typeString": "type(library Address)" + } + }, + "id": 3843, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5795:20:22", + "memberName": "functionDelegateCall", + "nodeType": "MemberAccess", + "referencedDeclaration": 5398, + "src": "5787:28:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bytes memory) returns (bytes memory)" + } + }, + "id": 3850, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5787:71:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 3851, + "nodeType": "ExpressionStatement", + "src": "5787:71:22" + } + ] + } + } + ] + }, + "documentation": { + "id": 3820, + "nodeType": "StructuredDocumentation", + "src": "5063:514:22", + "text": " @dev Change the beacon and trigger a setup call if data is nonempty.\n This function is payable only if the setup call is performed, otherwise `msg.value` is rejected\n to avoid stuck value in the contract.\n Emits an {IERC1967-BeaconUpgraded} event.\n CAUTION: Invoking this function has no effect on an instance of {BeaconProxy} since v5, since\n it uses an immutable beacon without looking at the value of the ERC-1967 beacon slot for\n efficiency." + }, + "id": 3859, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "upgradeBeaconToAndCall", + "nameLocation": "5591:22:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3825, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3822, + "mutability": "mutable", + "name": "newBeacon", + "nameLocation": "5622:9:22", + "nodeType": "VariableDeclaration", + "scope": 3859, + "src": "5614:17:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3821, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5614:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3824, + "mutability": "mutable", + "name": "data", + "nameLocation": "5646:4:22", + "nodeType": "VariableDeclaration", + "scope": 3859, + "src": "5633:17:22", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3823, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5633:5:22", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5613:38:22" + }, + "returnParameters": { + "id": 3826, + "nodeType": "ParameterList", + "parameters": [], + "src": "5661:0:22" + }, + "scope": 3874, + "src": "5582:342:22", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3872, + "nodeType": "Block", + "src": "6149:86:22", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 3863, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "6163:3:22", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3864, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6167:5:22", + "memberName": "value", + "nodeType": "MemberAccess", + "src": "6163:9:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 3865, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6175:1:22", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6163:13:22", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 3871, + "nodeType": "IfStatement", + "src": "6159:70:22", + "trueBody": { + "id": 3870, + "nodeType": "Block", + "src": "6178:51:22", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3867, + "name": "ERC1967NonPayable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3613, + "src": "6199:17:22", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 3868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6199:19:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3869, + "nodeType": "RevertStatement", + "src": "6192:26:22" + } + ] + } + } + ] + }, + "documentation": { + "id": 3860, + "nodeType": "StructuredDocumentation", + "src": "5930:178:22", + "text": " @dev Reverts if `msg.value` is not zero. It can be used to avoid `msg.value` stuck in the contract\n if an upgrade doesn't perform an initialization call." + }, + "id": 3873, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkNonPayable", + "nameLocation": "6122:16:22", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3861, + "nodeType": "ParameterList", + "parameters": [], + "src": "6138:2:22" + }, + "returnParameters": { + "id": 3862, + "nodeType": "ParameterList", + "parameters": [], + "src": "6149:0:22" + }, + "scope": 3874, + "src": "6113:122:22", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + } + ], + "scope": 3875, + "src": "496:5741:22", + "usedErrors": [ + 3600, + 3605, + 3610, + 3613 + ], + "usedEvents": [] + } + ], + "src": "114:6124:22" + }, + "id": 22 + }, + "@openzeppelin/contracts/proxy/Proxy.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/proxy/Proxy.sol", + "exportedSymbols": { + "Proxy": [ + 3910 + ] + }, + "id": 3911, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3876, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "99:24:23" + }, + { + "abstract": true, + "baseContracts": [], + "canonicalName": "Proxy", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 3877, + "nodeType": "StructuredDocumentation", + "src": "125:598:23", + "text": " @dev This abstract contract provides a fallback function that delegates all calls to another contract using the EVM\n instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to\n be specified by overriding the virtual {_implementation} function.\n Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a\n different contract through the {_delegate} function.\n The success and return data of the delegated call will be returned back to the caller of the proxy." + }, + "fullyImplemented": false, + "id": 3910, + "linearizedBaseContracts": [ + 3910 + ], + "name": "Proxy", + "nameLocation": "742:5:23", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 3884, + "nodeType": "Block", + "src": "1009:835:23", + "statements": [ + { + "AST": { + "nativeSrc": "1028:810:23", + "nodeType": "YulBlock", + "src": "1028:810:23", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1281:1:23", + "nodeType": "YulLiteral", + "src": "1281:1:23", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1284:1:23", + "nodeType": "YulLiteral", + "src": "1284:1:23", + "type": "", + "value": "0" + }, + { + "arguments": [], + "functionName": { + "name": "calldatasize", + "nativeSrc": "1287:12:23", + "nodeType": "YulIdentifier", + "src": "1287:12:23" + }, + "nativeSrc": "1287:14:23", + "nodeType": "YulFunctionCall", + "src": "1287:14:23" + } + ], + "functionName": { + "name": "calldatacopy", + "nativeSrc": "1268:12:23", + "nodeType": "YulIdentifier", + "src": "1268:12:23" + }, + "nativeSrc": "1268:34:23", + "nodeType": "YulFunctionCall", + "src": "1268:34:23" + }, + "nativeSrc": "1268:34:23", + "nodeType": "YulExpressionStatement", + "src": "1268:34:23" + }, + { + "nativeSrc": "1429:74:23", + "nodeType": "YulVariableDeclaration", + "src": "1429:74:23", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "1456:3:23", + "nodeType": "YulIdentifier", + "src": "1456:3:23" + }, + "nativeSrc": "1456:5:23", + "nodeType": "YulFunctionCall", + "src": "1456:5:23" + }, + { + "name": "implementation", + "nativeSrc": "1463:14:23", + "nodeType": "YulIdentifier", + "src": "1463:14:23" + }, + { + "kind": "number", + "nativeSrc": "1479:1:23", + "nodeType": "YulLiteral", + "src": "1479:1:23", + "type": "", + "value": "0" + }, + { + "arguments": [], + "functionName": { + "name": "calldatasize", + "nativeSrc": "1482:12:23", + "nodeType": "YulIdentifier", + "src": "1482:12:23" + }, + "nativeSrc": "1482:14:23", + "nodeType": "YulFunctionCall", + "src": "1482:14:23" + }, + { + "kind": "number", + "nativeSrc": "1498:1:23", + "nodeType": "YulLiteral", + "src": "1498:1:23", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1501:1:23", + "nodeType": "YulLiteral", + "src": "1501:1:23", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "delegatecall", + "nativeSrc": "1443:12:23", + "nodeType": "YulIdentifier", + "src": "1443:12:23" + }, + "nativeSrc": "1443:60:23", + "nodeType": "YulFunctionCall", + "src": "1443:60:23" + }, + "variables": [ + { + "name": "result", + "nativeSrc": "1433:6:23", + "nodeType": "YulTypedName", + "src": "1433:6:23", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1571:1:23", + "nodeType": "YulLiteral", + "src": "1571:1:23", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1574:1:23", + "nodeType": "YulLiteral", + "src": "1574:1:23", + "type": "", + "value": "0" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "1577:14:23", + "nodeType": "YulIdentifier", + "src": "1577:14:23" + }, + "nativeSrc": "1577:16:23", + "nodeType": "YulFunctionCall", + "src": "1577:16:23" + } + ], + "functionName": { + "name": "returndatacopy", + "nativeSrc": "1556:14:23", + "nodeType": "YulIdentifier", + "src": "1556:14:23" + }, + "nativeSrc": "1556:38:23", + "nodeType": "YulFunctionCall", + "src": "1556:38:23" + }, + "nativeSrc": "1556:38:23", + "nodeType": "YulExpressionStatement", + "src": "1556:38:23" + }, + { + "cases": [ + { + "body": { + "nativeSrc": "1689:59:23", + "nodeType": "YulBlock", + "src": "1689:59:23", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1714:1:23", + "nodeType": "YulLiteral", + "src": "1714:1:23", + "type": "", + "value": "0" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "1717:14:23", + "nodeType": "YulIdentifier", + "src": "1717:14:23" + }, + "nativeSrc": "1717:16:23", + "nodeType": "YulFunctionCall", + "src": "1717:16:23" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1707:6:23", + "nodeType": "YulIdentifier", + "src": "1707:6:23" + }, + "nativeSrc": "1707:27:23", + "nodeType": "YulFunctionCall", + "src": "1707:27:23" + }, + "nativeSrc": "1707:27:23", + "nodeType": "YulExpressionStatement", + "src": "1707:27:23" + } + ] + }, + "nativeSrc": "1682:66:23", + "nodeType": "YulCase", + "src": "1682:66:23", + "value": { + "kind": "number", + "nativeSrc": "1687:1:23", + "nodeType": "YulLiteral", + "src": "1687:1:23", + "type": "", + "value": "0" + } + }, + { + "body": { + "nativeSrc": "1769:59:23", + "nodeType": "YulBlock", + "src": "1769:59:23", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1794:1:23", + "nodeType": "YulLiteral", + "src": "1794:1:23", + "type": "", + "value": "0" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "1797:14:23", + "nodeType": "YulIdentifier", + "src": "1797:14:23" + }, + "nativeSrc": "1797:16:23", + "nodeType": "YulFunctionCall", + "src": "1797:16:23" + } + ], + "functionName": { + "name": "return", + "nativeSrc": "1787:6:23", + "nodeType": "YulIdentifier", + "src": "1787:6:23" + }, + "nativeSrc": "1787:27:23", + "nodeType": "YulFunctionCall", + "src": "1787:27:23" + }, + "nativeSrc": "1787:27:23", + "nodeType": "YulExpressionStatement", + "src": "1787:27:23" + } + ] + }, + "nativeSrc": "1761:67:23", + "nodeType": "YulCase", + "src": "1761:67:23", + "value": "default" + } + ], + "expression": { + "name": "result", + "nativeSrc": "1615:6:23", + "nodeType": "YulIdentifier", + "src": "1615:6:23" + }, + "nativeSrc": "1608:220:23", + "nodeType": "YulSwitch", + "src": "1608:220:23" + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 3880, + "isOffset": false, + "isSlot": false, + "src": "1463:14:23", + "valueSize": 1 + } + ], + "id": 3883, + "nodeType": "InlineAssembly", + "src": "1019:819:23" + } + ] + }, + "documentation": { + "id": 3878, + "nodeType": "StructuredDocumentation", + "src": "754:190:23", + "text": " @dev Delegates the current call to `implementation`.\n This function does not return to its internal call site, it will return directly to the external caller." + }, + "id": 3885, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_delegate", + "nameLocation": "958:9:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3881, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3880, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "976:14:23", + "nodeType": "VariableDeclaration", + "scope": 3885, + "src": "968:22:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3879, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "968:7:23", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "967:24:23" + }, + "returnParameters": { + "id": 3882, + "nodeType": "ParameterList", + "parameters": [], + "src": "1009:0:23" + }, + "scope": 3910, + "src": "949:895:23", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "documentation": { + "id": 3886, + "nodeType": "StructuredDocumentation", + "src": "1850:173:23", + "text": " @dev This is a virtual function that should be overridden so it returns the address to which the fallback\n function and {_fallback} should delegate." + }, + "id": 3891, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "_implementation", + "nameLocation": "2037:15:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3887, + "nodeType": "ParameterList", + "parameters": [], + "src": "2052:2:23" + }, + "returnParameters": { + "id": 3890, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3889, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3891, + "src": "2086:7:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3888, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2086:7:23", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2085:9:23" + }, + "scope": 3910, + "src": "2028:67:23", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 3900, + "nodeType": "Block", + "src": "2361:45:23", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3896, + "name": "_implementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3891, + "src": "2381:15:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 3897, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2381:17:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3895, + "name": "_delegate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3885, + "src": "2371:9:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 3898, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2371:28:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3899, + "nodeType": "ExpressionStatement", + "src": "2371:28:23" + } + ] + }, + "documentation": { + "id": 3892, + "nodeType": "StructuredDocumentation", + "src": "2101:217:23", + "text": " @dev Delegates the current call to the address returned by `_implementation()`.\n This function does not return to its internal call site, it will return directly to the external caller." + }, + "id": 3901, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_fallback", + "nameLocation": "2332:9:23", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3893, + "nodeType": "ParameterList", + "parameters": [], + "src": "2341:2:23" + }, + "returnParameters": { + "id": 3894, + "nodeType": "ParameterList", + "parameters": [], + "src": "2361:0:23" + }, + "scope": 3910, + "src": "2323:83:23", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 3908, + "nodeType": "Block", + "src": "2639:28:23", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 3905, + "name": "_fallback", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3901, + "src": "2649:9:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 3906, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2649:11:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3907, + "nodeType": "ExpressionStatement", + "src": "2649:11:23" + } + ] + }, + "documentation": { + "id": 3902, + "nodeType": "StructuredDocumentation", + "src": "2412:186:23", + "text": " @dev Fallback function that delegates calls to the address returned by `_implementation()`. Will run if no other\n function in the contract matches the call data." + }, + "id": 3909, + "implemented": true, + "kind": "fallback", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3903, + "nodeType": "ParameterList", + "parameters": [], + "src": "2611:2:23" + }, + "returnParameters": { + "id": 3904, + "nodeType": "ParameterList", + "parameters": [], + "src": "2639:0:23" + }, + "scope": 3910, + "src": "2603:64:23", + "stateMutability": "payable", + "virtual": true, + "visibility": "external" + } + ], + "scope": 3911, + "src": "724:1945:23", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "99:2571:23" + }, + "id": 23 + }, + "@openzeppelin/contracts/proxy/beacon/IBeacon.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/proxy/beacon/IBeacon.sol", + "exportedSymbols": { + "IBeacon": [ + 3920 + ] + }, + "id": 3921, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3912, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "108:24:24" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IBeacon", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 3913, + "nodeType": "StructuredDocumentation", + "src": "134:79:24", + "text": " @dev This is the interface that {BeaconProxy} expects of its beacon." + }, + "fullyImplemented": false, + "id": 3920, + "linearizedBaseContracts": [ + 3920 + ], + "name": "IBeacon", + "nameLocation": "224:7:24", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 3914, + "nodeType": "StructuredDocumentation", + "src": "238:168:24", + "text": " @dev Must return an address that can be used as a delegate call target.\n {UpgradeableBeacon} will check that this address is a contract." + }, + "functionSelector": "5c60da1b", + "id": 3919, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "implementation", + "nameLocation": "420:14:24", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3915, + "nodeType": "ParameterList", + "parameters": [], + "src": "434:2:24" + }, + "returnParameters": { + "id": 3918, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3917, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3919, + "src": "460:7:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3916, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "460:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "459:9:24" + }, + "scope": 3920, + "src": "411:58:24", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 3921, + "src": "214:257:24", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "108:364:24" + }, + "id": 24 + }, + "@openzeppelin/contracts/token/ERC20/ERC20.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol", + "exportedSymbols": { + "Context": [ + 5511 + ], + "ERC20": [ + 4435 + ], + "IERC20": [ + 4513 + ], + "IERC20Errors": [ + 3447 + ], + "IERC20Metadata": [ + 4539 + ] + }, + "id": 4436, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3922, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "105:24:25" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "file": "./IERC20.sol", + "id": 3924, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4436, + "sourceUnit": 4514, + "src": "131:36:25", + "symbolAliases": [ + { + "foreign": { + "id": 3923, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4513, + "src": "139:6:25", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "file": "./extensions/IERC20Metadata.sol", + "id": 3926, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4436, + "sourceUnit": 4540, + "src": "168:63:25", + "symbolAliases": [ + { + "foreign": { + "id": 3925, + "name": "IERC20Metadata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4539, + "src": "176:14:25", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/Context.sol", + "file": "../../utils/Context.sol", + "id": 3928, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4436, + "sourceUnit": 5512, + "src": "232:48:25", + "symbolAliases": [ + { + "foreign": { + "id": 3927, + "name": "Context", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5511, + "src": "240:7:25", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol", + "file": "../../interfaces/draft-IERC6093.sol", + "id": 3930, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4436, + "sourceUnit": 3543, + "src": "281:65:25", + "symbolAliases": [ + { + "foreign": { + "id": 3929, + "name": "IERC20Errors", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3447, + "src": "289:12:25", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 3932, + "name": "Context", + "nameLocations": [ + "1133:7:25" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5511, + "src": "1133:7:25" + }, + "id": 3933, + "nodeType": "InheritanceSpecifier", + "src": "1133:7:25" + }, + { + "baseName": { + "id": 3934, + "name": "IERC20", + "nameLocations": [ + "1142:6:25" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4513, + "src": "1142:6:25" + }, + "id": 3935, + "nodeType": "InheritanceSpecifier", + "src": "1142:6:25" + }, + { + "baseName": { + "id": 3936, + "name": "IERC20Metadata", + "nameLocations": [ + "1150:14:25" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4539, + "src": "1150:14:25" + }, + "id": 3937, + "nodeType": "InheritanceSpecifier", + "src": "1150:14:25" + }, + { + "baseName": { + "id": 3938, + "name": "IERC20Errors", + "nameLocations": [ + "1166:12:25" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3447, + "src": "1166:12:25" + }, + "id": 3939, + "nodeType": "InheritanceSpecifier", + "src": "1166:12:25" + } + ], + "canonicalName": "ERC20", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 3931, + "nodeType": "StructuredDocumentation", + "src": "348:757:25", + "text": " @dev Implementation of the {IERC20} interface.\n This implementation is agnostic to the way tokens are created. This means\n that a supply mechanism has to be added in a derived contract using {_mint}.\n TIP: For a detailed writeup see our guide\n https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How\n to implement supply mechanisms].\n The default value of {decimals} is 18. To change this, you should override\n this function so it returns a different value.\n We have followed general OpenZeppelin Contracts guidelines: functions revert\n instead returning `false` on failure. This behavior is nonetheless\n conventional and does not conflict with the expectations of ERC-20\n applications." + }, + "fullyImplemented": true, + "id": 4435, + "linearizedBaseContracts": [ + 4435, + 3447, + 4539, + 4513, + 5511 + ], + "name": "ERC20", + "nameLocation": "1124:5:25", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 3943, + "mutability": "mutable", + "name": "_balances", + "nameLocation": "1229:9:25", + "nodeType": "VariableDeclaration", + "scope": 4435, + "src": "1185:53:25", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 3942, + "keyName": "account", + "keyNameLocation": "1201:7:25", + "keyType": { + "id": 3940, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1193:7:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1185:35:25", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 3941, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1212:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 3949, + "mutability": "mutable", + "name": "_allowances", + "nameLocation": "1317:11:25", + "nodeType": "VariableDeclaration", + "scope": 4435, + "src": "1245:83:25", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "typeName": { + "id": 3948, + "keyName": "account", + "keyNameLocation": "1261:7:25", + "keyType": { + "id": 3944, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1253:7:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1245:63:25", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 3947, + "keyName": "spender", + "keyNameLocation": "1288:7:25", + "keyType": { + "id": 3945, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1280:7:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1272:35:25", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 3946, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1299:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 3951, + "mutability": "mutable", + "name": "_totalSupply", + "nameLocation": "1351:12:25", + "nodeType": "VariableDeclaration", + "scope": 4435, + "src": "1335:28:25", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3950, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1335:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 3953, + "mutability": "mutable", + "name": "_name", + "nameLocation": "1385:5:25", + "nodeType": "VariableDeclaration", + "scope": 4435, + "src": "1370:20:25", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 3952, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1370:6:25", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "private" + }, + { + "constant": false, + "id": 3955, + "mutability": "mutable", + "name": "_symbol", + "nameLocation": "1411:7:25", + "nodeType": "VariableDeclaration", + "scope": 4435, + "src": "1396:22:25", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 3954, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1396:6:25", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "private" + }, + { + "body": { + "id": 3971, + "nodeType": "Block", + "src": "1657:57:25", + "statements": [ + { + "expression": { + "id": 3965, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3963, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3953, + "src": "1667:5:25", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3964, + "name": "name_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3958, + "src": "1675:5:25", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "1667:13:25", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 3966, + "nodeType": "ExpressionStatement", + "src": "1667:13:25" + }, + { + "expression": { + "id": 3969, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 3967, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3955, + "src": "1690:7:25", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 3968, + "name": "symbol_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3960, + "src": "1700:7:25", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "1690:17:25", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 3970, + "nodeType": "ExpressionStatement", + "src": "1690:17:25" + } + ] + }, + "documentation": { + "id": 3956, + "nodeType": "StructuredDocumentation", + "src": "1425:171:25", + "text": " @dev Sets the values for {name} and {symbol}.\n All two of these values are immutable: they can only be set once during\n construction." + }, + "id": 3972, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3961, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3958, + "mutability": "mutable", + "name": "name_", + "nameLocation": "1627:5:25", + "nodeType": "VariableDeclaration", + "scope": 3972, + "src": "1613:19:25", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3957, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1613:6:25", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 3960, + "mutability": "mutable", + "name": "symbol_", + "nameLocation": "1648:7:25", + "nodeType": "VariableDeclaration", + "scope": 3972, + "src": "1634:21:25", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3959, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1634:6:25", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "1612:44:25" + }, + "returnParameters": { + "id": 3962, + "nodeType": "ParameterList", + "parameters": [], + "src": "1657:0:25" + }, + "scope": 4435, + "src": "1601:113:25", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 4526 + ], + "body": { + "id": 3980, + "nodeType": "Block", + "src": "1839:29:25", + "statements": [ + { + "expression": { + "id": 3978, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3953, + "src": "1856:5:25", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 3977, + "id": 3979, + "nodeType": "Return", + "src": "1849:12:25" + } + ] + }, + "documentation": { + "id": 3973, + "nodeType": "StructuredDocumentation", + "src": "1720:54:25", + "text": " @dev Returns the name of the token." + }, + "functionSelector": "06fdde03", + "id": 3981, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "name", + "nameLocation": "1788:4:25", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3974, + "nodeType": "ParameterList", + "parameters": [], + "src": "1792:2:25" + }, + "returnParameters": { + "id": 3977, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3976, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3981, + "src": "1824:13:25", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3975, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1824:6:25", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "1823:15:25" + }, + "scope": 4435, + "src": "1779:89:25", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 4532 + ], + "body": { + "id": 3989, + "nodeType": "Block", + "src": "2043:31:25", + "statements": [ + { + "expression": { + "id": 3987, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3955, + "src": "2060:7:25", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 3986, + "id": 3988, + "nodeType": "Return", + "src": "2053:14:25" + } + ] + }, + "documentation": { + "id": 3982, + "nodeType": "StructuredDocumentation", + "src": "1874:102:25", + "text": " @dev Returns the symbol of the token, usually a shorter version of the\n name." + }, + "functionSelector": "95d89b41", + "id": 3990, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nameLocation": "1990:6:25", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3983, + "nodeType": "ParameterList", + "parameters": [], + "src": "1996:2:25" + }, + "returnParameters": { + "id": 3986, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3985, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3990, + "src": "2028:13:25", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3984, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2028:6:25", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "2027:15:25" + }, + "scope": 4435, + "src": "1981:93:25", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 4538 + ], + "body": { + "id": 3998, + "nodeType": "Block", + "src": "2763:26:25", + "statements": [ + { + "expression": { + "hexValue": "3138", + "id": 3996, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2780:2:25", + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + }, + "functionReturnParameters": 3995, + "id": 3997, + "nodeType": "Return", + "src": "2773:9:25" + } + ] + }, + "documentation": { + "id": 3991, + "nodeType": "StructuredDocumentation", + "src": "2080:622:25", + "text": " @dev Returns the number of decimals used to get its user representation.\n For example, if `decimals` equals `2`, a balance of `505` tokens should\n be displayed to a user as `5.05` (`505 / 10 ** 2`).\n Tokens usually opt for a value of 18, imitating the relationship between\n Ether and Wei. This is the default value returned by this function, unless\n it's overridden.\n NOTE: This information is only used for _display_ purposes: it in\n no way affects any of the arithmetic of the contract, including\n {IERC20-balanceOf} and {IERC20-transfer}." + }, + "functionSelector": "313ce567", + "id": 3999, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decimals", + "nameLocation": "2716:8:25", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 3992, + "nodeType": "ParameterList", + "parameters": [], + "src": "2724:2:25" + }, + "returnParameters": { + "id": 3995, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3994, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 3999, + "src": "2756:5:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 3993, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "2756:5:25", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "2755:7:25" + }, + "scope": 4435, + "src": "2707:82:25", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 4462 + ], + "body": { + "id": 4007, + "nodeType": "Block", + "src": "2910:36:25", + "statements": [ + { + "expression": { + "id": 4005, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3951, + "src": "2927:12:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 4004, + "id": 4006, + "nodeType": "Return", + "src": "2920:19:25" + } + ] + }, + "documentation": { + "id": 4000, + "nodeType": "StructuredDocumentation", + "src": "2795:49:25", + "text": " @dev See {IERC20-totalSupply}." + }, + "functionSelector": "18160ddd", + "id": 4008, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nameLocation": "2858:11:25", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4001, + "nodeType": "ParameterList", + "parameters": [], + "src": "2869:2:25" + }, + "returnParameters": { + "id": 4004, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4003, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4008, + "src": "2901:7:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4002, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2901:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2900:9:25" + }, + "scope": 4435, + "src": "2849:97:25", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 4470 + ], + "body": { + "id": 4020, + "nodeType": "Block", + "src": "3078:42:25", + "statements": [ + { + "expression": { + "baseExpression": { + "id": 4016, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3943, + "src": "3095:9:25", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4018, + "indexExpression": { + "id": 4017, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4011, + "src": "3105:7:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3095:18:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 4015, + "id": 4019, + "nodeType": "Return", + "src": "3088:25:25" + } + ] + }, + "documentation": { + "id": 4009, + "nodeType": "StructuredDocumentation", + "src": "2952:47:25", + "text": " @dev See {IERC20-balanceOf}." + }, + "functionSelector": "70a08231", + "id": 4021, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "3013:9:25", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4012, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4011, + "mutability": "mutable", + "name": "account", + "nameLocation": "3031:7:25", + "nodeType": "VariableDeclaration", + "scope": 4021, + "src": "3023:15:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4010, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3023:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3022:17:25" + }, + "returnParameters": { + "id": 4015, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4014, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4021, + "src": "3069:7:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4013, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3069:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3068:9:25" + }, + "scope": 4435, + "src": "3004:116:25", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 4480 + ], + "body": { + "id": 4044, + "nodeType": "Block", + "src": "3390:103:25", + "statements": [ + { + "assignments": [ + 4032 + ], + "declarations": [ + { + "constant": false, + "id": 4032, + "mutability": "mutable", + "name": "owner", + "nameLocation": "3408:5:25", + "nodeType": "VariableDeclaration", + "scope": 4044, + "src": "3400:13:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4031, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3400:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 4035, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4033, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5493, + "src": "3416:10:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 4034, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3416:12:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3400:28:25" + }, + { + "expression": { + "arguments": [ + { + "id": 4037, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4032, + "src": "3448:5:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4038, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4024, + "src": "3455:2:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4039, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4026, + "src": "3459:5:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4036, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4165, + "src": "3438:9:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4040, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3438:27:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4041, + "nodeType": "ExpressionStatement", + "src": "3438:27:25" + }, + { + "expression": { + "hexValue": "74727565", + "id": 4042, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3482:4:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 4030, + "id": 4043, + "nodeType": "Return", + "src": "3475:11:25" + } + ] + }, + "documentation": { + "id": 4022, + "nodeType": "StructuredDocumentation", + "src": "3126:184:25", + "text": " @dev See {IERC20-transfer}.\n Requirements:\n - `to` cannot be the zero address.\n - the caller must have a balance of at least `value`." + }, + "functionSelector": "a9059cbb", + "id": 4045, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nameLocation": "3324:8:25", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4027, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4024, + "mutability": "mutable", + "name": "to", + "nameLocation": "3341:2:25", + "nodeType": "VariableDeclaration", + "scope": 4045, + "src": "3333:10:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4023, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3333:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4026, + "mutability": "mutable", + "name": "value", + "nameLocation": "3353:5:25", + "nodeType": "VariableDeclaration", + "scope": 4045, + "src": "3345:13:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4025, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3345:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3332:27:25" + }, + "returnParameters": { + "id": 4030, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4029, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4045, + "src": "3384:4:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4028, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3384:4:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3383:6:25" + }, + "scope": 4435, + "src": "3315:178:25", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 4490 + ], + "body": { + "id": 4061, + "nodeType": "Block", + "src": "3640:51:25", + "statements": [ + { + "expression": { + "baseExpression": { + "baseExpression": { + "id": 4055, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3949, + "src": "3657:11:25", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 4057, + "indexExpression": { + "id": 4056, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4048, + "src": "3669:5:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3657:18:25", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4059, + "indexExpression": { + "id": 4058, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4050, + "src": "3676:7:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3657:27:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 4054, + "id": 4060, + "nodeType": "Return", + "src": "3650:34:25" + } + ] + }, + "documentation": { + "id": 4046, + "nodeType": "StructuredDocumentation", + "src": "3499:47:25", + "text": " @dev See {IERC20-allowance}." + }, + "functionSelector": "dd62ed3e", + "id": 4062, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nameLocation": "3560:9:25", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4051, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4048, + "mutability": "mutable", + "name": "owner", + "nameLocation": "3578:5:25", + "nodeType": "VariableDeclaration", + "scope": 4062, + "src": "3570:13:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4047, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3570:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4050, + "mutability": "mutable", + "name": "spender", + "nameLocation": "3593:7:25", + "nodeType": "VariableDeclaration", + "scope": 4062, + "src": "3585:15:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4049, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3585:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3569:32:25" + }, + "returnParameters": { + "id": 4054, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4053, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4062, + "src": "3631:7:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4052, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3631:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3630:9:25" + }, + "scope": 4435, + "src": "3551:140:25", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 4500 + ], + "body": { + "id": 4085, + "nodeType": "Block", + "src": "4077:107:25", + "statements": [ + { + "assignments": [ + 4073 + ], + "declarations": [ + { + "constant": false, + "id": 4073, + "mutability": "mutable", + "name": "owner", + "nameLocation": "4095:5:25", + "nodeType": "VariableDeclaration", + "scope": 4085, + "src": "4087:13:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4072, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4087:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 4076, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4074, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5493, + "src": "4103:10:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 4075, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4103:12:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4087:28:25" + }, + { + "expression": { + "arguments": [ + { + "id": 4078, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4073, + "src": "4134:5:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4079, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4065, + "src": "4141:7:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4080, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4067, + "src": "4150:5:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4077, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4326, + 4386 + ], + "referencedDeclaration": 4326, + "src": "4125:8:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4081, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4125:31:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4082, + "nodeType": "ExpressionStatement", + "src": "4125:31:25" + }, + { + "expression": { + "hexValue": "74727565", + "id": 4083, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4173:4:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 4071, + "id": 4084, + "nodeType": "Return", + "src": "4166:11:25" + } + ] + }, + "documentation": { + "id": 4063, + "nodeType": "StructuredDocumentation", + "src": "3697:296:25", + "text": " @dev See {IERC20-approve}.\n NOTE: If `value` is the maximum `uint256`, the allowance is not updated on\n `transferFrom`. This is semantically equivalent to an infinite approval.\n Requirements:\n - `spender` cannot be the zero address." + }, + "functionSelector": "095ea7b3", + "id": 4086, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nameLocation": "4007:7:25", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4068, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4065, + "mutability": "mutable", + "name": "spender", + "nameLocation": "4023:7:25", + "nodeType": "VariableDeclaration", + "scope": 4086, + "src": "4015:15:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4064, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4015:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4067, + "mutability": "mutable", + "name": "value", + "nameLocation": "4040:5:25", + "nodeType": "VariableDeclaration", + "scope": 4086, + "src": "4032:13:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4066, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4032:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4014:32:25" + }, + "returnParameters": { + "id": 4071, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4070, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4086, + "src": "4071:4:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4069, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4071:4:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4070:6:25" + }, + "scope": 4435, + "src": "3998:186:25", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 4512 + ], + "body": { + "id": 4117, + "nodeType": "Block", + "src": "4869:151:25", + "statements": [ + { + "assignments": [ + 4099 + ], + "declarations": [ + { + "constant": false, + "id": 4099, + "mutability": "mutable", + "name": "spender", + "nameLocation": "4887:7:25", + "nodeType": "VariableDeclaration", + "scope": 4117, + "src": "4879:15:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4098, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4879:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 4102, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 4100, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5493, + "src": "4897:10:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 4101, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4897:12:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4879:30:25" + }, + { + "expression": { + "arguments": [ + { + "id": 4104, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4089, + "src": "4935:4:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4105, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4099, + "src": "4941:7:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4106, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4093, + "src": "4950:5:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4103, + "name": "_spendAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4434, + "src": "4919:15:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4107, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4919:37:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4108, + "nodeType": "ExpressionStatement", + "src": "4919:37:25" + }, + { + "expression": { + "arguments": [ + { + "id": 4110, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4089, + "src": "4976:4:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4111, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4091, + "src": "4982:2:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4112, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4093, + "src": "4986:5:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4109, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4165, + "src": "4966:9:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4966:26:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4114, + "nodeType": "ExpressionStatement", + "src": "4966:26:25" + }, + { + "expression": { + "hexValue": "74727565", + "id": 4115, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5009:4:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 4097, + "id": 4116, + "nodeType": "Return", + "src": "5002:11:25" + } + ] + }, + "documentation": { + "id": 4087, + "nodeType": "StructuredDocumentation", + "src": "4190:581:25", + "text": " @dev See {IERC20-transferFrom}.\n Skips emitting an {Approval} event indicating an allowance update. This is not\n required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve].\n NOTE: Does not update the allowance if the current allowance\n is the maximum `uint256`.\n Requirements:\n - `from` and `to` cannot be the zero address.\n - `from` must have a balance of at least `value`.\n - the caller must have allowance for ``from``'s tokens of at least\n `value`." + }, + "functionSelector": "23b872dd", + "id": 4118, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nameLocation": "4785:12:25", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4094, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4089, + "mutability": "mutable", + "name": "from", + "nameLocation": "4806:4:25", + "nodeType": "VariableDeclaration", + "scope": 4118, + "src": "4798:12:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4088, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4798:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4091, + "mutability": "mutable", + "name": "to", + "nameLocation": "4820:2:25", + "nodeType": "VariableDeclaration", + "scope": 4118, + "src": "4812:10:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4090, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4812:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4093, + "mutability": "mutable", + "name": "value", + "nameLocation": "4832:5:25", + "nodeType": "VariableDeclaration", + "scope": 4118, + "src": "4824:13:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4092, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4824:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4797:41:25" + }, + "returnParameters": { + "id": 4097, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4096, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4118, + "src": "4863:4:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4095, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4863:4:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4862:6:25" + }, + "scope": 4435, + "src": "4776:244:25", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 4164, + "nodeType": "Block", + "src": "5462:231:25", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4133, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4128, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4121, + "src": "5476:4:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 4131, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5492:1:25", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4130, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5484:7:25", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4129, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5484:7:25", + "typeDescriptions": {} + } + }, + "id": 4132, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5484:10:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5476:18:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4142, + "nodeType": "IfStatement", + "src": "5472:86:25", + "trueBody": { + "id": 4141, + "nodeType": "Block", + "src": "5496:62:25", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 4137, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5544:1:25", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4136, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5536:7:25", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4135, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5536:7:25", + "typeDescriptions": {} + } + }, + "id": 4138, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5536:10:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4134, + "name": "ERC20InvalidSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3422, + "src": "5517:18:25", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 4139, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5517:30:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4140, + "nodeType": "RevertStatement", + "src": "5510:37:25" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4148, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4143, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4123, + "src": "5571:2:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 4146, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5585:1:25", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4145, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5577:7:25", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4144, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5577:7:25", + "typeDescriptions": {} + } + }, + "id": 4147, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5577:10:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5571:16:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4157, + "nodeType": "IfStatement", + "src": "5567:86:25", + "trueBody": { + "id": 4156, + "nodeType": "Block", + "src": "5589:64:25", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 4152, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5639:1:25", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4151, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5631:7:25", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4150, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5631:7:25", + "typeDescriptions": {} + } + }, + "id": 4153, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5631:10:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4149, + "name": "ERC20InvalidReceiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3427, + "src": "5610:20:25", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 4154, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5610:32:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4155, + "nodeType": "RevertStatement", + "src": "5603:39:25" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 4159, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4121, + "src": "5670:4:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4160, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4123, + "src": "5676:2:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4161, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4125, + "src": "5680:5:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4158, + "name": "_update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4242, + "src": "5662:7:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4162, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5662:24:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4163, + "nodeType": "ExpressionStatement", + "src": "5662:24:25" + } + ] + }, + "documentation": { + "id": 4119, + "nodeType": "StructuredDocumentation", + "src": "5026:362:25", + "text": " @dev Moves a `value` amount of tokens from `from` to `to`.\n This internal function is equivalent to {transfer}, and can be used to\n e.g. implement automatic token fees, slashing mechanisms, etc.\n Emits a {Transfer} event.\n NOTE: This function is not virtual, {_update} should be overridden instead." + }, + "id": 4165, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_transfer", + "nameLocation": "5402:9:25", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4126, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4121, + "mutability": "mutable", + "name": "from", + "nameLocation": "5420:4:25", + "nodeType": "VariableDeclaration", + "scope": 4165, + "src": "5412:12:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4120, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5412:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4123, + "mutability": "mutable", + "name": "to", + "nameLocation": "5434:2:25", + "nodeType": "VariableDeclaration", + "scope": 4165, + "src": "5426:10:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4122, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5426:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4125, + "mutability": "mutable", + "name": "value", + "nameLocation": "5446:5:25", + "nodeType": "VariableDeclaration", + "scope": 4165, + "src": "5438:13:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4124, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5438:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5411:41:25" + }, + "returnParameters": { + "id": 4127, + "nodeType": "ParameterList", + "parameters": [], + "src": "5462:0:25" + }, + "scope": 4435, + "src": "5393:300:25", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4241, + "nodeType": "Block", + "src": "6083:1032:25", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4175, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4168, + "src": "6097:4:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 4178, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6113:1:25", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4177, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6105:7:25", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4176, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6105:7:25", + "typeDescriptions": {} + } + }, + "id": 4179, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6105:10:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "6097:18:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 4212, + "nodeType": "Block", + "src": "6271:362:25", + "statements": [ + { + "assignments": [ + 4187 + ], + "declarations": [ + { + "constant": false, + "id": 4187, + "mutability": "mutable", + "name": "fromBalance", + "nameLocation": "6293:11:25", + "nodeType": "VariableDeclaration", + "scope": 4212, + "src": "6285:19:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4186, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6285:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 4191, + "initialValue": { + "baseExpression": { + "id": 4188, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3943, + "src": "6307:9:25", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4190, + "indexExpression": { + "id": 4189, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4168, + "src": "6317:4:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6307:15:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6285:37:25" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4194, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4192, + "name": "fromBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4187, + "src": "6340:11:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 4193, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4172, + "src": "6354:5:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6340:19:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4202, + "nodeType": "IfStatement", + "src": "6336:115:25", + "trueBody": { + "id": 4201, + "nodeType": "Block", + "src": "6361:90:25", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 4196, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4168, + "src": "6411:4:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4197, + "name": "fromBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4187, + "src": "6417:11:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 4198, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4172, + "src": "6430:5:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4195, + "name": "ERC20InsufficientBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3417, + "src": "6386:24:25", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256) pure" + } + }, + "id": 4199, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6386:50:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4200, + "nodeType": "RevertStatement", + "src": "6379:57:25" + } + ] + } + }, + { + "id": 4211, + "nodeType": "UncheckedBlock", + "src": "6464:159:25", + "statements": [ + { + "expression": { + "id": 4209, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 4203, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3943, + "src": "6571:9:25", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4205, + "indexExpression": { + "id": 4204, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4168, + "src": "6581:4:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6571:15:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4206, + "name": "fromBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4187, + "src": "6589:11:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 4207, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4172, + "src": "6603:5:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6589:19:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6571:37:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4210, + "nodeType": "ExpressionStatement", + "src": "6571:37:25" + } + ] + } + ] + }, + "id": 4213, + "nodeType": "IfStatement", + "src": "6093:540:25", + "trueBody": { + "id": 4185, + "nodeType": "Block", + "src": "6117:148:25", + "statements": [ + { + "expression": { + "id": 4183, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4181, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3951, + "src": "6233:12:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 4182, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4172, + "src": "6249:5:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6233:21:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4184, + "nodeType": "ExpressionStatement", + "src": "6233:21:25" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4214, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4170, + "src": "6647:2:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 4217, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6661:1:25", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4216, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6653:7:25", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4215, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6653:7:25", + "typeDescriptions": {} + } + }, + "id": 4218, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6653:10:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "6647:16:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 4233, + "nodeType": "Block", + "src": "6862:206:25", + "statements": [ + { + "id": 4232, + "nodeType": "UncheckedBlock", + "src": "6876:182:25", + "statements": [ + { + "expression": { + "id": 4230, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 4226, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3943, + "src": "7021:9:25", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4228, + "indexExpression": { + "id": 4227, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4170, + "src": "7031:2:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7021:13:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 4229, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4172, + "src": "7038:5:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7021:22:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4231, + "nodeType": "ExpressionStatement", + "src": "7021:22:25" + } + ] + } + ] + }, + "id": 4234, + "nodeType": "IfStatement", + "src": "6643:425:25", + "trueBody": { + "id": 4225, + "nodeType": "Block", + "src": "6665:191:25", + "statements": [ + { + "id": 4224, + "nodeType": "UncheckedBlock", + "src": "6679:167:25", + "statements": [ + { + "expression": { + "id": 4222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 4220, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3951, + "src": "6810:12:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "id": 4221, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4172, + "src": "6826:5:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6810:21:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4223, + "nodeType": "ExpressionStatement", + "src": "6810:21:25" + } + ] + } + ] + } + }, + { + "eventCall": { + "arguments": [ + { + "id": 4236, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4168, + "src": "7092:4:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4237, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4170, + "src": "7098:2:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4238, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4172, + "src": "7102:5:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4235, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4447, + "src": "7083:8:25", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4239, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7083:25:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4240, + "nodeType": "EmitStatement", + "src": "7078:30:25" + } + ] + }, + "documentation": { + "id": 4166, + "nodeType": "StructuredDocumentation", + "src": "5699:304:25", + "text": " @dev Transfers a `value` amount of tokens from `from` to `to`, or alternatively mints (or burns) if `from`\n (or `to`) is the zero address. All customizations to transfers, mints, and burns should be done by overriding\n this function.\n Emits a {Transfer} event." + }, + "id": 4242, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_update", + "nameLocation": "6017:7:25", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4173, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4168, + "mutability": "mutable", + "name": "from", + "nameLocation": "6033:4:25", + "nodeType": "VariableDeclaration", + "scope": 4242, + "src": "6025:12:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4167, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6025:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4170, + "mutability": "mutable", + "name": "to", + "nameLocation": "6047:2:25", + "nodeType": "VariableDeclaration", + "scope": 4242, + "src": "6039:10:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4169, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6039:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4172, + "mutability": "mutable", + "name": "value", + "nameLocation": "6059:5:25", + "nodeType": "VariableDeclaration", + "scope": 4242, + "src": "6051:13:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4171, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6051:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6024:41:25" + }, + "returnParameters": { + "id": 4174, + "nodeType": "ParameterList", + "parameters": [], + "src": "6083:0:25" + }, + "scope": 4435, + "src": "6008:1107:25", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 4274, + "nodeType": "Block", + "src": "7514:152:25", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4250, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4245, + "src": "7528:7:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 4253, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7547:1:25", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4252, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7539:7:25", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4251, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7539:7:25", + "typeDescriptions": {} + } + }, + "id": 4254, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7539:10:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "7528:21:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4264, + "nodeType": "IfStatement", + "src": "7524:91:25", + "trueBody": { + "id": 4263, + "nodeType": "Block", + "src": "7551:64:25", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 4259, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7601:1:25", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4258, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7593:7:25", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4257, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7593:7:25", + "typeDescriptions": {} + } + }, + "id": 4260, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7593:10:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4256, + "name": "ERC20InvalidReceiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3427, + "src": "7572:20:25", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 4261, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7572:32:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4262, + "nodeType": "RevertStatement", + "src": "7565:39:25" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 4268, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7640:1:25", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4267, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7632:7:25", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4266, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7632:7:25", + "typeDescriptions": {} + } + }, + "id": 4269, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7632:10:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4270, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4245, + "src": "7644:7:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4271, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4247, + "src": "7653:5:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4265, + "name": "_update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4242, + "src": "7624:7:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4272, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7624:35:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4273, + "nodeType": "ExpressionStatement", + "src": "7624:35:25" + } + ] + }, + "documentation": { + "id": 4243, + "nodeType": "StructuredDocumentation", + "src": "7121:332:25", + "text": " @dev Creates a `value` amount of tokens and assigns them to `account`, by transferring it from address(0).\n Relies on the `_update` mechanism\n Emits a {Transfer} event with `from` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead." + }, + "id": 4275, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nameLocation": "7467:5:25", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4248, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4245, + "mutability": "mutable", + "name": "account", + "nameLocation": "7481:7:25", + "nodeType": "VariableDeclaration", + "scope": 4275, + "src": "7473:15:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4244, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7473:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4247, + "mutability": "mutable", + "name": "value", + "nameLocation": "7498:5:25", + "nodeType": "VariableDeclaration", + "scope": 4275, + "src": "7490:13:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4246, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7490:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7472:32:25" + }, + "returnParameters": { + "id": 4249, + "nodeType": "ParameterList", + "parameters": [], + "src": "7514:0:25" + }, + "scope": 4435, + "src": "7458:208:25", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4307, + "nodeType": "Block", + "src": "8040:150:25", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4288, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4283, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4278, + "src": "8054:7:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 4286, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8073:1:25", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4285, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8065:7:25", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4284, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8065:7:25", + "typeDescriptions": {} + } + }, + "id": 4287, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8065:10:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8054:21:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4297, + "nodeType": "IfStatement", + "src": "8050:89:25", + "trueBody": { + "id": 4296, + "nodeType": "Block", + "src": "8077:62:25", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 4292, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8125:1:25", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4291, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8117:7:25", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4290, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8117:7:25", + "typeDescriptions": {} + } + }, + "id": 4293, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8117:10:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4289, + "name": "ERC20InvalidSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3422, + "src": "8098:18:25", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 4294, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8098:30:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4295, + "nodeType": "RevertStatement", + "src": "8091:37:25" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 4299, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4278, + "src": "8156:7:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 4302, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8173:1:25", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4301, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8165:7:25", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4300, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8165:7:25", + "typeDescriptions": {} + } + }, + "id": 4303, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8165:10:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4304, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4280, + "src": "8177:5:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4298, + "name": "_update", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4242, + "src": "8148:7:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8148:35:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4306, + "nodeType": "ExpressionStatement", + "src": "8148:35:25" + } + ] + }, + "documentation": { + "id": 4276, + "nodeType": "StructuredDocumentation", + "src": "7672:307:25", + "text": " @dev Destroys a `value` amount of tokens from `account`, lowering the total supply.\n Relies on the `_update` mechanism.\n Emits a {Transfer} event with `to` set to the zero address.\n NOTE: This function is not virtual, {_update} should be overridden instead" + }, + "id": 4308, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burn", + "nameLocation": "7993:5:25", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4281, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4278, + "mutability": "mutable", + "name": "account", + "nameLocation": "8007:7:25", + "nodeType": "VariableDeclaration", + "scope": 4308, + "src": "7999:15:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4277, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7999:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4280, + "mutability": "mutable", + "name": "value", + "nameLocation": "8024:5:25", + "nodeType": "VariableDeclaration", + "scope": 4308, + "src": "8016:13:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4279, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8016:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7998:32:25" + }, + "returnParameters": { + "id": 4282, + "nodeType": "ParameterList", + "parameters": [], + "src": "8040:0:25" + }, + "scope": 4435, + "src": "7984:206:25", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4325, + "nodeType": "Block", + "src": "8800:54:25", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 4319, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4311, + "src": "8819:5:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4320, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4313, + "src": "8826:7:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4321, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4315, + "src": "8835:5:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "74727565", + "id": 4322, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8842:4:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 4318, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4326, + 4386 + ], + "referencedDeclaration": 4386, + "src": "8810:8:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$", + "typeString": "function (address,address,uint256,bool)" + } + }, + "id": 4323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8810:37:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4324, + "nodeType": "ExpressionStatement", + "src": "8810:37:25" + } + ] + }, + "documentation": { + "id": 4309, + "nodeType": "StructuredDocumentation", + "src": "8196:525:25", + "text": " @dev Sets `value` as the allowance of `spender` over the `owner` s tokens.\n This internal function is equivalent to `approve`, and can be used to\n e.g. set automatic allowances for certain subsystems, etc.\n Emits an {Approval} event.\n Requirements:\n - `owner` cannot be the zero address.\n - `spender` cannot be the zero address.\n Overrides to this logic should be done to the variant with an additional `bool emitEvent` argument." + }, + "id": 4326, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_approve", + "nameLocation": "8735:8:25", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4316, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4311, + "mutability": "mutable", + "name": "owner", + "nameLocation": "8752:5:25", + "nodeType": "VariableDeclaration", + "scope": 4326, + "src": "8744:13:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4310, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8744:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4313, + "mutability": "mutable", + "name": "spender", + "nameLocation": "8767:7:25", + "nodeType": "VariableDeclaration", + "scope": 4326, + "src": "8759:15:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4312, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8759:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4315, + "mutability": "mutable", + "name": "value", + "nameLocation": "8784:5:25", + "nodeType": "VariableDeclaration", + "scope": 4326, + "src": "8776:13:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4314, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8776:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8743:47:25" + }, + "returnParameters": { + "id": 4317, + "nodeType": "ParameterList", + "parameters": [], + "src": "8800:0:25" + }, + "scope": 4435, + "src": "8726:128:25", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4385, + "nodeType": "Block", + "src": "9799:334:25", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4338, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4329, + "src": "9813:5:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 4341, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9830:1:25", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4340, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9822:7:25", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4339, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9822:7:25", + "typeDescriptions": {} + } + }, + "id": 4342, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9822:10:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9813:19:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4352, + "nodeType": "IfStatement", + "src": "9809:89:25", + "trueBody": { + "id": 4351, + "nodeType": "Block", + "src": "9834:64:25", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 4347, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9884:1:25", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4346, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9876:7:25", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4345, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9876:7:25", + "typeDescriptions": {} + } + }, + "id": 4348, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9876:10:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4344, + "name": "ERC20InvalidApprover", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3441, + "src": "9855:20:25", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 4349, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9855:32:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4350, + "nodeType": "RevertStatement", + "src": "9848:39:25" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4353, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4331, + "src": "9911:7:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 4356, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9930:1:25", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4355, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9922:7:25", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4354, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9922:7:25", + "typeDescriptions": {} + } + }, + "id": 4357, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9922:10:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9911:21:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4367, + "nodeType": "IfStatement", + "src": "9907:90:25", + "trueBody": { + "id": 4366, + "nodeType": "Block", + "src": "9934:63:25", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 4362, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9983:1:25", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4361, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9975:7:25", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4360, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9975:7:25", + "typeDescriptions": {} + } + }, + "id": 4363, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9975:10:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4359, + "name": "ERC20InvalidSpender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3446, + "src": "9955:19:25", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 4364, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9955:31:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4365, + "nodeType": "RevertStatement", + "src": "9948:38:25" + } + ] + } + }, + { + "expression": { + "id": 4374, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "baseExpression": { + "id": 4368, + "name": "_allowances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3949, + "src": "10006:11:25", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 4371, + "indexExpression": { + "id": 4369, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4329, + "src": "10018:5:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10006:18:25", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4372, + "indexExpression": { + "id": 4370, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4331, + "src": "10025:7:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10006:27:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 4373, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4333, + "src": "10036:5:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10006:35:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4375, + "nodeType": "ExpressionStatement", + "src": "10006:35:25" + }, + { + "condition": { + "id": 4376, + "name": "emitEvent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4335, + "src": "10055:9:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4384, + "nodeType": "IfStatement", + "src": "10051:76:25", + "trueBody": { + "id": 4383, + "nodeType": "Block", + "src": "10066:61:25", + "statements": [ + { + "eventCall": { + "arguments": [ + { + "id": 4378, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4329, + "src": "10094:5:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4379, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4331, + "src": "10101:7:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4380, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4333, + "src": "10110:5:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4377, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4456, + "src": "10085:8:25", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 4381, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10085:31:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4382, + "nodeType": "EmitStatement", + "src": "10080:36:25" + } + ] + } + } + ] + }, + "documentation": { + "id": 4327, + "nodeType": "StructuredDocumentation", + "src": "8860:836:25", + "text": " @dev Variant of {_approve} with an optional flag to enable or disable the {Approval} event.\n By default (when calling {_approve}) the flag is set to true. On the other hand, approval changes made by\n `_spendAllowance` during the `transferFrom` operation set the flag to false. This saves gas by not emitting any\n `Approval` event during `transferFrom` operations.\n Anyone who wishes to continue emitting `Approval` events on the`transferFrom` operation can force the flag to\n true using the following override:\n ```solidity\n function _approve(address owner, address spender, uint256 value, bool) internal virtual override {\n super._approve(owner, spender, value, true);\n }\n ```\n Requirements are the same as {_approve}." + }, + "id": 4386, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_approve", + "nameLocation": "9710:8:25", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4336, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4329, + "mutability": "mutable", + "name": "owner", + "nameLocation": "9727:5:25", + "nodeType": "VariableDeclaration", + "scope": 4386, + "src": "9719:13:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4328, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9719:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4331, + "mutability": "mutable", + "name": "spender", + "nameLocation": "9742:7:25", + "nodeType": "VariableDeclaration", + "scope": 4386, + "src": "9734:15:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4330, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9734:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4333, + "mutability": "mutable", + "name": "value", + "nameLocation": "9759:5:25", + "nodeType": "VariableDeclaration", + "scope": 4386, + "src": "9751:13:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4332, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9751:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4335, + "mutability": "mutable", + "name": "emitEvent", + "nameLocation": "9771:9:25", + "nodeType": "VariableDeclaration", + "scope": 4386, + "src": "9766:14:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4334, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "9766:4:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "9718:63:25" + }, + "returnParameters": { + "id": 4337, + "nodeType": "ParameterList", + "parameters": [], + "src": "9799:0:25" + }, + "scope": 4435, + "src": "9701:432:25", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 4433, + "nodeType": "Block", + "src": "10504:388:25", + "statements": [ + { + "assignments": [ + 4397 + ], + "declarations": [ + { + "constant": false, + "id": 4397, + "mutability": "mutable", + "name": "currentAllowance", + "nameLocation": "10522:16:25", + "nodeType": "VariableDeclaration", + "scope": 4433, + "src": "10514:24:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4396, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10514:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 4402, + "initialValue": { + "arguments": [ + { + "id": 4399, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4389, + "src": "10551:5:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4400, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4391, + "src": "10558:7:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4398, + "name": "allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4062, + "src": "10541:9:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view returns (uint256)" + } + }, + "id": 4401, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10541:25:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10514:52:25" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4409, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4403, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4397, + "src": "10580:16:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 4406, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10605:7:25", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 4405, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10605:7:25", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + } + ], + "id": 4404, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "10600:4:25", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 4407, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10600:13:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint256", + "typeString": "type(uint256)" + } + }, + "id": 4408, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "10614:3:25", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "10600:17:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10580:37:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4432, + "nodeType": "IfStatement", + "src": "10576:310:25", + "trueBody": { + "id": 4431, + "nodeType": "Block", + "src": "10619:267:25", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4412, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4410, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4397, + "src": "10637:16:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 4411, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4393, + "src": "10656:5:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10637:24:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4420, + "nodeType": "IfStatement", + "src": "10633:130:25", + "trueBody": { + "id": 4419, + "nodeType": "Block", + "src": "10663:100:25", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 4414, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4391, + "src": "10715:7:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4415, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4397, + "src": "10724:16:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 4416, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4393, + "src": "10742:5:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4413, + "name": "ERC20InsufficientAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3436, + "src": "10688:26:25", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256) pure" + } + }, + "id": 4417, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10688:60:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4418, + "nodeType": "RevertStatement", + "src": "10681:67:25" + } + ] + } + }, + { + "id": 4430, + "nodeType": "UncheckedBlock", + "src": "10776:100:25", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 4422, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4389, + "src": "10813:5:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4423, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4391, + "src": "10820:7:25", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4426, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4424, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4397, + "src": "10829:16:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 4425, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4393, + "src": "10848:5:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10829:24:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "66616c7365", + "id": 4427, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10855:5:25", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 4421, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4326, + 4386 + ], + "referencedDeclaration": 4386, + "src": "10804:8:25", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$", + "typeString": "function (address,address,uint256,bool)" + } + }, + "id": 4428, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10804:57:25", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4429, + "nodeType": "ExpressionStatement", + "src": "10804:57:25" + } + ] + } + ] + } + } + ] + }, + "documentation": { + "id": 4387, + "nodeType": "StructuredDocumentation", + "src": "10139:271:25", + "text": " @dev Updates `owner` s allowance for `spender` based on spent `value`.\n Does not update the allowance value in case of infinite allowance.\n Revert if not enough allowance is available.\n Does not emit an {Approval} event." + }, + "id": 4434, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_spendAllowance", + "nameLocation": "10424:15:25", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4394, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4389, + "mutability": "mutable", + "name": "owner", + "nameLocation": "10448:5:25", + "nodeType": "VariableDeclaration", + "scope": 4434, + "src": "10440:13:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4388, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10440:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4391, + "mutability": "mutable", + "name": "spender", + "nameLocation": "10463:7:25", + "nodeType": "VariableDeclaration", + "scope": 4434, + "src": "10455:15:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4390, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10455:7:25", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4393, + "mutability": "mutable", + "name": "value", + "nameLocation": "10480:5:25", + "nodeType": "VariableDeclaration", + "scope": 4434, + "src": "10472:13:25", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4392, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10472:7:25", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10439:47:25" + }, + "returnParameters": { + "id": 4395, + "nodeType": "ParameterList", + "parameters": [], + "src": "10504:0:25" + }, + "scope": 4435, + "src": "10415:477:25", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 4436, + "src": "1106:9788:25", + "usedErrors": [ + 3417, + 3422, + 3427, + 3436, + 3441, + 3446 + ], + "usedEvents": [ + 4447, + 4456 + ] + } + ], + "src": "105:10790:25" + }, + "id": 25 + }, + "@openzeppelin/contracts/token/ERC20/IERC20.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "exportedSymbols": { + "IERC20": [ + 4513 + ] + }, + "id": 4514, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4437, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "106:24:26" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IERC20", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 4438, + "nodeType": "StructuredDocumentation", + "src": "132:71:26", + "text": " @dev Interface of the ERC-20 standard as defined in the ERC." + }, + "fullyImplemented": false, + "id": 4513, + "linearizedBaseContracts": [ + 4513 + ], + "name": "IERC20", + "nameLocation": "214:6:26", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "documentation": { + "id": 4439, + "nodeType": "StructuredDocumentation", + "src": "227:158:26", + "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero." + }, + "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "id": 4447, + "name": "Transfer", + "nameLocation": "396:8:26", + "nodeType": "EventDefinition", + "parameters": { + "id": 4446, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4441, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nameLocation": "421:4:26", + "nodeType": "VariableDeclaration", + "scope": 4447, + "src": "405:20:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4440, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "405:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4443, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "443:2:26", + "nodeType": "VariableDeclaration", + "scope": 4447, + "src": "427:18:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4442, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "427:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4445, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nameLocation": "455:5:26", + "nodeType": "VariableDeclaration", + "scope": 4447, + "src": "447:13:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4444, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "447:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "404:57:26" + }, + "src": "390:72:26" + }, + { + "anonymous": false, + "documentation": { + "id": 4448, + "nodeType": "StructuredDocumentation", + "src": "468:148:26", + "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance." + }, + "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "id": 4456, + "name": "Approval", + "nameLocation": "627:8:26", + "nodeType": "EventDefinition", + "parameters": { + "id": 4455, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4450, + "indexed": true, + "mutability": "mutable", + "name": "owner", + "nameLocation": "652:5:26", + "nodeType": "VariableDeclaration", + "scope": 4456, + "src": "636:21:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4449, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "636:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4452, + "indexed": true, + "mutability": "mutable", + "name": "spender", + "nameLocation": "675:7:26", + "nodeType": "VariableDeclaration", + "scope": 4456, + "src": "659:23:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4451, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "659:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4454, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nameLocation": "692:5:26", + "nodeType": "VariableDeclaration", + "scope": 4456, + "src": "684:13:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4453, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "684:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "635:63:26" + }, + "src": "621:78:26" + }, + { + "documentation": { + "id": 4457, + "nodeType": "StructuredDocumentation", + "src": "705:65:26", + "text": " @dev Returns the value of tokens in existence." + }, + "functionSelector": "18160ddd", + "id": 4462, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nameLocation": "784:11:26", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4458, + "nodeType": "ParameterList", + "parameters": [], + "src": "795:2:26" + }, + "returnParameters": { + "id": 4461, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4460, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4462, + "src": "821:7:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4459, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "821:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "820:9:26" + }, + "scope": 4513, + "src": "775:55:26", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 4463, + "nodeType": "StructuredDocumentation", + "src": "836:71:26", + "text": " @dev Returns the value of tokens owned by `account`." + }, + "functionSelector": "70a08231", + "id": 4470, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "921:9:26", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4466, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4465, + "mutability": "mutable", + "name": "account", + "nameLocation": "939:7:26", + "nodeType": "VariableDeclaration", + "scope": 4470, + "src": "931:15:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4464, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "931:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "930:17:26" + }, + "returnParameters": { + "id": 4469, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4468, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4470, + "src": "971:7:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4467, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "971:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "970:9:26" + }, + "scope": 4513, + "src": "912:68:26", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 4471, + "nodeType": "StructuredDocumentation", + "src": "986:213:26", + "text": " @dev Moves a `value` amount of tokens from the caller's account to `to`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event." + }, + "functionSelector": "a9059cbb", + "id": 4480, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nameLocation": "1213:8:26", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4476, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4473, + "mutability": "mutable", + "name": "to", + "nameLocation": "1230:2:26", + "nodeType": "VariableDeclaration", + "scope": 4480, + "src": "1222:10:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4472, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1222:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4475, + "mutability": "mutable", + "name": "value", + "nameLocation": "1242:5:26", + "nodeType": "VariableDeclaration", + "scope": 4480, + "src": "1234:13:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4474, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1234:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1221:27:26" + }, + "returnParameters": { + "id": 4479, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4478, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4480, + "src": "1267:4:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4477, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1267:4:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "1266:6:26" + }, + "scope": 4513, + "src": "1204:69:26", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 4481, + "nodeType": "StructuredDocumentation", + "src": "1279:264:26", + "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called." + }, + "functionSelector": "dd62ed3e", + "id": 4490, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nameLocation": "1557:9:26", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4486, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4483, + "mutability": "mutable", + "name": "owner", + "nameLocation": "1575:5:26", + "nodeType": "VariableDeclaration", + "scope": 4490, + "src": "1567:13:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4482, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1567:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4485, + "mutability": "mutable", + "name": "spender", + "nameLocation": "1590:7:26", + "nodeType": "VariableDeclaration", + "scope": 4490, + "src": "1582:15:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4484, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1582:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1566:32:26" + }, + "returnParameters": { + "id": 4489, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4488, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4490, + "src": "1622:7:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4487, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1622:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1621:9:26" + }, + "scope": 4513, + "src": "1548:83:26", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 4491, + "nodeType": "StructuredDocumentation", + "src": "1637:667:26", + "text": " @dev Sets a `value` amount of tokens as the allowance of `spender` over the\n caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event." + }, + "functionSelector": "095ea7b3", + "id": 4500, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "approve", + "nameLocation": "2318:7:26", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4496, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4493, + "mutability": "mutable", + "name": "spender", + "nameLocation": "2334:7:26", + "nodeType": "VariableDeclaration", + "scope": 4500, + "src": "2326:15:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4492, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2326:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4495, + "mutability": "mutable", + "name": "value", + "nameLocation": "2351:5:26", + "nodeType": "VariableDeclaration", + "scope": 4500, + "src": "2343:13:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4494, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2343:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2325:32:26" + }, + "returnParameters": { + "id": 4499, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4498, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4500, + "src": "2376:4:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4497, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2376:4:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2375:6:26" + }, + "scope": 4513, + "src": "2309:73:26", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 4501, + "nodeType": "StructuredDocumentation", + "src": "2388:297:26", + "text": " @dev Moves a `value` amount of tokens from `from` to `to` using the\n allowance mechanism. `value` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event." + }, + "functionSelector": "23b872dd", + "id": 4512, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nameLocation": "2699:12:26", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4508, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4503, + "mutability": "mutable", + "name": "from", + "nameLocation": "2720:4:26", + "nodeType": "VariableDeclaration", + "scope": 4512, + "src": "2712:12:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4502, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2712:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4505, + "mutability": "mutable", + "name": "to", + "nameLocation": "2734:2:26", + "nodeType": "VariableDeclaration", + "scope": 4512, + "src": "2726:10:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4504, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2726:7:26", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4507, + "mutability": "mutable", + "name": "value", + "nameLocation": "2746:5:26", + "nodeType": "VariableDeclaration", + "scope": 4512, + "src": "2738:13:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4506, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2738:7:26", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2711:41:26" + }, + "returnParameters": { + "id": 4511, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4510, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4512, + "src": "2771:4:26", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4509, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2771:4:26", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2770:6:26" + }, + "scope": 4513, + "src": "2690:87:26", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 4514, + "src": "204:2575:26", + "usedErrors": [], + "usedEvents": [ + 4447, + 4456 + ] + } + ], + "src": "106:2674:26" + }, + "id": 26 + }, + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol", + "exportedSymbols": { + "IERC20": [ + 4513 + ], + "IERC20Metadata": [ + 4539 + ] + }, + "id": 4540, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4515, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "125:24:27" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "file": "../IERC20.sol", + "id": 4517, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4540, + "sourceUnit": 4514, + "src": "151:37:27", + "symbolAliases": [ + { + "foreign": { + "id": 4516, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4513, + "src": "159:6:27", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 4519, + "name": "IERC20", + "nameLocations": [ + "306:6:27" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4513, + "src": "306:6:27" + }, + "id": 4520, + "nodeType": "InheritanceSpecifier", + "src": "306:6:27" + } + ], + "canonicalName": "IERC20Metadata", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 4518, + "nodeType": "StructuredDocumentation", + "src": "190:87:27", + "text": " @dev Interface for the optional metadata functions from the ERC-20 standard." + }, + "fullyImplemented": false, + "id": 4539, + "linearizedBaseContracts": [ + 4539, + 4513 + ], + "name": "IERC20Metadata", + "nameLocation": "288:14:27", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 4521, + "nodeType": "StructuredDocumentation", + "src": "319:54:27", + "text": " @dev Returns the name of the token." + }, + "functionSelector": "06fdde03", + "id": 4526, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "name", + "nameLocation": "387:4:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4522, + "nodeType": "ParameterList", + "parameters": [], + "src": "391:2:27" + }, + "returnParameters": { + "id": 4525, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4524, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4526, + "src": "417:13:27", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4523, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "417:6:27", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "416:15:27" + }, + "scope": 4539, + "src": "378:54:27", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 4527, + "nodeType": "StructuredDocumentation", + "src": "438:56:27", + "text": " @dev Returns the symbol of the token." + }, + "functionSelector": "95d89b41", + "id": 4532, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nameLocation": "508:6:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4528, + "nodeType": "ParameterList", + "parameters": [], + "src": "514:2:27" + }, + "returnParameters": { + "id": 4531, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4530, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4532, + "src": "540:13:27", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4529, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "540:6:27", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "539:15:27" + }, + "scope": 4539, + "src": "499:56:27", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 4533, + "nodeType": "StructuredDocumentation", + "src": "561:65:27", + "text": " @dev Returns the decimals places of the token." + }, + "functionSelector": "313ce567", + "id": 4538, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "decimals", + "nameLocation": "640:8:27", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4534, + "nodeType": "ParameterList", + "parameters": [], + "src": "648:2:27" + }, + "returnParameters": { + "id": 4537, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4536, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4538, + "src": "674:5:27", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 4535, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "674:5:27", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "673:7:27" + }, + "scope": 4539, + "src": "631:50:27", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 4540, + "src": "278:405:27", + "usedErrors": [], + "usedEvents": [ + 4447, + 4456 + ] + } + ], + "src": "125:559:27" + }, + "id": 27 + }, + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", + "exportedSymbols": { + "Address": [ + 5481 + ], + "IERC1363": [ + 3338 + ], + "IERC20": [ + 4513 + ], + "SafeERC20": [ + 4950 + ] + }, + "id": 4951, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4541, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "115:24:28" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "file": "../IERC20.sol", + "id": 4543, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4951, + "sourceUnit": 4514, + "src": "141:37:28", + "symbolAliases": [ + { + "foreign": { + "id": 4542, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4513, + "src": "149:6:28", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/interfaces/IERC1363.sol", + "file": "../../../interfaces/IERC1363.sol", + "id": 4545, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4951, + "sourceUnit": 3339, + "src": "179:58:28", + "symbolAliases": [ + { + "foreign": { + "id": 4544, + "name": "IERC1363", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3338, + "src": "187:8:28", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/Address.sol", + "file": "../../../utils/Address.sol", + "id": 4547, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 4951, + "sourceUnit": 5482, + "src": "238:51:28", + "symbolAliases": [ + { + "foreign": { + "id": 4546, + "name": "Address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5481, + "src": "246:7:28", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "SafeERC20", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 4548, + "nodeType": "StructuredDocumentation", + "src": "291:458:28", + "text": " @title SafeERC20\n @dev Wrappers around ERC-20 operations that throw on failure (when the token\n contract returns false). Tokens that return no value (and instead revert or\n throw on failure) are also supported, non-reverting calls are assumed to be\n successful.\n To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,\n which allows you to call the safe operations as `token.safeTransfer(...)`, etc." + }, + "fullyImplemented": true, + "id": 4950, + "linearizedBaseContracts": [ + 4950 + ], + "name": "SafeERC20", + "nameLocation": "758:9:28", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 4549, + "nodeType": "StructuredDocumentation", + "src": "774:65:28", + "text": " @dev An operation with an ERC-20 token failed." + }, + "errorSelector": "5274afe7", + "id": 4553, + "name": "SafeERC20FailedOperation", + "nameLocation": "850:24:28", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 4552, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4551, + "mutability": "mutable", + "name": "token", + "nameLocation": "883:5:28", + "nodeType": "VariableDeclaration", + "scope": 4553, + "src": "875:13:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4550, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "875:7:28", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "874:15:28" + }, + "src": "844:46:28" + }, + { + "documentation": { + "id": 4554, + "nodeType": "StructuredDocumentation", + "src": "896:71:28", + "text": " @dev Indicates a failed `decreaseAllowance` request." + }, + "errorSelector": "e570110f", + "id": 4562, + "name": "SafeERC20FailedDecreaseAllowance", + "nameLocation": "978:32:28", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 4561, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4556, + "mutability": "mutable", + "name": "spender", + "nameLocation": "1019:7:28", + "nodeType": "VariableDeclaration", + "scope": 4562, + "src": "1011:15:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4555, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1011:7:28", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4558, + "mutability": "mutable", + "name": "currentAllowance", + "nameLocation": "1036:16:28", + "nodeType": "VariableDeclaration", + "scope": 4562, + "src": "1028:24:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4557, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1028:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4560, + "mutability": "mutable", + "name": "requestedDecrease", + "nameLocation": "1062:17:28", + "nodeType": "VariableDeclaration", + "scope": 4562, + "src": "1054:25:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4559, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1054:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1010:70:28" + }, + "src": "972:109:28" + }, + { + "body": { + "id": 4585, + "nodeType": "Block", + "src": "1343:88:28", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 4574, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4566, + "src": "1373:5:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + { + "arguments": [ + { + "expression": { + "id": 4577, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4566, + "src": "1395:5:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + "id": 4578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1401:8:28", + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 4480, + "src": "1395:14:28", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + { + "components": [ + { + "id": 4579, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4568, + "src": "1412:2:28", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4580, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4570, + "src": "1416:5:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 4581, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1411:11:28", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$", + "typeString": "tuple(address,uint256)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + }, + { + "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$", + "typeString": "tuple(address,uint256)" + } + ], + "expression": { + "id": 4575, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "1380:3:28", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 4576, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1384:10:28", + "memberName": "encodeCall", + "nodeType": "MemberAccess", + "src": "1380:14:28", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 4582, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1380:43:28", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 4573, + "name": "_callOptionalReturn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4908, + "src": "1353:19:28", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4513_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (contract IERC20,bytes memory)" + } + }, + "id": 4583, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1353:71:28", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4584, + "nodeType": "ExpressionStatement", + "src": "1353:71:28" + } + ] + }, + "documentation": { + "id": 4563, + "nodeType": "StructuredDocumentation", + "src": "1087:179:28", + "text": " @dev Transfer `value` amount of `token` from the calling contract to `to`. If `token` returns no value,\n non-reverting calls are assumed to be successful." + }, + "id": 4586, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransfer", + "nameLocation": "1280:12:28", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4571, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4566, + "mutability": "mutable", + "name": "token", + "nameLocation": "1300:5:28", + "nodeType": "VariableDeclaration", + "scope": 4586, + "src": "1293:12:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4565, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4564, + "name": "IERC20", + "nameLocations": [ + "1293:6:28" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4513, + "src": "1293:6:28" + }, + "referencedDeclaration": 4513, + "src": "1293:6:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4568, + "mutability": "mutable", + "name": "to", + "nameLocation": "1315:2:28", + "nodeType": "VariableDeclaration", + "scope": 4586, + "src": "1307:10:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4567, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1307:7:28", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4570, + "mutability": "mutable", + "name": "value", + "nameLocation": "1327:5:28", + "nodeType": "VariableDeclaration", + "scope": 4586, + "src": "1319:13:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4569, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1319:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1292:41:28" + }, + "returnParameters": { + "id": 4572, + "nodeType": "ParameterList", + "parameters": [], + "src": "1343:0:28" + }, + "scope": 4950, + "src": "1271:160:28", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4612, + "nodeType": "Block", + "src": "1760:98:28", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 4600, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4590, + "src": "1790:5:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + { + "arguments": [ + { + "expression": { + "id": 4603, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4590, + "src": "1812:5:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + "id": 4604, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1818:12:28", + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 4512, + "src": "1812:18:28", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) external returns (bool)" + } + }, + { + "components": [ + { + "id": 4605, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4592, + "src": "1833:4:28", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4606, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4594, + "src": "1839:2:28", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4607, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4596, + "src": "1843:5:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 4608, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1832:17:28", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_address_$_t_uint256_$", + "typeString": "tuple(address,address,uint256)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) external returns (bool)" + }, + { + "typeIdentifier": "t_tuple$_t_address_$_t_address_$_t_uint256_$", + "typeString": "tuple(address,address,uint256)" + } + ], + "expression": { + "id": 4601, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "1797:3:28", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 4602, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1801:10:28", + "memberName": "encodeCall", + "nodeType": "MemberAccess", + "src": "1797:14:28", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 4609, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1797:53:28", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 4599, + "name": "_callOptionalReturn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4908, + "src": "1770:19:28", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4513_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (contract IERC20,bytes memory)" + } + }, + "id": 4610, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1770:81:28", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4611, + "nodeType": "ExpressionStatement", + "src": "1770:81:28" + } + ] + }, + "documentation": { + "id": 4587, + "nodeType": "StructuredDocumentation", + "src": "1437:228:28", + "text": " @dev Transfer `value` amount of `token` from `from` to `to`, spending the approval given by `from` to the\n calling contract. If `token` returns no value, non-reverting calls are assumed to be successful." + }, + "id": 4613, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nameLocation": "1679:16:28", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4597, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4590, + "mutability": "mutable", + "name": "token", + "nameLocation": "1703:5:28", + "nodeType": "VariableDeclaration", + "scope": 4613, + "src": "1696:12:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4589, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4588, + "name": "IERC20", + "nameLocations": [ + "1696:6:28" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4513, + "src": "1696:6:28" + }, + "referencedDeclaration": 4513, + "src": "1696:6:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4592, + "mutability": "mutable", + "name": "from", + "nameLocation": "1718:4:28", + "nodeType": "VariableDeclaration", + "scope": 4613, + "src": "1710:12:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4591, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1710:7:28", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4594, + "mutability": "mutable", + "name": "to", + "nameLocation": "1732:2:28", + "nodeType": "VariableDeclaration", + "scope": 4613, + "src": "1724:10:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4593, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1724:7:28", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4596, + "mutability": "mutable", + "name": "value", + "nameLocation": "1744:5:28", + "nodeType": "VariableDeclaration", + "scope": 4613, + "src": "1736:13:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4595, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1736:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1695:55:28" + }, + "returnParameters": { + "id": 4598, + "nodeType": "ParameterList", + "parameters": [], + "src": "1760:0:28" + }, + "scope": 4950, + "src": "1670:188:28", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4643, + "nodeType": "Block", + "src": "2600:139:28", + "statements": [ + { + "assignments": [ + 4625 + ], + "declarations": [ + { + "constant": false, + "id": 4625, + "mutability": "mutable", + "name": "oldAllowance", + "nameLocation": "2618:12:28", + "nodeType": "VariableDeclaration", + "scope": 4643, + "src": "2610:20:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4624, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2610:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 4634, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 4630, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "2657:4:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$4950", + "typeString": "library SafeERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$4950", + "typeString": "library SafeERC20" + } + ], + "id": 4629, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2649:7:28", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4628, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2649:7:28", + "typeDescriptions": {} + } + }, + "id": 4631, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2649:13:28", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4632, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4619, + "src": "2664:7:28", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 4626, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4617, + "src": "2633:5:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + "id": 4627, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2639:9:28", + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 4490, + "src": "2633:15:28", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 4633, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2633:39:28", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2610:62:28" + }, + { + "expression": { + "arguments": [ + { + "id": 4636, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4617, + "src": "2695:5:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + { + "id": 4637, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4619, + "src": "2702:7:28", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4640, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4638, + "name": "oldAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4625, + "src": "2711:12:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 4639, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4621, + "src": "2726:5:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2711:20:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4635, + "name": "forceApprove", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4734, + "src": "2682:12:28", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4513_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 4641, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2682:50:28", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4642, + "nodeType": "ExpressionStatement", + "src": "2682:50:28" + } + ] + }, + "documentation": { + "id": 4614, + "nodeType": "StructuredDocumentation", + "src": "1864:645:28", + "text": " @dev Increase the calling contract's allowance toward `spender` by `value`. If `token` returns no value,\n non-reverting calls are assumed to be successful.\n IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \"client\"\n smart contract uses ERC-7674 to set temporary allowances, then the \"client\" smart contract should avoid using\n this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\n that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior." + }, + "id": 4644, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeIncreaseAllowance", + "nameLocation": "2523:21:28", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4622, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4617, + "mutability": "mutable", + "name": "token", + "nameLocation": "2552:5:28", + "nodeType": "VariableDeclaration", + "scope": 4644, + "src": "2545:12:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4616, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4615, + "name": "IERC20", + "nameLocations": [ + "2545:6:28" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4513, + "src": "2545:6:28" + }, + "referencedDeclaration": 4513, + "src": "2545:6:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4619, + "mutability": "mutable", + "name": "spender", + "nameLocation": "2567:7:28", + "nodeType": "VariableDeclaration", + "scope": 4644, + "src": "2559:15:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4618, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2559:7:28", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4621, + "mutability": "mutable", + "name": "value", + "nameLocation": "2584:5:28", + "nodeType": "VariableDeclaration", + "scope": 4644, + "src": "2576:13:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4620, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2576:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2544:46:28" + }, + "returnParameters": { + "id": 4623, + "nodeType": "ParameterList", + "parameters": [], + "src": "2600:0:28" + }, + "scope": 4950, + "src": "2514:225:28", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4686, + "nodeType": "Block", + "src": "3505:370:28", + "statements": [ + { + "id": 4685, + "nodeType": "UncheckedBlock", + "src": "3515:354:28", + "statements": [ + { + "assignments": [ + 4656 + ], + "declarations": [ + { + "constant": false, + "id": 4656, + "mutability": "mutable", + "name": "currentAllowance", + "nameLocation": "3547:16:28", + "nodeType": "VariableDeclaration", + "scope": 4685, + "src": "3539:24:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4655, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3539:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 4665, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 4661, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "3590:4:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$4950", + "typeString": "library SafeERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$4950", + "typeString": "library SafeERC20" + } + ], + "id": 4660, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3582:7:28", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4659, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3582:7:28", + "typeDescriptions": {} + } + }, + "id": 4662, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3582:13:28", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4663, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4650, + "src": "3597:7:28", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 4657, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4648, + "src": "3566:5:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + "id": 4658, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3572:9:28", + "memberName": "allowance", + "nodeType": "MemberAccess", + "referencedDeclaration": 4490, + "src": "3566:15:28", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,address) view external returns (uint256)" + } + }, + "id": 4664, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3566:39:28", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3539:66:28" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4668, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4666, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4656, + "src": "3623:16:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 4667, + "name": "requestedDecrease", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4652, + "src": "3642:17:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3623:36:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4676, + "nodeType": "IfStatement", + "src": "3619:160:28", + "trueBody": { + "id": 4675, + "nodeType": "Block", + "src": "3661:118:28", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 4670, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4650, + "src": "3719:7:28", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4671, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4656, + "src": "3728:16:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 4672, + "name": "requestedDecrease", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4652, + "src": "3746:17:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4669, + "name": "SafeERC20FailedDecreaseAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4562, + "src": "3686:32:28", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256) pure" + } + }, + "id": 4673, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3686:78:28", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4674, + "nodeType": "RevertStatement", + "src": "3679:85:28" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 4678, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4648, + "src": "3805:5:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + { + "id": 4679, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4650, + "src": "3812:7:28", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4682, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4680, + "name": "currentAllowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4656, + "src": "3821:16:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 4681, + "name": "requestedDecrease", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4652, + "src": "3840:17:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3821:36:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4677, + "name": "forceApprove", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4734, + "src": "3792:12:28", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4513_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 4683, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3792:66:28", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4684, + "nodeType": "ExpressionStatement", + "src": "3792:66:28" + } + ] + } + ] + }, + "documentation": { + "id": 4645, + "nodeType": "StructuredDocumentation", + "src": "2745:657:28", + "text": " @dev Decrease the calling contract's allowance toward `spender` by `requestedDecrease`. If `token` returns no\n value, non-reverting calls are assumed to be successful.\n IMPORTANT: If the token implements ERC-7674 (ERC-20 with temporary allowance), and if the \"client\"\n smart contract uses ERC-7674 to set temporary allowances, then the \"client\" smart contract should avoid using\n this function. Performing a {safeIncreaseAllowance} or {safeDecreaseAllowance} operation on a token contract\n that has a non-zero temporary allowance (for that particular owner-spender) will result in unexpected behavior." + }, + "id": 4687, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeDecreaseAllowance", + "nameLocation": "3416:21:28", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4653, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4648, + "mutability": "mutable", + "name": "token", + "nameLocation": "3445:5:28", + "nodeType": "VariableDeclaration", + "scope": 4687, + "src": "3438:12:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4647, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4646, + "name": "IERC20", + "nameLocations": [ + "3438:6:28" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4513, + "src": "3438:6:28" + }, + "referencedDeclaration": 4513, + "src": "3438:6:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4650, + "mutability": "mutable", + "name": "spender", + "nameLocation": "3460:7:28", + "nodeType": "VariableDeclaration", + "scope": 4687, + "src": "3452:15:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4649, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3452:7:28", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4652, + "mutability": "mutable", + "name": "requestedDecrease", + "nameLocation": "3477:17:28", + "nodeType": "VariableDeclaration", + "scope": 4687, + "src": "3469:25:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4651, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3469:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3437:58:28" + }, + "returnParameters": { + "id": 4654, + "nodeType": "ParameterList", + "parameters": [], + "src": "3505:0:28" + }, + "scope": 4950, + "src": "3407:468:28", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4733, + "nodeType": "Block", + "src": "4529:303:28", + "statements": [ + { + "assignments": [ + 4699 + ], + "declarations": [ + { + "constant": false, + "id": 4699, + "mutability": "mutable", + "name": "approvalCall", + "nameLocation": "4552:12:28", + "nodeType": "VariableDeclaration", + "scope": 4733, + "src": "4539:25:28", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4698, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4539:5:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 4708, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 4702, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4691, + "src": "4582:5:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + "id": 4703, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4588:7:28", + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 4500, + "src": "4582:13:28", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + { + "components": [ + { + "id": 4704, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4693, + "src": "4598:7:28", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4705, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4695, + "src": "4607:5:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 4706, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4597:16:28", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$", + "typeString": "tuple(address,uint256)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + }, + { + "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$", + "typeString": "tuple(address,uint256)" + } + ], + "expression": { + "id": 4700, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "4567:3:28", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 4701, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4571:10:28", + "memberName": "encodeCall", + "nodeType": "MemberAccess", + "src": "4567:14:28", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 4707, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4567:47:28", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4539:75:28" + }, + { + "condition": { + "id": 4713, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4629:45:28", + "subExpression": { + "arguments": [ + { + "id": 4710, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4691, + "src": "4654:5:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + { + "id": 4711, + "name": "approvalCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4699, + "src": "4661:12:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 4709, + "name": "_callOptionalReturnBool", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4949, + "src": "4630:23:28", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4513_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (contract IERC20,bytes memory) returns (bool)" + } + }, + "id": 4712, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4630:44:28", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4732, + "nodeType": "IfStatement", + "src": "4625:201:28", + "trueBody": { + "id": 4731, + "nodeType": "Block", + "src": "4676:150:28", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 4715, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4691, + "src": "4710:5:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + { + "arguments": [ + { + "expression": { + "id": 4718, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4691, + "src": "4732:5:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + "id": 4719, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4738:7:28", + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 4500, + "src": "4732:13:28", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + { + "components": [ + { + "id": 4720, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4693, + "src": "4748:7:28", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "hexValue": "30", + "id": 4721, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4757:1:28", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 4722, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4747:12:28", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_rational_0_by_1_$", + "typeString": "tuple(address,int_const 0)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + }, + { + "typeIdentifier": "t_tuple$_t_address_$_t_rational_0_by_1_$", + "typeString": "tuple(address,int_const 0)" + } + ], + "expression": { + "id": 4716, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "4717:3:28", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 4717, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4721:10:28", + "memberName": "encodeCall", + "nodeType": "MemberAccess", + "src": "4717:14:28", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodecall_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 4723, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4717:43:28", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 4714, + "name": "_callOptionalReturn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4908, + "src": "4690:19:28", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4513_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (contract IERC20,bytes memory)" + } + }, + "id": 4724, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4690:71:28", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4725, + "nodeType": "ExpressionStatement", + "src": "4690:71:28" + }, + { + "expression": { + "arguments": [ + { + "id": 4727, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4691, + "src": "4795:5:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + { + "id": 4728, + "name": "approvalCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4699, + "src": "4802:12:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 4726, + "name": "_callOptionalReturn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4908, + "src": "4775:19:28", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4513_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (contract IERC20,bytes memory)" + } + }, + "id": 4729, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4775:40:28", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4730, + "nodeType": "ExpressionStatement", + "src": "4775:40:28" + } + ] + } + } + ] + }, + "documentation": { + "id": 4688, + "nodeType": "StructuredDocumentation", + "src": "3881:566:28", + "text": " @dev Set the calling contract's allowance toward `spender` to `value`. If `token` returns no value,\n non-reverting calls are assumed to be successful. Meant to be used with tokens that require the approval\n to be set to zero before setting it to a non-zero value, such as USDT.\n NOTE: If the token implements ERC-7674, this function will not modify any temporary allowance. This function\n only sets the \"standard\" allowance. Any temporary allowance will remain active, in addition to the value being\n set here." + }, + "id": 4734, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "forceApprove", + "nameLocation": "4461:12:28", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4696, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4691, + "mutability": "mutable", + "name": "token", + "nameLocation": "4481:5:28", + "nodeType": "VariableDeclaration", + "scope": 4734, + "src": "4474:12:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4690, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4689, + "name": "IERC20", + "nameLocations": [ + "4474:6:28" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4513, + "src": "4474:6:28" + }, + "referencedDeclaration": 4513, + "src": "4474:6:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4693, + "mutability": "mutable", + "name": "spender", + "nameLocation": "4496:7:28", + "nodeType": "VariableDeclaration", + "scope": 4734, + "src": "4488:15:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4692, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4488:7:28", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4695, + "mutability": "mutable", + "name": "value", + "nameLocation": "4513:5:28", + "nodeType": "VariableDeclaration", + "scope": 4734, + "src": "4505:13:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4694, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4505:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4473:46:28" + }, + "returnParameters": { + "id": 4697, + "nodeType": "ParameterList", + "parameters": [], + "src": "4529:0:28" + }, + "scope": 4950, + "src": "4452:380:28", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4776, + "nodeType": "Block", + "src": "5279:219:28", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4751, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 4747, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4740, + "src": "5293:2:28", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4748, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5296:4:28", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "5293:7:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 4749, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5301:6:28", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "5293:14:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 4750, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5311:1:28", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5293:19:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "id": 4765, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "5379:39:28", + "subExpression": { + "arguments": [ + { + "id": 4761, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4740, + "src": "5402:2:28", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4762, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4742, + "src": "5406:5:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 4763, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4744, + "src": "5413:4:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 4759, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4738, + "src": "5380:5:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1363_$3338", + "typeString": "contract IERC1363" + } + }, + "id": 4760, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5386:15:28", + "memberName": "transferAndCall", + "nodeType": "MemberAccess", + "referencedDeclaration": 3289, + "src": "5380:21:28", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory) external returns (bool)" + } + }, + "id": 4764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5380:38:28", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4774, + "nodeType": "IfStatement", + "src": "5375:117:28", + "trueBody": { + "id": 4773, + "nodeType": "Block", + "src": "5420:72:28", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "id": 4769, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4738, + "src": "5474:5:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1363_$3338", + "typeString": "contract IERC1363" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC1363_$3338", + "typeString": "contract IERC1363" + } + ], + "id": 4768, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5466:7:28", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4767, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5466:7:28", + "typeDescriptions": {} + } + }, + "id": 4770, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5466:14:28", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4766, + "name": "SafeERC20FailedOperation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4553, + "src": "5441:24:28", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 4771, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5441:40:28", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4772, + "nodeType": "RevertStatement", + "src": "5434:47:28" + } + ] + } + }, + "id": 4775, + "nodeType": "IfStatement", + "src": "5289:203:28", + "trueBody": { + "id": 4758, + "nodeType": "Block", + "src": "5314:55:28", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 4753, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4738, + "src": "5341:5:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1363_$3338", + "typeString": "contract IERC1363" + } + }, + { + "id": 4754, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4740, + "src": "5348:2:28", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4755, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4742, + "src": "5352:5:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC1363_$3338", + "typeString": "contract IERC1363" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4752, + "name": "safeTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4586, + "src": "5328:12:28", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4513_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 4756, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5328:30:28", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4757, + "nodeType": "ExpressionStatement", + "src": "5328:30:28" + } + ] + } + } + ] + }, + "documentation": { + "id": 4735, + "nodeType": "StructuredDocumentation", + "src": "4838:333:28", + "text": " @dev Performs an {ERC1363} transferAndCall, with a fallback to the simple {ERC20} transfer if the target has no\n code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n targeting contracts.\n Reverts if the returned value is other than `true`." + }, + "id": 4777, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferAndCallRelaxed", + "nameLocation": "5185:22:28", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4745, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4738, + "mutability": "mutable", + "name": "token", + "nameLocation": "5217:5:28", + "nodeType": "VariableDeclaration", + "scope": 4777, + "src": "5208:14:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1363_$3338", + "typeString": "contract IERC1363" + }, + "typeName": { + "id": 4737, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4736, + "name": "IERC1363", + "nameLocations": [ + "5208:8:28" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3338, + "src": "5208:8:28" + }, + "referencedDeclaration": 3338, + "src": "5208:8:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1363_$3338", + "typeString": "contract IERC1363" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4740, + "mutability": "mutable", + "name": "to", + "nameLocation": "5232:2:28", + "nodeType": "VariableDeclaration", + "scope": 4777, + "src": "5224:10:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4739, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5224:7:28", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4742, + "mutability": "mutable", + "name": "value", + "nameLocation": "5244:5:28", + "nodeType": "VariableDeclaration", + "scope": 4777, + "src": "5236:13:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4741, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5236:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4744, + "mutability": "mutable", + "name": "data", + "nameLocation": "5264:4:28", + "nodeType": "VariableDeclaration", + "scope": 4777, + "src": "5251:17:28", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4743, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5251:5:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5207:62:28" + }, + "returnParameters": { + "id": 4746, + "nodeType": "ParameterList", + "parameters": [], + "src": "5279:0:28" + }, + "scope": 4950, + "src": "5176:322:28", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4823, + "nodeType": "Block", + "src": "6017:239:28", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4796, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 4792, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4785, + "src": "6031:2:28", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4793, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6034:4:28", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "6031:7:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 4794, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6039:6:28", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "6031:14:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 4795, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6049:1:28", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6031:19:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "id": 4812, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "6127:49:28", + "subExpression": { + "arguments": [ + { + "id": 4807, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4783, + "src": "6154:4:28", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4808, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4785, + "src": "6160:2:28", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4809, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4787, + "src": "6164:5:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 4810, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4789, + "src": "6171:4:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 4805, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4781, + "src": "6128:5:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1363_$3338", + "typeString": "contract IERC1363" + } + }, + "id": 4806, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6134:19:28", + "memberName": "transferFromAndCall", + "nodeType": "MemberAccess", + "referencedDeclaration": 3315, + "src": "6128:25:28", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,address,uint256,bytes memory) external returns (bool)" + } + }, + "id": 4811, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6128:48:28", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4821, + "nodeType": "IfStatement", + "src": "6123:127:28", + "trueBody": { + "id": 4820, + "nodeType": "Block", + "src": "6178:72:28", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "id": 4816, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4781, + "src": "6232:5:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1363_$3338", + "typeString": "contract IERC1363" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC1363_$3338", + "typeString": "contract IERC1363" + } + ], + "id": 4815, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6224:7:28", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4814, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6224:7:28", + "typeDescriptions": {} + } + }, + "id": 4817, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6224:14:28", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4813, + "name": "SafeERC20FailedOperation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4553, + "src": "6199:24:28", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 4818, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6199:40:28", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4819, + "nodeType": "RevertStatement", + "src": "6192:47:28" + } + ] + } + }, + "id": 4822, + "nodeType": "IfStatement", + "src": "6027:223:28", + "trueBody": { + "id": 4804, + "nodeType": "Block", + "src": "6052:65:28", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 4798, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4781, + "src": "6083:5:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1363_$3338", + "typeString": "contract IERC1363" + } + }, + { + "id": 4799, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4783, + "src": "6090:4:28", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4800, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4785, + "src": "6096:2:28", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4801, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4787, + "src": "6100:5:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC1363_$3338", + "typeString": "contract IERC1363" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4797, + "name": "safeTransferFrom", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4613, + "src": "6066:16:28", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4513_$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (contract IERC20,address,address,uint256)" + } + }, + "id": 4802, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6066:40:28", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4803, + "nodeType": "ExpressionStatement", + "src": "6066:40:28" + } + ] + } + } + ] + }, + "documentation": { + "id": 4778, + "nodeType": "StructuredDocumentation", + "src": "5504:341:28", + "text": " @dev Performs an {ERC1363} transferFromAndCall, with a fallback to the simple {ERC20} transferFrom if the target\n has no code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n targeting contracts.\n Reverts if the returned value is other than `true`." + }, + "id": 4824, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFromAndCallRelaxed", + "nameLocation": "5859:26:28", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4790, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4781, + "mutability": "mutable", + "name": "token", + "nameLocation": "5904:5:28", + "nodeType": "VariableDeclaration", + "scope": 4824, + "src": "5895:14:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1363_$3338", + "typeString": "contract IERC1363" + }, + "typeName": { + "id": 4780, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4779, + "name": "IERC1363", + "nameLocations": [ + "5895:8:28" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3338, + "src": "5895:8:28" + }, + "referencedDeclaration": 3338, + "src": "5895:8:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1363_$3338", + "typeString": "contract IERC1363" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4783, + "mutability": "mutable", + "name": "from", + "nameLocation": "5927:4:28", + "nodeType": "VariableDeclaration", + "scope": 4824, + "src": "5919:12:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4782, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5919:7:28", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4785, + "mutability": "mutable", + "name": "to", + "nameLocation": "5949:2:28", + "nodeType": "VariableDeclaration", + "scope": 4824, + "src": "5941:10:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4784, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5941:7:28", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4787, + "mutability": "mutable", + "name": "value", + "nameLocation": "5969:5:28", + "nodeType": "VariableDeclaration", + "scope": 4824, + "src": "5961:13:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4786, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5961:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4789, + "mutability": "mutable", + "name": "data", + "nameLocation": "5997:4:28", + "nodeType": "VariableDeclaration", + "scope": 4824, + "src": "5984:17:28", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4788, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5984:5:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5885:122:28" + }, + "returnParameters": { + "id": 4791, + "nodeType": "ParameterList", + "parameters": [], + "src": "6017:0:28" + }, + "scope": 4950, + "src": "5850:406:28", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4866, + "nodeType": "Block", + "src": "7023:218:28", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4841, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 4837, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4830, + "src": "7037:2:28", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4838, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7040:4:28", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "7037:7:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 4839, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7045:6:28", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "7037:14:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 4840, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7055:1:28", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "7037:19:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "id": 4855, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "7123:38:28", + "subExpression": { + "arguments": [ + { + "id": 4851, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4830, + "src": "7145:2:28", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4852, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4832, + "src": "7149:5:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 4853, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4834, + "src": "7156:4:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 4849, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4828, + "src": "7124:5:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1363_$3338", + "typeString": "contract IERC1363" + } + }, + "id": 4850, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7130:14:28", + "memberName": "approveAndCall", + "nodeType": "MemberAccess", + "referencedDeclaration": 3337, + "src": "7124:20:28", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory) external returns (bool)" + } + }, + "id": 4854, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7124:37:28", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4864, + "nodeType": "IfStatement", + "src": "7119:116:28", + "trueBody": { + "id": 4863, + "nodeType": "Block", + "src": "7163:72:28", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "id": 4859, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4828, + "src": "7217:5:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1363_$3338", + "typeString": "contract IERC1363" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC1363_$3338", + "typeString": "contract IERC1363" + } + ], + "id": 4858, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7209:7:28", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4857, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7209:7:28", + "typeDescriptions": {} + } + }, + "id": 4860, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7209:14:28", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4856, + "name": "SafeERC20FailedOperation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4553, + "src": "7184:24:28", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 4861, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7184:40:28", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4862, + "nodeType": "RevertStatement", + "src": "7177:47:28" + } + ] + } + }, + "id": 4865, + "nodeType": "IfStatement", + "src": "7033:202:28", + "trueBody": { + "id": 4848, + "nodeType": "Block", + "src": "7058:55:28", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 4843, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4828, + "src": "7085:5:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1363_$3338", + "typeString": "contract IERC1363" + } + }, + { + "id": 4844, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4830, + "src": "7092:2:28", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 4845, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4832, + "src": "7096:5:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC1363_$3338", + "typeString": "contract IERC1363" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4842, + "name": "forceApprove", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4734, + "src": "7072:12:28", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4513_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 4846, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7072:30:28", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4847, + "nodeType": "ExpressionStatement", + "src": "7072:30:28" + } + ] + } + } + ] + }, + "documentation": { + "id": 4825, + "nodeType": "StructuredDocumentation", + "src": "6262:654:28", + "text": " @dev Performs an {ERC1363} approveAndCall, with a fallback to the simple {ERC20} approve if the target has no\n code. This can be used to implement an {ERC721}-like safe transfer that rely on {ERC1363} checks when\n targeting contracts.\n NOTE: When the recipient address (`to`) has no code (i.e. is an EOA), this function behaves as {forceApprove}.\n Opposedly, when the recipient address (`to`) has code, this function only attempts to call {ERC1363-approveAndCall}\n once without retrying, and relies on the returned value to be true.\n Reverts if the returned value is other than `true`." + }, + "id": 4867, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approveAndCallRelaxed", + "nameLocation": "6930:21:28", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4835, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4828, + "mutability": "mutable", + "name": "token", + "nameLocation": "6961:5:28", + "nodeType": "VariableDeclaration", + "scope": 4867, + "src": "6952:14:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1363_$3338", + "typeString": "contract IERC1363" + }, + "typeName": { + "id": 4827, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4826, + "name": "IERC1363", + "nameLocations": [ + "6952:8:28" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3338, + "src": "6952:8:28" + }, + "referencedDeclaration": 3338, + "src": "6952:8:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1363_$3338", + "typeString": "contract IERC1363" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4830, + "mutability": "mutable", + "name": "to", + "nameLocation": "6976:2:28", + "nodeType": "VariableDeclaration", + "scope": 4867, + "src": "6968:10:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4829, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6968:7:28", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4832, + "mutability": "mutable", + "name": "value", + "nameLocation": "6988:5:28", + "nodeType": "VariableDeclaration", + "scope": 4867, + "src": "6980:13:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4831, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6980:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4834, + "mutability": "mutable", + "name": "data", + "nameLocation": "7008:4:28", + "nodeType": "VariableDeclaration", + "scope": 4867, + "src": "6995:17:28", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4833, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6995:5:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "6951:62:28" + }, + "returnParameters": { + "id": 4836, + "nodeType": "ParameterList", + "parameters": [], + "src": "7023:0:28" + }, + "scope": 4950, + "src": "6921:320:28", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4907, + "nodeType": "Block", + "src": "7808:650:28", + "statements": [ + { + "assignments": [ + 4877 + ], + "declarations": [ + { + "constant": false, + "id": 4877, + "mutability": "mutable", + "name": "returnSize", + "nameLocation": "7826:10:28", + "nodeType": "VariableDeclaration", + "scope": 4907, + "src": "7818:18:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4876, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7818:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 4878, + "nodeType": "VariableDeclarationStatement", + "src": "7818:18:28" + }, + { + "assignments": [ + 4880 + ], + "declarations": [ + { + "constant": false, + "id": 4880, + "mutability": "mutable", + "name": "returnValue", + "nameLocation": "7854:11:28", + "nodeType": "VariableDeclaration", + "scope": 4907, + "src": "7846:19:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4879, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7846:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 4881, + "nodeType": "VariableDeclarationStatement", + "src": "7846:19:28" + }, + { + "AST": { + "nativeSrc": "7900:396:28", + "nodeType": "YulBlock", + "src": "7900:396:28", + "statements": [ + { + "nativeSrc": "7914:75:28", + "nodeType": "YulVariableDeclaration", + "src": "7914:75:28", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "7934:3:28", + "nodeType": "YulIdentifier", + "src": "7934:3:28" + }, + "nativeSrc": "7934:5:28", + "nodeType": "YulFunctionCall", + "src": "7934:5:28" + }, + { + "name": "token", + "nativeSrc": "7941:5:28", + "nodeType": "YulIdentifier", + "src": "7941:5:28" + }, + { + "kind": "number", + "nativeSrc": "7948:1:28", + "nodeType": "YulLiteral", + "src": "7948:1:28", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "name": "data", + "nativeSrc": "7955:4:28", + "nodeType": "YulIdentifier", + "src": "7955:4:28" + }, + { + "kind": "number", + "nativeSrc": "7961:4:28", + "nodeType": "YulLiteral", + "src": "7961:4:28", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7951:3:28", + "nodeType": "YulIdentifier", + "src": "7951:3:28" + }, + "nativeSrc": "7951:15:28", + "nodeType": "YulFunctionCall", + "src": "7951:15:28" + }, + { + "arguments": [ + { + "name": "data", + "nativeSrc": "7974:4:28", + "nodeType": "YulIdentifier", + "src": "7974:4:28" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "7968:5:28", + "nodeType": "YulIdentifier", + "src": "7968:5:28" + }, + "nativeSrc": "7968:11:28", + "nodeType": "YulFunctionCall", + "src": "7968:11:28" + }, + { + "kind": "number", + "nativeSrc": "7981:1:28", + "nodeType": "YulLiteral", + "src": "7981:1:28", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "7984:4:28", + "nodeType": "YulLiteral", + "src": "7984:4:28", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "call", + "nativeSrc": "7929:4:28", + "nodeType": "YulIdentifier", + "src": "7929:4:28" + }, + "nativeSrc": "7929:60:28", + "nodeType": "YulFunctionCall", + "src": "7929:60:28" + }, + "variables": [ + { + "name": "success", + "nativeSrc": "7918:7:28", + "nodeType": "YulTypedName", + "src": "7918:7:28", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "8050:157:28", + "nodeType": "YulBlock", + "src": "8050:157:28", + "statements": [ + { + "nativeSrc": "8068:22:28", + "nodeType": "YulVariableDeclaration", + "src": "8068:22:28", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8085:4:28", + "nodeType": "YulLiteral", + "src": "8085:4:28", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "8079:5:28", + "nodeType": "YulIdentifier", + "src": "8079:5:28" + }, + "nativeSrc": "8079:11:28", + "nodeType": "YulFunctionCall", + "src": "8079:11:28" + }, + "variables": [ + { + "name": "ptr", + "nativeSrc": "8072:3:28", + "nodeType": "YulTypedName", + "src": "8072:3:28", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "ptr", + "nativeSrc": "8122:3:28", + "nodeType": "YulIdentifier", + "src": "8122:3:28" + }, + { + "kind": "number", + "nativeSrc": "8127:1:28", + "nodeType": "YulLiteral", + "src": "8127:1:28", + "type": "", + "value": "0" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "8130:14:28", + "nodeType": "YulIdentifier", + "src": "8130:14:28" + }, + "nativeSrc": "8130:16:28", + "nodeType": "YulFunctionCall", + "src": "8130:16:28" + } + ], + "functionName": { + "name": "returndatacopy", + "nativeSrc": "8107:14:28", + "nodeType": "YulIdentifier", + "src": "8107:14:28" + }, + "nativeSrc": "8107:40:28", + "nodeType": "YulFunctionCall", + "src": "8107:40:28" + }, + "nativeSrc": "8107:40:28", + "nodeType": "YulExpressionStatement", + "src": "8107:40:28" + }, + { + "expression": { + "arguments": [ + { + "name": "ptr", + "nativeSrc": "8171:3:28", + "nodeType": "YulIdentifier", + "src": "8171:3:28" + }, + { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "8176:14:28", + "nodeType": "YulIdentifier", + "src": "8176:14:28" + }, + "nativeSrc": "8176:16:28", + "nodeType": "YulFunctionCall", + "src": "8176:16:28" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "8164:6:28", + "nodeType": "YulIdentifier", + "src": "8164:6:28" + }, + "nativeSrc": "8164:29:28", + "nodeType": "YulFunctionCall", + "src": "8164:29:28" + }, + "nativeSrc": "8164:29:28", + "nodeType": "YulExpressionStatement", + "src": "8164:29:28" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "success", + "nativeSrc": "8041:7:28", + "nodeType": "YulIdentifier", + "src": "8041:7:28" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "8034:6:28", + "nodeType": "YulIdentifier", + "src": "8034:6:28" + }, + "nativeSrc": "8034:15:28", + "nodeType": "YulFunctionCall", + "src": "8034:15:28" + }, + "nativeSrc": "8031:176:28", + "nodeType": "YulIf", + "src": "8031:176:28" + }, + { + "nativeSrc": "8220:30:28", + "nodeType": "YulAssignment", + "src": "8220:30:28", + "value": { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "8234:14:28", + "nodeType": "YulIdentifier", + "src": "8234:14:28" + }, + "nativeSrc": "8234:16:28", + "nodeType": "YulFunctionCall", + "src": "8234:16:28" + }, + "variableNames": [ + { + "name": "returnSize", + "nativeSrc": "8220:10:28", + "nodeType": "YulIdentifier", + "src": "8220:10:28" + } + ] + }, + { + "nativeSrc": "8263:23:28", + "nodeType": "YulAssignment", + "src": "8263:23:28", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8284:1:28", + "nodeType": "YulLiteral", + "src": "8284:1:28", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "8278:5:28", + "nodeType": "YulIdentifier", + "src": "8278:5:28" + }, + "nativeSrc": "8278:8:28", + "nodeType": "YulFunctionCall", + "src": "8278:8:28" + }, + "variableNames": [ + { + "name": "returnValue", + "nativeSrc": "8263:11:28", + "nodeType": "YulIdentifier", + "src": "8263:11:28" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4873, + "isOffset": false, + "isSlot": false, + "src": "7955:4:28", + "valueSize": 1 + }, + { + "declaration": 4873, + "isOffset": false, + "isSlot": false, + "src": "7974:4:28", + "valueSize": 1 + }, + { + "declaration": 4877, + "isOffset": false, + "isSlot": false, + "src": "8220:10:28", + "valueSize": 1 + }, + { + "declaration": 4880, + "isOffset": false, + "isSlot": false, + "src": "8263:11:28", + "valueSize": 1 + }, + { + "declaration": 4871, + "isOffset": false, + "isSlot": false, + "src": "7941:5:28", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 4882, + "nodeType": "InlineAssembly", + "src": "7875:421:28" + }, + { + "condition": { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4885, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4883, + "name": "returnSize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4877, + "src": "8310:10:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 4884, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8324:1:28", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8310:15:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4896, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4894, + "name": "returnValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4880, + "src": "8362:11:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "31", + "id": 4895, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8377:1:28", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "8362:16:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4897, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "8310:68:28", + "trueExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4893, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "arguments": [ + { + "id": 4888, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4871, + "src": "8336:5:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + ], + "id": 4887, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8328:7:28", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4886, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8328:7:28", + "typeDescriptions": {} + } + }, + "id": 4889, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8328:14:28", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4890, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8343:4:28", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "8328:19:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 4891, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8348:6:28", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "8328:26:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 4892, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8358:1:28", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8328:31:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4906, + "nodeType": "IfStatement", + "src": "8306:146:28", + "trueBody": { + "id": 4905, + "nodeType": "Block", + "src": "8380:72:28", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "id": 4901, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4871, + "src": "8434:5:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + ], + "id": 4900, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8426:7:28", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4899, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8426:7:28", + "typeDescriptions": {} + } + }, + "id": 4902, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8426:14:28", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4898, + "name": "SafeERC20FailedOperation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4553, + "src": "8401:24:28", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 4903, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8401:40:28", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4904, + "nodeType": "RevertStatement", + "src": "8394:47:28" + } + ] + } + } + ] + }, + "documentation": { + "id": 4868, + "nodeType": "StructuredDocumentation", + "src": "7247:486:28", + "text": " @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants).\n This is a variant of {_callOptionalReturnBool} that reverts if call fails to meet the requirements." + }, + "id": 4908, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_callOptionalReturn", + "nameLocation": "7747:19:28", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4874, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4871, + "mutability": "mutable", + "name": "token", + "nameLocation": "7774:5:28", + "nodeType": "VariableDeclaration", + "scope": 4908, + "src": "7767:12:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4870, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4869, + "name": "IERC20", + "nameLocations": [ + "7767:6:28" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4513, + "src": "7767:6:28" + }, + "referencedDeclaration": 4513, + "src": "7767:6:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4873, + "mutability": "mutable", + "name": "data", + "nameLocation": "7794:4:28", + "nodeType": "VariableDeclaration", + "scope": 4908, + "src": "7781:17:28", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4872, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7781:5:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "7766:33:28" + }, + "returnParameters": { + "id": 4875, + "nodeType": "ParameterList", + "parameters": [], + "src": "7808:0:28" + }, + "scope": 4950, + "src": "7738:720:28", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 4948, + "nodeType": "Block", + "src": "9049:391:28", + "statements": [ + { + "assignments": [ + 4920 + ], + "declarations": [ + { + "constant": false, + "id": 4920, + "mutability": "mutable", + "name": "success", + "nameLocation": "9064:7:28", + "nodeType": "VariableDeclaration", + "scope": 4948, + "src": "9059:12:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4919, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "9059:4:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 4921, + "nodeType": "VariableDeclarationStatement", + "src": "9059:12:28" + }, + { + "assignments": [ + 4923 + ], + "declarations": [ + { + "constant": false, + "id": 4923, + "mutability": "mutable", + "name": "returnSize", + "nameLocation": "9089:10:28", + "nodeType": "VariableDeclaration", + "scope": 4948, + "src": "9081:18:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4922, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9081:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 4924, + "nodeType": "VariableDeclarationStatement", + "src": "9081:18:28" + }, + { + "assignments": [ + 4926 + ], + "declarations": [ + { + "constant": false, + "id": 4926, + "mutability": "mutable", + "name": "returnValue", + "nameLocation": "9117:11:28", + "nodeType": "VariableDeclaration", + "scope": 4948, + "src": "9109:19:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4925, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9109:7:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 4927, + "nodeType": "VariableDeclarationStatement", + "src": "9109:19:28" + }, + { + "AST": { + "nativeSrc": "9163:174:28", + "nodeType": "YulBlock", + "src": "9163:174:28", + "statements": [ + { + "nativeSrc": "9177:71:28", + "nodeType": "YulAssignment", + "src": "9177:71:28", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "9193:3:28", + "nodeType": "YulIdentifier", + "src": "9193:3:28" + }, + "nativeSrc": "9193:5:28", + "nodeType": "YulFunctionCall", + "src": "9193:5:28" + }, + { + "name": "token", + "nativeSrc": "9200:5:28", + "nodeType": "YulIdentifier", + "src": "9200:5:28" + }, + { + "kind": "number", + "nativeSrc": "9207:1:28", + "nodeType": "YulLiteral", + "src": "9207:1:28", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "name": "data", + "nativeSrc": "9214:4:28", + "nodeType": "YulIdentifier", + "src": "9214:4:28" + }, + { + "kind": "number", + "nativeSrc": "9220:4:28", + "nodeType": "YulLiteral", + "src": "9220:4:28", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9210:3:28", + "nodeType": "YulIdentifier", + "src": "9210:3:28" + }, + "nativeSrc": "9210:15:28", + "nodeType": "YulFunctionCall", + "src": "9210:15:28" + }, + { + "arguments": [ + { + "name": "data", + "nativeSrc": "9233:4:28", + "nodeType": "YulIdentifier", + "src": "9233:4:28" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "9227:5:28", + "nodeType": "YulIdentifier", + "src": "9227:5:28" + }, + "nativeSrc": "9227:11:28", + "nodeType": "YulFunctionCall", + "src": "9227:11:28" + }, + { + "kind": "number", + "nativeSrc": "9240:1:28", + "nodeType": "YulLiteral", + "src": "9240:1:28", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "9243:4:28", + "nodeType": "YulLiteral", + "src": "9243:4:28", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "call", + "nativeSrc": "9188:4:28", + "nodeType": "YulIdentifier", + "src": "9188:4:28" + }, + "nativeSrc": "9188:60:28", + "nodeType": "YulFunctionCall", + "src": "9188:60:28" + }, + "variableNames": [ + { + "name": "success", + "nativeSrc": "9177:7:28", + "nodeType": "YulIdentifier", + "src": "9177:7:28" + } + ] + }, + { + "nativeSrc": "9261:30:28", + "nodeType": "YulAssignment", + "src": "9261:30:28", + "value": { + "arguments": [], + "functionName": { + "name": "returndatasize", + "nativeSrc": "9275:14:28", + "nodeType": "YulIdentifier", + "src": "9275:14:28" + }, + "nativeSrc": "9275:16:28", + "nodeType": "YulFunctionCall", + "src": "9275:16:28" + }, + "variableNames": [ + { + "name": "returnSize", + "nativeSrc": "9261:10:28", + "nodeType": "YulIdentifier", + "src": "9261:10:28" + } + ] + }, + { + "nativeSrc": "9304:23:28", + "nodeType": "YulAssignment", + "src": "9304:23:28", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9325:1:28", + "nodeType": "YulLiteral", + "src": "9325:1:28", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "9319:5:28", + "nodeType": "YulIdentifier", + "src": "9319:5:28" + }, + "nativeSrc": "9319:8:28", + "nodeType": "YulFunctionCall", + "src": "9319:8:28" + }, + "variableNames": [ + { + "name": "returnValue", + "nativeSrc": "9304:11:28", + "nodeType": "YulIdentifier", + "src": "9304:11:28" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 4914, + "isOffset": false, + "isSlot": false, + "src": "9214:4:28", + "valueSize": 1 + }, + { + "declaration": 4914, + "isOffset": false, + "isSlot": false, + "src": "9233:4:28", + "valueSize": 1 + }, + { + "declaration": 4923, + "isOffset": false, + "isSlot": false, + "src": "9261:10:28", + "valueSize": 1 + }, + { + "declaration": 4926, + "isOffset": false, + "isSlot": false, + "src": "9304:11:28", + "valueSize": 1 + }, + { + "declaration": 4920, + "isOffset": false, + "isSlot": false, + "src": "9177:7:28", + "valueSize": 1 + }, + { + "declaration": 4912, + "isOffset": false, + "isSlot": false, + "src": "9200:5:28", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 4928, + "nodeType": "InlineAssembly", + "src": "9138:199:28" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 4946, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4929, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4920, + "src": "9353:7:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "components": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4930, + "name": "returnSize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4923, + "src": "9365:10:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 4931, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9379:1:28", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9365:15:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4943, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 4941, + "name": "returnValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4926, + "src": "9416:11:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "31", + "id": 4942, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9431:1:28", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "9416:16:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4944, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "9365:67:28", + "trueExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4940, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "arguments": [ + { + "id": 4935, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4912, + "src": "9391:5:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + ], + "id": 4934, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9383:7:28", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4933, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9383:7:28", + "typeDescriptions": {} + } + }, + "id": 4936, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9383:14:28", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4937, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9398:4:28", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "9383:19:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 4938, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9403:6:28", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "9383:26:28", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 4939, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9412:1:28", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9383:30:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 4945, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "9364:69:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "9353:80:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4918, + "id": 4947, + "nodeType": "Return", + "src": "9346:87:28" + } + ] + }, + "documentation": { + "id": 4909, + "nodeType": "StructuredDocumentation", + "src": "8464:491:28", + "text": " @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\n on the return value: the return value is optional (but if data is returned, it must not be false).\n @param token The token targeted by the call.\n @param data The call data (encoded using abi.encode or one of its variants).\n This is a variant of {_callOptionalReturn} that silently catches all reverts and returns a bool instead." + }, + "id": 4949, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_callOptionalReturnBool", + "nameLocation": "8969:23:28", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4915, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4912, + "mutability": "mutable", + "name": "token", + "nameLocation": "9000:5:28", + "nodeType": "VariableDeclaration", + "scope": 4949, + "src": "8993:12:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 4911, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 4910, + "name": "IERC20", + "nameLocations": [ + "8993:6:28" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4513, + "src": "8993:6:28" + }, + "referencedDeclaration": 4513, + "src": "8993:6:28", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4914, + "mutability": "mutable", + "name": "data", + "nameLocation": "9020:4:28", + "nodeType": "VariableDeclaration", + "scope": 4949, + "src": "9007:17:28", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4913, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "9007:5:28", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "8992:33:28" + }, + "returnParameters": { + "id": 4918, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4917, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 4949, + "src": "9043:4:28", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4916, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "9043:4:28", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "9042:6:28" + }, + "scope": 4950, + "src": "8960:480:28", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + } + ], + "scope": 4951, + "src": "750:8692:28", + "usedErrors": [ + 4553, + 4562 + ], + "usedEvents": [] + } + ], + "src": "115:9328:28" + }, + "id": 28 + }, + "@openzeppelin/contracts/token/ERC721/IERC721.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721.sol", + "exportedSymbols": { + "IERC165": [ + 6389 + ], + "IERC721": [ + 5067 + ] + }, + "id": 5068, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4952, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "108:24:29" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol", + "file": "../../utils/introspection/IERC165.sol", + "id": 4954, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 5068, + "sourceUnit": 6390, + "src": "134:62:29", + "symbolAliases": [ + { + "foreign": { + "id": 4953, + "name": "IERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6389, + "src": "142:7:29", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 4956, + "name": "IERC165", + "nameLocations": [ + "288:7:29" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6389, + "src": "288:7:29" + }, + "id": 4957, + "nodeType": "InheritanceSpecifier", + "src": "288:7:29" + } + ], + "canonicalName": "IERC721", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 4955, + "nodeType": "StructuredDocumentation", + "src": "198:68:29", + "text": " @dev Required interface of an ERC-721 compliant contract." + }, + "fullyImplemented": false, + "id": 5067, + "linearizedBaseContracts": [ + 5067, + 6389 + ], + "name": "IERC721", + "nameLocation": "277:7:29", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "documentation": { + "id": 4958, + "nodeType": "StructuredDocumentation", + "src": "302:88:29", + "text": " @dev Emitted when `tokenId` token is transferred from `from` to `to`." + }, + "eventSelector": "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "id": 4966, + "name": "Transfer", + "nameLocation": "401:8:29", + "nodeType": "EventDefinition", + "parameters": { + "id": 4965, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4960, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nameLocation": "426:4:29", + "nodeType": "VariableDeclaration", + "scope": 4966, + "src": "410:20:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4959, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "410:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4962, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nameLocation": "448:2:29", + "nodeType": "VariableDeclaration", + "scope": 4966, + "src": "432:18:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4961, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "432:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4964, + "indexed": true, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "468:7:29", + "nodeType": "VariableDeclaration", + "scope": 4966, + "src": "452:23:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4963, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "452:7:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "409:67:29" + }, + "src": "395:82:29" + }, + { + "anonymous": false, + "documentation": { + "id": 4967, + "nodeType": "StructuredDocumentation", + "src": "483:94:29", + "text": " @dev Emitted when `owner` enables `approved` to manage the `tokenId` token." + }, + "eventSelector": "8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925", + "id": 4975, + "name": "Approval", + "nameLocation": "588:8:29", + "nodeType": "EventDefinition", + "parameters": { + "id": 4974, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4969, + "indexed": true, + "mutability": "mutable", + "name": "owner", + "nameLocation": "613:5:29", + "nodeType": "VariableDeclaration", + "scope": 4975, + "src": "597:21:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4968, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "597:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4971, + "indexed": true, + "mutability": "mutable", + "name": "approved", + "nameLocation": "636:8:29", + "nodeType": "VariableDeclaration", + "scope": 4975, + "src": "620:24:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4970, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "620:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4973, + "indexed": true, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "662:7:29", + "nodeType": "VariableDeclaration", + "scope": 4975, + "src": "646:23:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4972, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "646:7:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "596:74:29" + }, + "src": "582:89:29" + }, + { + "anonymous": false, + "documentation": { + "id": 4976, + "nodeType": "StructuredDocumentation", + "src": "677:117:29", + "text": " @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets." + }, + "eventSelector": "17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31", + "id": 4984, + "name": "ApprovalForAll", + "nameLocation": "805:14:29", + "nodeType": "EventDefinition", + "parameters": { + "id": 4983, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4978, + "indexed": true, + "mutability": "mutable", + "name": "owner", + "nameLocation": "836:5:29", + "nodeType": "VariableDeclaration", + "scope": 4984, + "src": "820:21:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4977, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "820:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4980, + "indexed": true, + "mutability": "mutable", + "name": "operator", + "nameLocation": "859:8:29", + "nodeType": "VariableDeclaration", + "scope": 4984, + "src": "843:24:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4979, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "843:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 4982, + "indexed": false, + "mutability": "mutable", + "name": "approved", + "nameLocation": "874:8:29", + "nodeType": "VariableDeclaration", + "scope": 4984, + "src": "869:13:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4981, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "869:4:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "819:64:29" + }, + "src": "799:85:29" + }, + { + "documentation": { + "id": 4985, + "nodeType": "StructuredDocumentation", + "src": "890:76:29", + "text": " @dev Returns the number of tokens in ``owner``'s account." + }, + "functionSelector": "70a08231", + "id": 4992, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "980:9:29", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4988, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4987, + "mutability": "mutable", + "name": "owner", + "nameLocation": "998:5:29", + "nodeType": "VariableDeclaration", + "scope": 4992, + "src": "990:13:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4986, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "990:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "989:15:29" + }, + "returnParameters": { + "id": 4991, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4990, + "mutability": "mutable", + "name": "balance", + "nameLocation": "1036:7:29", + "nodeType": "VariableDeclaration", + "scope": 4992, + "src": "1028:15:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4989, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1028:7:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1027:17:29" + }, + "scope": 5067, + "src": "971:74:29", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 4993, + "nodeType": "StructuredDocumentation", + "src": "1051:131:29", + "text": " @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist." + }, + "functionSelector": "6352211e", + "id": 5000, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "ownerOf", + "nameLocation": "1196:7:29", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 4996, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4995, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "1212:7:29", + "nodeType": "VariableDeclaration", + "scope": 5000, + "src": "1204:15:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4994, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1204:7:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1203:17:29" + }, + "returnParameters": { + "id": 4999, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4998, + "mutability": "mutable", + "name": "owner", + "nameLocation": "1252:5:29", + "nodeType": "VariableDeclaration", + "scope": 5000, + "src": "1244:13:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4997, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1244:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1243:15:29" + }, + "scope": 5067, + "src": "1187:72:29", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 5001, + "nodeType": "StructuredDocumentation", + "src": "1265:565:29", + "text": " @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event." + }, + "functionSelector": "b88d4fde", + "id": 5012, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nameLocation": "1844:16:29", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5010, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5003, + "mutability": "mutable", + "name": "from", + "nameLocation": "1869:4:29", + "nodeType": "VariableDeclaration", + "scope": 5012, + "src": "1861:12:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5002, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1861:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5005, + "mutability": "mutable", + "name": "to", + "nameLocation": "1883:2:29", + "nodeType": "VariableDeclaration", + "scope": 5012, + "src": "1875:10:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5004, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1875:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5007, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "1895:7:29", + "nodeType": "VariableDeclaration", + "scope": 5012, + "src": "1887:15:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5006, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1887:7:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5009, + "mutability": "mutable", + "name": "data", + "nameLocation": "1919:4:29", + "nodeType": "VariableDeclaration", + "scope": 5012, + "src": "1904:19:29", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5008, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1904:5:29", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "1860:64:29" + }, + "returnParameters": { + "id": 5011, + "nodeType": "ParameterList", + "parameters": [], + "src": "1933:0:29" + }, + "scope": 5067, + "src": "1835:99:29", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 5013, + "nodeType": "StructuredDocumentation", + "src": "1940:706:29", + "text": " @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC-721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must have been allowed to move this token by either {approve} or\n {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon\n a safe transfer.\n Emits a {Transfer} event." + }, + "functionSelector": "42842e0e", + "id": 5022, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nameLocation": "2660:16:29", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5020, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5015, + "mutability": "mutable", + "name": "from", + "nameLocation": "2685:4:29", + "nodeType": "VariableDeclaration", + "scope": 5022, + "src": "2677:12:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5014, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2677:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5017, + "mutability": "mutable", + "name": "to", + "nameLocation": "2699:2:29", + "nodeType": "VariableDeclaration", + "scope": 5022, + "src": "2691:10:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5016, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2691:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5019, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "2711:7:29", + "nodeType": "VariableDeclaration", + "scope": 5022, + "src": "2703:15:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5018, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2703:7:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2676:43:29" + }, + "returnParameters": { + "id": 5021, + "nodeType": "ParameterList", + "parameters": [], + "src": "2728:0:29" + }, + "scope": 5067, + "src": "2651:78:29", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 5023, + "nodeType": "StructuredDocumentation", + "src": "2735:733:29", + "text": " @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721\n or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must\n understand this adds an external call which potentially creates a reentrancy vulnerability.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event." + }, + "functionSelector": "23b872dd", + "id": 5032, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nameLocation": "3482:12:29", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5030, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5025, + "mutability": "mutable", + "name": "from", + "nameLocation": "3503:4:29", + "nodeType": "VariableDeclaration", + "scope": 5032, + "src": "3495:12:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5024, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3495:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5027, + "mutability": "mutable", + "name": "to", + "nameLocation": "3517:2:29", + "nodeType": "VariableDeclaration", + "scope": 5032, + "src": "3509:10:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5026, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3509:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5029, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "3529:7:29", + "nodeType": "VariableDeclaration", + "scope": 5032, + "src": "3521:15:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5028, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3521:7:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3494:43:29" + }, + "returnParameters": { + "id": 5031, + "nodeType": "ParameterList", + "parameters": [], + "src": "3546:0:29" + }, + "scope": 5067, + "src": "3473:74:29", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 5033, + "nodeType": "StructuredDocumentation", + "src": "3553:452:29", + "text": " @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event." + }, + "functionSelector": "095ea7b3", + "id": 5040, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "approve", + "nameLocation": "4019:7:29", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5038, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5035, + "mutability": "mutable", + "name": "to", + "nameLocation": "4035:2:29", + "nodeType": "VariableDeclaration", + "scope": 5040, + "src": "4027:10:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5034, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4027:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5037, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "4047:7:29", + "nodeType": "VariableDeclaration", + "scope": 5040, + "src": "4039:15:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5036, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4039:7:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4026:29:29" + }, + "returnParameters": { + "id": 5039, + "nodeType": "ParameterList", + "parameters": [], + "src": "4064:0:29" + }, + "scope": 5067, + "src": "4010:55:29", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 5041, + "nodeType": "StructuredDocumentation", + "src": "4071:315:29", + "text": " @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the address zero.\n Emits an {ApprovalForAll} event." + }, + "functionSelector": "a22cb465", + "id": 5048, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setApprovalForAll", + "nameLocation": "4400:17:29", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5046, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5043, + "mutability": "mutable", + "name": "operator", + "nameLocation": "4426:8:29", + "nodeType": "VariableDeclaration", + "scope": 5048, + "src": "4418:16:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5042, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4418:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5045, + "mutability": "mutable", + "name": "approved", + "nameLocation": "4441:8:29", + "nodeType": "VariableDeclaration", + "scope": 5048, + "src": "4436:13:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5044, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4436:4:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4417:33:29" + }, + "returnParameters": { + "id": 5047, + "nodeType": "ParameterList", + "parameters": [], + "src": "4459:0:29" + }, + "scope": 5067, + "src": "4391:69:29", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 5049, + "nodeType": "StructuredDocumentation", + "src": "4466:139:29", + "text": " @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist." + }, + "functionSelector": "081812fc", + "id": 5056, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getApproved", + "nameLocation": "4619:11:29", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5052, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5051, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "4639:7:29", + "nodeType": "VariableDeclaration", + "scope": 5056, + "src": "4631:15:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5050, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4631:7:29", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4630:17:29" + }, + "returnParameters": { + "id": 5055, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5054, + "mutability": "mutable", + "name": "operator", + "nameLocation": "4679:8:29", + "nodeType": "VariableDeclaration", + "scope": 5056, + "src": "4671:16:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5053, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4671:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4670:18:29" + }, + "scope": 5067, + "src": "4610:79:29", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 5057, + "nodeType": "StructuredDocumentation", + "src": "4695:138:29", + "text": " @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}" + }, + "functionSelector": "e985e9c5", + "id": 5066, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "isApprovedForAll", + "nameLocation": "4847:16:29", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5062, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5059, + "mutability": "mutable", + "name": "owner", + "nameLocation": "4872:5:29", + "nodeType": "VariableDeclaration", + "scope": 5066, + "src": "4864:13:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5058, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4864:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5061, + "mutability": "mutable", + "name": "operator", + "nameLocation": "4887:8:29", + "nodeType": "VariableDeclaration", + "scope": 5066, + "src": "4879:16:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5060, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4879:7:29", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4863:33:29" + }, + "returnParameters": { + "id": 5065, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5064, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5066, + "src": "4920:4:29", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5063, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4920:4:29", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4919:6:29" + }, + "scope": 5067, + "src": "4838:88:29", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 5068, + "src": "267:4661:29", + "usedErrors": [], + "usedEvents": [ + 4966, + 4975, + 4984 + ] + } + ], + "src": "108:4821:29" + }, + "id": 29 + }, + "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol", + "exportedSymbols": { + "IERC721Receiver": [ + 5085 + ] + }, + "id": 5086, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5069, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "116:24:30" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IERC721Receiver", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 5070, + "nodeType": "StructuredDocumentation", + "src": "142:154:30", + "text": " @title ERC-721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC-721 asset contracts." + }, + "fullyImplemented": false, + "id": 5085, + "linearizedBaseContracts": [ + 5085 + ], + "name": "IERC721Receiver", + "nameLocation": "307:15:30", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 5071, + "nodeType": "StructuredDocumentation", + "src": "329:500:30", + "text": " @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be\n reverted.\n The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`." + }, + "functionSelector": "150b7a02", + "id": 5084, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "onERC721Received", + "nameLocation": "843:16:30", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5080, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5073, + "mutability": "mutable", + "name": "operator", + "nameLocation": "877:8:30", + "nodeType": "VariableDeclaration", + "scope": 5084, + "src": "869:16:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5072, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "869:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5075, + "mutability": "mutable", + "name": "from", + "nameLocation": "903:4:30", + "nodeType": "VariableDeclaration", + "scope": 5084, + "src": "895:12:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5074, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "895:7:30", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5077, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "925:7:30", + "nodeType": "VariableDeclaration", + "scope": 5084, + "src": "917:15:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5076, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "917:7:30", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5079, + "mutability": "mutable", + "name": "data", + "nameLocation": "957:4:30", + "nodeType": "VariableDeclaration", + "scope": 5084, + "src": "942:19:30", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5078, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "942:5:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "859:108:30" + }, + "returnParameters": { + "id": 5083, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5082, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5084, + "src": "986:6:30", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 5081, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "986:6:30", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "985:8:30" + }, + "scope": 5085, + "src": "834:160:30", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 5086, + "src": "297:699:30", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "116:881:30" + }, + "id": 30 + }, + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol", + "exportedSymbols": { + "IERC721": [ + 5067 + ], + "IERC721Enumerable": [ + 5117 + ] + }, + "id": 5118, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5087, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "129:24:31" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721.sol", + "file": "../IERC721.sol", + "id": 5089, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 5118, + "sourceUnit": 5068, + "src": "155:39:31", + "symbolAliases": [ + { + "foreign": { + "id": 5088, + "name": "IERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5067, + "src": "163:7:31", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 5091, + "name": "IERC721", + "nameLocations": [ + "364:7:31" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5067, + "src": "364:7:31" + }, + "id": 5092, + "nodeType": "InheritanceSpecifier", + "src": "364:7:31" + } + ], + "canonicalName": "IERC721Enumerable", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 5090, + "nodeType": "StructuredDocumentation", + "src": "196:136:31", + "text": " @title ERC-721 Non-Fungible Token Standard, optional enumeration extension\n @dev See https://eips.ethereum.org/EIPS/eip-721" + }, + "fullyImplemented": false, + "id": 5117, + "linearizedBaseContracts": [ + 5117, + 5067, + 6389 + ], + "name": "IERC721Enumerable", + "nameLocation": "343:17:31", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 5093, + "nodeType": "StructuredDocumentation", + "src": "378:82:31", + "text": " @dev Returns the total amount of tokens stored by the contract." + }, + "functionSelector": "18160ddd", + "id": 5098, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nameLocation": "474:11:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5094, + "nodeType": "ParameterList", + "parameters": [], + "src": "485:2:31" + }, + "returnParameters": { + "id": 5097, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5096, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5098, + "src": "511:7:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5095, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "511:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "510:9:31" + }, + "scope": 5117, + "src": "465:55:31", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 5099, + "nodeType": "StructuredDocumentation", + "src": "526:171:31", + "text": " @dev Returns a token ID owned by `owner` at a given `index` of its token list.\n Use along with {balanceOf} to enumerate all of ``owner``'s tokens." + }, + "functionSelector": "2f745c59", + "id": 5108, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "tokenOfOwnerByIndex", + "nameLocation": "711:19:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5104, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5101, + "mutability": "mutable", + "name": "owner", + "nameLocation": "739:5:31", + "nodeType": "VariableDeclaration", + "scope": 5108, + "src": "731:13:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5100, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "731:7:31", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5103, + "mutability": "mutable", + "name": "index", + "nameLocation": "754:5:31", + "nodeType": "VariableDeclaration", + "scope": 5108, + "src": "746:13:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5102, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "746:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "730:30:31" + }, + "returnParameters": { + "id": 5107, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5106, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5108, + "src": "784:7:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5105, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "784:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "783:9:31" + }, + "scope": 5117, + "src": "702:91:31", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 5109, + "nodeType": "StructuredDocumentation", + "src": "799:164:31", + "text": " @dev Returns a token ID at a given `index` of all the tokens stored by the contract.\n Use along with {totalSupply} to enumerate all tokens." + }, + "functionSelector": "4f6ccce7", + "id": 5116, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "tokenByIndex", + "nameLocation": "977:12:31", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5112, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5111, + "mutability": "mutable", + "name": "index", + "nameLocation": "998:5:31", + "nodeType": "VariableDeclaration", + "scope": 5116, + "src": "990:13:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5110, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "990:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "989:15:31" + }, + "returnParameters": { + "id": 5115, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5114, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5116, + "src": "1028:7:31", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5113, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1028:7:31", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1027:9:31" + }, + "scope": 5117, + "src": "968:69:31", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 5118, + "src": "333:706:31", + "usedErrors": [], + "usedEvents": [ + 4966, + 4975, + 4984 + ] + } + ], + "src": "129:911:31" + }, + "id": 31 + }, + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol", + "exportedSymbols": { + "IERC721": [ + 5067 + ], + "IERC721Metadata": [ + 5145 + ] + }, + "id": 5146, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5119, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "127:24:32" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721.sol", + "file": "../IERC721.sol", + "id": 5121, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 5146, + "sourceUnit": 5068, + "src": "153:39:32", + "symbolAliases": [ + { + "foreign": { + "id": 5120, + "name": "IERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5067, + "src": "161:7:32", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 5123, + "name": "IERC721", + "nameLocations": [ + "357:7:32" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5067, + "src": "357:7:32" + }, + "id": 5124, + "nodeType": "InheritanceSpecifier", + "src": "357:7:32" + } + ], + "canonicalName": "IERC721Metadata", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 5122, + "nodeType": "StructuredDocumentation", + "src": "194:133:32", + "text": " @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721" + }, + "fullyImplemented": false, + "id": 5145, + "linearizedBaseContracts": [ + 5145, + 5067, + 6389 + ], + "name": "IERC721Metadata", + "nameLocation": "338:15:32", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 5125, + "nodeType": "StructuredDocumentation", + "src": "371:58:32", + "text": " @dev Returns the token collection name." + }, + "functionSelector": "06fdde03", + "id": 5130, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "name", + "nameLocation": "443:4:32", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5126, + "nodeType": "ParameterList", + "parameters": [], + "src": "447:2:32" + }, + "returnParameters": { + "id": 5129, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5128, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5130, + "src": "473:13:32", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5127, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "473:6:32", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "472:15:32" + }, + "scope": 5145, + "src": "434:54:32", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 5131, + "nodeType": "StructuredDocumentation", + "src": "494:60:32", + "text": " @dev Returns the token collection symbol." + }, + "functionSelector": "95d89b41", + "id": 5136, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nameLocation": "568:6:32", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5132, + "nodeType": "ParameterList", + "parameters": [], + "src": "574:2:32" + }, + "returnParameters": { + "id": 5135, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5134, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5136, + "src": "600:13:32", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5133, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "600:6:32", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "599:15:32" + }, + "scope": 5145, + "src": "559:56:32", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 5137, + "nodeType": "StructuredDocumentation", + "src": "621:90:32", + "text": " @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token." + }, + "functionSelector": "c87b56dd", + "id": 5144, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "tokenURI", + "nameLocation": "725:8:32", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5140, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5139, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "742:7:32", + "nodeType": "VariableDeclaration", + "scope": 5144, + "src": "734:15:32", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5138, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "734:7:32", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "733:17:32" + }, + "returnParameters": { + "id": 5143, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5142, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5144, + "src": "774:13:32", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5141, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "774:6:32", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "773:15:32" + }, + "scope": 5145, + "src": "716:73:32", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 5146, + "src": "328:463:32", + "usedErrors": [], + "usedEvents": [ + 4966, + 4975, + 4984 + ] + } + ], + "src": "127:665:32" + }, + "id": 32 + }, + "@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol", + "exportedSymbols": { + "ERC721Utils": [ + 5222 + ], + "IERC721Errors": [ + 3495 + ], + "IERC721Receiver": [ + 5085 + ] + }, + "id": 5223, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5147, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "118:24:33" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol", + "file": "../IERC721Receiver.sol", + "id": 5149, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 5223, + "sourceUnit": 5086, + "src": "144:55:33", + "symbolAliases": [ + { + "foreign": { + "id": 5148, + "name": "IERC721Receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5085, + "src": "152:15:33", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol", + "file": "../../../interfaces/draft-IERC6093.sol", + "id": 5151, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 5223, + "sourceUnit": 3543, + "src": "200:69:33", + "symbolAliases": [ + { + "foreign": { + "id": 5150, + "name": "IERC721Errors", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3495, + "src": "208:13:33", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "ERC721Utils", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 5152, + "nodeType": "StructuredDocumentation", + "src": "271:159:33", + "text": " @dev Library that provide common ERC-721 utility functions.\n See https://eips.ethereum.org/EIPS/eip-721[ERC-721].\n _Available since v5.1._" + }, + "fullyImplemented": true, + "id": 5222, + "linearizedBaseContracts": [ + 5222 + ], + "name": "ERC721Utils", + "nameLocation": "439:11:33", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 5220, + "nodeType": "Block", + "src": "1151:758:33", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5170, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 5166, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5159, + "src": "1165:2:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5167, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1168:4:33", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "1165:7:33", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 5168, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1173:6:33", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "1165:14:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 5169, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1182:1:33", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1165:18:33", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5219, + "nodeType": "IfStatement", + "src": "1161:742:33", + "trueBody": { + "id": 5218, + "nodeType": "Block", + "src": "1185:718:33", + "statements": [ + { + "clauses": [ + { + "block": { + "id": 5196, + "nodeType": "Block", + "src": "1295:214:33", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 5187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5183, + "name": "retval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5181, + "src": "1317:6:33", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "expression": { + "id": 5184, + "name": "IERC721Receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5085, + "src": "1327:15:33", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$5085_$", + "typeString": "type(contract IERC721Receiver)" + } + }, + "id": 5185, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1343:16:33", + "memberName": "onERC721Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 5084, + "src": "1327:32:33", + "typeDescriptions": { + "typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$", + "typeString": "function IERC721Receiver.onERC721Received(address,address,uint256,bytes calldata) returns (bytes4)" + } + }, + "id": 5186, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1360:8:33", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "1327:41:33", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "1317:51:33", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5195, + "nodeType": "IfStatement", + "src": "1313:182:33", + "trueBody": { + "id": 5194, + "nodeType": "Block", + "src": "1370:125:33", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 5191, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5159, + "src": "1473:2:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 5188, + "name": "IERC721Errors", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3495, + "src": "1437:13:33", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC721Errors_$3495_$", + "typeString": "type(contract IERC721Errors)" + } + }, + "id": 5190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1451:21:33", + "memberName": "ERC721InvalidReceiver", + "nodeType": "MemberAccess", + "referencedDeclaration": 3477, + "src": "1437:35:33", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 5192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1437:39:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5193, + "nodeType": "RevertStatement", + "src": "1430:46:33" + } + ] + } + } + ] + }, + "errorName": "", + "id": 5197, + "nodeType": "TryCatchClause", + "parameters": { + "id": 5182, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5181, + "mutability": "mutable", + "name": "retval", + "nameLocation": "1287:6:33", + "nodeType": "VariableDeclaration", + "scope": 5197, + "src": "1280:13:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 5180, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1280:6:33", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "1279:15:33" + }, + "src": "1271:238:33" + }, + { + "block": { + "id": 5215, + "nodeType": "Block", + "src": "1538:355:33", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5204, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 5201, + "name": "reason", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5199, + "src": "1560:6:33", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 5202, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1567:6:33", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "1560:13:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 5203, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1577:1:33", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1560:18:33", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 5213, + "nodeType": "Block", + "src": "1728:151:33", + "statements": [ + { + "AST": { + "nativeSrc": "1775:86:33", + "nodeType": "YulBlock", + "src": "1775:86:33", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1812:2:33", + "nodeType": "YulLiteral", + "src": "1812:2:33", + "type": "", + "value": "32" + }, + { + "name": "reason", + "nativeSrc": "1816:6:33", + "nodeType": "YulIdentifier", + "src": "1816:6:33" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1808:3:33", + "nodeType": "YulIdentifier", + "src": "1808:3:33" + }, + "nativeSrc": "1808:15:33", + "nodeType": "YulFunctionCall", + "src": "1808:15:33" + }, + { + "arguments": [ + { + "name": "reason", + "nativeSrc": "1831:6:33", + "nodeType": "YulIdentifier", + "src": "1831:6:33" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "1825:5:33", + "nodeType": "YulIdentifier", + "src": "1825:5:33" + }, + "nativeSrc": "1825:13:33", + "nodeType": "YulFunctionCall", + "src": "1825:13:33" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1801:6:33", + "nodeType": "YulIdentifier", + "src": "1801:6:33" + }, + "nativeSrc": "1801:38:33", + "nodeType": "YulFunctionCall", + "src": "1801:38:33" + }, + "nativeSrc": "1801:38:33", + "nodeType": "YulExpressionStatement", + "src": "1801:38:33" + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5199, + "isOffset": false, + "isSlot": false, + "src": "1816:6:33", + "valueSize": 1 + }, + { + "declaration": 5199, + "isOffset": false, + "isSlot": false, + "src": "1831:6:33", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 5212, + "nodeType": "InlineAssembly", + "src": "1750:111:33" + } + ] + }, + "id": 5214, + "nodeType": "IfStatement", + "src": "1556:323:33", + "trueBody": { + "id": 5211, + "nodeType": "Block", + "src": "1580:142:33", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 5208, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5159, + "src": "1700:2:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 5205, + "name": "IERC721Errors", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3495, + "src": "1664:13:33", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC721Errors_$3495_$", + "typeString": "type(contract IERC721Errors)" + } + }, + "id": 5207, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1678:21:33", + "memberName": "ERC721InvalidReceiver", + "nodeType": "MemberAccess", + "referencedDeclaration": 3477, + "src": "1664:35:33", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 5209, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1664:39:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5210, + "nodeType": "RevertStatement", + "src": "1657:46:33" + } + ] + } + } + ] + }, + "errorName": "", + "id": 5216, + "nodeType": "TryCatchClause", + "parameters": { + "id": 5200, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5199, + "mutability": "mutable", + "name": "reason", + "nameLocation": "1530:6:33", + "nodeType": "VariableDeclaration", + "scope": 5216, + "src": "1517:19:33", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5198, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1517:5:33", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "1516:21:33" + }, + "src": "1510:383:33" + } + ], + "externalCall": { + "arguments": [ + { + "id": 5175, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5155, + "src": "1240:8:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5176, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5157, + "src": "1250:4:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5177, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5161, + "src": "1256:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5178, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5163, + "src": "1265:4:33", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "arguments": [ + { + "id": 5172, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5159, + "src": "1219:2:33", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5171, + "name": "IERC721Receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5085, + "src": "1203:15:33", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$5085_$", + "typeString": "type(contract IERC721Receiver)" + } + }, + "id": 5173, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1203:19:33", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721Receiver_$5085", + "typeString": "contract IERC721Receiver" + } + }, + "id": 5174, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1223:16:33", + "memberName": "onERC721Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 5084, + "src": "1203:36:33", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", + "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)" + } + }, + "id": 5179, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1203:67:33", + "tryCall": true, + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "id": 5217, + "nodeType": "TryStatement", + "src": "1199:694:33" + } + ] + } + } + ] + }, + "documentation": { + "id": 5153, + "nodeType": "StructuredDocumentation", + "src": "457:523:33", + "text": " @dev Performs an acceptance check for the provided `operator` by calling {IERC721-onERC721Received}\n on the `to` address. The `operator` is generally the address that initiated the token transfer (i.e. `msg.sender`).\n The acceptance call is not executed and treated as a no-op if the target address doesn't contain code (i.e. an EOA).\n Otherwise, the recipient must implement {IERC721Receiver-onERC721Received} and return the acceptance magic value to accept\n the transfer." + }, + "id": 5221, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "checkOnERC721Received", + "nameLocation": "994:21:33", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5164, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5155, + "mutability": "mutable", + "name": "operator", + "nameLocation": "1033:8:33", + "nodeType": "VariableDeclaration", + "scope": 5221, + "src": "1025:16:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5154, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1025:7:33", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5157, + "mutability": "mutable", + "name": "from", + "nameLocation": "1059:4:33", + "nodeType": "VariableDeclaration", + "scope": 5221, + "src": "1051:12:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5156, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1051:7:33", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5159, + "mutability": "mutable", + "name": "to", + "nameLocation": "1081:2:33", + "nodeType": "VariableDeclaration", + "scope": 5221, + "src": "1073:10:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5158, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1073:7:33", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5161, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "1101:7:33", + "nodeType": "VariableDeclaration", + "scope": 5221, + "src": "1093:15:33", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5160, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1093:7:33", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5163, + "mutability": "mutable", + "name": "data", + "nameLocation": "1131:4:33", + "nodeType": "VariableDeclaration", + "scope": 5221, + "src": "1118:17:33", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5162, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1118:5:33", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "1015:126:33" + }, + "returnParameters": { + "id": 5165, + "nodeType": "ParameterList", + "parameters": [], + "src": "1151:0:33" + }, + "scope": 5222, + "src": "985:924:33", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 5223, + "src": "431:1480:33", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "118:1794:33" + }, + "id": 33 + }, + "@openzeppelin/contracts/utils/Address.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/utils/Address.sol", + "exportedSymbols": { + "Address": [ + 5481 + ], + "Errors": [ + 5533 + ] + }, + "id": 5482, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5224, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "101:24:34" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/Errors.sol", + "file": "./Errors.sol", + "id": 5226, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 5482, + "sourceUnit": 5534, + "src": "127:36:34", + "symbolAliases": [ + { + "foreign": { + "id": 5225, + "name": "Errors", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5533, + "src": "135:6:34", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "Address", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 5227, + "nodeType": "StructuredDocumentation", + "src": "165:67:34", + "text": " @dev Collection of functions related to the address type" + }, + "fullyImplemented": true, + "id": 5481, + "linearizedBaseContracts": [ + 5481 + ], + "name": "Address", + "nameLocation": "241:7:34", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 5228, + "nodeType": "StructuredDocumentation", + "src": "255:75:34", + "text": " @dev There's no code at `target` (it is not a contract)." + }, + "errorSelector": "9996b315", + "id": 5232, + "name": "AddressEmptyCode", + "nameLocation": "341:16:34", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 5231, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5230, + "mutability": "mutable", + "name": "target", + "nameLocation": "366:6:34", + "nodeType": "VariableDeclaration", + "scope": 5232, + "src": "358:14:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5229, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "358:7:34", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "357:16:34" + }, + "src": "335:39:34" + }, + { + "body": { + "id": 5278, + "nodeType": "Block", + "src": "1361:278:34", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5246, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "arguments": [ + { + "id": 5242, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "1383:4:34", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$5481", + "typeString": "library Address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Address_$5481", + "typeString": "library Address" + } + ], + "id": 5241, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1375:7:34", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5240, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1375:7:34", + "typeDescriptions": {} + } + }, + "id": 5243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1375:13:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5244, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1389:7:34", + "memberName": "balance", + "nodeType": "MemberAccess", + "src": "1375:21:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 5245, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5237, + "src": "1399:6:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1375:30:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5259, + "nodeType": "IfStatement", + "src": "1371:125:34", + "trueBody": { + "id": 5258, + "nodeType": "Block", + "src": "1407:89:34", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "expression": { + "arguments": [ + { + "id": 5252, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "1463:4:34", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$5481", + "typeString": "library Address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Address_$5481", + "typeString": "library Address" + } + ], + "id": 5251, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1455:7:34", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5250, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1455:7:34", + "typeDescriptions": {} + } + }, + "id": 5253, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1455:13:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5254, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1469:7:34", + "memberName": "balance", + "nodeType": "MemberAccess", + "src": "1455:21:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5255, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5237, + "src": "1478:6:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 5247, + "name": "Errors", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5533, + "src": "1428:6:34", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Errors_$5533_$", + "typeString": "type(library Errors)" + } + }, + "id": 5249, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1435:19:34", + "memberName": "InsufficientBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 5521, + "src": "1428:26:34", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 5256, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1428:57:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5257, + "nodeType": "RevertStatement", + "src": "1421:64:34" + } + ] + } + }, + { + "assignments": [ + 5261, + null + ], + "declarations": [ + { + "constant": false, + "id": 5261, + "mutability": "mutable", + "name": "success", + "nameLocation": "1512:7:34", + "nodeType": "VariableDeclaration", + "scope": 5278, + "src": "1507:12:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5260, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1507:4:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + null + ], + "id": 5268, + "initialValue": { + "arguments": [ + { + "hexValue": "", + "id": 5266, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1555:2:34", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "expression": { + "id": 5262, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5235, + "src": "1525:9:34", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 5263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1535:4:34", + "memberName": "call", + "nodeType": "MemberAccess", + "src": "1525:14:34", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 5265, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": [ + "value" + ], + "nodeType": "FunctionCallOptions", + "options": [ + { + "id": 5264, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5237, + "src": "1547:6:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "1525:29:34", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 5267, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1525:33:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1506:52:34" + }, + { + "condition": { + "id": 5270, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1572:8:34", + "subExpression": { + "id": 5269, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5261, + "src": "1573:7:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5277, + "nodeType": "IfStatement", + "src": "1568:65:34", + "trueBody": { + "id": 5276, + "nodeType": "Block", + "src": "1582:51:34", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 5271, + "name": "Errors", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5533, + "src": "1603:6:34", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Errors_$5533_$", + "typeString": "type(library Errors)" + } + }, + "id": 5273, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1610:10:34", + "memberName": "FailedCall", + "nodeType": "MemberAccess", + "referencedDeclaration": 5524, + "src": "1603:17:34", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 5274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1603:19:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5275, + "nodeType": "RevertStatement", + "src": "1596:26:34" + } + ] + } + } + ] + }, + "documentation": { + "id": 5233, + "nodeType": "StructuredDocumentation", + "src": "380:905:34", + "text": " @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]." + }, + "id": 5279, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sendValue", + "nameLocation": "1299:9:34", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5238, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5235, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "1325:9:34", + "nodeType": "VariableDeclaration", + "scope": 5279, + "src": "1309:25:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 5234, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1309:15:34", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5237, + "mutability": "mutable", + "name": "amount", + "nameLocation": "1344:6:34", + "nodeType": "VariableDeclaration", + "scope": 5279, + "src": "1336:14:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5236, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1336:7:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1308:43:34" + }, + "returnParameters": { + "id": 5239, + "nodeType": "ParameterList", + "parameters": [], + "src": "1361:0:34" + }, + "scope": 5481, + "src": "1290:349:34", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5295, + "nodeType": "Block", + "src": "2573:62:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 5290, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5282, + "src": "2612:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5291, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5284, + "src": "2620:4:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "hexValue": "30", + "id": 5292, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2626:1:34", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5289, + "name": "functionCallWithValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5346, + "src": "2590:21:34", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bytes memory,uint256) returns (bytes memory)" + } + }, + "id": 5293, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2590:38:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 5288, + "id": 5294, + "nodeType": "Return", + "src": "2583:45:34" + } + ] + }, + "documentation": { + "id": 5280, + "nodeType": "StructuredDocumentation", + "src": "1645:834:34", + "text": " @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason or custom error, it is bubbled\n up by this function (like regular Solidity function calls). However, if\n the call reverted with no returned reason, this function reverts with a\n {Errors.FailedCall} error.\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert." + }, + "id": 5296, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionCall", + "nameLocation": "2493:12:34", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5285, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5282, + "mutability": "mutable", + "name": "target", + "nameLocation": "2514:6:34", + "nodeType": "VariableDeclaration", + "scope": 5296, + "src": "2506:14:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5281, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2506:7:34", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5284, + "mutability": "mutable", + "name": "data", + "nameLocation": "2535:4:34", + "nodeType": "VariableDeclaration", + "scope": 5296, + "src": "2522:17:34", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5283, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2522:5:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "2505:35:34" + }, + "returnParameters": { + "id": 5288, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5287, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5296, + "src": "2559:12:34", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5286, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2559:5:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "2558:14:34" + }, + "scope": 5481, + "src": "2484:151:34", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5345, + "nodeType": "Block", + "src": "3072:294:34", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5314, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "arguments": [ + { + "id": 5310, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "3094:4:34", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$5481", + "typeString": "library Address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Address_$5481", + "typeString": "library Address" + } + ], + "id": 5309, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3086:7:34", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5308, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3086:7:34", + "typeDescriptions": {} + } + }, + "id": 5311, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3086:13:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5312, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3100:7:34", + "memberName": "balance", + "nodeType": "MemberAccess", + "src": "3086:21:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 5313, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5303, + "src": "3110:5:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3086:29:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5327, + "nodeType": "IfStatement", + "src": "3082:123:34", + "trueBody": { + "id": 5326, + "nodeType": "Block", + "src": "3117:88:34", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "expression": { + "arguments": [ + { + "id": 5320, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "3173:4:34", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$5481", + "typeString": "library Address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Address_$5481", + "typeString": "library Address" + } + ], + "id": 5319, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3165:7:34", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5318, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3165:7:34", + "typeDescriptions": {} + } + }, + "id": 5321, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3165:13:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5322, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3179:7:34", + "memberName": "balance", + "nodeType": "MemberAccess", + "src": "3165:21:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5323, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5303, + "src": "3188:5:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 5315, + "name": "Errors", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5533, + "src": "3138:6:34", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Errors_$5533_$", + "typeString": "type(library Errors)" + } + }, + "id": 5317, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3145:19:34", + "memberName": "InsufficientBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 5521, + "src": "3138:26:34", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 5324, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3138:56:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5325, + "nodeType": "RevertStatement", + "src": "3131:63:34" + } + ] + } + }, + { + "assignments": [ + 5329, + 5331 + ], + "declarations": [ + { + "constant": false, + "id": 5329, + "mutability": "mutable", + "name": "success", + "nameLocation": "3220:7:34", + "nodeType": "VariableDeclaration", + "scope": 5345, + "src": "3215:12:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5328, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3215:4:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5331, + "mutability": "mutable", + "name": "returndata", + "nameLocation": "3242:10:34", + "nodeType": "VariableDeclaration", + "scope": 5345, + "src": "3229:23:34", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5330, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3229:5:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 5338, + "initialValue": { + "arguments": [ + { + "id": 5336, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5301, + "src": "3282:4:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 5332, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5299, + "src": "3256:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5333, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3263:4:34", + "memberName": "call", + "nodeType": "MemberAccess", + "src": "3256:11:34", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 5335, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": [ + "value" + ], + "nodeType": "FunctionCallOptions", + "options": [ + { + "id": 5334, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5303, + "src": "3275:5:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "3256:25:34", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 5337, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3256:31:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3214:73:34" + }, + { + "expression": { + "arguments": [ + { + "id": 5340, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5299, + "src": "3331:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5341, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5329, + "src": "3339:7:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 5342, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5331, + "src": "3348:10:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5339, + "name": "verifyCallResultFromTarget", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5438, + "src": "3304:26:34", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bool,bytes memory) view returns (bytes memory)" + } + }, + "id": 5343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3304:55:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 5307, + "id": 5344, + "nodeType": "Return", + "src": "3297:62:34" + } + ] + }, + "documentation": { + "id": 5297, + "nodeType": "StructuredDocumentation", + "src": "2641:313:34", + "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`." + }, + "id": 5346, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionCallWithValue", + "nameLocation": "2968:21:34", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5304, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5299, + "mutability": "mutable", + "name": "target", + "nameLocation": "2998:6:34", + "nodeType": "VariableDeclaration", + "scope": 5346, + "src": "2990:14:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5298, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2990:7:34", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5301, + "mutability": "mutable", + "name": "data", + "nameLocation": "3019:4:34", + "nodeType": "VariableDeclaration", + "scope": 5346, + "src": "3006:17:34", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5300, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3006:5:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5303, + "mutability": "mutable", + "name": "value", + "nameLocation": "3033:5:34", + "nodeType": "VariableDeclaration", + "scope": 5346, + "src": "3025:13:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5302, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3025:7:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2989:50:34" + }, + "returnParameters": { + "id": 5307, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5306, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5346, + "src": "3058:12:34", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5305, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3058:5:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3057:14:34" + }, + "scope": 5481, + "src": "2959:407:34", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5371, + "nodeType": "Block", + "src": "3605:154:34", + "statements": [ + { + "assignments": [ + 5357, + 5359 + ], + "declarations": [ + { + "constant": false, + "id": 5357, + "mutability": "mutable", + "name": "success", + "nameLocation": "3621:7:34", + "nodeType": "VariableDeclaration", + "scope": 5371, + "src": "3616:12:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5356, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3616:4:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5359, + "mutability": "mutable", + "name": "returndata", + "nameLocation": "3643:10:34", + "nodeType": "VariableDeclaration", + "scope": 5371, + "src": "3630:23:34", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5358, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3630:5:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 5364, + "initialValue": { + "arguments": [ + { + "id": 5362, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5351, + "src": "3675:4:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 5360, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5349, + "src": "3657:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5361, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3664:10:34", + "memberName": "staticcall", + "nodeType": "MemberAccess", + "src": "3657:17:34", + "typeDescriptions": { + "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) view returns (bool,bytes memory)" + } + }, + "id": 5363, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3657:23:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3615:65:34" + }, + { + "expression": { + "arguments": [ + { + "id": 5366, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5349, + "src": "3724:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5367, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5357, + "src": "3732:7:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 5368, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5359, + "src": "3741:10:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5365, + "name": "verifyCallResultFromTarget", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5438, + "src": "3697:26:34", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bool,bytes memory) view returns (bytes memory)" + } + }, + "id": 5369, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3697:55:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 5355, + "id": 5370, + "nodeType": "Return", + "src": "3690:62:34" + } + ] + }, + "documentation": { + "id": 5347, + "nodeType": "StructuredDocumentation", + "src": "3372:128:34", + "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call." + }, + "id": 5372, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionStaticCall", + "nameLocation": "3514:18:34", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5352, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5349, + "mutability": "mutable", + "name": "target", + "nameLocation": "3541:6:34", + "nodeType": "VariableDeclaration", + "scope": 5372, + "src": "3533:14:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5348, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3533:7:34", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5351, + "mutability": "mutable", + "name": "data", + "nameLocation": "3562:4:34", + "nodeType": "VariableDeclaration", + "scope": 5372, + "src": "3549:17:34", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5350, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3549:5:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3532:35:34" + }, + "returnParameters": { + "id": 5355, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5354, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5372, + "src": "3591:12:34", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5353, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3591:5:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3590:14:34" + }, + "scope": 5481, + "src": "3505:254:34", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5397, + "nodeType": "Block", + "src": "3997:156:34", + "statements": [ + { + "assignments": [ + 5383, + 5385 + ], + "declarations": [ + { + "constant": false, + "id": 5383, + "mutability": "mutable", + "name": "success", + "nameLocation": "4013:7:34", + "nodeType": "VariableDeclaration", + "scope": 5397, + "src": "4008:12:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5382, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4008:4:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5385, + "mutability": "mutable", + "name": "returndata", + "nameLocation": "4035:10:34", + "nodeType": "VariableDeclaration", + "scope": 5397, + "src": "4022:23:34", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5384, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4022:5:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 5390, + "initialValue": { + "arguments": [ + { + "id": 5388, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5377, + "src": "4069:4:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 5386, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5375, + "src": "4049:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5387, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4056:12:34", + "memberName": "delegatecall", + "nodeType": "MemberAccess", + "src": "4049:19:34", + "typeDescriptions": { + "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) returns (bool,bytes memory)" + } + }, + "id": 5389, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4049:25:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4007:67:34" + }, + { + "expression": { + "arguments": [ + { + "id": 5392, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5375, + "src": "4118:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 5393, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5383, + "src": "4126:7:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 5394, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5385, + "src": "4135:10:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5391, + "name": "verifyCallResultFromTarget", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5438, + "src": "4091:26:34", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bool,bytes memory) view returns (bytes memory)" + } + }, + "id": 5395, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4091:55:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 5381, + "id": 5396, + "nodeType": "Return", + "src": "4084:62:34" + } + ] + }, + "documentation": { + "id": 5373, + "nodeType": "StructuredDocumentation", + "src": "3765:130:34", + "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call." + }, + "id": 5398, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionDelegateCall", + "nameLocation": "3909:20:34", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5378, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5375, + "mutability": "mutable", + "name": "target", + "nameLocation": "3938:6:34", + "nodeType": "VariableDeclaration", + "scope": 5398, + "src": "3930:14:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5374, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3930:7:34", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5377, + "mutability": "mutable", + "name": "data", + "nameLocation": "3959:4:34", + "nodeType": "VariableDeclaration", + "scope": 5398, + "src": "3946:17:34", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5376, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3946:5:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3929:35:34" + }, + "returnParameters": { + "id": 5381, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5380, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5398, + "src": "3983:12:34", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5379, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3983:5:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3982:14:34" + }, + "scope": 5481, + "src": "3900:253:34", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5437, + "nodeType": "Block", + "src": "4579:424:34", + "statements": [ + { + "condition": { + "id": 5411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4593:8:34", + "subExpression": { + "id": 5410, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5403, + "src": "4594:7:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 5435, + "nodeType": "Block", + "src": "4653:344:34", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 5426, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5420, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 5417, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5405, + "src": "4841:10:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 5418, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4852:6:34", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "4841:17:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 5419, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4862:1:34", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4841:22:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5425, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 5421, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5401, + "src": "4867:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5422, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4874:4:34", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "4867:11:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 5423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4879:6:34", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "4867:18:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 5424, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4889:1:34", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4867:23:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4841:49:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5432, + "nodeType": "IfStatement", + "src": "4837:119:34", + "trueBody": { + "id": 5431, + "nodeType": "Block", + "src": "4892:64:34", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 5428, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5401, + "src": "4934:6:34", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5427, + "name": "AddressEmptyCode", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5232, + "src": "4917:16:34", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 5429, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4917:24:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5430, + "nodeType": "RevertStatement", + "src": "4910:31:34" + } + ] + } + }, + { + "expression": { + "id": 5433, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5405, + "src": "4976:10:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 5409, + "id": 5434, + "nodeType": "Return", + "src": "4969:17:34" + } + ] + }, + "id": 5436, + "nodeType": "IfStatement", + "src": "4589:408:34", + "trueBody": { + "id": 5416, + "nodeType": "Block", + "src": "4603:44:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 5413, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5405, + "src": "4625:10:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5412, + "name": "_revert", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5480, + "src": "4617:7:34", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes memory) pure" + } + }, + "id": 5414, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4617:19:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5415, + "nodeType": "ExpressionStatement", + "src": "4617:19:34" + } + ] + } + } + ] + }, + "documentation": { + "id": 5399, + "nodeType": "StructuredDocumentation", + "src": "4159:257:34", + "text": " @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target\n was not a contract or bubbling up the revert reason (falling back to {Errors.FailedCall}) in case\n of an unsuccessful call." + }, + "id": 5438, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "verifyCallResultFromTarget", + "nameLocation": "4430:26:34", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5406, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5401, + "mutability": "mutable", + "name": "target", + "nameLocation": "4474:6:34", + "nodeType": "VariableDeclaration", + "scope": 5438, + "src": "4466:14:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5400, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4466:7:34", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5403, + "mutability": "mutable", + "name": "success", + "nameLocation": "4495:7:34", + "nodeType": "VariableDeclaration", + "scope": 5438, + "src": "4490:12:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5402, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4490:4:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5405, + "mutability": "mutable", + "name": "returndata", + "nameLocation": "4525:10:34", + "nodeType": "VariableDeclaration", + "scope": 5438, + "src": "4512:23:34", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5404, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4512:5:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4456:85:34" + }, + "returnParameters": { + "id": 5409, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5408, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5438, + "src": "4565:12:34", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5407, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4565:5:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4564:14:34" + }, + "scope": 5481, + "src": "4421:582:34", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5459, + "nodeType": "Block", + "src": "5307:122:34", + "statements": [ + { + "condition": { + "id": 5449, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "5321:8:34", + "subExpression": { + "id": 5448, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5441, + "src": "5322:7:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 5457, + "nodeType": "Block", + "src": "5381:42:34", + "statements": [ + { + "expression": { + "id": 5455, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5443, + "src": "5402:10:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 5447, + "id": 5456, + "nodeType": "Return", + "src": "5395:17:34" + } + ] + }, + "id": 5458, + "nodeType": "IfStatement", + "src": "5317:106:34", + "trueBody": { + "id": 5454, + "nodeType": "Block", + "src": "5331:44:34", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 5451, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5443, + "src": "5353:10:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5450, + "name": "_revert", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5480, + "src": "5345:7:34", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (bytes memory) pure" + } + }, + "id": 5452, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5345:19:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5453, + "nodeType": "ExpressionStatement", + "src": "5345:19:34" + } + ] + } + } + ] + }, + "documentation": { + "id": 5439, + "nodeType": "StructuredDocumentation", + "src": "5009:191:34", + "text": " @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the\n revert reason or with a default {Errors.FailedCall} error." + }, + "id": 5460, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "verifyCallResult", + "nameLocation": "5214:16:34", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5444, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5441, + "mutability": "mutable", + "name": "success", + "nameLocation": "5236:7:34", + "nodeType": "VariableDeclaration", + "scope": 5460, + "src": "5231:12:34", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5440, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5231:4:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5443, + "mutability": "mutable", + "name": "returndata", + "nameLocation": "5258:10:34", + "nodeType": "VariableDeclaration", + "scope": 5460, + "src": "5245:23:34", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5442, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5245:5:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5230:39:34" + }, + "returnParameters": { + "id": 5447, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5446, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5460, + "src": "5293:12:34", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5445, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5293:5:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5292:14:34" + }, + "scope": 5481, + "src": "5205:224:34", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5479, + "nodeType": "Block", + "src": "5598:432:34", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5469, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 5466, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5463, + "src": "5674:10:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 5467, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5685:6:34", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "5674:17:34", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 5468, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5694:1:34", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5674:21:34", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 5477, + "nodeType": "Block", + "src": "5973:51:34", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 5472, + "name": "Errors", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5533, + "src": "5994:6:34", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Errors_$5533_$", + "typeString": "type(library Errors)" + } + }, + "id": 5474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6001:10:34", + "memberName": "FailedCall", + "nodeType": "MemberAccess", + "referencedDeclaration": 5524, + "src": "5994:17:34", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 5475, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5994:19:34", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5476, + "nodeType": "RevertStatement", + "src": "5987:26:34" + } + ] + }, + "id": 5478, + "nodeType": "IfStatement", + "src": "5670:354:34", + "trueBody": { + "id": 5471, + "nodeType": "Block", + "src": "5697:270:34", + "statements": [ + { + "AST": { + "nativeSrc": "5824:133:34", + "nodeType": "YulBlock", + "src": "5824:133:34", + "statements": [ + { + "nativeSrc": "5842:40:34", + "nodeType": "YulVariableDeclaration", + "src": "5842:40:34", + "value": { + "arguments": [ + { + "name": "returndata", + "nativeSrc": "5871:10:34", + "nodeType": "YulIdentifier", + "src": "5871:10:34" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "5865:5:34", + "nodeType": "YulIdentifier", + "src": "5865:5:34" + }, + "nativeSrc": "5865:17:34", + "nodeType": "YulFunctionCall", + "src": "5865:17:34" + }, + "variables": [ + { + "name": "returndata_size", + "nativeSrc": "5846:15:34", + "nodeType": "YulTypedName", + "src": "5846:15:34", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5910:2:34", + "nodeType": "YulLiteral", + "src": "5910:2:34", + "type": "", + "value": "32" + }, + { + "name": "returndata", + "nativeSrc": "5914:10:34", + "nodeType": "YulIdentifier", + "src": "5914:10:34" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5906:3:34", + "nodeType": "YulIdentifier", + "src": "5906:3:34" + }, + "nativeSrc": "5906:19:34", + "nodeType": "YulFunctionCall", + "src": "5906:19:34" + }, + { + "name": "returndata_size", + "nativeSrc": "5927:15:34", + "nodeType": "YulIdentifier", + "src": "5927:15:34" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "5899:6:34", + "nodeType": "YulIdentifier", + "src": "5899:6:34" + }, + "nativeSrc": "5899:44:34", + "nodeType": "YulFunctionCall", + "src": "5899:44:34" + }, + "nativeSrc": "5899:44:34", + "nodeType": "YulExpressionStatement", + "src": "5899:44:34" + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5463, + "isOffset": false, + "isSlot": false, + "src": "5871:10:34", + "valueSize": 1 + }, + { + "declaration": 5463, + "isOffset": false, + "isSlot": false, + "src": "5914:10:34", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 5470, + "nodeType": "InlineAssembly", + "src": "5799:158:34" + } + ] + } + } + ] + }, + "documentation": { + "id": 5461, + "nodeType": "StructuredDocumentation", + "src": "5435:103:34", + "text": " @dev Reverts with returndata if present. Otherwise reverts with {Errors.FailedCall}." + }, + "id": 5480, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_revert", + "nameLocation": "5552:7:34", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5464, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5463, + "mutability": "mutable", + "name": "returndata", + "nameLocation": "5573:10:34", + "nodeType": "VariableDeclaration", + "scope": 5480, + "src": "5560:23:34", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5462, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5560:5:34", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "5559:25:34" + }, + "returnParameters": { + "id": 5465, + "nodeType": "ParameterList", + "parameters": [], + "src": "5598:0:34" + }, + "scope": 5481, + "src": "5543:487:34", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + } + ], + "scope": 5482, + "src": "233:5799:34", + "usedErrors": [ + 5232 + ], + "usedEvents": [] + } + ], + "src": "101:5932:34" + }, + "id": 34 + }, + "@openzeppelin/contracts/utils/Context.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/utils/Context.sol", + "exportedSymbols": { + "Context": [ + 5511 + ] + }, + "id": 5512, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5483, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "101:24:35" + }, + { + "abstract": true, + "baseContracts": [], + "canonicalName": "Context", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 5484, + "nodeType": "StructuredDocumentation", + "src": "127:496:35", + "text": " @dev Provides information about the current execution context, including the\n sender of the transaction and its data. While these are generally available\n via msg.sender and msg.data, they should not be accessed in such a direct\n manner, since when dealing with meta-transactions the account sending and\n paying for execution may not be the actual sender (as far as an application\n is concerned).\n This contract is only required for intermediate, library-like contracts." + }, + "fullyImplemented": true, + "id": 5511, + "linearizedBaseContracts": [ + 5511 + ], + "name": "Context", + "nameLocation": "642:7:35", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 5492, + "nodeType": "Block", + "src": "718:34:35", + "statements": [ + { + "expression": { + "expression": { + "id": 5489, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "735:3:35", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5490, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "739:6:35", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "735:10:35", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 5488, + "id": 5491, + "nodeType": "Return", + "src": "728:17:35" + } + ] + }, + "id": 5493, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgSender", + "nameLocation": "665:10:35", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5485, + "nodeType": "ParameterList", + "parameters": [], + "src": "675:2:35" + }, + "returnParameters": { + "id": 5488, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5487, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5493, + "src": "709:7:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5486, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "709:7:35", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "708:9:35" + }, + "scope": 5511, + "src": "656:96:35", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 5501, + "nodeType": "Block", + "src": "825:32:35", + "statements": [ + { + "expression": { + "expression": { + "id": 5498, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "842:3:35", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5499, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "846:4:35", + "memberName": "data", + "nodeType": "MemberAccess", + "src": "842:8:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "functionReturnParameters": 5497, + "id": 5500, + "nodeType": "Return", + "src": "835:15:35" + } + ] + }, + "id": 5502, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgData", + "nameLocation": "767:8:35", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5494, + "nodeType": "ParameterList", + "parameters": [], + "src": "775:2:35" + }, + "returnParameters": { + "id": 5497, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5496, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5502, + "src": "809:14:35", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5495, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "809:5:35", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "808:16:35" + }, + "scope": 5511, + "src": "758:99:35", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 5509, + "nodeType": "Block", + "src": "935:25:35", + "statements": [ + { + "expression": { + "hexValue": "30", + "id": 5507, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "952:1:35", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 5506, + "id": 5508, + "nodeType": "Return", + "src": "945:8:35" + } + ] + }, + "id": 5510, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_contextSuffixLength", + "nameLocation": "872:20:35", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5503, + "nodeType": "ParameterList", + "parameters": [], + "src": "892:2:35" + }, + "returnParameters": { + "id": 5506, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5505, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5510, + "src": "926:7:35", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5504, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "926:7:35", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "925:9:35" + }, + "scope": 5511, + "src": "863:97:35", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 5512, + "src": "624:338:35", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "101:862:35" + }, + "id": 35 + }, + "@openzeppelin/contracts/utils/Errors.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/utils/Errors.sol", + "exportedSymbols": { + "Errors": [ + 5533 + ] + }, + "id": 5534, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5513, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "100:24:36" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "Errors", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 5514, + "nodeType": "StructuredDocumentation", + "src": "126:284:36", + "text": " @dev Collection of common custom errors used in multiple contracts\n IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library.\n It is recommended to avoid relying on the error API for critical functionality.\n _Available since v5.1._" + }, + "fullyImplemented": true, + "id": 5533, + "linearizedBaseContracts": [ + 5533 + ], + "name": "Errors", + "nameLocation": "419:6:36", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 5515, + "nodeType": "StructuredDocumentation", + "src": "432:94:36", + "text": " @dev The ETH balance of the account is not enough to perform the operation." + }, + "errorSelector": "cf479181", + "id": 5521, + "name": "InsufficientBalance", + "nameLocation": "537:19:36", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 5520, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5517, + "mutability": "mutable", + "name": "balance", + "nameLocation": "565:7:36", + "nodeType": "VariableDeclaration", + "scope": 5521, + "src": "557:15:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5516, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "557:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5519, + "mutability": "mutable", + "name": "needed", + "nameLocation": "582:6:36", + "nodeType": "VariableDeclaration", + "scope": 5521, + "src": "574:14:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5518, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "574:7:36", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "556:33:36" + }, + "src": "531:59:36" + }, + { + "documentation": { + "id": 5522, + "nodeType": "StructuredDocumentation", + "src": "596:89:36", + "text": " @dev A call to an address target failed. The target may have reverted." + }, + "errorSelector": "d6bda275", + "id": 5524, + "name": "FailedCall", + "nameLocation": "696:10:36", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 5523, + "nodeType": "ParameterList", + "parameters": [], + "src": "706:2:36" + }, + "src": "690:19:36" + }, + { + "documentation": { + "id": 5525, + "nodeType": "StructuredDocumentation", + "src": "715:46:36", + "text": " @dev The deployment failed." + }, + "errorSelector": "b06ebf3d", + "id": 5527, + "name": "FailedDeployment", + "nameLocation": "772:16:36", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 5526, + "nodeType": "ParameterList", + "parameters": [], + "src": "788:2:36" + }, + "src": "766:25:36" + }, + { + "documentation": { + "id": 5528, + "nodeType": "StructuredDocumentation", + "src": "797:58:36", + "text": " @dev A necessary precompile is missing." + }, + "errorSelector": "42b01bce", + "id": 5532, + "name": "MissingPrecompile", + "nameLocation": "866:17:36", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 5531, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5530, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5532, + "src": "884:7:36", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5529, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "884:7:36", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "883:9:36" + }, + "src": "860:33:36" + } + ], + "scope": 5534, + "src": "411:484:36", + "usedErrors": [ + 5521, + 5524, + 5527, + 5532 + ], + "usedEvents": [] + } + ], + "src": "100:796:36" + }, + "id": 36 + }, + "@openzeppelin/contracts/utils/Panic.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/utils/Panic.sol", + "exportedSymbols": { + "Panic": [ + 5585 + ] + }, + "id": 5586, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5535, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "99:24:37" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "Panic", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 5536, + "nodeType": "StructuredDocumentation", + "src": "125:489:37", + "text": " @dev Helper library for emitting standardized panic codes.\n ```solidity\n contract Example {\n using Panic for uint256;\n // Use any of the declared internal constants\n function foo() { Panic.GENERIC.panic(); }\n // Alternatively\n function foo() { Panic.panic(Panic.GENERIC); }\n }\n ```\n Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil].\n _Available since v5.1._" + }, + "fullyImplemented": true, + "id": 5585, + "linearizedBaseContracts": [ + 5585 + ], + "name": "Panic", + "nameLocation": "665:5:37", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "documentation": { + "id": 5537, + "nodeType": "StructuredDocumentation", + "src": "677:36:37", + "text": "@dev generic / unspecified error" + }, + "id": 5540, + "mutability": "constant", + "name": "GENERIC", + "nameLocation": "744:7:37", + "nodeType": "VariableDeclaration", + "scope": 5585, + "src": "718:40:37", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5538, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "718:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "30783030", + "id": 5539, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "754:4:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0x00" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 5541, + "nodeType": "StructuredDocumentation", + "src": "764:37:37", + "text": "@dev used by the assert() builtin" + }, + "id": 5544, + "mutability": "constant", + "name": "ASSERT", + "nameLocation": "832:6:37", + "nodeType": "VariableDeclaration", + "scope": 5585, + "src": "806:39:37", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5542, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "806:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "30783031", + "id": 5543, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "841:4:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "0x01" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 5545, + "nodeType": "StructuredDocumentation", + "src": "851:41:37", + "text": "@dev arithmetic underflow or overflow" + }, + "id": 5548, + "mutability": "constant", + "name": "UNDER_OVERFLOW", + "nameLocation": "923:14:37", + "nodeType": "VariableDeclaration", + "scope": 5585, + "src": "897:47:37", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5546, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "897:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "30783131", + "id": 5547, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "940:4:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_17_by_1", + "typeString": "int_const 17" + }, + "value": "0x11" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 5549, + "nodeType": "StructuredDocumentation", + "src": "950:35:37", + "text": "@dev division or modulo by zero" + }, + "id": 5552, + "mutability": "constant", + "name": "DIVISION_BY_ZERO", + "nameLocation": "1016:16:37", + "nodeType": "VariableDeclaration", + "scope": 5585, + "src": "990:49:37", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5550, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "990:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "30783132", + "id": 5551, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1035:4:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "0x12" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 5553, + "nodeType": "StructuredDocumentation", + "src": "1045:30:37", + "text": "@dev enum conversion error" + }, + "id": 5556, + "mutability": "constant", + "name": "ENUM_CONVERSION_ERROR", + "nameLocation": "1106:21:37", + "nodeType": "VariableDeclaration", + "scope": 5585, + "src": "1080:54:37", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5554, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1080:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "30783231", + "id": 5555, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1130:4:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_33_by_1", + "typeString": "int_const 33" + }, + "value": "0x21" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 5557, + "nodeType": "StructuredDocumentation", + "src": "1140:36:37", + "text": "@dev invalid encoding in storage" + }, + "id": 5560, + "mutability": "constant", + "name": "STORAGE_ENCODING_ERROR", + "nameLocation": "1207:22:37", + "nodeType": "VariableDeclaration", + "scope": 5585, + "src": "1181:55:37", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5558, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1181:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "30783232", + "id": 5559, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1232:4:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_34_by_1", + "typeString": "int_const 34" + }, + "value": "0x22" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 5561, + "nodeType": "StructuredDocumentation", + "src": "1242:24:37", + "text": "@dev empty array pop" + }, + "id": 5564, + "mutability": "constant", + "name": "EMPTY_ARRAY_POP", + "nameLocation": "1297:15:37", + "nodeType": "VariableDeclaration", + "scope": 5585, + "src": "1271:48:37", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5562, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1271:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "30783331", + "id": 5563, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1315:4:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_49_by_1", + "typeString": "int_const 49" + }, + "value": "0x31" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 5565, + "nodeType": "StructuredDocumentation", + "src": "1325:35:37", + "text": "@dev array out of bounds access" + }, + "id": 5568, + "mutability": "constant", + "name": "ARRAY_OUT_OF_BOUNDS", + "nameLocation": "1391:19:37", + "nodeType": "VariableDeclaration", + "scope": 5585, + "src": "1365:52:37", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5566, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1365:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "30783332", + "id": 5567, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1413:4:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_50_by_1", + "typeString": "int_const 50" + }, + "value": "0x32" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 5569, + "nodeType": "StructuredDocumentation", + "src": "1423:65:37", + "text": "@dev resource error (too large allocation or too large array)" + }, + "id": 5572, + "mutability": "constant", + "name": "RESOURCE_ERROR", + "nameLocation": "1519:14:37", + "nodeType": "VariableDeclaration", + "scope": 5585, + "src": "1493:47:37", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5570, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1493:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "30783431", + "id": 5571, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1536:4:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_65_by_1", + "typeString": "int_const 65" + }, + "value": "0x41" + }, + "visibility": "internal" + }, + { + "constant": true, + "documentation": { + "id": 5573, + "nodeType": "StructuredDocumentation", + "src": "1546:42:37", + "text": "@dev calling invalid internal function" + }, + "id": 5576, + "mutability": "constant", + "name": "INVALID_INTERNAL_FUNCTION", + "nameLocation": "1619:25:37", + "nodeType": "VariableDeclaration", + "scope": 5585, + "src": "1593:58:37", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5574, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1593:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "hexValue": "30783531", + "id": 5575, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1647:4:37", + "typeDescriptions": { + "typeIdentifier": "t_rational_81_by_1", + "typeString": "int_const 81" + }, + "value": "0x51" + }, + "visibility": "internal" + }, + { + "body": { + "id": 5583, + "nodeType": "Block", + "src": "1819:151:37", + "statements": [ + { + "AST": { + "nativeSrc": "1854:110:37", + "nodeType": "YulBlock", + "src": "1854:110:37", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1875:4:37", + "nodeType": "YulLiteral", + "src": "1875:4:37", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "1881:10:37", + "nodeType": "YulLiteral", + "src": "1881:10:37", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1868:6:37", + "nodeType": "YulIdentifier", + "src": "1868:6:37" + }, + "nativeSrc": "1868:24:37", + "nodeType": "YulFunctionCall", + "src": "1868:24:37" + }, + "nativeSrc": "1868:24:37", + "nodeType": "YulExpressionStatement", + "src": "1868:24:37" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1912:4:37", + "nodeType": "YulLiteral", + "src": "1912:4:37", + "type": "", + "value": "0x20" + }, + { + "name": "code", + "nativeSrc": "1918:4:37", + "nodeType": "YulIdentifier", + "src": "1918:4:37" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1905:6:37", + "nodeType": "YulIdentifier", + "src": "1905:6:37" + }, + "nativeSrc": "1905:18:37", + "nodeType": "YulFunctionCall", + "src": "1905:18:37" + }, + "nativeSrc": "1905:18:37", + "nodeType": "YulExpressionStatement", + "src": "1905:18:37" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1943:4:37", + "nodeType": "YulLiteral", + "src": "1943:4:37", + "type": "", + "value": "0x1c" + }, + { + "kind": "number", + "nativeSrc": "1949:4:37", + "nodeType": "YulLiteral", + "src": "1949:4:37", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1936:6:37", + "nodeType": "YulIdentifier", + "src": "1936:6:37" + }, + "nativeSrc": "1936:18:37", + "nodeType": "YulFunctionCall", + "src": "1936:18:37" + }, + "nativeSrc": "1936:18:37", + "nodeType": "YulExpressionStatement", + "src": "1936:18:37" + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5579, + "isOffset": false, + "isSlot": false, + "src": "1918:4:37", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 5582, + "nodeType": "InlineAssembly", + "src": "1829:135:37" + } + ] + }, + "documentation": { + "id": 5577, + "nodeType": "StructuredDocumentation", + "src": "1658:113:37", + "text": "@dev Reverts with a panic code. Recommended to use with\n the internal constants with predefined codes." + }, + "id": 5584, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "panic", + "nameLocation": "1785:5:37", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5580, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5579, + "mutability": "mutable", + "name": "code", + "nameLocation": "1799:4:37", + "nodeType": "VariableDeclaration", + "scope": 5584, + "src": "1791:12:37", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5578, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1791:7:37", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1790:14:37" + }, + "returnParameters": { + "id": 5581, + "nodeType": "ParameterList", + "parameters": [], + "src": "1819:0:37" + }, + "scope": 5585, + "src": "1776:194:37", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 5586, + "src": "657:1315:37", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "99:1874:37" + }, + "id": 37 + }, + "@openzeppelin/contracts/utils/StorageSlot.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/utils/StorageSlot.sol", + "exportedSymbols": { + "StorageSlot": [ + 5709 + ] + }, + "id": 5710, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5587, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "193:24:38" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "StorageSlot", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 5588, + "nodeType": "StructuredDocumentation", + "src": "219:1187:38", + "text": " @dev Library for reading and writing primitive types to specific storage slots.\n Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n This library helps with reading and writing to such slots without the need for inline assembly.\n The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n Example usage to set ERC-1967 implementation slot:\n ```solidity\n contract ERC1967 {\n // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.\n bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n function _getImplementation() internal view returns (address) {\n return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n }\n function _setImplementation(address newImplementation) internal {\n require(newImplementation.code.length > 0);\n StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n }\n }\n ```\n TIP: Consider using this library along with {SlotDerivation}." + }, + "fullyImplemented": true, + "id": 5709, + "linearizedBaseContracts": [ + 5709 + ], + "name": "StorageSlot", + "nameLocation": "1415:11:38", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "StorageSlot.AddressSlot", + "id": 5591, + "members": [ + { + "constant": false, + "id": 5590, + "mutability": "mutable", + "name": "value", + "nameLocation": "1470:5:38", + "nodeType": "VariableDeclaration", + "scope": 5591, + "src": "1462:13:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5589, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1462:7:38", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "name": "AddressSlot", + "nameLocation": "1440:11:38", + "nodeType": "StructDefinition", + "scope": 5709, + "src": "1433:49:38", + "visibility": "public" + }, + { + "canonicalName": "StorageSlot.BooleanSlot", + "id": 5594, + "members": [ + { + "constant": false, + "id": 5593, + "mutability": "mutable", + "name": "value", + "nameLocation": "1522:5:38", + "nodeType": "VariableDeclaration", + "scope": 5594, + "src": "1517:10:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5592, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1517:4:38", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "name": "BooleanSlot", + "nameLocation": "1495:11:38", + "nodeType": "StructDefinition", + "scope": 5709, + "src": "1488:46:38", + "visibility": "public" + }, + { + "canonicalName": "StorageSlot.Bytes32Slot", + "id": 5597, + "members": [ + { + "constant": false, + "id": 5596, + "mutability": "mutable", + "name": "value", + "nameLocation": "1577:5:38", + "nodeType": "VariableDeclaration", + "scope": 5597, + "src": "1569:13:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5595, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1569:7:38", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "name": "Bytes32Slot", + "nameLocation": "1547:11:38", + "nodeType": "StructDefinition", + "scope": 5709, + "src": "1540:49:38", + "visibility": "public" + }, + { + "canonicalName": "StorageSlot.Uint256Slot", + "id": 5600, + "members": [ + { + "constant": false, + "id": 5599, + "mutability": "mutable", + "name": "value", + "nameLocation": "1632:5:38", + "nodeType": "VariableDeclaration", + "scope": 5600, + "src": "1624:13:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5598, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1624:7:38", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "Uint256Slot", + "nameLocation": "1602:11:38", + "nodeType": "StructDefinition", + "scope": 5709, + "src": "1595:49:38", + "visibility": "public" + }, + { + "canonicalName": "StorageSlot.Int256Slot", + "id": 5603, + "members": [ + { + "constant": false, + "id": 5602, + "mutability": "mutable", + "name": "value", + "nameLocation": "1685:5:38", + "nodeType": "VariableDeclaration", + "scope": 5603, + "src": "1678:12:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 5601, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1678:6:38", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "name": "Int256Slot", + "nameLocation": "1657:10:38", + "nodeType": "StructDefinition", + "scope": 5709, + "src": "1650:47:38", + "visibility": "public" + }, + { + "canonicalName": "StorageSlot.StringSlot", + "id": 5606, + "members": [ + { + "constant": false, + "id": 5605, + "mutability": "mutable", + "name": "value", + "nameLocation": "1738:5:38", + "nodeType": "VariableDeclaration", + "scope": 5606, + "src": "1731:12:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5604, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1731:6:38", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "name": "StringSlot", + "nameLocation": "1710:10:38", + "nodeType": "StructDefinition", + "scope": 5709, + "src": "1703:47:38", + "visibility": "public" + }, + { + "canonicalName": "StorageSlot.BytesSlot", + "id": 5609, + "members": [ + { + "constant": false, + "id": 5608, + "mutability": "mutable", + "name": "value", + "nameLocation": "1789:5:38", + "nodeType": "VariableDeclaration", + "scope": 5609, + "src": "1783:11:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5607, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1783:5:38", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "name": "BytesSlot", + "nameLocation": "1763:9:38", + "nodeType": "StructDefinition", + "scope": 5709, + "src": "1756:45:38", + "visibility": "public" + }, + { + "body": { + "id": 5619, + "nodeType": "Block", + "src": "1983:79:38", + "statements": [ + { + "AST": { + "nativeSrc": "2018:38:38", + "nodeType": "YulBlock", + "src": "2018:38:38", + "statements": [ + { + "nativeSrc": "2032:14:38", + "nodeType": "YulAssignment", + "src": "2032:14:38", + "value": { + "name": "slot", + "nativeSrc": "2042:4:38", + "nodeType": "YulIdentifier", + "src": "2042:4:38" + }, + "variableNames": [ + { + "name": "r.slot", + "nativeSrc": "2032:6:38", + "nodeType": "YulIdentifier", + "src": "2032:6:38" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5616, + "isOffset": false, + "isSlot": true, + "src": "2032:6:38", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 5612, + "isOffset": false, + "isSlot": false, + "src": "2042:4:38", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 5618, + "nodeType": "InlineAssembly", + "src": "1993:63:38" + } + ] + }, + "documentation": { + "id": 5610, + "nodeType": "StructuredDocumentation", + "src": "1807:87:38", + "text": " @dev Returns an `AddressSlot` with member `value` located at `slot`." + }, + "id": 5620, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAddressSlot", + "nameLocation": "1908:14:38", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5613, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5612, + "mutability": "mutable", + "name": "slot", + "nameLocation": "1931:4:38", + "nodeType": "VariableDeclaration", + "scope": 5620, + "src": "1923:12:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5611, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1923:7:38", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1922:14:38" + }, + "returnParameters": { + "id": 5617, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5616, + "mutability": "mutable", + "name": "r", + "nameLocation": "1980:1:38", + "nodeType": "VariableDeclaration", + "scope": 5620, + "src": "1960:21:38", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSlot_$5591_storage_ptr", + "typeString": "struct StorageSlot.AddressSlot" + }, + "typeName": { + "id": 5615, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5614, + "name": "AddressSlot", + "nameLocations": [ + "1960:11:38" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5591, + "src": "1960:11:38" + }, + "referencedDeclaration": 5591, + "src": "1960:11:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSlot_$5591_storage_ptr", + "typeString": "struct StorageSlot.AddressSlot" + } + }, + "visibility": "internal" + } + ], + "src": "1959:23:38" + }, + "scope": 5709, + "src": "1899:163:38", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5630, + "nodeType": "Block", + "src": "2243:79:38", + "statements": [ + { + "AST": { + "nativeSrc": "2278:38:38", + "nodeType": "YulBlock", + "src": "2278:38:38", + "statements": [ + { + "nativeSrc": "2292:14:38", + "nodeType": "YulAssignment", + "src": "2292:14:38", + "value": { + "name": "slot", + "nativeSrc": "2302:4:38", + "nodeType": "YulIdentifier", + "src": "2302:4:38" + }, + "variableNames": [ + { + "name": "r.slot", + "nativeSrc": "2292:6:38", + "nodeType": "YulIdentifier", + "src": "2292:6:38" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5627, + "isOffset": false, + "isSlot": true, + "src": "2292:6:38", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 5623, + "isOffset": false, + "isSlot": false, + "src": "2302:4:38", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 5629, + "nodeType": "InlineAssembly", + "src": "2253:63:38" + } + ] + }, + "documentation": { + "id": 5621, + "nodeType": "StructuredDocumentation", + "src": "2068:86:38", + "text": " @dev Returns a `BooleanSlot` with member `value` located at `slot`." + }, + "id": 5631, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getBooleanSlot", + "nameLocation": "2168:14:38", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5624, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5623, + "mutability": "mutable", + "name": "slot", + "nameLocation": "2191:4:38", + "nodeType": "VariableDeclaration", + "scope": 5631, + "src": "2183:12:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5622, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2183:7:38", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2182:14:38" + }, + "returnParameters": { + "id": 5628, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5627, + "mutability": "mutable", + "name": "r", + "nameLocation": "2240:1:38", + "nodeType": "VariableDeclaration", + "scope": 5631, + "src": "2220:21:38", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BooleanSlot_$5594_storage_ptr", + "typeString": "struct StorageSlot.BooleanSlot" + }, + "typeName": { + "id": 5626, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5625, + "name": "BooleanSlot", + "nameLocations": [ + "2220:11:38" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5594, + "src": "2220:11:38" + }, + "referencedDeclaration": 5594, + "src": "2220:11:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BooleanSlot_$5594_storage_ptr", + "typeString": "struct StorageSlot.BooleanSlot" + } + }, + "visibility": "internal" + } + ], + "src": "2219:23:38" + }, + "scope": 5709, + "src": "2159:163:38", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5641, + "nodeType": "Block", + "src": "2503:79:38", + "statements": [ + { + "AST": { + "nativeSrc": "2538:38:38", + "nodeType": "YulBlock", + "src": "2538:38:38", + "statements": [ + { + "nativeSrc": "2552:14:38", + "nodeType": "YulAssignment", + "src": "2552:14:38", + "value": { + "name": "slot", + "nativeSrc": "2562:4:38", + "nodeType": "YulIdentifier", + "src": "2562:4:38" + }, + "variableNames": [ + { + "name": "r.slot", + "nativeSrc": "2552:6:38", + "nodeType": "YulIdentifier", + "src": "2552:6:38" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5638, + "isOffset": false, + "isSlot": true, + "src": "2552:6:38", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 5634, + "isOffset": false, + "isSlot": false, + "src": "2562:4:38", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 5640, + "nodeType": "InlineAssembly", + "src": "2513:63:38" + } + ] + }, + "documentation": { + "id": 5632, + "nodeType": "StructuredDocumentation", + "src": "2328:86:38", + "text": " @dev Returns a `Bytes32Slot` with member `value` located at `slot`." + }, + "id": 5642, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getBytes32Slot", + "nameLocation": "2428:14:38", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5635, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5634, + "mutability": "mutable", + "name": "slot", + "nameLocation": "2451:4:38", + "nodeType": "VariableDeclaration", + "scope": 5642, + "src": "2443:12:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5633, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2443:7:38", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2442:14:38" + }, + "returnParameters": { + "id": 5639, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5638, + "mutability": "mutable", + "name": "r", + "nameLocation": "2500:1:38", + "nodeType": "VariableDeclaration", + "scope": 5642, + "src": "2480:21:38", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Slot_$5597_storage_ptr", + "typeString": "struct StorageSlot.Bytes32Slot" + }, + "typeName": { + "id": 5637, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5636, + "name": "Bytes32Slot", + "nameLocations": [ + "2480:11:38" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5597, + "src": "2480:11:38" + }, + "referencedDeclaration": 5597, + "src": "2480:11:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Slot_$5597_storage_ptr", + "typeString": "struct StorageSlot.Bytes32Slot" + } + }, + "visibility": "internal" + } + ], + "src": "2479:23:38" + }, + "scope": 5709, + "src": "2419:163:38", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5652, + "nodeType": "Block", + "src": "2763:79:38", + "statements": [ + { + "AST": { + "nativeSrc": "2798:38:38", + "nodeType": "YulBlock", + "src": "2798:38:38", + "statements": [ + { + "nativeSrc": "2812:14:38", + "nodeType": "YulAssignment", + "src": "2812:14:38", + "value": { + "name": "slot", + "nativeSrc": "2822:4:38", + "nodeType": "YulIdentifier", + "src": "2822:4:38" + }, + "variableNames": [ + { + "name": "r.slot", + "nativeSrc": "2812:6:38", + "nodeType": "YulIdentifier", + "src": "2812:6:38" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5649, + "isOffset": false, + "isSlot": true, + "src": "2812:6:38", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 5645, + "isOffset": false, + "isSlot": false, + "src": "2822:4:38", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 5651, + "nodeType": "InlineAssembly", + "src": "2773:63:38" + } + ] + }, + "documentation": { + "id": 5643, + "nodeType": "StructuredDocumentation", + "src": "2588:86:38", + "text": " @dev Returns a `Uint256Slot` with member `value` located at `slot`." + }, + "id": 5653, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getUint256Slot", + "nameLocation": "2688:14:38", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5646, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5645, + "mutability": "mutable", + "name": "slot", + "nameLocation": "2711:4:38", + "nodeType": "VariableDeclaration", + "scope": 5653, + "src": "2703:12:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5644, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2703:7:38", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2702:14:38" + }, + "returnParameters": { + "id": 5650, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5649, + "mutability": "mutable", + "name": "r", + "nameLocation": "2760:1:38", + "nodeType": "VariableDeclaration", + "scope": 5653, + "src": "2740:21:38", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Uint256Slot_$5600_storage_ptr", + "typeString": "struct StorageSlot.Uint256Slot" + }, + "typeName": { + "id": 5648, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5647, + "name": "Uint256Slot", + "nameLocations": [ + "2740:11:38" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5600, + "src": "2740:11:38" + }, + "referencedDeclaration": 5600, + "src": "2740:11:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Uint256Slot_$5600_storage_ptr", + "typeString": "struct StorageSlot.Uint256Slot" + } + }, + "visibility": "internal" + } + ], + "src": "2739:23:38" + }, + "scope": 5709, + "src": "2679:163:38", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5663, + "nodeType": "Block", + "src": "3020:79:38", + "statements": [ + { + "AST": { + "nativeSrc": "3055:38:38", + "nodeType": "YulBlock", + "src": "3055:38:38", + "statements": [ + { + "nativeSrc": "3069:14:38", + "nodeType": "YulAssignment", + "src": "3069:14:38", + "value": { + "name": "slot", + "nativeSrc": "3079:4:38", + "nodeType": "YulIdentifier", + "src": "3079:4:38" + }, + "variableNames": [ + { + "name": "r.slot", + "nativeSrc": "3069:6:38", + "nodeType": "YulIdentifier", + "src": "3069:6:38" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5660, + "isOffset": false, + "isSlot": true, + "src": "3069:6:38", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 5656, + "isOffset": false, + "isSlot": false, + "src": "3079:4:38", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 5662, + "nodeType": "InlineAssembly", + "src": "3030:63:38" + } + ] + }, + "documentation": { + "id": 5654, + "nodeType": "StructuredDocumentation", + "src": "2848:85:38", + "text": " @dev Returns a `Int256Slot` with member `value` located at `slot`." + }, + "id": 5664, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getInt256Slot", + "nameLocation": "2947:13:38", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5657, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5656, + "mutability": "mutable", + "name": "slot", + "nameLocation": "2969:4:38", + "nodeType": "VariableDeclaration", + "scope": 5664, + "src": "2961:12:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5655, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2961:7:38", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2960:14:38" + }, + "returnParameters": { + "id": 5661, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5660, + "mutability": "mutable", + "name": "r", + "nameLocation": "3017:1:38", + "nodeType": "VariableDeclaration", + "scope": 5664, + "src": "2998:20:38", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Int256Slot_$5603_storage_ptr", + "typeString": "struct StorageSlot.Int256Slot" + }, + "typeName": { + "id": 5659, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5658, + "name": "Int256Slot", + "nameLocations": [ + "2998:10:38" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5603, + "src": "2998:10:38" + }, + "referencedDeclaration": 5603, + "src": "2998:10:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Int256Slot_$5603_storage_ptr", + "typeString": "struct StorageSlot.Int256Slot" + } + }, + "visibility": "internal" + } + ], + "src": "2997:22:38" + }, + "scope": 5709, + "src": "2938:161:38", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5674, + "nodeType": "Block", + "src": "3277:79:38", + "statements": [ + { + "AST": { + "nativeSrc": "3312:38:38", + "nodeType": "YulBlock", + "src": "3312:38:38", + "statements": [ + { + "nativeSrc": "3326:14:38", + "nodeType": "YulAssignment", + "src": "3326:14:38", + "value": { + "name": "slot", + "nativeSrc": "3336:4:38", + "nodeType": "YulIdentifier", + "src": "3336:4:38" + }, + "variableNames": [ + { + "name": "r.slot", + "nativeSrc": "3326:6:38", + "nodeType": "YulIdentifier", + "src": "3326:6:38" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5671, + "isOffset": false, + "isSlot": true, + "src": "3326:6:38", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 5667, + "isOffset": false, + "isSlot": false, + "src": "3336:4:38", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 5673, + "nodeType": "InlineAssembly", + "src": "3287:63:38" + } + ] + }, + "documentation": { + "id": 5665, + "nodeType": "StructuredDocumentation", + "src": "3105:85:38", + "text": " @dev Returns a `StringSlot` with member `value` located at `slot`." + }, + "id": 5675, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getStringSlot", + "nameLocation": "3204:13:38", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5668, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5667, + "mutability": "mutable", + "name": "slot", + "nameLocation": "3226:4:38", + "nodeType": "VariableDeclaration", + "scope": 5675, + "src": "3218:12:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5666, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3218:7:38", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3217:14:38" + }, + "returnParameters": { + "id": 5672, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5671, + "mutability": "mutable", + "name": "r", + "nameLocation": "3274:1:38", + "nodeType": "VariableDeclaration", + "scope": 5675, + "src": "3255:20:38", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringSlot_$5606_storage_ptr", + "typeString": "struct StorageSlot.StringSlot" + }, + "typeName": { + "id": 5670, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5669, + "name": "StringSlot", + "nameLocations": [ + "3255:10:38" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5606, + "src": "3255:10:38" + }, + "referencedDeclaration": 5606, + "src": "3255:10:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringSlot_$5606_storage_ptr", + "typeString": "struct StorageSlot.StringSlot" + } + }, + "visibility": "internal" + } + ], + "src": "3254:22:38" + }, + "scope": 5709, + "src": "3195:161:38", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5685, + "nodeType": "Block", + "src": "3558:85:38", + "statements": [ + { + "AST": { + "nativeSrc": "3593:44:38", + "nodeType": "YulBlock", + "src": "3593:44:38", + "statements": [ + { + "nativeSrc": "3607:20:38", + "nodeType": "YulAssignment", + "src": "3607:20:38", + "value": { + "name": "store.slot", + "nativeSrc": "3617:10:38", + "nodeType": "YulIdentifier", + "src": "3617:10:38" + }, + "variableNames": [ + { + "name": "r.slot", + "nativeSrc": "3607:6:38", + "nodeType": "YulIdentifier", + "src": "3607:6:38" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5682, + "isOffset": false, + "isSlot": true, + "src": "3607:6:38", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 5678, + "isOffset": false, + "isSlot": true, + "src": "3617:10:38", + "suffix": "slot", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 5684, + "nodeType": "InlineAssembly", + "src": "3568:69:38" + } + ] + }, + "documentation": { + "id": 5676, + "nodeType": "StructuredDocumentation", + "src": "3362:101:38", + "text": " @dev Returns an `StringSlot` representation of the string storage pointer `store`." + }, + "id": 5686, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getStringSlot", + "nameLocation": "3477:13:38", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5679, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5678, + "mutability": "mutable", + "name": "store", + "nameLocation": "3506:5:38", + "nodeType": "VariableDeclaration", + "scope": 5686, + "src": "3491:20:38", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5677, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3491:6:38", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "3490:22:38" + }, + "returnParameters": { + "id": 5683, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5682, + "mutability": "mutable", + "name": "r", + "nameLocation": "3555:1:38", + "nodeType": "VariableDeclaration", + "scope": 5686, + "src": "3536:20:38", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringSlot_$5606_storage_ptr", + "typeString": "struct StorageSlot.StringSlot" + }, + "typeName": { + "id": 5681, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5680, + "name": "StringSlot", + "nameLocations": [ + "3536:10:38" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5606, + "src": "3536:10:38" + }, + "referencedDeclaration": 5606, + "src": "3536:10:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_StringSlot_$5606_storage_ptr", + "typeString": "struct StorageSlot.StringSlot" + } + }, + "visibility": "internal" + } + ], + "src": "3535:22:38" + }, + "scope": 5709, + "src": "3468:175:38", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5696, + "nodeType": "Block", + "src": "3818:79:38", + "statements": [ + { + "AST": { + "nativeSrc": "3853:38:38", + "nodeType": "YulBlock", + "src": "3853:38:38", + "statements": [ + { + "nativeSrc": "3867:14:38", + "nodeType": "YulAssignment", + "src": "3867:14:38", + "value": { + "name": "slot", + "nativeSrc": "3877:4:38", + "nodeType": "YulIdentifier", + "src": "3877:4:38" + }, + "variableNames": [ + { + "name": "r.slot", + "nativeSrc": "3867:6:38", + "nodeType": "YulIdentifier", + "src": "3867:6:38" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5693, + "isOffset": false, + "isSlot": true, + "src": "3867:6:38", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 5689, + "isOffset": false, + "isSlot": false, + "src": "3877:4:38", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 5695, + "nodeType": "InlineAssembly", + "src": "3828:63:38" + } + ] + }, + "documentation": { + "id": 5687, + "nodeType": "StructuredDocumentation", + "src": "3649:84:38", + "text": " @dev Returns a `BytesSlot` with member `value` located at `slot`." + }, + "id": 5697, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getBytesSlot", + "nameLocation": "3747:12:38", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5690, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5689, + "mutability": "mutable", + "name": "slot", + "nameLocation": "3768:4:38", + "nodeType": "VariableDeclaration", + "scope": 5697, + "src": "3760:12:38", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5688, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3760:7:38", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3759:14:38" + }, + "returnParameters": { + "id": 5694, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5693, + "mutability": "mutable", + "name": "r", + "nameLocation": "3815:1:38", + "nodeType": "VariableDeclaration", + "scope": 5697, + "src": "3797:19:38", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesSlot_$5609_storage_ptr", + "typeString": "struct StorageSlot.BytesSlot" + }, + "typeName": { + "id": 5692, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5691, + "name": "BytesSlot", + "nameLocations": [ + "3797:9:38" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5609, + "src": "3797:9:38" + }, + "referencedDeclaration": 5609, + "src": "3797:9:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesSlot_$5609_storage_ptr", + "typeString": "struct StorageSlot.BytesSlot" + } + }, + "visibility": "internal" + } + ], + "src": "3796:21:38" + }, + "scope": 5709, + "src": "3738:159:38", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5707, + "nodeType": "Block", + "src": "4094:85:38", + "statements": [ + { + "AST": { + "nativeSrc": "4129:44:38", + "nodeType": "YulBlock", + "src": "4129:44:38", + "statements": [ + { + "nativeSrc": "4143:20:38", + "nodeType": "YulAssignment", + "src": "4143:20:38", + "value": { + "name": "store.slot", + "nativeSrc": "4153:10:38", + "nodeType": "YulIdentifier", + "src": "4153:10:38" + }, + "variableNames": [ + { + "name": "r.slot", + "nativeSrc": "4143:6:38", + "nodeType": "YulIdentifier", + "src": "4143:6:38" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5704, + "isOffset": false, + "isSlot": true, + "src": "4143:6:38", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 5700, + "isOffset": false, + "isSlot": true, + "src": "4153:10:38", + "suffix": "slot", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 5706, + "nodeType": "InlineAssembly", + "src": "4104:69:38" + } + ] + }, + "documentation": { + "id": 5698, + "nodeType": "StructuredDocumentation", + "src": "3903:99:38", + "text": " @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`." + }, + "id": 5708, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getBytesSlot", + "nameLocation": "4016:12:38", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5701, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5700, + "mutability": "mutable", + "name": "store", + "nameLocation": "4043:5:38", + "nodeType": "VariableDeclaration", + "scope": 5708, + "src": "4029:19:38", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5699, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4029:5:38", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "4028:21:38" + }, + "returnParameters": { + "id": 5705, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5704, + "mutability": "mutable", + "name": "r", + "nameLocation": "4091:1:38", + "nodeType": "VariableDeclaration", + "scope": 5708, + "src": "4073:19:38", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesSlot_$5609_storage_ptr", + "typeString": "struct StorageSlot.BytesSlot" + }, + "typeName": { + "id": 5703, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 5702, + "name": "BytesSlot", + "nameLocations": [ + "4073:9:38" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5609, + "src": "4073:9:38" + }, + "referencedDeclaration": 5609, + "src": "4073:9:38", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BytesSlot_$5609_storage_ptr", + "typeString": "struct StorageSlot.BytesSlot" + } + }, + "visibility": "internal" + } + ], + "src": "4072:21:38" + }, + "scope": 5709, + "src": "4007:172:38", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 5710, + "src": "1407:2774:38", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "193:3989:38" + }, + "id": 38 + }, + "@openzeppelin/contracts/utils/Strings.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/utils/Strings.sol", + "exportedSymbols": { + "Math": [ + 7995 + ], + "SignedMath": [ + 9904 + ], + "Strings": [ + 6029 + ] + }, + "id": 6030, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5711, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "101:24:39" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/math/Math.sol", + "file": "./math/Math.sol", + "id": 5713, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6030, + "sourceUnit": 7996, + "src": "127:37:39", + "symbolAliases": [ + { + "foreign": { + "id": 5712, + "name": "Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7995, + "src": "135:4:39", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/math/SignedMath.sol", + "file": "./math/SignedMath.sol", + "id": 5715, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 6030, + "sourceUnit": 9905, + "src": "165:49:39", + "symbolAliases": [ + { + "foreign": { + "id": 5714, + "name": "SignedMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9904, + "src": "173:10:39", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "Strings", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 5716, + "nodeType": "StructuredDocumentation", + "src": "216:34:39", + "text": " @dev String operations." + }, + "fullyImplemented": true, + "id": 6029, + "linearizedBaseContracts": [ + 6029 + ], + "name": "Strings", + "nameLocation": "259:7:39", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 5719, + "mutability": "constant", + "name": "HEX_DIGITS", + "nameLocation": "298:10:39", + "nodeType": "VariableDeclaration", + "scope": 6029, + "src": "273:56:39", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + }, + "typeName": { + "id": 5717, + "name": "bytes16", + "nodeType": "ElementaryTypeName", + "src": "273:7:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + }, + "value": { + "hexValue": "30313233343536373839616263646566", + "id": 5718, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "311:18:39", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f", + "typeString": "literal_string \"0123456789abcdef\"" + }, + "value": "0123456789abcdef" + }, + "visibility": "private" + }, + { + "constant": true, + "id": 5722, + "mutability": "constant", + "name": "ADDRESS_LENGTH", + "nameLocation": "358:14:39", + "nodeType": "VariableDeclaration", + "scope": 6029, + "src": "335:42:39", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 5720, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "335:5:39", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": { + "hexValue": "3230", + "id": 5721, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "375:2:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_20_by_1", + "typeString": "int_const 20" + }, + "value": "20" + }, + "visibility": "private" + }, + { + "documentation": { + "id": 5723, + "nodeType": "StructuredDocumentation", + "src": "384:81:39", + "text": " @dev The `value` string doesn't fit in the specified `length`." + }, + "errorSelector": "e22e27eb", + "id": 5729, + "name": "StringsInsufficientHexLength", + "nameLocation": "476:28:39", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 5728, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5725, + "mutability": "mutable", + "name": "value", + "nameLocation": "513:5:39", + "nodeType": "VariableDeclaration", + "scope": 5729, + "src": "505:13:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5724, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "505:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5727, + "mutability": "mutable", + "name": "length", + "nameLocation": "528:6:39", + "nodeType": "VariableDeclaration", + "scope": 5729, + "src": "520:14:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5726, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "520:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "504:31:39" + }, + "src": "470:66:39" + }, + { + "body": { + "id": 5776, + "nodeType": "Block", + "src": "708:561:39", + "statements": [ + { + "id": 5775, + "nodeType": "UncheckedBlock", + "src": "718:545:39", + "statements": [ + { + "assignments": [ + 5738 + ], + "declarations": [ + { + "constant": false, + "id": 5738, + "mutability": "mutable", + "name": "length", + "nameLocation": "750:6:39", + "nodeType": "VariableDeclaration", + "scope": 5775, + "src": "742:14:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5737, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "742:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 5745, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5744, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 5741, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5732, + "src": "770:5:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 5739, + "name": "Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7995, + "src": "759:4:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Math_$7995_$", + "typeString": "type(library Math)" + } + }, + "id": 5740, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "764:5:39", + "memberName": "log10", + "nodeType": "MemberAccess", + "referencedDeclaration": 7767, + "src": "759:10:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint256)" + } + }, + "id": 5742, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "759:17:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31", + "id": 5743, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "779:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "759:21:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "742:38:39" + }, + { + "assignments": [ + 5747 + ], + "declarations": [ + { + "constant": false, + "id": 5747, + "mutability": "mutable", + "name": "buffer", + "nameLocation": "808:6:39", + "nodeType": "VariableDeclaration", + "scope": 5775, + "src": "794:20:39", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5746, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "794:6:39", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "id": 5752, + "initialValue": { + "arguments": [ + { + "id": 5750, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5738, + "src": "828:6:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5749, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "817:10:39", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$", + "typeString": "function (uint256) pure returns (string memory)" + }, + "typeName": { + "id": 5748, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "821:6:39", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + } + }, + "id": 5751, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "817:18:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "794:41:39" + }, + { + "assignments": [ + 5754 + ], + "declarations": [ + { + "constant": false, + "id": 5754, + "mutability": "mutable", + "name": "ptr", + "nameLocation": "857:3:39", + "nodeType": "VariableDeclaration", + "scope": 5775, + "src": "849:11:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5753, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "849:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 5755, + "nodeType": "VariableDeclarationStatement", + "src": "849:11:39" + }, + { + "AST": { + "nativeSrc": "899:67:39", + "nodeType": "YulBlock", + "src": "899:67:39", + "statements": [ + { + "nativeSrc": "917:35:39", + "nodeType": "YulAssignment", + "src": "917:35:39", + "value": { + "arguments": [ + { + "name": "buffer", + "nativeSrc": "928:6:39", + "nodeType": "YulIdentifier", + "src": "928:6:39" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "940:2:39", + "nodeType": "YulLiteral", + "src": "940:2:39", + "type": "", + "value": "32" + }, + { + "name": "length", + "nativeSrc": "944:6:39", + "nodeType": "YulIdentifier", + "src": "944:6:39" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "936:3:39", + "nodeType": "YulIdentifier", + "src": "936:3:39" + }, + "nativeSrc": "936:15:39", + "nodeType": "YulFunctionCall", + "src": "936:15:39" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "924:3:39", + "nodeType": "YulIdentifier", + "src": "924:3:39" + }, + "nativeSrc": "924:28:39", + "nodeType": "YulFunctionCall", + "src": "924:28:39" + }, + "variableNames": [ + { + "name": "ptr", + "nativeSrc": "917:3:39", + "nodeType": "YulIdentifier", + "src": "917:3:39" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5747, + "isOffset": false, + "isSlot": false, + "src": "928:6:39", + "valueSize": 1 + }, + { + "declaration": 5738, + "isOffset": false, + "isSlot": false, + "src": "944:6:39", + "valueSize": 1 + }, + { + "declaration": 5754, + "isOffset": false, + "isSlot": false, + "src": "917:3:39", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 5756, + "nodeType": "InlineAssembly", + "src": "874:92:39" + }, + { + "body": { + "id": 5771, + "nodeType": "Block", + "src": "992:234:39", + "statements": [ + { + "expression": { + "id": 5759, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "1010:5:39", + "subExpression": { + "id": 5758, + "name": "ptr", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5754, + "src": "1010:3:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5760, + "nodeType": "ExpressionStatement", + "src": "1010:5:39" + }, + { + "AST": { + "nativeSrc": "1058:86:39", + "nodeType": "YulBlock", + "src": "1058:86:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "ptr", + "nativeSrc": "1088:3:39", + "nodeType": "YulIdentifier", + "src": "1088:3:39" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "1102:5:39", + "nodeType": "YulIdentifier", + "src": "1102:5:39" + }, + { + "kind": "number", + "nativeSrc": "1109:2:39", + "nodeType": "YulLiteral", + "src": "1109:2:39", + "type": "", + "value": "10" + } + ], + "functionName": { + "name": "mod", + "nativeSrc": "1098:3:39", + "nodeType": "YulIdentifier", + "src": "1098:3:39" + }, + "nativeSrc": "1098:14:39", + "nodeType": "YulFunctionCall", + "src": "1098:14:39" + }, + { + "name": "HEX_DIGITS", + "nativeSrc": "1114:10:39", + "nodeType": "YulIdentifier", + "src": "1114:10:39" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "1093:4:39", + "nodeType": "YulIdentifier", + "src": "1093:4:39" + }, + "nativeSrc": "1093:32:39", + "nodeType": "YulFunctionCall", + "src": "1093:32:39" + } + ], + "functionName": { + "name": "mstore8", + "nativeSrc": "1080:7:39", + "nodeType": "YulIdentifier", + "src": "1080:7:39" + }, + "nativeSrc": "1080:46:39", + "nodeType": "YulFunctionCall", + "src": "1080:46:39" + }, + "nativeSrc": "1080:46:39", + "nodeType": "YulExpressionStatement", + "src": "1080:46:39" + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5719, + "isOffset": false, + "isSlot": false, + "src": "1114:10:39", + "valueSize": 1 + }, + { + "declaration": 5754, + "isOffset": false, + "isSlot": false, + "src": "1088:3:39", + "valueSize": 1 + }, + { + "declaration": 5732, + "isOffset": false, + "isSlot": false, + "src": "1102:5:39", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 5761, + "nodeType": "InlineAssembly", + "src": "1033:111:39" + }, + { + "expression": { + "id": 5764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5762, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5732, + "src": "1161:5:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "/=", + "rightHandSide": { + "hexValue": "3130", + "id": 5763, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1170:2:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "1161:11:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5765, + "nodeType": "ExpressionStatement", + "src": "1161:11:39" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5768, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5766, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5732, + "src": "1194:5:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 5767, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1203:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1194:10:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5770, + "nodeType": "IfStatement", + "src": "1190:21:39", + "trueBody": { + "id": 5769, + "nodeType": "Break", + "src": "1206:5:39" + } + } + ] + }, + "condition": { + "hexValue": "74727565", + "id": 5757, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "986:4:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "id": 5772, + "nodeType": "WhileStatement", + "src": "979:247:39" + }, + { + "expression": { + "id": 5773, + "name": "buffer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5747, + "src": "1246:6:39", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 5736, + "id": 5774, + "nodeType": "Return", + "src": "1239:13:39" + } + ] + } + ] + }, + "documentation": { + "id": 5730, + "nodeType": "StructuredDocumentation", + "src": "542:90:39", + "text": " @dev Converts a `uint256` to its ASCII `string` decimal representation." + }, + "id": 5777, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toString", + "nameLocation": "646:8:39", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5733, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5732, + "mutability": "mutable", + "name": "value", + "nameLocation": "663:5:39", + "nodeType": "VariableDeclaration", + "scope": 5777, + "src": "655:13:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5731, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "655:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "654:15:39" + }, + "returnParameters": { + "id": 5736, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5735, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5777, + "src": "693:13:39", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5734, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "693:6:39", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "692:15:39" + }, + "scope": 6029, + "src": "637:632:39", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5802, + "nodeType": "Block", + "src": "1445:92:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 5790, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5788, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5780, + "src": "1476:5:39", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "hexValue": "30", + "id": 5789, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1484:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1476:9:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "hexValue": "", + "id": 5792, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1494:2:39", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + }, + "id": 5793, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "1476:20:39", + "trueExpression": { + "hexValue": "2d", + "id": 5791, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1488:3:39", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561", + "typeString": "literal_string \"-\"" + }, + "value": "-" + }, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "id": 5797, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5780, + "src": "1522:5:39", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "expression": { + "id": 5795, + "name": "SignedMath", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9904, + "src": "1507:10:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SignedMath_$9904_$", + "typeString": "type(library SignedMath)" + } + }, + "id": 5796, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1518:3:39", + "memberName": "abs", + "nodeType": "MemberAccess", + "referencedDeclaration": 9903, + "src": "1507:14:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_int256_$returns$_t_uint256_$", + "typeString": "function (int256) pure returns (uint256)" + } + }, + "id": 5798, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1507:21:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5794, + "name": "toString", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5777, + "src": "1498:8:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$", + "typeString": "function (uint256) pure returns (string memory)" + } + }, + "id": 5799, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1498:31:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "expression": { + "id": 5786, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1462:6:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 5785, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1462:6:39", + "typeDescriptions": {} + } + }, + "id": 5787, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1469:6:39", + "memberName": "concat", + "nodeType": "MemberAccess", + "src": "1462:13:39", + "typeDescriptions": { + "typeIdentifier": "t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$", + "typeString": "function () pure returns (string memory)" + } + }, + "id": 5800, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1462:68:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 5784, + "id": 5801, + "nodeType": "Return", + "src": "1455:75:39" + } + ] + }, + "documentation": { + "id": 5778, + "nodeType": "StructuredDocumentation", + "src": "1275:89:39", + "text": " @dev Converts a `int256` to its ASCII `string` decimal representation." + }, + "id": 5803, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toStringSigned", + "nameLocation": "1378:14:39", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5781, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5780, + "mutability": "mutable", + "name": "value", + "nameLocation": "1400:5:39", + "nodeType": "VariableDeclaration", + "scope": 5803, + "src": "1393:12:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 5779, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1393:6:39", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "1392:14:39" + }, + "returnParameters": { + "id": 5784, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5783, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5803, + "src": "1430:13:39", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5782, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1430:6:39", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "1429:15:39" + }, + "scope": 6029, + "src": "1369:168:39", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5822, + "nodeType": "Block", + "src": "1716:100:39", + "statements": [ + { + "id": 5821, + "nodeType": "UncheckedBlock", + "src": "1726:84:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 5812, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5806, + "src": "1769:5:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5818, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 5815, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5806, + "src": "1788:5:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 5813, + "name": "Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7995, + "src": "1776:4:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Math_$7995_$", + "typeString": "type(library Math)" + } + }, + "id": 5814, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1781:6:39", + "memberName": "log256", + "nodeType": "MemberAccess", + "referencedDeclaration": 7938, + "src": "1776:11:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint256)" + } + }, + "id": 5816, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1776:18:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31", + "id": 5817, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1797:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1776:22:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5811, + "name": "toHexString", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5823, + 5906, + 5926 + ], + "referencedDeclaration": 5906, + "src": "1757:11:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$", + "typeString": "function (uint256,uint256) pure returns (string memory)" + } + }, + "id": 5819, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1757:42:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 5810, + "id": 5820, + "nodeType": "Return", + "src": "1750:49:39" + } + ] + } + ] + }, + "documentation": { + "id": 5804, + "nodeType": "StructuredDocumentation", + "src": "1543:94:39", + "text": " @dev Converts a `uint256` to its ASCII `string` hexadecimal representation." + }, + "id": 5823, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toHexString", + "nameLocation": "1651:11:39", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5807, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5806, + "mutability": "mutable", + "name": "value", + "nameLocation": "1671:5:39", + "nodeType": "VariableDeclaration", + "scope": 5823, + "src": "1663:13:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5805, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1663:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1662:15:39" + }, + "returnParameters": { + "id": 5810, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5809, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5823, + "src": "1701:13:39", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5808, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1701:6:39", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "1700:15:39" + }, + "scope": 6029, + "src": "1642:174:39", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5905, + "nodeType": "Block", + "src": "2029:435:39", + "statements": [ + { + "assignments": [ + 5834 + ], + "declarations": [ + { + "constant": false, + "id": 5834, + "mutability": "mutable", + "name": "localValue", + "nameLocation": "2047:10:39", + "nodeType": "VariableDeclaration", + "scope": 5905, + "src": "2039:18:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5833, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2039:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 5836, + "initialValue": { + "id": 5835, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5826, + "src": "2060:5:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2039:26:39" + }, + { + "assignments": [ + 5838 + ], + "declarations": [ + { + "constant": false, + "id": 5838, + "mutability": "mutable", + "name": "buffer", + "nameLocation": "2088:6:39", + "nodeType": "VariableDeclaration", + "scope": 5905, + "src": "2075:19:39", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5837, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2075:5:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 5847, + "initialValue": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5845, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5843, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 5841, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2107:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 5842, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5828, + "src": "2111:6:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2107:10:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "32", + "id": 5844, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2120:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "2107:14:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5840, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "2097:9:39", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (uint256) pure returns (bytes memory)" + }, + "typeName": { + "id": 5839, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2101:5:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + } + }, + "id": 5846, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2097:25:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2075:47:39" + }, + { + "expression": { + "id": 5852, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 5848, + "name": "buffer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5838, + "src": "2132:6:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 5850, + "indexExpression": { + "hexValue": "30", + "id": 5849, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2139:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2132:9:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 5851, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2144:3:39", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d", + "typeString": "literal_string \"0\"" + }, + "value": "0" + }, + "src": "2132:15:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "id": 5853, + "nodeType": "ExpressionStatement", + "src": "2132:15:39" + }, + { + "expression": { + "id": 5858, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 5854, + "name": "buffer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5838, + "src": "2157:6:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 5856, + "indexExpression": { + "hexValue": "31", + "id": 5855, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2164:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2157:9:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "78", + "id": 5857, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2169:3:39", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83", + "typeString": "literal_string \"x\"" + }, + "value": "x" + }, + "src": "2157:15:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "id": 5859, + "nodeType": "ExpressionStatement", + "src": "2157:15:39" + }, + { + "body": { + "id": 5888, + "nodeType": "Block", + "src": "2227:95:39", + "statements": [ + { + "expression": { + "id": 5882, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 5874, + "name": "buffer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5838, + "src": "2241:6:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 5876, + "indexExpression": { + "id": 5875, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5861, + "src": "2248:1:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2241:9:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "baseExpression": { + "id": 5877, + "name": "HEX_DIGITS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5719, + "src": "2253:10:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes16", + "typeString": "bytes16" + } + }, + "id": 5881, + "indexExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5880, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5878, + "name": "localValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5834, + "src": "2264:10:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "307866", + "id": 5879, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2277:3:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_15_by_1", + "typeString": "int_const 15" + }, + "value": "0xf" + }, + "src": "2264:16:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2253:28:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "src": "2241:40:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "id": 5883, + "nodeType": "ExpressionStatement", + "src": "2241:40:39" + }, + { + "expression": { + "id": 5886, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5884, + "name": "localValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5834, + "src": "2295:10:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "hexValue": "34", + "id": 5885, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2310:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "src": "2295:16:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5887, + "nodeType": "ExpressionStatement", + "src": "2295:16:39" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5870, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5868, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5861, + "src": "2215:1:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "31", + "id": 5869, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2219:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2215:5:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5889, + "initializationExpression": { + "assignments": [ + 5861 + ], + "declarations": [ + { + "constant": false, + "id": 5861, + "mutability": "mutable", + "name": "i", + "nameLocation": "2195:1:39", + "nodeType": "VariableDeclaration", + "scope": 5889, + "src": "2187:9:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5860, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2187:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 5867, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5864, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 5862, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2199:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 5863, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5828, + "src": "2203:6:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2199:10:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31", + "id": 5865, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2212:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2199:14:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2187:26:39" + }, + "isSimpleCounterLoop": false, + "loopExpression": { + "expression": { + "id": 5872, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": true, + "src": "2222:3:39", + "subExpression": { + "id": 5871, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5861, + "src": "2224:1:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5873, + "nodeType": "ExpressionStatement", + "src": "2222:3:39" + }, + "nodeType": "ForStatement", + "src": "2182:140:39" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5892, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5890, + "name": "localValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5834, + "src": "2335:10:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 5891, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2349:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2335:15:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5899, + "nodeType": "IfStatement", + "src": "2331:96:39", + "trueBody": { + "id": 5898, + "nodeType": "Block", + "src": "2352:75:39", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 5894, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5826, + "src": "2402:5:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5895, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5828, + "src": "2409:6:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5893, + "name": "StringsInsufficientHexLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5729, + "src": "2373:28:39", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 5896, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2373:43:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5897, + "nodeType": "RevertStatement", + "src": "2366:50:39" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 5902, + "name": "buffer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5838, + "src": "2450:6:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5901, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2443:6:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 5900, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2443:6:39", + "typeDescriptions": {} + } + }, + "id": 5903, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2443:14:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 5832, + "id": 5904, + "nodeType": "Return", + "src": "2436:21:39" + } + ] + }, + "documentation": { + "id": 5824, + "nodeType": "StructuredDocumentation", + "src": "1822:112:39", + "text": " @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length." + }, + "id": 5906, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toHexString", + "nameLocation": "1948:11:39", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5829, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5826, + "mutability": "mutable", + "name": "value", + "nameLocation": "1968:5:39", + "nodeType": "VariableDeclaration", + "scope": 5906, + "src": "1960:13:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5825, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1960:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5828, + "mutability": "mutable", + "name": "length", + "nameLocation": "1983:6:39", + "nodeType": "VariableDeclaration", + "scope": 5906, + "src": "1975:14:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5827, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1975:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1959:31:39" + }, + "returnParameters": { + "id": 5832, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5831, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5906, + "src": "2014:13:39", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5830, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2014:6:39", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "2013:15:39" + }, + "scope": 6029, + "src": "1939:525:39", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5925, + "nodeType": "Block", + "src": "2696:75:39", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 5919, + "name": "addr", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5909, + "src": "2741:4:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5918, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2733:7:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 5917, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "2733:7:39", + "typeDescriptions": {} + } + }, + "id": 5920, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2733:13:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 5916, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2725:7:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 5915, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2725:7:39", + "typeDescriptions": {} + } + }, + "id": 5921, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2725:22:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 5922, + "name": "ADDRESS_LENGTH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5722, + "src": "2749:14:39", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 5914, + "name": "toHexString", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5823, + 5906, + 5926 + ], + "referencedDeclaration": 5906, + "src": "2713:11:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$", + "typeString": "function (uint256,uint256) pure returns (string memory)" + } + }, + "id": 5923, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2713:51:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 5913, + "id": 5924, + "nodeType": "Return", + "src": "2706:58:39" + } + ] + }, + "documentation": { + "id": 5907, + "nodeType": "StructuredDocumentation", + "src": "2470:148:39", + "text": " @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation." + }, + "id": 5926, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toHexString", + "nameLocation": "2632:11:39", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5910, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5909, + "mutability": "mutable", + "name": "addr", + "nameLocation": "2652:4:39", + "nodeType": "VariableDeclaration", + "scope": 5926, + "src": "2644:12:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5908, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2644:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2643:14:39" + }, + "returnParameters": { + "id": 5913, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5912, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5926, + "src": "2681:13:39", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5911, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2681:6:39", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "2680:15:39" + }, + "scope": 6029, + "src": "2623:148:39", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 5990, + "nodeType": "Block", + "src": "3028:642:39", + "statements": [ + { + "assignments": [ + 5935 + ], + "declarations": [ + { + "constant": false, + "id": 5935, + "mutability": "mutable", + "name": "buffer", + "nameLocation": "3051:6:39", + "nodeType": "VariableDeclaration", + "scope": 5990, + "src": "3038:19:39", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5934, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3038:5:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 5942, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 5939, + "name": "addr", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5929, + "src": "3078:4:39", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5938, + "name": "toHexString", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 5823, + 5906, + 5926 + ], + "referencedDeclaration": 5926, + "src": "3066:11:39", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_string_memory_ptr_$", + "typeString": "function (address) pure returns (string memory)" + } + }, + "id": 5940, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3066:17:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 5937, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3060:5:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5936, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3060:5:39", + "typeDescriptions": {} + } + }, + "id": 5941, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3060:24:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3038:46:39" + }, + { + "assignments": [ + 5944 + ], + "declarations": [ + { + "constant": false, + "id": 5944, + "mutability": "mutable", + "name": "hashValue", + "nameLocation": "3177:9:39", + "nodeType": "VariableDeclaration", + "scope": 5990, + "src": "3169:17:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5943, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3169:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 5945, + "nodeType": "VariableDeclarationStatement", + "src": "3169:17:39" + }, + { + "AST": { + "nativeSrc": "3221:78:39", + "nodeType": "YulBlock", + "src": "3221:78:39", + "statements": [ + { + "nativeSrc": "3235:54:39", + "nodeType": "YulAssignment", + "src": "3235:54:39", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3252:2:39", + "nodeType": "YulLiteral", + "src": "3252:2:39", + "type": "", + "value": "96" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "buffer", + "nativeSrc": "3270:6:39", + "nodeType": "YulIdentifier", + "src": "3270:6:39" + }, + { + "kind": "number", + "nativeSrc": "3278:4:39", + "nodeType": "YulLiteral", + "src": "3278:4:39", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3266:3:39", + "nodeType": "YulIdentifier", + "src": "3266:3:39" + }, + "nativeSrc": "3266:17:39", + "nodeType": "YulFunctionCall", + "src": "3266:17:39" + }, + { + "kind": "number", + "nativeSrc": "3285:2:39", + "nodeType": "YulLiteral", + "src": "3285:2:39", + "type": "", + "value": "40" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "3256:9:39", + "nodeType": "YulIdentifier", + "src": "3256:9:39" + }, + "nativeSrc": "3256:32:39", + "nodeType": "YulFunctionCall", + "src": "3256:32:39" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "3248:3:39", + "nodeType": "YulIdentifier", + "src": "3248:3:39" + }, + "nativeSrc": "3248:41:39", + "nodeType": "YulFunctionCall", + "src": "3248:41:39" + }, + "variableNames": [ + { + "name": "hashValue", + "nativeSrc": "3235:9:39", + "nodeType": "YulIdentifier", + "src": "3235:9:39" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 5935, + "isOffset": false, + "isSlot": false, + "src": "3270:6:39", + "valueSize": 1 + }, + { + "declaration": 5944, + "isOffset": false, + "isSlot": false, + "src": "3235:9:39", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 5946, + "nodeType": "InlineAssembly", + "src": "3196:103:39" + }, + { + "body": { + "id": 5983, + "nodeType": "Block", + "src": "3342:291:39", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 5970, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5961, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5959, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5957, + "name": "hashValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5944, + "src": "3448:9:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "hexValue": "307866", + "id": 5958, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3460:3:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_15_by_1", + "typeString": "int_const 15" + }, + "value": "0xf" + }, + "src": "3448:15:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "37", + "id": 5960, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3466:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_7_by_1", + "typeString": "int_const 7" + }, + "value": "7" + }, + "src": "3448:19:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 5969, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "baseExpression": { + "id": 5964, + "name": "buffer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5935, + "src": "3477:6:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 5966, + "indexExpression": { + "id": 5965, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5948, + "src": "3484:1:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3477:9:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + ], + "id": 5963, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3471:5:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": { + "id": 5962, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "3471:5:39", + "typeDescriptions": {} + } + }, + "id": 5967, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3471:16:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "3936", + "id": 5968, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3490:2:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_96_by_1", + "typeString": "int_const 96" + }, + "value": "96" + }, + "src": "3471:21:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3448:44:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5978, + "nodeType": "IfStatement", + "src": "3444:150:39", + "trueBody": { + "id": 5977, + "nodeType": "Block", + "src": "3494:100:39", + "statements": [ + { + "expression": { + "id": 5975, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 5971, + "name": "buffer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5935, + "src": "3562:6:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 5973, + "indexExpression": { + "id": 5972, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5948, + "src": "3569:1:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3562:9:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "Assignment", + "operator": "^=", + "rightHandSide": { + "hexValue": "30783230", + "id": 5974, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3575:4:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "0x20" + }, + "src": "3562:17:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "id": 5976, + "nodeType": "ExpressionStatement", + "src": "3562:17:39" + } + ] + } + }, + { + "expression": { + "id": 5981, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 5979, + "name": "hashValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5944, + "src": "3607:9:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "hexValue": "34", + "id": 5980, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3621:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "src": "3607:15:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5982, + "nodeType": "ExpressionStatement", + "src": "3607:15:39" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5953, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 5951, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5948, + "src": "3330:1:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "31", + "id": 5952, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3334:1:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3330:5:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5984, + "initializationExpression": { + "assignments": [ + 5948 + ], + "declarations": [ + { + "constant": false, + "id": 5948, + "mutability": "mutable", + "name": "i", + "nameLocation": "3322:1:39", + "nodeType": "VariableDeclaration", + "scope": 5984, + "src": "3314:9:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5947, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3314:7:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 5950, + "initialValue": { + "hexValue": "3431", + "id": 5949, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3326:2:39", + "typeDescriptions": { + "typeIdentifier": "t_rational_41_by_1", + "typeString": "int_const 41" + }, + "value": "41" + }, + "nodeType": "VariableDeclarationStatement", + "src": "3314:14:39" + }, + "isSimpleCounterLoop": false, + "loopExpression": { + "expression": { + "id": 5955, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": true, + "src": "3337:3:39", + "subExpression": { + "id": 5954, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5948, + "src": "3339:1:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5956, + "nodeType": "ExpressionStatement", + "src": "3337:3:39" + }, + "nodeType": "ForStatement", + "src": "3309:324:39" + }, + { + "expression": { + "arguments": [ + { + "id": 5987, + "name": "buffer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5935, + "src": "3656:6:39", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5986, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3649:6:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 5985, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3649:6:39", + "typeDescriptions": {} + } + }, + "id": 5988, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3649:14:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 5933, + "id": 5989, + "nodeType": "Return", + "src": "3642:21:39" + } + ] + }, + "documentation": { + "id": 5927, + "nodeType": "StructuredDocumentation", + "src": "2777:165:39", + "text": " @dev Converts an `address` with fixed length of 20 bytes to its checksummed ASCII `string` hexadecimal\n representation, according to EIP-55." + }, + "id": 5991, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toChecksumHexString", + "nameLocation": "2956:19:39", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5930, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5929, + "mutability": "mutable", + "name": "addr", + "nameLocation": "2984:4:39", + "nodeType": "VariableDeclaration", + "scope": 5991, + "src": "2976:12:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5928, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2976:7:39", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2975:14:39" + }, + "returnParameters": { + "id": 5933, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5932, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 5991, + "src": "3013:13:39", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5931, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3013:6:39", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "3012:15:39" + }, + "scope": 6029, + "src": "2947:723:39", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6027, + "nodeType": "Block", + "src": "3825:104:39", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 6025, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6011, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "arguments": [ + { + "id": 6003, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5994, + "src": "3848:1:39", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 6002, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3842:5:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 6001, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3842:5:39", + "typeDescriptions": {} + } + }, + "id": 6004, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3842:8:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 6005, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3851:6:39", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "3842:15:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 6008, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5996, + "src": "3867:1:39", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 6007, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3861:5:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 6006, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3861:5:39", + "typeDescriptions": {} + } + }, + "id": 6009, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3861:8:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 6010, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3870:6:39", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "3861:15:39", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3842:34:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 6024, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 6015, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5994, + "src": "3896:1:39", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 6014, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3890:5:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 6013, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3890:5:39", + "typeDescriptions": {} + } + }, + "id": 6016, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3890:8:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 6012, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3880:9:39", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 6017, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3880:19:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 6021, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5996, + "src": "3919:1:39", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 6020, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3913:5:39", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 6019, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3913:5:39", + "typeDescriptions": {} + } + }, + "id": 6022, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3913:8:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 6018, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3903:9:39", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 6023, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3903:19:39", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3880:42:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3842:80:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 6000, + "id": 6026, + "nodeType": "Return", + "src": "3835:87:39" + } + ] + }, + "documentation": { + "id": 5992, + "nodeType": "StructuredDocumentation", + "src": "3676:66:39", + "text": " @dev Returns true if the two strings are equal." + }, + "id": 6028, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "equal", + "nameLocation": "3756:5:39", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5997, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5994, + "mutability": "mutable", + "name": "a", + "nameLocation": "3776:1:39", + "nodeType": "VariableDeclaration", + "scope": 6028, + "src": "3762:15:39", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5993, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3762:6:39", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5996, + "mutability": "mutable", + "name": "b", + "nameLocation": "3793:1:39", + "nodeType": "VariableDeclaration", + "scope": 6028, + "src": "3779:15:39", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5995, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3779:6:39", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "3761:34:39" + }, + "returnParameters": { + "id": 6000, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5999, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6028, + "src": "3819:4:39", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5998, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3819:4:39", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3818:6:39" + }, + "scope": 6029, + "src": "3747:182:39", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 6030, + "src": "251:3680:39", + "usedErrors": [ + 5729 + ], + "usedEvents": [] + } + ], + "src": "101:3831:39" + }, + "id": 39 + }, + "@openzeppelin/contracts/utils/cryptography/ECDSA.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol", + "exportedSymbols": { + "ECDSA": [ + 6377 + ] + }, + "id": 6378, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6031, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "112:24:40" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "ECDSA", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 6032, + "nodeType": "StructuredDocumentation", + "src": "138:205:40", + "text": " @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n These functions can be used to verify that a message was signed by the holder\n of the private keys of a given address." + }, + "fullyImplemented": true, + "id": 6377, + "linearizedBaseContracts": [ + 6377 + ], + "name": "ECDSA", + "nameLocation": "352:5:40", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "ECDSA.RecoverError", + "id": 6037, + "members": [ + { + "id": 6033, + "name": "NoError", + "nameLocation": "392:7:40", + "nodeType": "EnumValue", + "src": "392:7:40" + }, + { + "id": 6034, + "name": "InvalidSignature", + "nameLocation": "409:16:40", + "nodeType": "EnumValue", + "src": "409:16:40" + }, + { + "id": 6035, + "name": "InvalidSignatureLength", + "nameLocation": "435:22:40", + "nodeType": "EnumValue", + "src": "435:22:40" + }, + { + "id": 6036, + "name": "InvalidSignatureS", + "nameLocation": "467:17:40", + "nodeType": "EnumValue", + "src": "467:17:40" + } + ], + "name": "RecoverError", + "nameLocation": "369:12:40", + "nodeType": "EnumDefinition", + "src": "364:126:40" + }, + { + "documentation": { + "id": 6038, + "nodeType": "StructuredDocumentation", + "src": "496:63:40", + "text": " @dev The signature derives the `address(0)`." + }, + "errorSelector": "f645eedf", + "id": 6040, + "name": "ECDSAInvalidSignature", + "nameLocation": "570:21:40", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6039, + "nodeType": "ParameterList", + "parameters": [], + "src": "591:2:40" + }, + "src": "564:30:40" + }, + { + "documentation": { + "id": 6041, + "nodeType": "StructuredDocumentation", + "src": "600:60:40", + "text": " @dev The signature has an invalid length." + }, + "errorSelector": "fce698f7", + "id": 6045, + "name": "ECDSAInvalidSignatureLength", + "nameLocation": "671:27:40", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6044, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6043, + "mutability": "mutable", + "name": "length", + "nameLocation": "707:6:40", + "nodeType": "VariableDeclaration", + "scope": 6045, + "src": "699:14:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6042, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "699:7:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "698:16:40" + }, + "src": "665:50:40" + }, + { + "documentation": { + "id": 6046, + "nodeType": "StructuredDocumentation", + "src": "721:85:40", + "text": " @dev The signature has an S value that is in the upper half order." + }, + "errorSelector": "d78bce0c", + "id": 6050, + "name": "ECDSAInvalidSignatureS", + "nameLocation": "817:22:40", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 6049, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6048, + "mutability": "mutable", + "name": "s", + "nameLocation": "848:1:40", + "nodeType": "VariableDeclaration", + "scope": 6050, + "src": "840:9:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6047, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "840:7:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "839:11:40" + }, + "src": "811:40:40" + }, + { + "body": { + "id": 6102, + "nodeType": "Block", + "src": "2285:622:40", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6068, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 6065, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6055, + "src": "2299:9:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 6066, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2309:6:40", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2299:16:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "3635", + "id": 6067, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2319:2:40", + "typeDescriptions": { + "typeIdentifier": "t_rational_65_by_1", + "typeString": "int_const 65" + }, + "value": "65" + }, + "src": "2299:22:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 6100, + "nodeType": "Block", + "src": "2793:108:40", + "statements": [ + { + "expression": { + "components": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 6089, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2823:1:40", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 6088, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2815:7:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 6087, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2815:7:40", + "typeDescriptions": {} + } + }, + "id": 6090, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2815:10:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 6091, + "name": "RecoverError", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6037, + "src": "2827:12:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_RecoverError_$6037_$", + "typeString": "type(enum ECDSA.RecoverError)" + } + }, + "id": 6092, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2840:22:40", + "memberName": "InvalidSignatureLength", + "nodeType": "MemberAccess", + "referencedDeclaration": 6035, + "src": "2827:35:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$6037", + "typeString": "enum ECDSA.RecoverError" + } + }, + { + "arguments": [ + { + "expression": { + "id": 6095, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6055, + "src": "2872:9:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 6096, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2882:6:40", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2872:16:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6094, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2864:7:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 6093, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2864:7:40", + "typeDescriptions": {} + } + }, + "id": 6097, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2864:25:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 6098, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2814:76:40", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$6037_$_t_bytes32_$", + "typeString": "tuple(address,enum ECDSA.RecoverError,bytes32)" + } + }, + "functionReturnParameters": 6064, + "id": 6099, + "nodeType": "Return", + "src": "2807:83:40" + } + ] + }, + "id": 6101, + "nodeType": "IfStatement", + "src": "2295:606:40", + "trueBody": { + "id": 6086, + "nodeType": "Block", + "src": "2323:464:40", + "statements": [ + { + "assignments": [ + 6070 + ], + "declarations": [ + { + "constant": false, + "id": 6070, + "mutability": "mutable", + "name": "r", + "nameLocation": "2345:1:40", + "nodeType": "VariableDeclaration", + "scope": 6086, + "src": "2337:9:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6069, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2337:7:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 6071, + "nodeType": "VariableDeclarationStatement", + "src": "2337:9:40" + }, + { + "assignments": [ + 6073 + ], + "declarations": [ + { + "constant": false, + "id": 6073, + "mutability": "mutable", + "name": "s", + "nameLocation": "2368:1:40", + "nodeType": "VariableDeclaration", + "scope": 6086, + "src": "2360:9:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6072, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2360:7:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 6074, + "nodeType": "VariableDeclarationStatement", + "src": "2360:9:40" + }, + { + "assignments": [ + 6076 + ], + "declarations": [ + { + "constant": false, + "id": 6076, + "mutability": "mutable", + "name": "v", + "nameLocation": "2389:1:40", + "nodeType": "VariableDeclaration", + "scope": 6086, + "src": "2383:7:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 6075, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "2383:5:40", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "id": 6077, + "nodeType": "VariableDeclarationStatement", + "src": "2383:7:40" + }, + { + "AST": { + "nativeSrc": "2560:171:40", + "nodeType": "YulBlock", + "src": "2560:171:40", + "statements": [ + { + "nativeSrc": "2578:32:40", + "nodeType": "YulAssignment", + "src": "2578:32:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "2593:9:40", + "nodeType": "YulIdentifier", + "src": "2593:9:40" + }, + { + "kind": "number", + "nativeSrc": "2604:4:40", + "nodeType": "YulLiteral", + "src": "2604:4:40", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2589:3:40", + "nodeType": "YulIdentifier", + "src": "2589:3:40" + }, + "nativeSrc": "2589:20:40", + "nodeType": "YulFunctionCall", + "src": "2589:20:40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2583:5:40", + "nodeType": "YulIdentifier", + "src": "2583:5:40" + }, + "nativeSrc": "2583:27:40", + "nodeType": "YulFunctionCall", + "src": "2583:27:40" + }, + "variableNames": [ + { + "name": "r", + "nativeSrc": "2578:1:40", + "nodeType": "YulIdentifier", + "src": "2578:1:40" + } + ] + }, + { + "nativeSrc": "2627:32:40", + "nodeType": "YulAssignment", + "src": "2627:32:40", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "2642:9:40", + "nodeType": "YulIdentifier", + "src": "2642:9:40" + }, + { + "kind": "number", + "nativeSrc": "2653:4:40", + "nodeType": "YulLiteral", + "src": "2653:4:40", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2638:3:40", + "nodeType": "YulIdentifier", + "src": "2638:3:40" + }, + "nativeSrc": "2638:20:40", + "nodeType": "YulFunctionCall", + "src": "2638:20:40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2632:5:40", + "nodeType": "YulIdentifier", + "src": "2632:5:40" + }, + "nativeSrc": "2632:27:40", + "nodeType": "YulFunctionCall", + "src": "2632:27:40" + }, + "variableNames": [ + { + "name": "s", + "nativeSrc": "2627:1:40", + "nodeType": "YulIdentifier", + "src": "2627:1:40" + } + ] + }, + { + "nativeSrc": "2676:41:40", + "nodeType": "YulAssignment", + "src": "2676:41:40", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2686:1:40", + "nodeType": "YulLiteral", + "src": "2686:1:40", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "signature", + "nativeSrc": "2699:9:40", + "nodeType": "YulIdentifier", + "src": "2699:9:40" + }, + { + "kind": "number", + "nativeSrc": "2710:4:40", + "nodeType": "YulLiteral", + "src": "2710:4:40", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2695:3:40", + "nodeType": "YulIdentifier", + "src": "2695:3:40" + }, + "nativeSrc": "2695:20:40", + "nodeType": "YulFunctionCall", + "src": "2695:20:40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2689:5:40", + "nodeType": "YulIdentifier", + "src": "2689:5:40" + }, + "nativeSrc": "2689:27:40", + "nodeType": "YulFunctionCall", + "src": "2689:27:40" + } + ], + "functionName": { + "name": "byte", + "nativeSrc": "2681:4:40", + "nodeType": "YulIdentifier", + "src": "2681:4:40" + }, + "nativeSrc": "2681:36:40", + "nodeType": "YulFunctionCall", + "src": "2681:36:40" + }, + "variableNames": [ + { + "name": "v", + "nativeSrc": "2676:1:40", + "nodeType": "YulIdentifier", + "src": "2676:1:40" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6070, + "isOffset": false, + "isSlot": false, + "src": "2578:1:40", + "valueSize": 1 + }, + { + "declaration": 6073, + "isOffset": false, + "isSlot": false, + "src": "2627:1:40", + "valueSize": 1 + }, + { + "declaration": 6055, + "isOffset": false, + "isSlot": false, + "src": "2593:9:40", + "valueSize": 1 + }, + { + "declaration": 6055, + "isOffset": false, + "isSlot": false, + "src": "2642:9:40", + "valueSize": 1 + }, + { + "declaration": 6055, + "isOffset": false, + "isSlot": false, + "src": "2699:9:40", + "valueSize": 1 + }, + { + "declaration": 6076, + "isOffset": false, + "isSlot": false, + "src": "2676:1:40", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 6078, + "nodeType": "InlineAssembly", + "src": "2535:196:40" + }, + { + "expression": { + "arguments": [ + { + "id": 6080, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6053, + "src": "2762:4:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 6081, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6076, + "src": "2768:1:40", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "id": 6082, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6070, + "src": "2771:1:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 6083, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6073, + "src": "2774:1:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 6079, + "name": "tryRecover", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6103, + 6183, + 6291 + ], + "referencedDeclaration": 6291, + "src": "2751:10:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$6037_$_t_bytes32_$", + "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError,bytes32)" + } + }, + "id": 6084, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2751:25:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$6037_$_t_bytes32_$", + "typeString": "tuple(address,enum ECDSA.RecoverError,bytes32)" + } + }, + "functionReturnParameters": 6064, + "id": 6085, + "nodeType": "Return", + "src": "2744:32:40" + } + ] + } + } + ] + }, + "documentation": { + "id": 6051, + "nodeType": "StructuredDocumentation", + "src": "857:1267:40", + "text": " @dev Returns the address that signed a hashed message (`hash`) with `signature` or an error. This will not\n return address(0) without also returning an error description. Errors are documented using an enum (error type)\n and a bytes32 providing additional information about the error.\n If no error is returned, then the address can be used for verification purposes.\n The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\n this function rejects them by requiring the `s` value to be in the lower\n half order, and the `v` value to be either 27 or 28.\n IMPORTANT: `hash` _must_ be the result of a hash operation for the\n verification to be secure: it is possible to craft signatures that\n recover to arbitrary addresses for non-hashed data. A safe way to ensure\n this is by receiving a hash of the original message (which may otherwise\n be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\n Documentation for signature generation:\n - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]" + }, + "id": 6103, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryRecover", + "nameLocation": "2138:10:40", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6056, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6053, + "mutability": "mutable", + "name": "hash", + "nameLocation": "2166:4:40", + "nodeType": "VariableDeclaration", + "scope": 6103, + "src": "2158:12:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6052, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2158:7:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6055, + "mutability": "mutable", + "name": "signature", + "nameLocation": "2193:9:40", + "nodeType": "VariableDeclaration", + "scope": 6103, + "src": "2180:22:40", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6054, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2180:5:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "2148:60:40" + }, + "returnParameters": { + "id": 6064, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6058, + "mutability": "mutable", + "name": "recovered", + "nameLocation": "2240:9:40", + "nodeType": "VariableDeclaration", + "scope": 6103, + "src": "2232:17:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6057, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2232:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6061, + "mutability": "mutable", + "name": "err", + "nameLocation": "2264:3:40", + "nodeType": "VariableDeclaration", + "scope": 6103, + "src": "2251:16:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$6037", + "typeString": "enum ECDSA.RecoverError" + }, + "typeName": { + "id": 6060, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6059, + "name": "RecoverError", + "nameLocations": [ + "2251:12:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6037, + "src": "2251:12:40" + }, + "referencedDeclaration": 6037, + "src": "2251:12:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$6037", + "typeString": "enum ECDSA.RecoverError" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6063, + "mutability": "mutable", + "name": "errArg", + "nameLocation": "2277:6:40", + "nodeType": "VariableDeclaration", + "scope": 6103, + "src": "2269:14:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6062, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2269:7:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2231:53:40" + }, + "scope": 6377, + "src": "2129:778:40", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6132, + "nodeType": "Block", + "src": "3801:168:40", + "statements": [ + { + "assignments": [ + 6114, + 6117, + 6119 + ], + "declarations": [ + { + "constant": false, + "id": 6114, + "mutability": "mutable", + "name": "recovered", + "nameLocation": "3820:9:40", + "nodeType": "VariableDeclaration", + "scope": 6132, + "src": "3812:17:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6113, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3812:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6117, + "mutability": "mutable", + "name": "error", + "nameLocation": "3844:5:40", + "nodeType": "VariableDeclaration", + "scope": 6132, + "src": "3831:18:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$6037", + "typeString": "enum ECDSA.RecoverError" + }, + "typeName": { + "id": 6116, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6115, + "name": "RecoverError", + "nameLocations": [ + "3831:12:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6037, + "src": "3831:12:40" + }, + "referencedDeclaration": 6037, + "src": "3831:12:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$6037", + "typeString": "enum ECDSA.RecoverError" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6119, + "mutability": "mutable", + "name": "errorArg", + "nameLocation": "3859:8:40", + "nodeType": "VariableDeclaration", + "scope": 6132, + "src": "3851:16:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6118, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3851:7:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 6124, + "initialValue": { + "arguments": [ + { + "id": 6121, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6106, + "src": "3882:4:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 6122, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6108, + "src": "3888:9:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 6120, + "name": "tryRecover", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6103, + 6183, + 6291 + ], + "referencedDeclaration": 6103, + "src": "3871:10:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$_t_enum$_RecoverError_$6037_$_t_bytes32_$", + "typeString": "function (bytes32,bytes memory) pure returns (address,enum ECDSA.RecoverError,bytes32)" + } + }, + "id": 6123, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3871:27:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$6037_$_t_bytes32_$", + "typeString": "tuple(address,enum ECDSA.RecoverError,bytes32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3811:87:40" + }, + { + "expression": { + "arguments": [ + { + "id": 6126, + "name": "error", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6117, + "src": "3920:5:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$6037", + "typeString": "enum ECDSA.RecoverError" + } + }, + { + "id": 6127, + "name": "errorArg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6119, + "src": "3927:8:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_enum$_RecoverError_$6037", + "typeString": "enum ECDSA.RecoverError" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 6125, + "name": "_throwError", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6376, + "src": "3908:11:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_enum$_RecoverError_$6037_$_t_bytes32_$returns$__$", + "typeString": "function (enum ECDSA.RecoverError,bytes32) pure" + } + }, + "id": 6128, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3908:28:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6129, + "nodeType": "ExpressionStatement", + "src": "3908:28:40" + }, + { + "expression": { + "id": 6130, + "name": "recovered", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6114, + "src": "3953:9:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 6112, + "id": 6131, + "nodeType": "Return", + "src": "3946:16:40" + } + ] + }, + "documentation": { + "id": 6104, + "nodeType": "StructuredDocumentation", + "src": "2913:796:40", + "text": " @dev Returns the address that signed a hashed message (`hash`) with\n `signature`. This address can then be used for verification purposes.\n The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\n this function rejects them by requiring the `s` value to be in the lower\n half order, and the `v` value to be either 27 or 28.\n IMPORTANT: `hash` _must_ be the result of a hash operation for the\n verification to be secure: it is possible to craft signatures that\n recover to arbitrary addresses for non-hashed data. A safe way to ensure\n this is by receiving a hash of the original message (which may otherwise\n be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it." + }, + "id": 6133, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "recover", + "nameLocation": "3723:7:40", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6109, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6106, + "mutability": "mutable", + "name": "hash", + "nameLocation": "3739:4:40", + "nodeType": "VariableDeclaration", + "scope": 6133, + "src": "3731:12:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6105, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3731:7:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6108, + "mutability": "mutable", + "name": "signature", + "nameLocation": "3758:9:40", + "nodeType": "VariableDeclaration", + "scope": 6133, + "src": "3745:22:40", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 6107, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3745:5:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "3730:38:40" + }, + "returnParameters": { + "id": 6112, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6111, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6133, + "src": "3792:7:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6110, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3792:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3791:9:40" + }, + "scope": 6377, + "src": "3714:255:40", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6182, + "nodeType": "Block", + "src": "4348:342:40", + "statements": [ + { + "id": 6181, + "nodeType": "UncheckedBlock", + "src": "4358:326:40", + "statements": [ + { + "assignments": [ + 6151 + ], + "declarations": [ + { + "constant": false, + "id": 6151, + "mutability": "mutable", + "name": "s", + "nameLocation": "4390:1:40", + "nodeType": "VariableDeclaration", + "scope": 6181, + "src": "4382:9:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6150, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4382:7:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 6158, + "initialValue": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 6157, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6152, + "name": "vs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6140, + "src": "4394:2:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "arguments": [ + { + "hexValue": "307837666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666", + "id": 6155, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4407:66:40", + "typeDescriptions": { + "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1", + "typeString": "int_const 5789...(69 digits omitted)...9967" + }, + "value": "0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1", + "typeString": "int_const 5789...(69 digits omitted)...9967" + } + ], + "id": 6154, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4399:7:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 6153, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4399:7:40", + "typeDescriptions": {} + } + }, + "id": 6156, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4399:75:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "4394:80:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4382:92:40" + }, + { + "assignments": [ + 6160 + ], + "declarations": [ + { + "constant": false, + "id": 6160, + "mutability": "mutable", + "name": "v", + "nameLocation": "4591:1:40", + "nodeType": "VariableDeclaration", + "scope": 6181, + "src": "4585:7:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 6159, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "4585:5:40", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "id": 6173, + "initialValue": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6171, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6168, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 6165, + "name": "vs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6140, + "src": "4610:2:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 6164, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4602:7:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 6163, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4602:7:40", + "typeDescriptions": {} + } + }, + "id": 6166, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4602:11:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "323535", + "id": 6167, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4617:3:40", + "typeDescriptions": { + "typeIdentifier": "t_rational_255_by_1", + "typeString": "int_const 255" + }, + "value": "255" + }, + "src": "4602:18:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 6169, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4601:20:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "3237", + "id": 6170, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4624:2:40", + "typeDescriptions": { + "typeIdentifier": "t_rational_27_by_1", + "typeString": "int_const 27" + }, + "value": "27" + }, + "src": "4601:25:40", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6162, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4595:5:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": { + "id": 6161, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "4595:5:40", + "typeDescriptions": {} + } + }, + "id": 6172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4595:32:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4585:42:40" + }, + { + "expression": { + "arguments": [ + { + "id": 6175, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6136, + "src": "4659:4:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 6176, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6160, + "src": "4665:1:40", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "id": 6177, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6138, + "src": "4668:1:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 6178, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6151, + "src": "4671:1:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 6174, + "name": "tryRecover", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6103, + 6183, + 6291 + ], + "referencedDeclaration": 6291, + "src": "4648:10:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$6037_$_t_bytes32_$", + "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError,bytes32)" + } + }, + "id": 6179, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4648:25:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$6037_$_t_bytes32_$", + "typeString": "tuple(address,enum ECDSA.RecoverError,bytes32)" + } + }, + "functionReturnParameters": 6149, + "id": 6180, + "nodeType": "Return", + "src": "4641:32:40" + } + ] + } + ] + }, + "documentation": { + "id": 6134, + "nodeType": "StructuredDocumentation", + "src": "3975:205:40", + "text": " @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\n See https://eips.ethereum.org/EIPS/eip-2098[ERC-2098 short signatures]" + }, + "id": 6183, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryRecover", + "nameLocation": "4194:10:40", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6141, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6136, + "mutability": "mutable", + "name": "hash", + "nameLocation": "4222:4:40", + "nodeType": "VariableDeclaration", + "scope": 6183, + "src": "4214:12:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6135, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4214:7:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6138, + "mutability": "mutable", + "name": "r", + "nameLocation": "4244:1:40", + "nodeType": "VariableDeclaration", + "scope": 6183, + "src": "4236:9:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6137, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4236:7:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6140, + "mutability": "mutable", + "name": "vs", + "nameLocation": "4263:2:40", + "nodeType": "VariableDeclaration", + "scope": 6183, + "src": "4255:10:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6139, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4255:7:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4204:67:40" + }, + "returnParameters": { + "id": 6149, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6143, + "mutability": "mutable", + "name": "recovered", + "nameLocation": "4303:9:40", + "nodeType": "VariableDeclaration", + "scope": 6183, + "src": "4295:17:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6142, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4295:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6146, + "mutability": "mutable", + "name": "err", + "nameLocation": "4327:3:40", + "nodeType": "VariableDeclaration", + "scope": 6183, + "src": "4314:16:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$6037", + "typeString": "enum ECDSA.RecoverError" + }, + "typeName": { + "id": 6145, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6144, + "name": "RecoverError", + "nameLocations": [ + "4314:12:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6037, + "src": "4314:12:40" + }, + "referencedDeclaration": 6037, + "src": "4314:12:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$6037", + "typeString": "enum ECDSA.RecoverError" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6148, + "mutability": "mutable", + "name": "errArg", + "nameLocation": "4340:6:40", + "nodeType": "VariableDeclaration", + "scope": 6183, + "src": "4332:14:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6147, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4332:7:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4294:53:40" + }, + "scope": 6377, + "src": "4185:505:40", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6215, + "nodeType": "Block", + "src": "4903:164:40", + "statements": [ + { + "assignments": [ + 6196, + 6199, + 6201 + ], + "declarations": [ + { + "constant": false, + "id": 6196, + "mutability": "mutable", + "name": "recovered", + "nameLocation": "4922:9:40", + "nodeType": "VariableDeclaration", + "scope": 6215, + "src": "4914:17:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6195, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4914:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6199, + "mutability": "mutable", + "name": "error", + "nameLocation": "4946:5:40", + "nodeType": "VariableDeclaration", + "scope": 6215, + "src": "4933:18:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$6037", + "typeString": "enum ECDSA.RecoverError" + }, + "typeName": { + "id": 6198, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6197, + "name": "RecoverError", + "nameLocations": [ + "4933:12:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6037, + "src": "4933:12:40" + }, + "referencedDeclaration": 6037, + "src": "4933:12:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$6037", + "typeString": "enum ECDSA.RecoverError" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6201, + "mutability": "mutable", + "name": "errorArg", + "nameLocation": "4961:8:40", + "nodeType": "VariableDeclaration", + "scope": 6215, + "src": "4953:16:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6200, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4953:7:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 6207, + "initialValue": { + "arguments": [ + { + "id": 6203, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6186, + "src": "4984:4:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 6204, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6188, + "src": "4990:1:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 6205, + "name": "vs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6190, + "src": "4993:2:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 6202, + "name": "tryRecover", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6103, + 6183, + 6291 + ], + "referencedDeclaration": 6183, + "src": "4973:10:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$6037_$_t_bytes32_$", + "typeString": "function (bytes32,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError,bytes32)" + } + }, + "id": 6206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4973:23:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$6037_$_t_bytes32_$", + "typeString": "tuple(address,enum ECDSA.RecoverError,bytes32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4913:83:40" + }, + { + "expression": { + "arguments": [ + { + "id": 6209, + "name": "error", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6199, + "src": "5018:5:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$6037", + "typeString": "enum ECDSA.RecoverError" + } + }, + { + "id": 6210, + "name": "errorArg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6201, + "src": "5025:8:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_enum$_RecoverError_$6037", + "typeString": "enum ECDSA.RecoverError" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 6208, + "name": "_throwError", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6376, + "src": "5006:11:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_enum$_RecoverError_$6037_$_t_bytes32_$returns$__$", + "typeString": "function (enum ECDSA.RecoverError,bytes32) pure" + } + }, + "id": 6211, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5006:28:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6212, + "nodeType": "ExpressionStatement", + "src": "5006:28:40" + }, + { + "expression": { + "id": 6213, + "name": "recovered", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6196, + "src": "5051:9:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 6194, + "id": 6214, + "nodeType": "Return", + "src": "5044:16:40" + } + ] + }, + "documentation": { + "id": 6184, + "nodeType": "StructuredDocumentation", + "src": "4696:116:40", + "text": " @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately." + }, + "id": 6216, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "recover", + "nameLocation": "4826:7:40", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6191, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6186, + "mutability": "mutable", + "name": "hash", + "nameLocation": "4842:4:40", + "nodeType": "VariableDeclaration", + "scope": 6216, + "src": "4834:12:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6185, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4834:7:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6188, + "mutability": "mutable", + "name": "r", + "nameLocation": "4856:1:40", + "nodeType": "VariableDeclaration", + "scope": 6216, + "src": "4848:9:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6187, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4848:7:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6190, + "mutability": "mutable", + "name": "vs", + "nameLocation": "4867:2:40", + "nodeType": "VariableDeclaration", + "scope": 6216, + "src": "4859:10:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6189, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4859:7:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4833:37:40" + }, + "returnParameters": { + "id": 6194, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6193, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6216, + "src": "4894:7:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6192, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4894:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4893:9:40" + }, + "scope": 6377, + "src": "4817:250:40", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6290, + "nodeType": "Block", + "src": "5382:1372:40", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 6237, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6225, + "src": "6278:1:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 6236, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6270:7:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 6235, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6270:7:40", + "typeDescriptions": {} + } + }, + "id": 6238, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6270:10:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "307837464646464646464646464646464646464646464646464646464646464646463544353736453733353741343530314444464539324634363638314232304130", + "id": 6239, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6283:66:40", + "typeDescriptions": { + "typeIdentifier": "t_rational_57896044618658097711785492504343953926418782139537452191302581570759080747168_by_1", + "typeString": "int_const 5789...(69 digits omitted)...7168" + }, + "value": "0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0" + }, + "src": "6270:79:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6251, + "nodeType": "IfStatement", + "src": "6266:164:40", + "trueBody": { + "id": 6250, + "nodeType": "Block", + "src": "6351:79:40", + "statements": [ + { + "expression": { + "components": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 6243, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6381:1:40", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 6242, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6373:7:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 6241, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6373:7:40", + "typeDescriptions": {} + } + }, + "id": 6244, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6373:10:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 6245, + "name": "RecoverError", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6037, + "src": "6385:12:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_RecoverError_$6037_$", + "typeString": "type(enum ECDSA.RecoverError)" + } + }, + "id": 6246, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6398:17:40", + "memberName": "InvalidSignatureS", + "nodeType": "MemberAccess", + "referencedDeclaration": 6036, + "src": "6385:30:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$6037", + "typeString": "enum ECDSA.RecoverError" + } + }, + { + "id": 6247, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6225, + "src": "6417:1:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 6248, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "6372:47:40", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$6037_$_t_bytes32_$", + "typeString": "tuple(address,enum ECDSA.RecoverError,bytes32)" + } + }, + "functionReturnParameters": 6234, + "id": 6249, + "nodeType": "Return", + "src": "6365:54:40" + } + ] + } + }, + { + "assignments": [ + 6253 + ], + "declarations": [ + { + "constant": false, + "id": 6253, + "mutability": "mutable", + "name": "signer", + "nameLocation": "6532:6:40", + "nodeType": "VariableDeclaration", + "scope": 6290, + "src": "6524:14:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6252, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6524:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 6260, + "initialValue": { + "arguments": [ + { + "id": 6255, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6219, + "src": "6551:4:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 6256, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6221, + "src": "6557:1:40", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "id": 6257, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6223, + "src": "6560:1:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 6258, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6225, + "src": "6563:1:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 6254, + "name": "ecrecover", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -6, + "src": "6541:9:40", + "typeDescriptions": { + "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" + } + }, + "id": 6259, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6541:24:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6524:41:40" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 6266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6261, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6253, + "src": "6579:6:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 6264, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6597:1:40", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 6263, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6589:7:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 6262, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6589:7:40", + "typeDescriptions": {} + } + }, + "id": 6265, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6589:10:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "6579:20:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6280, + "nodeType": "IfStatement", + "src": "6575:113:40", + "trueBody": { + "id": 6279, + "nodeType": "Block", + "src": "6601:87:40", + "statements": [ + { + "expression": { + "components": [ + { + "arguments": [ + { + "hexValue": "30", + "id": 6269, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6631:1:40", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 6268, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6623:7:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 6267, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6623:7:40", + "typeDescriptions": {} + } + }, + "id": 6270, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6623:10:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 6271, + "name": "RecoverError", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6037, + "src": "6635:12:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_RecoverError_$6037_$", + "typeString": "type(enum ECDSA.RecoverError)" + } + }, + "id": 6272, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6648:16:40", + "memberName": "InvalidSignature", + "nodeType": "MemberAccess", + "referencedDeclaration": 6034, + "src": "6635:29:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$6037", + "typeString": "enum ECDSA.RecoverError" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 6275, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6674:1:40", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 6274, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6666:7:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 6273, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6666:7:40", + "typeDescriptions": {} + } + }, + "id": 6276, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6666:10:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 6277, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "6622:55:40", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$6037_$_t_bytes32_$", + "typeString": "tuple(address,enum ECDSA.RecoverError,bytes32)" + } + }, + "functionReturnParameters": 6234, + "id": 6278, + "nodeType": "Return", + "src": "6615:62:40" + } + ] + } + }, + { + "expression": { + "components": [ + { + "id": 6281, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6253, + "src": "6706:6:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 6282, + "name": "RecoverError", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6037, + "src": "6714:12:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_RecoverError_$6037_$", + "typeString": "type(enum ECDSA.RecoverError)" + } + }, + "id": 6283, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6727:7:40", + "memberName": "NoError", + "nodeType": "MemberAccess", + "referencedDeclaration": 6033, + "src": "6714:20:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$6037", + "typeString": "enum ECDSA.RecoverError" + } + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 6286, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6744:1:40", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 6285, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6736:7:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 6284, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6736:7:40", + "typeDescriptions": {} + } + }, + "id": 6287, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6736:10:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 6288, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "6705:42:40", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$6037_$_t_bytes32_$", + "typeString": "tuple(address,enum ECDSA.RecoverError,bytes32)" + } + }, + "functionReturnParameters": 6234, + "id": 6289, + "nodeType": "Return", + "src": "6698:49:40" + } + ] + }, + "documentation": { + "id": 6217, + "nodeType": "StructuredDocumentation", + "src": "5073:125:40", + "text": " @dev Overload of {ECDSA-tryRecover} that receives the `v`,\n `r` and `s` signature fields separately." + }, + "id": 6291, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryRecover", + "nameLocation": "5212:10:40", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6226, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6219, + "mutability": "mutable", + "name": "hash", + "nameLocation": "5240:4:40", + "nodeType": "VariableDeclaration", + "scope": 6291, + "src": "5232:12:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6218, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5232:7:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6221, + "mutability": "mutable", + "name": "v", + "nameLocation": "5260:1:40", + "nodeType": "VariableDeclaration", + "scope": 6291, + "src": "5254:7:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 6220, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "5254:5:40", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6223, + "mutability": "mutable", + "name": "r", + "nameLocation": "5279:1:40", + "nodeType": "VariableDeclaration", + "scope": 6291, + "src": "5271:9:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6222, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5271:7:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6225, + "mutability": "mutable", + "name": "s", + "nameLocation": "5298:1:40", + "nodeType": "VariableDeclaration", + "scope": 6291, + "src": "5290:9:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6224, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5290:7:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5222:83:40" + }, + "returnParameters": { + "id": 6234, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6228, + "mutability": "mutable", + "name": "recovered", + "nameLocation": "5337:9:40", + "nodeType": "VariableDeclaration", + "scope": 6291, + "src": "5329:17:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6227, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5329:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6231, + "mutability": "mutable", + "name": "err", + "nameLocation": "5361:3:40", + "nodeType": "VariableDeclaration", + "scope": 6291, + "src": "5348:16:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$6037", + "typeString": "enum ECDSA.RecoverError" + }, + "typeName": { + "id": 6230, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6229, + "name": "RecoverError", + "nameLocations": [ + "5348:12:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6037, + "src": "5348:12:40" + }, + "referencedDeclaration": 6037, + "src": "5348:12:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$6037", + "typeString": "enum ECDSA.RecoverError" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6233, + "mutability": "mutable", + "name": "errArg", + "nameLocation": "5374:6:40", + "nodeType": "VariableDeclaration", + "scope": 6291, + "src": "5366:14:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6232, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5366:7:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5328:53:40" + }, + "scope": 6377, + "src": "5203:1551:40", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6326, + "nodeType": "Block", + "src": "6981:166:40", + "statements": [ + { + "assignments": [ + 6306, + 6309, + 6311 + ], + "declarations": [ + { + "constant": false, + "id": 6306, + "mutability": "mutable", + "name": "recovered", + "nameLocation": "7000:9:40", + "nodeType": "VariableDeclaration", + "scope": 6326, + "src": "6992:17:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6305, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6992:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6309, + "mutability": "mutable", + "name": "error", + "nameLocation": "7024:5:40", + "nodeType": "VariableDeclaration", + "scope": 6326, + "src": "7011:18:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$6037", + "typeString": "enum ECDSA.RecoverError" + }, + "typeName": { + "id": 6308, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6307, + "name": "RecoverError", + "nameLocations": [ + "7011:12:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6037, + "src": "7011:12:40" + }, + "referencedDeclaration": 6037, + "src": "7011:12:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$6037", + "typeString": "enum ECDSA.RecoverError" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6311, + "mutability": "mutable", + "name": "errorArg", + "nameLocation": "7039:8:40", + "nodeType": "VariableDeclaration", + "scope": 6326, + "src": "7031:16:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6310, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7031:7:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 6318, + "initialValue": { + "arguments": [ + { + "id": 6313, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6294, + "src": "7062:4:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 6314, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6296, + "src": "7068:1:40", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "id": 6315, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6298, + "src": "7071:1:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 6316, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6300, + "src": "7074:1:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 6312, + "name": "tryRecover", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6103, + 6183, + 6291 + ], + "referencedDeclaration": 6291, + "src": "7051:10:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$6037_$_t_bytes32_$", + "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError,bytes32)" + } + }, + "id": 6317, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7051:25:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_enum$_RecoverError_$6037_$_t_bytes32_$", + "typeString": "tuple(address,enum ECDSA.RecoverError,bytes32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6991:85:40" + }, + { + "expression": { + "arguments": [ + { + "id": 6320, + "name": "error", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6309, + "src": "7098:5:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$6037", + "typeString": "enum ECDSA.RecoverError" + } + }, + { + "id": 6321, + "name": "errorArg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6311, + "src": "7105:8:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_enum$_RecoverError_$6037", + "typeString": "enum ECDSA.RecoverError" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 6319, + "name": "_throwError", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6376, + "src": "7086:11:40", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_enum$_RecoverError_$6037_$_t_bytes32_$returns$__$", + "typeString": "function (enum ECDSA.RecoverError,bytes32) pure" + } + }, + "id": 6322, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7086:28:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6323, + "nodeType": "ExpressionStatement", + "src": "7086:28:40" + }, + { + "expression": { + "id": 6324, + "name": "recovered", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6306, + "src": "7131:9:40", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 6304, + "id": 6325, + "nodeType": "Return", + "src": "7124:16:40" + } + ] + }, + "documentation": { + "id": 6292, + "nodeType": "StructuredDocumentation", + "src": "6760:122:40", + "text": " @dev Overload of {ECDSA-recover} that receives the `v`,\n `r` and `s` signature fields separately." + }, + "id": 6327, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "recover", + "nameLocation": "6896:7:40", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6301, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6294, + "mutability": "mutable", + "name": "hash", + "nameLocation": "6912:4:40", + "nodeType": "VariableDeclaration", + "scope": 6327, + "src": "6904:12:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6293, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6904:7:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6296, + "mutability": "mutable", + "name": "v", + "nameLocation": "6924:1:40", + "nodeType": "VariableDeclaration", + "scope": 6327, + "src": "6918:7:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 6295, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "6918:5:40", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6298, + "mutability": "mutable", + "name": "r", + "nameLocation": "6935:1:40", + "nodeType": "VariableDeclaration", + "scope": 6327, + "src": "6927:9:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6297, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6927:7:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6300, + "mutability": "mutable", + "name": "s", + "nameLocation": "6946:1:40", + "nodeType": "VariableDeclaration", + "scope": 6327, + "src": "6938:9:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6299, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6938:7:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "6903:45:40" + }, + "returnParameters": { + "id": 6304, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6303, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6327, + "src": "6972:7:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6302, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6972:7:40", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6971:9:40" + }, + "scope": 6377, + "src": "6887:260:40", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6375, + "nodeType": "Block", + "src": "7352:460:40", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_enum$_RecoverError_$6037", + "typeString": "enum ECDSA.RecoverError" + }, + "id": 6339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6336, + "name": "error", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6331, + "src": "7366:5:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$6037", + "typeString": "enum ECDSA.RecoverError" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 6337, + "name": "RecoverError", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6037, + "src": "7375:12:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_RecoverError_$6037_$", + "typeString": "type(enum ECDSA.RecoverError)" + } + }, + "id": 6338, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "7388:7:40", + "memberName": "NoError", + "nodeType": "MemberAccess", + "referencedDeclaration": 6033, + "src": "7375:20:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$6037", + "typeString": "enum ECDSA.RecoverError" + } + }, + "src": "7366:29:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "commonType": { + "typeIdentifier": "t_enum$_RecoverError_$6037", + "typeString": "enum ECDSA.RecoverError" + }, + "id": 6345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6342, + "name": "error", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6331, + "src": "7462:5:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$6037", + "typeString": "enum ECDSA.RecoverError" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 6343, + "name": "RecoverError", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6037, + "src": "7471:12:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_RecoverError_$6037_$", + "typeString": "type(enum ECDSA.RecoverError)" + } + }, + "id": 6344, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "7484:16:40", + "memberName": "InvalidSignature", + "nodeType": "MemberAccess", + "referencedDeclaration": 6034, + "src": "7471:29:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$6037", + "typeString": "enum ECDSA.RecoverError" + } + }, + "src": "7462:38:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "commonType": { + "typeIdentifier": "t_enum$_RecoverError_$6037", + "typeString": "enum ECDSA.RecoverError" + }, + "id": 6353, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6350, + "name": "error", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6331, + "src": "7567:5:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$6037", + "typeString": "enum ECDSA.RecoverError" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 6351, + "name": "RecoverError", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6037, + "src": "7576:12:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_RecoverError_$6037_$", + "typeString": "type(enum ECDSA.RecoverError)" + } + }, + "id": 6352, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "7589:22:40", + "memberName": "InvalidSignatureLength", + "nodeType": "MemberAccess", + "referencedDeclaration": 6035, + "src": "7576:35:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$6037", + "typeString": "enum ECDSA.RecoverError" + } + }, + "src": "7567:44:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "commonType": { + "typeIdentifier": "t_enum$_RecoverError_$6037", + "typeString": "enum ECDSA.RecoverError" + }, + "id": 6365, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6362, + "name": "error", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6331, + "src": "7701:5:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$6037", + "typeString": "enum ECDSA.RecoverError" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 6363, + "name": "RecoverError", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6037, + "src": "7710:12:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_RecoverError_$6037_$", + "typeString": "type(enum ECDSA.RecoverError)" + } + }, + "id": 6364, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "7723:17:40", + "memberName": "InvalidSignatureS", + "nodeType": "MemberAccess", + "referencedDeclaration": 6036, + "src": "7710:30:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$6037", + "typeString": "enum ECDSA.RecoverError" + } + }, + "src": "7701:39:40", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6371, + "nodeType": "IfStatement", + "src": "7697:109:40", + "trueBody": { + "id": 6370, + "nodeType": "Block", + "src": "7742:64:40", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 6367, + "name": "errorArg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6333, + "src": "7786:8:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 6366, + "name": "ECDSAInvalidSignatureS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6050, + "src": "7763:22:40", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$", + "typeString": "function (bytes32) pure" + } + }, + "id": 6368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7763:32:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6369, + "nodeType": "RevertStatement", + "src": "7756:39:40" + } + ] + } + }, + "id": 6372, + "nodeType": "IfStatement", + "src": "7563:243:40", + "trueBody": { + "id": 6361, + "nodeType": "Block", + "src": "7613:78:40", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "arguments": [ + { + "id": 6357, + "name": "errorArg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6333, + "src": "7670:8:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 6356, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7662:7:40", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 6355, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7662:7:40", + "typeDescriptions": {} + } + }, + "id": 6358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7662:17:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6354, + "name": "ECDSAInvalidSignatureLength", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6045, + "src": "7634:27:40", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", + "typeString": "function (uint256) pure" + } + }, + "id": 6359, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7634:46:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6360, + "nodeType": "RevertStatement", + "src": "7627:53:40" + } + ] + } + }, + "id": 6373, + "nodeType": "IfStatement", + "src": "7458:348:40", + "trueBody": { + "id": 6349, + "nodeType": "Block", + "src": "7502:55:40", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 6346, + "name": "ECDSAInvalidSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6040, + "src": "7523:21:40", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 6347, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7523:23:40", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6348, + "nodeType": "RevertStatement", + "src": "7516:30:40" + } + ] + } + }, + "id": 6374, + "nodeType": "IfStatement", + "src": "7362:444:40", + "trueBody": { + "id": 6341, + "nodeType": "Block", + "src": "7397:55:40", + "statements": [ + { + "functionReturnParameters": 6335, + "id": 6340, + "nodeType": "Return", + "src": "7411:7:40" + } + ] + } + } + ] + }, + "documentation": { + "id": 6328, + "nodeType": "StructuredDocumentation", + "src": "7153:122:40", + "text": " @dev Optionally reverts with the corresponding custom error according to the `error` argument provided." + }, + "id": 6376, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_throwError", + "nameLocation": "7289:11:40", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6334, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6331, + "mutability": "mutable", + "name": "error", + "nameLocation": "7314:5:40", + "nodeType": "VariableDeclaration", + "scope": 6376, + "src": "7301:18:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$6037", + "typeString": "enum ECDSA.RecoverError" + }, + "typeName": { + "id": 6330, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6329, + "name": "RecoverError", + "nameLocations": [ + "7301:12:40" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6037, + "src": "7301:12:40" + }, + "referencedDeclaration": 6037, + "src": "7301:12:40", + "typeDescriptions": { + "typeIdentifier": "t_enum$_RecoverError_$6037", + "typeString": "enum ECDSA.RecoverError" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6333, + "mutability": "mutable", + "name": "errorArg", + "nameLocation": "7329:8:40", + "nodeType": "VariableDeclaration", + "scope": 6376, + "src": "7321:16:40", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 6332, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7321:7:40", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "7300:38:40" + }, + "returnParameters": { + "id": 6335, + "nodeType": "ParameterList", + "parameters": [], + "src": "7352:0:40" + }, + "scope": 6377, + "src": "7280:532:40", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + } + ], + "scope": 6378, + "src": "344:7470:40", + "usedErrors": [ + 6040, + 6045, + 6050 + ], + "usedEvents": [] + } + ], + "src": "112:7703:40" + }, + "id": 40 + }, + "@openzeppelin/contracts/utils/introspection/IERC165.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/utils/introspection/IERC165.sol", + "exportedSymbols": { + "IERC165": [ + 6389 + ] + }, + "id": 6390, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6379, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "115:24:41" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IERC165", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 6380, + "nodeType": "StructuredDocumentation", + "src": "141:280:41", + "text": " @dev Interface of the ERC-165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[ERC].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}." + }, + "fullyImplemented": false, + "id": 6389, + "linearizedBaseContracts": [ + 6389 + ], + "name": "IERC165", + "nameLocation": "432:7:41", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 6381, + "nodeType": "StructuredDocumentation", + "src": "446:340:41", + "text": " @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas." + }, + "functionSelector": "01ffc9a7", + "id": 6388, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nameLocation": "800:17:41", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6384, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6383, + "mutability": "mutable", + "name": "interfaceId", + "nameLocation": "825:11:41", + "nodeType": "VariableDeclaration", + "scope": 6388, + "src": "818:18:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 6382, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "818:6:41", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "817:20:41" + }, + "returnParameters": { + "id": 6387, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6386, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6388, + "src": "861:4:41", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6385, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "861:4:41", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "860:6:41" + }, + "scope": 6389, + "src": "791:76:41", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 6390, + "src": "422:447:41", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "115:755:41" + }, + "id": 41 + }, + "@openzeppelin/contracts/utils/math/Math.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/utils/math/Math.sol", + "exportedSymbols": { + "Math": [ + 7995 + ], + "Panic": [ + 5585 + ], + "SafeCast": [ + 9760 + ] + }, + "id": 7996, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 6391, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "103:24:42" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/Panic.sol", + "file": "../Panic.sol", + "id": 6393, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7996, + "sourceUnit": 5586, + "src": "129:35:42", + "symbolAliases": [ + { + "foreign": { + "id": 6392, + "name": "Panic", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5585, + "src": "137:5:42", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/math/SafeCast.sol", + "file": "./SafeCast.sol", + "id": 6395, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 7996, + "sourceUnit": 9761, + "src": "165:40:42", + "symbolAliases": [ + { + "foreign": { + "id": 6394, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9760, + "src": "173:8:42", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "Math", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 6396, + "nodeType": "StructuredDocumentation", + "src": "207:73:42", + "text": " @dev Standard math utilities missing in the Solidity language." + }, + "fullyImplemented": true, + "id": 7995, + "linearizedBaseContracts": [ + 7995 + ], + "name": "Math", + "nameLocation": "289:4:42", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "Math.Rounding", + "id": 6401, + "members": [ + { + "id": 6397, + "name": "Floor", + "nameLocation": "324:5:42", + "nodeType": "EnumValue", + "src": "324:5:42" + }, + { + "id": 6398, + "name": "Ceil", + "nameLocation": "367:4:42", + "nodeType": "EnumValue", + "src": "367:4:42" + }, + { + "id": 6399, + "name": "Trunc", + "nameLocation": "409:5:42", + "nodeType": "EnumValue", + "src": "409:5:42" + }, + { + "id": 6400, + "name": "Expand", + "nameLocation": "439:6:42", + "nodeType": "EnumValue", + "src": "439:6:42" + } + ], + "name": "Rounding", + "nameLocation": "305:8:42", + "nodeType": "EnumDefinition", + "src": "300:169:42" + }, + { + "body": { + "id": 6432, + "nodeType": "Block", + "src": "677:140:42", + "statements": [ + { + "id": 6431, + "nodeType": "UncheckedBlock", + "src": "687:124:42", + "statements": [ + { + "assignments": [ + 6414 + ], + "declarations": [ + { + "constant": false, + "id": 6414, + "mutability": "mutable", + "name": "c", + "nameLocation": "719:1:42", + "nodeType": "VariableDeclaration", + "scope": 6431, + "src": "711:9:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6413, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "711:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 6418, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6417, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6415, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6404, + "src": "723:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 6416, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6406, + "src": "727:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "723:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "711:17:42" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6421, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6419, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6414, + "src": "746:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 6420, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6404, + "src": "750:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "746:5:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6426, + "nodeType": "IfStatement", + "src": "742:28:42", + "trueBody": { + "expression": { + "components": [ + { + "hexValue": "66616c7365", + "id": 6422, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "761:5:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + { + "hexValue": "30", + "id": 6423, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "768:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 6424, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "760:10:42", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", + "typeString": "tuple(bool,int_const 0)" + } + }, + "functionReturnParameters": 6412, + "id": 6425, + "nodeType": "Return", + "src": "753:17:42" + } + }, + { + "expression": { + "components": [ + { + "hexValue": "74727565", + "id": 6427, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "792:4:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "id": 6428, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6414, + "src": "798:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 6429, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "791:9:42", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", + "typeString": "tuple(bool,uint256)" + } + }, + "functionReturnParameters": 6412, + "id": 6430, + "nodeType": "Return", + "src": "784:16:42" + } + ] + } + ] + }, + "documentation": { + "id": 6402, + "nodeType": "StructuredDocumentation", + "src": "475:106:42", + "text": " @dev Returns the addition of two unsigned integers, with an success flag (no overflow)." + }, + "id": 6433, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryAdd", + "nameLocation": "595:6:42", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6407, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6404, + "mutability": "mutable", + "name": "a", + "nameLocation": "610:1:42", + "nodeType": "VariableDeclaration", + "scope": 6433, + "src": "602:9:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6403, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "602:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6406, + "mutability": "mutable", + "name": "b", + "nameLocation": "621:1:42", + "nodeType": "VariableDeclaration", + "scope": 6433, + "src": "613:9:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6405, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "613:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "601:22:42" + }, + "returnParameters": { + "id": 6412, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6409, + "mutability": "mutable", + "name": "success", + "nameLocation": "652:7:42", + "nodeType": "VariableDeclaration", + "scope": 6433, + "src": "647:12:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6408, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "647:4:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6411, + "mutability": "mutable", + "name": "result", + "nameLocation": "669:6:42", + "nodeType": "VariableDeclaration", + "scope": 6433, + "src": "661:14:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6410, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "661:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "646:30:42" + }, + "scope": 7995, + "src": "586:231:42", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6460, + "nodeType": "Block", + "src": "1028:113:42", + "statements": [ + { + "id": 6459, + "nodeType": "UncheckedBlock", + "src": "1038:97:42", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6447, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6445, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6438, + "src": "1066:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 6446, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6436, + "src": "1070:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1066:5:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6452, + "nodeType": "IfStatement", + "src": "1062:28:42", + "trueBody": { + "expression": { + "components": [ + { + "hexValue": "66616c7365", + "id": 6448, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1081:5:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + { + "hexValue": "30", + "id": 6449, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1088:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 6450, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1080:10:42", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", + "typeString": "tuple(bool,int_const 0)" + } + }, + "functionReturnParameters": 6444, + "id": 6451, + "nodeType": "Return", + "src": "1073:17:42" + } + }, + { + "expression": { + "components": [ + { + "hexValue": "74727565", + "id": 6453, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1112:4:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6456, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6454, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6436, + "src": "1118:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 6455, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6438, + "src": "1122:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1118:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 6457, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1111:13:42", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", + "typeString": "tuple(bool,uint256)" + } + }, + "functionReturnParameters": 6444, + "id": 6458, + "nodeType": "Return", + "src": "1104:20:42" + } + ] + } + ] + }, + "documentation": { + "id": 6434, + "nodeType": "StructuredDocumentation", + "src": "823:109:42", + "text": " @dev Returns the subtraction of two unsigned integers, with an success flag (no overflow)." + }, + "id": 6461, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "trySub", + "nameLocation": "946:6:42", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6439, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6436, + "mutability": "mutable", + "name": "a", + "nameLocation": "961:1:42", + "nodeType": "VariableDeclaration", + "scope": 6461, + "src": "953:9:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6435, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "953:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6438, + "mutability": "mutable", + "name": "b", + "nameLocation": "972:1:42", + "nodeType": "VariableDeclaration", + "scope": 6461, + "src": "964:9:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6437, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "964:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "952:22:42" + }, + "returnParameters": { + "id": 6444, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6441, + "mutability": "mutable", + "name": "success", + "nameLocation": "1003:7:42", + "nodeType": "VariableDeclaration", + "scope": 6461, + "src": "998:12:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6440, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "998:4:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6443, + "mutability": "mutable", + "name": "result", + "nameLocation": "1020:6:42", + "nodeType": "VariableDeclaration", + "scope": 6461, + "src": "1012:14:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6442, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1012:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "997:30:42" + }, + "scope": 7995, + "src": "937:204:42", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6502, + "nodeType": "Block", + "src": "1355:417:42", + "statements": [ + { + "id": 6501, + "nodeType": "UncheckedBlock", + "src": "1365:401:42", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6475, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6473, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6464, + "src": "1623:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 6474, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1628:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1623:6:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6480, + "nodeType": "IfStatement", + "src": "1619:28:42", + "trueBody": { + "expression": { + "components": [ + { + "hexValue": "74727565", + "id": 6476, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1639:4:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "hexValue": "30", + "id": 6477, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1645:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 6478, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1638:9:42", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", + "typeString": "tuple(bool,int_const 0)" + } + }, + "functionReturnParameters": 6472, + "id": 6479, + "nodeType": "Return", + "src": "1631:16:42" + } + }, + { + "assignments": [ + 6482 + ], + "declarations": [ + { + "constant": false, + "id": 6482, + "mutability": "mutable", + "name": "c", + "nameLocation": "1669:1:42", + "nodeType": "VariableDeclaration", + "scope": 6501, + "src": "1661:9:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6481, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1661:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 6486, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6485, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6483, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6464, + "src": "1673:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 6484, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6466, + "src": "1677:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1673:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1661:17:42" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6491, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6489, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6487, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6482, + "src": "1696:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 6488, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6464, + "src": "1700:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1696:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 6490, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6466, + "src": "1705:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1696:10:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6496, + "nodeType": "IfStatement", + "src": "1692:33:42", + "trueBody": { + "expression": { + "components": [ + { + "hexValue": "66616c7365", + "id": 6492, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1716:5:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + { + "hexValue": "30", + "id": 6493, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1723:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 6494, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1715:10:42", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", + "typeString": "tuple(bool,int_const 0)" + } + }, + "functionReturnParameters": 6472, + "id": 6495, + "nodeType": "Return", + "src": "1708:17:42" + } + }, + { + "expression": { + "components": [ + { + "hexValue": "74727565", + "id": 6497, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1747:4:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "id": 6498, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6482, + "src": "1753:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 6499, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1746:9:42", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", + "typeString": "tuple(bool,uint256)" + } + }, + "functionReturnParameters": 6472, + "id": 6500, + "nodeType": "Return", + "src": "1739:16:42" + } + ] + } + ] + }, + "documentation": { + "id": 6462, + "nodeType": "StructuredDocumentation", + "src": "1147:112:42", + "text": " @dev Returns the multiplication of two unsigned integers, with an success flag (no overflow)." + }, + "id": 6503, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryMul", + "nameLocation": "1273:6:42", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6467, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6464, + "mutability": "mutable", + "name": "a", + "nameLocation": "1288:1:42", + "nodeType": "VariableDeclaration", + "scope": 6503, + "src": "1280:9:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6463, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1280:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6466, + "mutability": "mutable", + "name": "b", + "nameLocation": "1299:1:42", + "nodeType": "VariableDeclaration", + "scope": 6503, + "src": "1291:9:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6465, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1291:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1279:22:42" + }, + "returnParameters": { + "id": 6472, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6469, + "mutability": "mutable", + "name": "success", + "nameLocation": "1330:7:42", + "nodeType": "VariableDeclaration", + "scope": 6503, + "src": "1325:12:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6468, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1325:4:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6471, + "mutability": "mutable", + "name": "result", + "nameLocation": "1347:6:42", + "nodeType": "VariableDeclaration", + "scope": 6503, + "src": "1339:14:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6470, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1339:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1324:30:42" + }, + "scope": 7995, + "src": "1264:508:42", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6530, + "nodeType": "Block", + "src": "1987:114:42", + "statements": [ + { + "id": 6529, + "nodeType": "UncheckedBlock", + "src": "1997:98:42", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6517, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6515, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6508, + "src": "2025:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 6516, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2030:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2025:6:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6522, + "nodeType": "IfStatement", + "src": "2021:29:42", + "trueBody": { + "expression": { + "components": [ + { + "hexValue": "66616c7365", + "id": 6518, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2041:5:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + { + "hexValue": "30", + "id": 6519, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2048:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 6520, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2040:10:42", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", + "typeString": "tuple(bool,int_const 0)" + } + }, + "functionReturnParameters": 6514, + "id": 6521, + "nodeType": "Return", + "src": "2033:17:42" + } + }, + { + "expression": { + "components": [ + { + "hexValue": "74727565", + "id": 6523, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2072:4:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6526, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6524, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6506, + "src": "2078:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 6525, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6508, + "src": "2082:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2078:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 6527, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2071:13:42", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", + "typeString": "tuple(bool,uint256)" + } + }, + "functionReturnParameters": 6514, + "id": 6528, + "nodeType": "Return", + "src": "2064:20:42" + } + ] + } + ] + }, + "documentation": { + "id": 6504, + "nodeType": "StructuredDocumentation", + "src": "1778:113:42", + "text": " @dev Returns the division of two unsigned integers, with a success flag (no division by zero)." + }, + "id": 6531, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryDiv", + "nameLocation": "1905:6:42", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6509, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6506, + "mutability": "mutable", + "name": "a", + "nameLocation": "1920:1:42", + "nodeType": "VariableDeclaration", + "scope": 6531, + "src": "1912:9:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6505, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1912:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6508, + "mutability": "mutable", + "name": "b", + "nameLocation": "1931:1:42", + "nodeType": "VariableDeclaration", + "scope": 6531, + "src": "1923:9:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6507, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1923:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1911:22:42" + }, + "returnParameters": { + "id": 6514, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6511, + "mutability": "mutable", + "name": "success", + "nameLocation": "1962:7:42", + "nodeType": "VariableDeclaration", + "scope": 6531, + "src": "1957:12:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6510, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1957:4:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6513, + "mutability": "mutable", + "name": "result", + "nameLocation": "1979:6:42", + "nodeType": "VariableDeclaration", + "scope": 6531, + "src": "1971:14:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6512, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1971:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1956:30:42" + }, + "scope": 7995, + "src": "1896:205:42", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6558, + "nodeType": "Block", + "src": "2326:114:42", + "statements": [ + { + "id": 6557, + "nodeType": "UncheckedBlock", + "src": "2336:98:42", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6545, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6543, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6536, + "src": "2364:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 6544, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2369:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2364:6:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6550, + "nodeType": "IfStatement", + "src": "2360:29:42", + "trueBody": { + "expression": { + "components": [ + { + "hexValue": "66616c7365", + "id": 6546, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2380:5:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + { + "hexValue": "30", + "id": 6547, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2387:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 6548, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2379:10:42", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", + "typeString": "tuple(bool,int_const 0)" + } + }, + "functionReturnParameters": 6542, + "id": 6549, + "nodeType": "Return", + "src": "2372:17:42" + } + }, + { + "expression": { + "components": [ + { + "hexValue": "74727565", + "id": 6551, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2411:4:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6554, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6552, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6534, + "src": "2417:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "id": 6553, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6536, + "src": "2421:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2417:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 6555, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2410:13:42", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", + "typeString": "tuple(bool,uint256)" + } + }, + "functionReturnParameters": 6542, + "id": 6556, + "nodeType": "Return", + "src": "2403:20:42" + } + ] + } + ] + }, + "documentation": { + "id": 6532, + "nodeType": "StructuredDocumentation", + "src": "2107:123:42", + "text": " @dev Returns the remainder of dividing two unsigned integers, with a success flag (no division by zero)." + }, + "id": 6559, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryMod", + "nameLocation": "2244:6:42", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6537, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6534, + "mutability": "mutable", + "name": "a", + "nameLocation": "2259:1:42", + "nodeType": "VariableDeclaration", + "scope": 6559, + "src": "2251:9:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6533, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2251:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6536, + "mutability": "mutable", + "name": "b", + "nameLocation": "2270:1:42", + "nodeType": "VariableDeclaration", + "scope": 6559, + "src": "2262:9:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6535, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2262:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2250:22:42" + }, + "returnParameters": { + "id": 6542, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6539, + "mutability": "mutable", + "name": "success", + "nameLocation": "2301:7:42", + "nodeType": "VariableDeclaration", + "scope": 6559, + "src": "2296:12:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6538, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2296:4:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6541, + "mutability": "mutable", + "name": "result", + "nameLocation": "2318:6:42", + "nodeType": "VariableDeclaration", + "scope": 6559, + "src": "2310:14:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6540, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2310:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2295:30:42" + }, + "scope": 7995, + "src": "2235:205:42", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6585, + "nodeType": "Block", + "src": "2912:207:42", + "statements": [ + { + "id": 6584, + "nodeType": "UncheckedBlock", + "src": "2922:191:42", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6582, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6571, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6566, + "src": "3060:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "^", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6574, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6572, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6564, + "src": "3066:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "^", + "rightExpression": { + "id": 6573, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6566, + "src": "3070:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3066:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 6575, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3065:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "arguments": [ + { + "id": 6578, + "name": "condition", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6562, + "src": "3091:9:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 6576, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9760, + "src": "3075:8:42", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$9760_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 6577, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3084:6:42", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 9759, + "src": "3075:15:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 6579, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3075:26:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3065:36:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 6581, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3064:38:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3060:42:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6570, + "id": 6583, + "nodeType": "Return", + "src": "3053:49:42" + } + ] + } + ] + }, + "documentation": { + "id": 6560, + "nodeType": "StructuredDocumentation", + "src": "2446:374:42", + "text": " @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.\n IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\n However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute\n one branch when needed, making this function more expensive." + }, + "id": 6586, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ternary", + "nameLocation": "2834:7:42", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6567, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6562, + "mutability": "mutable", + "name": "condition", + "nameLocation": "2847:9:42", + "nodeType": "VariableDeclaration", + "scope": 6586, + "src": "2842:14:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6561, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2842:4:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6564, + "mutability": "mutable", + "name": "a", + "nameLocation": "2866:1:42", + "nodeType": "VariableDeclaration", + "scope": 6586, + "src": "2858:9:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6563, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2858:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6566, + "mutability": "mutable", + "name": "b", + "nameLocation": "2877:1:42", + "nodeType": "VariableDeclaration", + "scope": 6586, + "src": "2869:9:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6565, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2869:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2841:38:42" + }, + "returnParameters": { + "id": 6570, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6569, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6586, + "src": "2903:7:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6568, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2903:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2902:9:42" + }, + "scope": 7995, + "src": "2825:294:42", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6604, + "nodeType": "Block", + "src": "3256:44:42", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6597, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6589, + "src": "3281:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 6598, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6591, + "src": "3285:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3281:5:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 6600, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6589, + "src": "3288:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 6601, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6591, + "src": "3291:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6596, + "name": "ternary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6586, + "src": "3273:7:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (bool,uint256,uint256) pure returns (uint256)" + } + }, + "id": 6602, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3273:20:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6595, + "id": 6603, + "nodeType": "Return", + "src": "3266:27:42" + } + ] + }, + "documentation": { + "id": 6587, + "nodeType": "StructuredDocumentation", + "src": "3125:59:42", + "text": " @dev Returns the largest of two numbers." + }, + "id": 6605, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "max", + "nameLocation": "3198:3:42", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6592, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6589, + "mutability": "mutable", + "name": "a", + "nameLocation": "3210:1:42", + "nodeType": "VariableDeclaration", + "scope": 6605, + "src": "3202:9:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6588, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3202:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6591, + "mutability": "mutable", + "name": "b", + "nameLocation": "3221:1:42", + "nodeType": "VariableDeclaration", + "scope": 6605, + "src": "3213:9:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6590, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3213:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3201:22:42" + }, + "returnParameters": { + "id": 6595, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6594, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6605, + "src": "3247:7:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6593, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3247:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3246:9:42" + }, + "scope": 7995, + "src": "3189:111:42", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6623, + "nodeType": "Block", + "src": "3438:44:42", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6616, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6608, + "src": "3463:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 6617, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6610, + "src": "3467:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3463:5:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 6619, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6608, + "src": "3470:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 6620, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6610, + "src": "3473:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6615, + "name": "ternary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6586, + "src": "3455:7:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (bool,uint256,uint256) pure returns (uint256)" + } + }, + "id": 6621, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3455:20:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6614, + "id": 6622, + "nodeType": "Return", + "src": "3448:27:42" + } + ] + }, + "documentation": { + "id": 6606, + "nodeType": "StructuredDocumentation", + "src": "3306:60:42", + "text": " @dev Returns the smallest of two numbers." + }, + "id": 6624, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "min", + "nameLocation": "3380:3:42", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6611, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6608, + "mutability": "mutable", + "name": "a", + "nameLocation": "3392:1:42", + "nodeType": "VariableDeclaration", + "scope": 6624, + "src": "3384:9:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6607, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3384:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6610, + "mutability": "mutable", + "name": "b", + "nameLocation": "3403:1:42", + "nodeType": "VariableDeclaration", + "scope": 6624, + "src": "3395:9:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6609, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3395:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3383:22:42" + }, + "returnParameters": { + "id": 6614, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6613, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6624, + "src": "3429:7:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6612, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3429:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3428:9:42" + }, + "scope": 7995, + "src": "3371:111:42", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6646, + "nodeType": "Block", + "src": "3666:82:42", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6644, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6634, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6627, + "src": "3721:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 6635, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6629, + "src": "3725:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3721:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 6637, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3720:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6643, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6640, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6638, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6627, + "src": "3731:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "^", + "rightExpression": { + "id": 6639, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6629, + "src": "3735:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3731:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 6641, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3730:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "hexValue": "32", + "id": 6642, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3740:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "3730:11:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3720:21:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6633, + "id": 6645, + "nodeType": "Return", + "src": "3713:28:42" + } + ] + }, + "documentation": { + "id": 6625, + "nodeType": "StructuredDocumentation", + "src": "3488:102:42", + "text": " @dev Returns the average of two numbers. The result is rounded towards\n zero." + }, + "id": 6647, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "average", + "nameLocation": "3604:7:42", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6630, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6627, + "mutability": "mutable", + "name": "a", + "nameLocation": "3620:1:42", + "nodeType": "VariableDeclaration", + "scope": 6647, + "src": "3612:9:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6626, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3612:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6629, + "mutability": "mutable", + "name": "b", + "nameLocation": "3631:1:42", + "nodeType": "VariableDeclaration", + "scope": 6647, + "src": "3623:9:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6628, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3623:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3611:22:42" + }, + "returnParameters": { + "id": 6633, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6632, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6647, + "src": "3657:7:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6631, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3657:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3656:9:42" + }, + "scope": 7995, + "src": "3595:153:42", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6687, + "nodeType": "Block", + "src": "4040:633:42", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6659, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6657, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6652, + "src": "4054:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 6658, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4059:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4054:6:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6668, + "nodeType": "IfStatement", + "src": "4050:150:42", + "trueBody": { + "id": 6667, + "nodeType": "Block", + "src": "4062:138:42", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 6663, + "name": "Panic", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5585, + "src": "4166:5:42", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Panic_$5585_$", + "typeString": "type(library Panic)" + } + }, + "id": 6664, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4172:16:42", + "memberName": "DIVISION_BY_ZERO", + "nodeType": "MemberAccess", + "referencedDeclaration": 5552, + "src": "4166:22:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 6660, + "name": "Panic", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5585, + "src": "4154:5:42", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Panic_$5585_$", + "typeString": "type(library Panic)" + } + }, + "id": 6662, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4160:5:42", + "memberName": "panic", + "nodeType": "MemberAccess", + "referencedDeclaration": 5584, + "src": "4154:11:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$", + "typeString": "function (uint256) pure" + } + }, + "id": 6665, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4154:35:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6666, + "nodeType": "ExpressionStatement", + "src": "4154:35:42" + } + ] + } + }, + { + "id": 6686, + "nodeType": "UncheckedBlock", + "src": "4583:84:42", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6684, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6673, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6671, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6650, + "src": "4630:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 6672, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4634:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4630:5:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 6669, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9760, + "src": "4614:8:42", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$9760_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 6670, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4623:6:42", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 9759, + "src": "4614:15:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 6674, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4614:22:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6682, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6677, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6675, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6650, + "src": "4641:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 6676, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4645:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4641:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 6678, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4640:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 6679, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6652, + "src": "4650:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4640:11:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "hexValue": "31", + "id": 6681, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4654:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4640:15:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 6683, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4639:17:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4614:42:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6656, + "id": 6685, + "nodeType": "Return", + "src": "4607:49:42" + } + ] + } + ] + }, + "documentation": { + "id": 6648, + "nodeType": "StructuredDocumentation", + "src": "3754:210:42", + "text": " @dev Returns the ceiling of the division of two numbers.\n This differs from standard division with `/` in that it rounds towards infinity instead\n of rounding towards zero." + }, + "id": 6688, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ceilDiv", + "nameLocation": "3978:7:42", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6653, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6650, + "mutability": "mutable", + "name": "a", + "nameLocation": "3994:1:42", + "nodeType": "VariableDeclaration", + "scope": 6688, + "src": "3986:9:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6649, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3986:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6652, + "mutability": "mutable", + "name": "b", + "nameLocation": "4005:1:42", + "nodeType": "VariableDeclaration", + "scope": 6688, + "src": "3997:9:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6651, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3997:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3985:22:42" + }, + "returnParameters": { + "id": 6656, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6655, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6688, + "src": "4031:7:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6654, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4031:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4030:9:42" + }, + "scope": 7995, + "src": "3969:704:42", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6824, + "nodeType": "Block", + "src": "5094:4128:42", + "statements": [ + { + "id": 6823, + "nodeType": "UncheckedBlock", + "src": "5104:4112:42", + "statements": [ + { + "assignments": [ + 6701 + ], + "declarations": [ + { + "constant": false, + "id": 6701, + "mutability": "mutable", + "name": "prod0", + "nameLocation": "5441:5:42", + "nodeType": "VariableDeclaration", + "scope": 6823, + "src": "5433:13:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6700, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5433:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 6705, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6704, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6702, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6691, + "src": "5449:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 6703, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6693, + "src": "5453:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5449:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5433:21:42" + }, + { + "assignments": [ + 6707 + ], + "declarations": [ + { + "constant": false, + "id": 6707, + "mutability": "mutable", + "name": "prod1", + "nameLocation": "5521:5:42", + "nodeType": "VariableDeclaration", + "scope": 6823, + "src": "5513:13:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6706, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5513:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 6708, + "nodeType": "VariableDeclarationStatement", + "src": "5513:13:42" + }, + { + "AST": { + "nativeSrc": "5593:122:42", + "nodeType": "YulBlock", + "src": "5593:122:42", + "statements": [ + { + "nativeSrc": "5611:30:42", + "nodeType": "YulVariableDeclaration", + "src": "5611:30:42", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "5628:1:42", + "nodeType": "YulIdentifier", + "src": "5628:1:42" + }, + { + "name": "y", + "nativeSrc": "5631:1:42", + "nodeType": "YulIdentifier", + "src": "5631:1:42" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5638:1:42", + "nodeType": "YulLiteral", + "src": "5638:1:42", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "5634:3:42", + "nodeType": "YulIdentifier", + "src": "5634:3:42" + }, + "nativeSrc": "5634:6:42", + "nodeType": "YulFunctionCall", + "src": "5634:6:42" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "5621:6:42", + "nodeType": "YulIdentifier", + "src": "5621:6:42" + }, + "nativeSrc": "5621:20:42", + "nodeType": "YulFunctionCall", + "src": "5621:20:42" + }, + "variables": [ + { + "name": "mm", + "nativeSrc": "5615:2:42", + "nodeType": "YulTypedName", + "src": "5615:2:42", + "type": "" + } + ] + }, + { + "nativeSrc": "5658:43:42", + "nodeType": "YulAssignment", + "src": "5658:43:42", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "mm", + "nativeSrc": "5675:2:42", + "nodeType": "YulIdentifier", + "src": "5675:2:42" + }, + { + "name": "prod0", + "nativeSrc": "5679:5:42", + "nodeType": "YulIdentifier", + "src": "5679:5:42" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "5671:3:42", + "nodeType": "YulIdentifier", + "src": "5671:3:42" + }, + "nativeSrc": "5671:14:42", + "nodeType": "YulFunctionCall", + "src": "5671:14:42" + }, + { + "arguments": [ + { + "name": "mm", + "nativeSrc": "5690:2:42", + "nodeType": "YulIdentifier", + "src": "5690:2:42" + }, + { + "name": "prod0", + "nativeSrc": "5694:5:42", + "nodeType": "YulIdentifier", + "src": "5694:5:42" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "5687:2:42", + "nodeType": "YulIdentifier", + "src": "5687:2:42" + }, + "nativeSrc": "5687:13:42", + "nodeType": "YulFunctionCall", + "src": "5687:13:42" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "5667:3:42", + "nodeType": "YulIdentifier", + "src": "5667:3:42" + }, + "nativeSrc": "5667:34:42", + "nodeType": "YulFunctionCall", + "src": "5667:34:42" + }, + "variableNames": [ + { + "name": "prod1", + "nativeSrc": "5658:5:42", + "nodeType": "YulIdentifier", + "src": "5658:5:42" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6701, + "isOffset": false, + "isSlot": false, + "src": "5679:5:42", + "valueSize": 1 + }, + { + "declaration": 6701, + "isOffset": false, + "isSlot": false, + "src": "5694:5:42", + "valueSize": 1 + }, + { + "declaration": 6707, + "isOffset": false, + "isSlot": false, + "src": "5658:5:42", + "valueSize": 1 + }, + { + "declaration": 6691, + "isOffset": false, + "isSlot": false, + "src": "5628:1:42", + "valueSize": 1 + }, + { + "declaration": 6693, + "isOffset": false, + "isSlot": false, + "src": "5631:1:42", + "valueSize": 1 + } + ], + "id": 6709, + "nodeType": "InlineAssembly", + "src": "5584:131:42" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6712, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6710, + "name": "prod1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6707, + "src": "5796:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 6711, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5805:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5796:10:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6718, + "nodeType": "IfStatement", + "src": "5792:368:42", + "trueBody": { + "id": 6717, + "nodeType": "Block", + "src": "5808:352:42", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6713, + "name": "prod0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6701, + "src": "6126:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 6714, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6695, + "src": "6134:11:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6126:19:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6699, + "id": 6716, + "nodeType": "Return", + "src": "6119:26:42" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6721, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6719, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6695, + "src": "6270:11:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "id": 6720, + "name": "prod1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6707, + "src": "6285:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6270:20:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6737, + "nodeType": "IfStatement", + "src": "6266:143:42", + "trueBody": { + "id": 6736, + "nodeType": "Block", + "src": "6292:117:42", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6728, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6726, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6695, + "src": "6330:11:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 6727, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6345:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6330:16:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "expression": { + "id": 6729, + "name": "Panic", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5585, + "src": "6348:5:42", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Panic_$5585_$", + "typeString": "type(library Panic)" + } + }, + "id": 6730, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6354:16:42", + "memberName": "DIVISION_BY_ZERO", + "nodeType": "MemberAccess", + "referencedDeclaration": 5552, + "src": "6348:22:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 6731, + "name": "Panic", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5585, + "src": "6372:5:42", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Panic_$5585_$", + "typeString": "type(library Panic)" + } + }, + "id": 6732, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6378:14:42", + "memberName": "UNDER_OVERFLOW", + "nodeType": "MemberAccess", + "referencedDeclaration": 5548, + "src": "6372:20:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6725, + "name": "ternary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6586, + "src": "6322:7:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (bool,uint256,uint256) pure returns (uint256)" + } + }, + "id": 6733, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6322:71:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 6722, + "name": "Panic", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5585, + "src": "6310:5:42", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Panic_$5585_$", + "typeString": "type(library Panic)" + } + }, + "id": 6724, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6316:5:42", + "memberName": "panic", + "nodeType": "MemberAccess", + "referencedDeclaration": 5584, + "src": "6310:11:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$", + "typeString": "function (uint256) pure" + } + }, + "id": 6734, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6310:84:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6735, + "nodeType": "ExpressionStatement", + "src": "6310:84:42" + } + ] + } + }, + { + "assignments": [ + 6739 + ], + "declarations": [ + { + "constant": false, + "id": 6739, + "mutability": "mutable", + "name": "remainder", + "nameLocation": "6672:9:42", + "nodeType": "VariableDeclaration", + "scope": 6823, + "src": "6664:17:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6738, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6664:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 6740, + "nodeType": "VariableDeclarationStatement", + "src": "6664:17:42" + }, + { + "AST": { + "nativeSrc": "6704:291:42", + "nodeType": "YulBlock", + "src": "6704:291:42", + "statements": [ + { + "nativeSrc": "6773:38:42", + "nodeType": "YulAssignment", + "src": "6773:38:42", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "6793:1:42", + "nodeType": "YulIdentifier", + "src": "6793:1:42" + }, + { + "name": "y", + "nativeSrc": "6796:1:42", + "nodeType": "YulIdentifier", + "src": "6796:1:42" + }, + { + "name": "denominator", + "nativeSrc": "6799:11:42", + "nodeType": "YulIdentifier", + "src": "6799:11:42" + } + ], + "functionName": { + "name": "mulmod", + "nativeSrc": "6786:6:42", + "nodeType": "YulIdentifier", + "src": "6786:6:42" + }, + "nativeSrc": "6786:25:42", + "nodeType": "YulFunctionCall", + "src": "6786:25:42" + }, + "variableNames": [ + { + "name": "remainder", + "nativeSrc": "6773:9:42", + "nodeType": "YulIdentifier", + "src": "6773:9:42" + } + ] + }, + { + "nativeSrc": "6893:41:42", + "nodeType": "YulAssignment", + "src": "6893:41:42", + "value": { + "arguments": [ + { + "name": "prod1", + "nativeSrc": "6906:5:42", + "nodeType": "YulIdentifier", + "src": "6906:5:42" + }, + { + "arguments": [ + { + "name": "remainder", + "nativeSrc": "6916:9:42", + "nodeType": "YulIdentifier", + "src": "6916:9:42" + }, + { + "name": "prod0", + "nativeSrc": "6927:5:42", + "nodeType": "YulIdentifier", + "src": "6927:5:42" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "6913:2:42", + "nodeType": "YulIdentifier", + "src": "6913:2:42" + }, + "nativeSrc": "6913:20:42", + "nodeType": "YulFunctionCall", + "src": "6913:20:42" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "6902:3:42", + "nodeType": "YulIdentifier", + "src": "6902:3:42" + }, + "nativeSrc": "6902:32:42", + "nodeType": "YulFunctionCall", + "src": "6902:32:42" + }, + "variableNames": [ + { + "name": "prod1", + "nativeSrc": "6893:5:42", + "nodeType": "YulIdentifier", + "src": "6893:5:42" + } + ] + }, + { + "nativeSrc": "6951:30:42", + "nodeType": "YulAssignment", + "src": "6951:30:42", + "value": { + "arguments": [ + { + "name": "prod0", + "nativeSrc": "6964:5:42", + "nodeType": "YulIdentifier", + "src": "6964:5:42" + }, + { + "name": "remainder", + "nativeSrc": "6971:9:42", + "nodeType": "YulIdentifier", + "src": "6971:9:42" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "6960:3:42", + "nodeType": "YulIdentifier", + "src": "6960:3:42" + }, + "nativeSrc": "6960:21:42", + "nodeType": "YulFunctionCall", + "src": "6960:21:42" + }, + "variableNames": [ + { + "name": "prod0", + "nativeSrc": "6951:5:42", + "nodeType": "YulIdentifier", + "src": "6951:5:42" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6695, + "isOffset": false, + "isSlot": false, + "src": "6799:11:42", + "valueSize": 1 + }, + { + "declaration": 6701, + "isOffset": false, + "isSlot": false, + "src": "6927:5:42", + "valueSize": 1 + }, + { + "declaration": 6701, + "isOffset": false, + "isSlot": false, + "src": "6951:5:42", + "valueSize": 1 + }, + { + "declaration": 6701, + "isOffset": false, + "isSlot": false, + "src": "6964:5:42", + "valueSize": 1 + }, + { + "declaration": 6707, + "isOffset": false, + "isSlot": false, + "src": "6893:5:42", + "valueSize": 1 + }, + { + "declaration": 6707, + "isOffset": false, + "isSlot": false, + "src": "6906:5:42", + "valueSize": 1 + }, + { + "declaration": 6739, + "isOffset": false, + "isSlot": false, + "src": "6773:9:42", + "valueSize": 1 + }, + { + "declaration": 6739, + "isOffset": false, + "isSlot": false, + "src": "6916:9:42", + "valueSize": 1 + }, + { + "declaration": 6739, + "isOffset": false, + "isSlot": false, + "src": "6971:9:42", + "valueSize": 1 + }, + { + "declaration": 6691, + "isOffset": false, + "isSlot": false, + "src": "6793:1:42", + "valueSize": 1 + }, + { + "declaration": 6693, + "isOffset": false, + "isSlot": false, + "src": "6796:1:42", + "valueSize": 1 + } + ], + "id": 6741, + "nodeType": "InlineAssembly", + "src": "6695:300:42" + }, + { + "assignments": [ + 6743 + ], + "declarations": [ + { + "constant": false, + "id": 6743, + "mutability": "mutable", + "name": "twos", + "nameLocation": "7207:4:42", + "nodeType": "VariableDeclaration", + "scope": 6823, + "src": "7199:12:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6742, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7199:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 6750, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6749, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6744, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6695, + "src": "7214:11:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6747, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "30", + "id": 6745, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7229:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 6746, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6695, + "src": "7233:11:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7229:15:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 6748, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7228:17:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7214:31:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7199:46:42" + }, + { + "AST": { + "nativeSrc": "7268:366:42", + "nodeType": "YulBlock", + "src": "7268:366:42", + "statements": [ + { + "nativeSrc": "7333:37:42", + "nodeType": "YulAssignment", + "src": "7333:37:42", + "value": { + "arguments": [ + { + "name": "denominator", + "nativeSrc": "7352:11:42", + "nodeType": "YulIdentifier", + "src": "7352:11:42" + }, + { + "name": "twos", + "nativeSrc": "7365:4:42", + "nodeType": "YulIdentifier", + "src": "7365:4:42" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "7348:3:42", + "nodeType": "YulIdentifier", + "src": "7348:3:42" + }, + "nativeSrc": "7348:22:42", + "nodeType": "YulFunctionCall", + "src": "7348:22:42" + }, + "variableNames": [ + { + "name": "denominator", + "nativeSrc": "7333:11:42", + "nodeType": "YulIdentifier", + "src": "7333:11:42" + } + ] + }, + { + "nativeSrc": "7437:25:42", + "nodeType": "YulAssignment", + "src": "7437:25:42", + "value": { + "arguments": [ + { + "name": "prod0", + "nativeSrc": "7450:5:42", + "nodeType": "YulIdentifier", + "src": "7450:5:42" + }, + { + "name": "twos", + "nativeSrc": "7457:4:42", + "nodeType": "YulIdentifier", + "src": "7457:4:42" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "7446:3:42", + "nodeType": "YulIdentifier", + "src": "7446:3:42" + }, + "nativeSrc": "7446:16:42", + "nodeType": "YulFunctionCall", + "src": "7446:16:42" + }, + "variableNames": [ + { + "name": "prod0", + "nativeSrc": "7437:5:42", + "nodeType": "YulIdentifier", + "src": "7437:5:42" + } + ] + }, + { + "nativeSrc": "7581:39:42", + "nodeType": "YulAssignment", + "src": "7581:39:42", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7601:1:42", + "nodeType": "YulLiteral", + "src": "7601:1:42", + "type": "", + "value": "0" + }, + { + "name": "twos", + "nativeSrc": "7604:4:42", + "nodeType": "YulIdentifier", + "src": "7604:4:42" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "7597:3:42", + "nodeType": "YulIdentifier", + "src": "7597:3:42" + }, + "nativeSrc": "7597:12:42", + "nodeType": "YulFunctionCall", + "src": "7597:12:42" + }, + { + "name": "twos", + "nativeSrc": "7611:4:42", + "nodeType": "YulIdentifier", + "src": "7611:4:42" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "7593:3:42", + "nodeType": "YulIdentifier", + "src": "7593:3:42" + }, + "nativeSrc": "7593:23:42", + "nodeType": "YulFunctionCall", + "src": "7593:23:42" + }, + { + "kind": "number", + "nativeSrc": "7618:1:42", + "nodeType": "YulLiteral", + "src": "7618:1:42", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7589:3:42", + "nodeType": "YulIdentifier", + "src": "7589:3:42" + }, + "nativeSrc": "7589:31:42", + "nodeType": "YulFunctionCall", + "src": "7589:31:42" + }, + "variableNames": [ + { + "name": "twos", + "nativeSrc": "7581:4:42", + "nodeType": "YulIdentifier", + "src": "7581:4:42" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 6695, + "isOffset": false, + "isSlot": false, + "src": "7333:11:42", + "valueSize": 1 + }, + { + "declaration": 6695, + "isOffset": false, + "isSlot": false, + "src": "7352:11:42", + "valueSize": 1 + }, + { + "declaration": 6701, + "isOffset": false, + "isSlot": false, + "src": "7437:5:42", + "valueSize": 1 + }, + { + "declaration": 6701, + "isOffset": false, + "isSlot": false, + "src": "7450:5:42", + "valueSize": 1 + }, + { + "declaration": 6743, + "isOffset": false, + "isSlot": false, + "src": "7365:4:42", + "valueSize": 1 + }, + { + "declaration": 6743, + "isOffset": false, + "isSlot": false, + "src": "7457:4:42", + "valueSize": 1 + }, + { + "declaration": 6743, + "isOffset": false, + "isSlot": false, + "src": "7581:4:42", + "valueSize": 1 + }, + { + "declaration": 6743, + "isOffset": false, + "isSlot": false, + "src": "7604:4:42", + "valueSize": 1 + }, + { + "declaration": 6743, + "isOffset": false, + "isSlot": false, + "src": "7611:4:42", + "valueSize": 1 + } + ], + "id": 6751, + "nodeType": "InlineAssembly", + "src": "7259:375:42" + }, + { + "expression": { + "id": 6756, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6752, + "name": "prod0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6701, + "src": "7700:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "|=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6755, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6753, + "name": "prod1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6707, + "src": "7709:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 6754, + "name": "twos", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6743, + "src": "7717:4:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7709:12:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7700:21:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6757, + "nodeType": "ExpressionStatement", + "src": "7700:21:42" + }, + { + "assignments": [ + 6759 + ], + "declarations": [ + { + "constant": false, + "id": 6759, + "mutability": "mutable", + "name": "inverse", + "nameLocation": "8064:7:42", + "nodeType": "VariableDeclaration", + "scope": 6823, + "src": "8056:15:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6758, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8056:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 6766, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6765, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6762, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "33", + "id": 6760, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8075:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 6761, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6695, + "src": "8079:11:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8075:15:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 6763, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8074:17:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "^", + "rightExpression": { + "hexValue": "32", + "id": 6764, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8094:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "8074:21:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8056:39:42" + }, + { + "expression": { + "id": 6773, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6767, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6759, + "src": "8312:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "*=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6772, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 6768, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8323:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6771, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6769, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6695, + "src": "8327:11:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 6770, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6759, + "src": "8341:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8327:21:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8323:25:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8312:36:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6774, + "nodeType": "ExpressionStatement", + "src": "8312:36:42" + }, + { + "expression": { + "id": 6781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6775, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6759, + "src": "8382:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "*=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 6776, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8393:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6779, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6777, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6695, + "src": "8397:11:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 6778, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6759, + "src": "8411:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8397:21:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8393:25:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8382:36:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6782, + "nodeType": "ExpressionStatement", + "src": "8382:36:42" + }, + { + "expression": { + "id": 6789, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6783, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6759, + "src": "8454:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "*=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6788, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 6784, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8465:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6787, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6785, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6695, + "src": "8469:11:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 6786, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6759, + "src": "8483:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8469:21:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8465:25:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8454:36:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6790, + "nodeType": "ExpressionStatement", + "src": "8454:36:42" + }, + { + "expression": { + "id": 6797, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6791, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6759, + "src": "8525:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "*=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6796, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 6792, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8536:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6795, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6793, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6695, + "src": "8540:11:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 6794, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6759, + "src": "8554:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8540:21:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8536:25:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8525:36:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6798, + "nodeType": "ExpressionStatement", + "src": "8525:36:42" + }, + { + "expression": { + "id": 6805, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6799, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6759, + "src": "8598:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "*=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6804, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 6800, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8609:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6803, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6801, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6695, + "src": "8613:11:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 6802, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6759, + "src": "8627:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8613:21:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8609:25:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8598:36:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6806, + "nodeType": "ExpressionStatement", + "src": "8598:36:42" + }, + { + "expression": { + "id": 6813, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6807, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6759, + "src": "8672:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "*=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6812, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 6808, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8683:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6811, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6809, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6695, + "src": "8687:11:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 6810, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6759, + "src": "8701:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8687:21:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8683:25:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8672:36:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6814, + "nodeType": "ExpressionStatement", + "src": "8672:36:42" + }, + { + "expression": { + "id": 6819, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 6815, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6698, + "src": "9154:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6818, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6816, + "name": "prod0", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6701, + "src": "9163:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 6817, + "name": "inverse", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6759, + "src": "9171:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9163:15:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9154:24:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 6820, + "nodeType": "ExpressionStatement", + "src": "9154:24:42" + }, + { + "expression": { + "id": 6821, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6698, + "src": "9199:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6699, + "id": 6822, + "nodeType": "Return", + "src": "9192:13:42" + } + ] + } + ] + }, + "documentation": { + "id": 6689, + "nodeType": "StructuredDocumentation", + "src": "4679:312:42", + "text": " @dev Calculates floor(x * y / denominator) with full precision. Throws if result overflows a uint256 or\n denominator == 0.\n Original credit to Remco Bloemen under MIT license (https://xn--2-umb.com/21/muldiv) with further edits by\n Uniswap Labs also under MIT license." + }, + "id": 6825, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mulDiv", + "nameLocation": "5005:6:42", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6696, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6691, + "mutability": "mutable", + "name": "x", + "nameLocation": "5020:1:42", + "nodeType": "VariableDeclaration", + "scope": 6825, + "src": "5012:9:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6690, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5012:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6693, + "mutability": "mutable", + "name": "y", + "nameLocation": "5031:1:42", + "nodeType": "VariableDeclaration", + "scope": 6825, + "src": "5023:9:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6692, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5023:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6695, + "mutability": "mutable", + "name": "denominator", + "nameLocation": "5042:11:42", + "nodeType": "VariableDeclaration", + "scope": 6825, + "src": "5034:19:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6694, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5034:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5011:43:42" + }, + "returnParameters": { + "id": 6699, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6698, + "mutability": "mutable", + "name": "result", + "nameLocation": "5086:6:42", + "nodeType": "VariableDeclaration", + "scope": 6825, + "src": "5078:14:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6697, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5078:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5077:16:42" + }, + "scope": 7995, + "src": "4996:4226:42", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6861, + "nodeType": "Block", + "src": "9461:128:42", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6859, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 6841, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6828, + "src": "9485:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 6842, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6830, + "src": "9488:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 6843, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6832, + "src": "9491:11:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6840, + "name": "mulDiv", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6825, + 6862 + ], + "referencedDeclaration": 6825, + "src": "9478:6:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 6844, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9478:25:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 6857, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 6848, + "name": "rounding", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6835, + "src": "9539:8:42", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$6401", + "typeString": "enum Math.Rounding" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_enum$_Rounding_$6401", + "typeString": "enum Math.Rounding" + } + ], + "id": 6847, + "name": "unsignedRoundsUp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7994, + "src": "9522:16:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_enum$_Rounding_$6401_$returns$_t_bool_$", + "typeString": "function (enum Math.Rounding) pure returns (bool)" + } + }, + "id": 6849, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9522:26:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6856, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 6851, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6828, + "src": "9559:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 6852, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6830, + "src": "9562:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 6853, + "name": "denominator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6832, + "src": "9565:11:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6850, + "name": "mulmod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -16, + "src": "9552:6:42", + "typeDescriptions": { + "typeIdentifier": "t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) pure returns (uint256)" + } + }, + "id": 6854, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9552:25:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 6855, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9580:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9552:29:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "9522:59:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 6845, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9760, + "src": "9506:8:42", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$9760_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 6846, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9515:6:42", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 9759, + "src": "9506:15:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 6858, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9506:76:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9478:104:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6839, + "id": 6860, + "nodeType": "Return", + "src": "9471:111:42" + } + ] + }, + "documentation": { + "id": 6826, + "nodeType": "StructuredDocumentation", + "src": "9228:118:42", + "text": " @dev Calculates x * y / denominator with full precision, following the selected rounding direction." + }, + "id": 6862, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mulDiv", + "nameLocation": "9360:6:42", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6836, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6828, + "mutability": "mutable", + "name": "x", + "nameLocation": "9375:1:42", + "nodeType": "VariableDeclaration", + "scope": 6862, + "src": "9367:9:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6827, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9367:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6830, + "mutability": "mutable", + "name": "y", + "nameLocation": "9386:1:42", + "nodeType": "VariableDeclaration", + "scope": 6862, + "src": "9378:9:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6829, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9378:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6832, + "mutability": "mutable", + "name": "denominator", + "nameLocation": "9397:11:42", + "nodeType": "VariableDeclaration", + "scope": 6862, + "src": "9389:19:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6831, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9389:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6835, + "mutability": "mutable", + "name": "rounding", + "nameLocation": "9419:8:42", + "nodeType": "VariableDeclaration", + "scope": 6862, + "src": "9410:17:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$6401", + "typeString": "enum Math.Rounding" + }, + "typeName": { + "id": 6834, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 6833, + "name": "Rounding", + "nameLocations": [ + "9410:8:42" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6401, + "src": "9410:8:42" + }, + "referencedDeclaration": 6401, + "src": "9410:8:42", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$6401", + "typeString": "enum Math.Rounding" + } + }, + "visibility": "internal" + } + ], + "src": "9366:62:42" + }, + "returnParameters": { + "id": 6839, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6838, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6862, + "src": "9452:7:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6837, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9452:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9451:9:42" + }, + "scope": 7995, + "src": "9351:238:42", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6958, + "nodeType": "Block", + "src": "10223:1849:42", + "statements": [ + { + "id": 6957, + "nodeType": "UncheckedBlock", + "src": "10233:1833:42", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6874, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6872, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6867, + "src": "10261:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 6873, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10266:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "10261:6:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6877, + "nodeType": "IfStatement", + "src": "10257:20:42", + "trueBody": { + "expression": { + "hexValue": "30", + "id": 6875, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10276:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 6871, + "id": 6876, + "nodeType": "Return", + "src": "10269:8:42" + } + }, + { + "assignments": [ + 6879 + ], + "declarations": [ + { + "constant": false, + "id": 6879, + "mutability": "mutable", + "name": "remainder", + "nameLocation": "10756:9:42", + "nodeType": "VariableDeclaration", + "scope": 6957, + "src": "10748:17:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6878, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10748:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 6883, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6882, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6880, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6865, + "src": "10768:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "id": 6881, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6867, + "src": "10772:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10768:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10748:25:42" + }, + { + "assignments": [ + 6885 + ], + "declarations": [ + { + "constant": false, + "id": 6885, + "mutability": "mutable", + "name": "gcd", + "nameLocation": "10795:3:42", + "nodeType": "VariableDeclaration", + "scope": 6957, + "src": "10787:11:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6884, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10787:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 6887, + "initialValue": { + "id": 6886, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6867, + "src": "10801:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10787:15:42" + }, + { + "assignments": [ + 6889 + ], + "declarations": [ + { + "constant": false, + "id": 6889, + "mutability": "mutable", + "name": "x", + "nameLocation": "10945:1:42", + "nodeType": "VariableDeclaration", + "scope": 6957, + "src": "10938:8:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 6888, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "10938:6:42", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "id": 6891, + "initialValue": { + "hexValue": "30", + "id": 6890, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10949:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "10938:12:42" + }, + { + "assignments": [ + 6893 + ], + "declarations": [ + { + "constant": false, + "id": 6893, + "mutability": "mutable", + "name": "y", + "nameLocation": "10971:1:42", + "nodeType": "VariableDeclaration", + "scope": 6957, + "src": "10964:8:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 6892, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "10964:6:42", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "id": 6895, + "initialValue": { + "hexValue": "31", + "id": 6894, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10975:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "VariableDeclarationStatement", + "src": "10964:12:42" + }, + { + "body": { + "id": 6932, + "nodeType": "Block", + "src": "11014:882:42", + "statements": [ + { + "assignments": [ + 6900 + ], + "declarations": [ + { + "constant": false, + "id": 6900, + "mutability": "mutable", + "name": "quotient", + "nameLocation": "11040:8:42", + "nodeType": "VariableDeclaration", + "scope": 6932, + "src": "11032:16:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6899, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11032:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 6904, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6903, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6901, + "name": "gcd", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6885, + "src": "11051:3:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 6902, + "name": "remainder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6879, + "src": "11057:9:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11051:15:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11032:34:42" + }, + { + "expression": { + "id": 6915, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "components": [ + { + "id": 6905, + "name": "gcd", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6885, + "src": "11086:3:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 6906, + "name": "remainder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6879, + "src": "11091:9:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 6907, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "11085:16:42", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "components": [ + { + "id": 6908, + "name": "remainder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6879, + "src": "11191:9:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6913, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6909, + "name": "gcd", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6885, + "src": "11436:3:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6912, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6910, + "name": "remainder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6879, + "src": "11442:9:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 6911, + "name": "quotient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6900, + "src": "11454:8:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11442:20:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11436:26:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 6914, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11104:376:42", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "src": "11085:395:42", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6916, + "nodeType": "ExpressionStatement", + "src": "11085:395:42" + }, + { + "expression": { + "id": 6930, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "components": [ + { + "id": 6917, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6889, + "src": "11500:1:42", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + { + "id": 6918, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6893, + "src": "11503:1:42", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "id": 6919, + "isConstant": false, + "isInlineArray": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "TupleExpression", + "src": "11499:6:42", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_int256_$_t_int256_$", + "typeString": "tuple(int256,int256)" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "components": [ + { + "id": 6920, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6893, + "src": "11585:1:42", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 6928, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6921, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6889, + "src": "11839:1:42", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 6927, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6922, + "name": "y", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6893, + "src": "11843:1:42", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "arguments": [ + { + "id": 6925, + "name": "quotient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6900, + "src": "11854:8:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6924, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11847:6:42", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int256_$", + "typeString": "type(int256)" + }, + "typeName": { + "id": 6923, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "11847:6:42", + "typeDescriptions": {} + } + }, + "id": 6926, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11847:16:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "11843:20:42", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "11839:24:42", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "id": 6929, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "11508:373:42", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_int256_$_t_int256_$", + "typeString": "tuple(int256,int256)" + } + }, + "src": "11499:382:42", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 6931, + "nodeType": "ExpressionStatement", + "src": "11499:382:42" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6898, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6896, + "name": "remainder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6879, + "src": "10998:9:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 6897, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11011:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "10998:14:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6933, + "nodeType": "WhileStatement", + "src": "10991:905:42" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6936, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6934, + "name": "gcd", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6885, + "src": "11914:3:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "31", + "id": 6935, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11921:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "11914:8:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 6939, + "nodeType": "IfStatement", + "src": "11910:22:42", + "trueBody": { + "expression": { + "hexValue": "30", + "id": 6937, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11931:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 6871, + "id": 6938, + "nodeType": "Return", + "src": "11924:8:42" + } + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 6943, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6941, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6889, + "src": "11983:1:42", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "hexValue": "30", + "id": 6942, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11987:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "11983:5:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6950, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6944, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6867, + "src": "11990:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "arguments": [ + { + "id": 6948, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "12002:2:42", + "subExpression": { + "id": 6947, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6889, + "src": "12003:1:42", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 6946, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11994:7:42", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 6945, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11994:7:42", + "typeDescriptions": {} + } + }, + "id": 6949, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11994:11:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11990:15:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "arguments": [ + { + "id": 6953, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6889, + "src": "12015:1:42", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 6952, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12007:7:42", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 6951, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12007:7:42", + "typeDescriptions": {} + } + }, + "id": 6954, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12007:10:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6940, + "name": "ternary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6586, + "src": "11975:7:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (bool,uint256,uint256) pure returns (uint256)" + } + }, + "id": 6955, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11975:43:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6871, + "id": 6956, + "nodeType": "Return", + "src": "11968:50:42" + } + ] + } + ] + }, + "documentation": { + "id": 6863, + "nodeType": "StructuredDocumentation", + "src": "9595:553:42", + "text": " @dev Calculate the modular multiplicative inverse of a number in Z/nZ.\n If n is a prime, then Z/nZ is a field. In that case all elements are inversible, except 0.\n If n is not a prime, then Z/nZ is not a field, and some elements might not be inversible.\n If the input value is not inversible, 0 is returned.\n NOTE: If you know for sure that n is (big) a prime, it may be cheaper to use Fermat's little theorem and get the\n inverse using `Math.modExp(a, n - 2, n)`. See {invModPrime}." + }, + "id": 6959, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "invMod", + "nameLocation": "10162:6:42", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6868, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6865, + "mutability": "mutable", + "name": "a", + "nameLocation": "10177:1:42", + "nodeType": "VariableDeclaration", + "scope": 6959, + "src": "10169:9:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6864, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10169:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6867, + "mutability": "mutable", + "name": "n", + "nameLocation": "10188:1:42", + "nodeType": "VariableDeclaration", + "scope": 6959, + "src": "10180:9:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6866, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10180:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10168:22:42" + }, + "returnParameters": { + "id": 6871, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6870, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6959, + "src": "10214:7:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6869, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10214:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10213:9:42" + }, + "scope": 7995, + "src": "10153:1919:42", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 6979, + "nodeType": "Block", + "src": "12672:82:42", + "statements": [ + { + "id": 6978, + "nodeType": "UncheckedBlock", + "src": "12682:66:42", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 6971, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6962, + "src": "12725:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 6974, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 6972, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6964, + "src": "12728:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "32", + "id": 6973, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12732:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "12728:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 6975, + "name": "p", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6964, + "src": "12735:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 6969, + "name": "Math", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7995, + "src": "12713:4:42", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Math_$7995_$", + "typeString": "type(library Math)" + } + }, + "id": 6970, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12718:6:42", + "memberName": "modExp", + "nodeType": "MemberAccess", + "referencedDeclaration": 7016, + "src": "12713:11:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) view returns (uint256)" + } + }, + "id": 6976, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12713:24:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6968, + "id": 6977, + "nodeType": "Return", + "src": "12706:31:42" + } + ] + } + ] + }, + "documentation": { + "id": 6960, + "nodeType": "StructuredDocumentation", + "src": "12078:514:42", + "text": " @dev Variant of {invMod}. More efficient, but only works if `p` is known to be a prime greater than `2`.\n From https://en.wikipedia.org/wiki/Fermat%27s_little_theorem[Fermat's little theorem], we know that if p is\n prime, then `a**(p-1) ≡ 1 mod p`. As a consequence, we have `a * a**(p-2) ≡ 1 mod p`, which means that\n `a**(p-2)` is the modular multiplicative inverse of a in Fp.\n NOTE: this function does NOT check that `p` is a prime greater than `2`." + }, + "id": 6980, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "invModPrime", + "nameLocation": "12606:11:42", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6965, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6962, + "mutability": "mutable", + "name": "a", + "nameLocation": "12626:1:42", + "nodeType": "VariableDeclaration", + "scope": 6980, + "src": "12618:9:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6961, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12618:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6964, + "mutability": "mutable", + "name": "p", + "nameLocation": "12637:1:42", + "nodeType": "VariableDeclaration", + "scope": 6980, + "src": "12629:9:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6963, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12629:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12617:22:42" + }, + "returnParameters": { + "id": 6968, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6967, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 6980, + "src": "12663:7:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6966, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12663:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12662:9:42" + }, + "scope": 7995, + "src": "12597:157:42", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7015, + "nodeType": "Block", + "src": "13524:174:42", + "statements": [ + { + "assignments": [ + 6993, + 6995 + ], + "declarations": [ + { + "constant": false, + "id": 6993, + "mutability": "mutable", + "name": "success", + "nameLocation": "13540:7:42", + "nodeType": "VariableDeclaration", + "scope": 7015, + "src": "13535:12:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 6992, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "13535:4:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6995, + "mutability": "mutable", + "name": "result", + "nameLocation": "13557:6:42", + "nodeType": "VariableDeclaration", + "scope": 7015, + "src": "13549:14:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6994, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13549:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7001, + "initialValue": { + "arguments": [ + { + "id": 6997, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6983, + "src": "13577:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 6998, + "name": "e", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6985, + "src": "13580:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 6999, + "name": "m", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6987, + "src": "13583:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 6996, + "name": "tryModExp", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 7040, + 7122 + ], + "referencedDeclaration": 7040, + "src": "13567:9:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$", + "typeString": "function (uint256,uint256,uint256) view returns (bool,uint256)" + } + }, + "id": 7000, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13567:18:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", + "typeString": "tuple(bool,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13534:51:42" + }, + { + "condition": { + "id": 7003, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "13599:8:42", + "subExpression": { + "id": 7002, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6993, + "src": "13600:7:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7012, + "nodeType": "IfStatement", + "src": "13595:74:42", + "trueBody": { + "id": 7011, + "nodeType": "Block", + "src": "13609:60:42", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 7007, + "name": "Panic", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5585, + "src": "13635:5:42", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Panic_$5585_$", + "typeString": "type(library Panic)" + } + }, + "id": 7008, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "13641:16:42", + "memberName": "DIVISION_BY_ZERO", + "nodeType": "MemberAccess", + "referencedDeclaration": 5552, + "src": "13635:22:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 7004, + "name": "Panic", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5585, + "src": "13623:5:42", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Panic_$5585_$", + "typeString": "type(library Panic)" + } + }, + "id": 7006, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13629:5:42", + "memberName": "panic", + "nodeType": "MemberAccess", + "referencedDeclaration": 5584, + "src": "13623:11:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$", + "typeString": "function (uint256) pure" + } + }, + "id": 7009, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13623:35:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7010, + "nodeType": "ExpressionStatement", + "src": "13623:35:42" + } + ] + } + }, + { + "expression": { + "id": 7013, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6995, + "src": "13685:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 6991, + "id": 7014, + "nodeType": "Return", + "src": "13678:13:42" + } + ] + }, + "documentation": { + "id": 6981, + "nodeType": "StructuredDocumentation", + "src": "12760:678:42", + "text": " @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m)\n Requirements:\n - modulus can't be zero\n - underlying staticcall to precompile must succeed\n IMPORTANT: The result is only valid if the underlying call succeeds. When using this function, make\n sure the chain you're using it on supports the precompiled contract for modular exponentiation\n at address 0x05 as specified in https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise,\n the underlying function will succeed given the lack of a revert, but the result may be incorrectly\n interpreted as 0." + }, + "id": 7016, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "modExp", + "nameLocation": "13452:6:42", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 6988, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6983, + "mutability": "mutable", + "name": "b", + "nameLocation": "13467:1:42", + "nodeType": "VariableDeclaration", + "scope": 7016, + "src": "13459:9:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6982, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13459:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6985, + "mutability": "mutable", + "name": "e", + "nameLocation": "13478:1:42", + "nodeType": "VariableDeclaration", + "scope": 7016, + "src": "13470:9:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6984, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13470:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 6987, + "mutability": "mutable", + "name": "m", + "nameLocation": "13489:1:42", + "nodeType": "VariableDeclaration", + "scope": 7016, + "src": "13481:9:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6986, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13481:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "13458:33:42" + }, + "returnParameters": { + "id": 6991, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6990, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7016, + "src": "13515:7:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 6989, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13515:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "13514:9:42" + }, + "scope": 7995, + "src": "13443:255:42", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7039, + "nodeType": "Block", + "src": "14552:1493:42", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7032, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7030, + "name": "m", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7023, + "src": "14566:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 7031, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14571:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14566:6:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7037, + "nodeType": "IfStatement", + "src": "14562:29:42", + "trueBody": { + "expression": { + "components": [ + { + "hexValue": "66616c7365", + "id": 7033, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14582:5:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + { + "hexValue": "30", + "id": 7034, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14589:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 7035, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "14581:10:42", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", + "typeString": "tuple(bool,int_const 0)" + } + }, + "functionReturnParameters": 7029, + "id": 7036, + "nodeType": "Return", + "src": "14574:17:42" + } + }, + { + "AST": { + "nativeSrc": "14626:1413:42", + "nodeType": "YulBlock", + "src": "14626:1413:42", + "statements": [ + { + "nativeSrc": "14640:22:42", + "nodeType": "YulVariableDeclaration", + "src": "14640:22:42", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14657:4:42", + "nodeType": "YulLiteral", + "src": "14657:4:42", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "14651:5:42", + "nodeType": "YulIdentifier", + "src": "14651:5:42" + }, + "nativeSrc": "14651:11:42", + "nodeType": "YulFunctionCall", + "src": "14651:11:42" + }, + "variables": [ + { + "name": "ptr", + "nativeSrc": "14644:3:42", + "nodeType": "YulTypedName", + "src": "14644:3:42", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "ptr", + "nativeSrc": "15570:3:42", + "nodeType": "YulIdentifier", + "src": "15570:3:42" + }, + { + "kind": "number", + "nativeSrc": "15575:4:42", + "nodeType": "YulLiteral", + "src": "15575:4:42", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "15563:6:42", + "nodeType": "YulIdentifier", + "src": "15563:6:42" + }, + "nativeSrc": "15563:17:42", + "nodeType": "YulFunctionCall", + "src": "15563:17:42" + }, + "nativeSrc": "15563:17:42", + "nodeType": "YulExpressionStatement", + "src": "15563:17:42" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "ptr", + "nativeSrc": "15604:3:42", + "nodeType": "YulIdentifier", + "src": "15604:3:42" + }, + { + "kind": "number", + "nativeSrc": "15609:4:42", + "nodeType": "YulLiteral", + "src": "15609:4:42", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15600:3:42", + "nodeType": "YulIdentifier", + "src": "15600:3:42" + }, + "nativeSrc": "15600:14:42", + "nodeType": "YulFunctionCall", + "src": "15600:14:42" + }, + { + "kind": "number", + "nativeSrc": "15616:4:42", + "nodeType": "YulLiteral", + "src": "15616:4:42", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "15593:6:42", + "nodeType": "YulIdentifier", + "src": "15593:6:42" + }, + "nativeSrc": "15593:28:42", + "nodeType": "YulFunctionCall", + "src": "15593:28:42" + }, + "nativeSrc": "15593:28:42", + "nodeType": "YulExpressionStatement", + "src": "15593:28:42" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "ptr", + "nativeSrc": "15645:3:42", + "nodeType": "YulIdentifier", + "src": "15645:3:42" + }, + { + "kind": "number", + "nativeSrc": "15650:4:42", + "nodeType": "YulLiteral", + "src": "15650:4:42", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15641:3:42", + "nodeType": "YulIdentifier", + "src": "15641:3:42" + }, + "nativeSrc": "15641:14:42", + "nodeType": "YulFunctionCall", + "src": "15641:14:42" + }, + { + "kind": "number", + "nativeSrc": "15657:4:42", + "nodeType": "YulLiteral", + "src": "15657:4:42", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "15634:6:42", + "nodeType": "YulIdentifier", + "src": "15634:6:42" + }, + "nativeSrc": "15634:28:42", + "nodeType": "YulFunctionCall", + "src": "15634:28:42" + }, + "nativeSrc": "15634:28:42", + "nodeType": "YulExpressionStatement", + "src": "15634:28:42" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "ptr", + "nativeSrc": "15686:3:42", + "nodeType": "YulIdentifier", + "src": "15686:3:42" + }, + { + "kind": "number", + "nativeSrc": "15691:4:42", + "nodeType": "YulLiteral", + "src": "15691:4:42", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15682:3:42", + "nodeType": "YulIdentifier", + "src": "15682:3:42" + }, + "nativeSrc": "15682:14:42", + "nodeType": "YulFunctionCall", + "src": "15682:14:42" + }, + { + "name": "b", + "nativeSrc": "15698:1:42", + "nodeType": "YulIdentifier", + "src": "15698:1:42" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "15675:6:42", + "nodeType": "YulIdentifier", + "src": "15675:6:42" + }, + "nativeSrc": "15675:25:42", + "nodeType": "YulFunctionCall", + "src": "15675:25:42" + }, + "nativeSrc": "15675:25:42", + "nodeType": "YulExpressionStatement", + "src": "15675:25:42" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "ptr", + "nativeSrc": "15724:3:42", + "nodeType": "YulIdentifier", + "src": "15724:3:42" + }, + { + "kind": "number", + "nativeSrc": "15729:4:42", + "nodeType": "YulLiteral", + "src": "15729:4:42", + "type": "", + "value": "0x80" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15720:3:42", + "nodeType": "YulIdentifier", + "src": "15720:3:42" + }, + "nativeSrc": "15720:14:42", + "nodeType": "YulFunctionCall", + "src": "15720:14:42" + }, + { + "name": "e", + "nativeSrc": "15736:1:42", + "nodeType": "YulIdentifier", + "src": "15736:1:42" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "15713:6:42", + "nodeType": "YulIdentifier", + "src": "15713:6:42" + }, + "nativeSrc": "15713:25:42", + "nodeType": "YulFunctionCall", + "src": "15713:25:42" + }, + "nativeSrc": "15713:25:42", + "nodeType": "YulExpressionStatement", + "src": "15713:25:42" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "ptr", + "nativeSrc": "15762:3:42", + "nodeType": "YulIdentifier", + "src": "15762:3:42" + }, + { + "kind": "number", + "nativeSrc": "15767:4:42", + "nodeType": "YulLiteral", + "src": "15767:4:42", + "type": "", + "value": "0xa0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15758:3:42", + "nodeType": "YulIdentifier", + "src": "15758:3:42" + }, + "nativeSrc": "15758:14:42", + "nodeType": "YulFunctionCall", + "src": "15758:14:42" + }, + { + "name": "m", + "nativeSrc": "15774:1:42", + "nodeType": "YulIdentifier", + "src": "15774:1:42" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "15751:6:42", + "nodeType": "YulIdentifier", + "src": "15751:6:42" + }, + "nativeSrc": "15751:25:42", + "nodeType": "YulFunctionCall", + "src": "15751:25:42" + }, + "nativeSrc": "15751:25:42", + "nodeType": "YulExpressionStatement", + "src": "15751:25:42" + }, + { + "nativeSrc": "15938:57:42", + "nodeType": "YulAssignment", + "src": "15938:57:42", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "15960:3:42", + "nodeType": "YulIdentifier", + "src": "15960:3:42" + }, + "nativeSrc": "15960:5:42", + "nodeType": "YulFunctionCall", + "src": "15960:5:42" + }, + { + "kind": "number", + "nativeSrc": "15967:4:42", + "nodeType": "YulLiteral", + "src": "15967:4:42", + "type": "", + "value": "0x05" + }, + { + "name": "ptr", + "nativeSrc": "15973:3:42", + "nodeType": "YulIdentifier", + "src": "15973:3:42" + }, + { + "kind": "number", + "nativeSrc": "15978:4:42", + "nodeType": "YulLiteral", + "src": "15978:4:42", + "type": "", + "value": "0xc0" + }, + { + "kind": "number", + "nativeSrc": "15984:4:42", + "nodeType": "YulLiteral", + "src": "15984:4:42", + "type": "", + "value": "0x00" + }, + { + "kind": "number", + "nativeSrc": "15990:4:42", + "nodeType": "YulLiteral", + "src": "15990:4:42", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "15949:10:42", + "nodeType": "YulIdentifier", + "src": "15949:10:42" + }, + "nativeSrc": "15949:46:42", + "nodeType": "YulFunctionCall", + "src": "15949:46:42" + }, + "variableNames": [ + { + "name": "success", + "nativeSrc": "15938:7:42", + "nodeType": "YulIdentifier", + "src": "15938:7:42" + } + ] + }, + { + "nativeSrc": "16008:21:42", + "nodeType": "YulAssignment", + "src": "16008:21:42", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "16024:4:42", + "nodeType": "YulLiteral", + "src": "16024:4:42", + "type": "", + "value": "0x00" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "16018:5:42", + "nodeType": "YulIdentifier", + "src": "16018:5:42" + }, + "nativeSrc": "16018:11:42", + "nodeType": "YulFunctionCall", + "src": "16018:11:42" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "16008:6:42", + "nodeType": "YulIdentifier", + "src": "16008:6:42" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 7019, + "isOffset": false, + "isSlot": false, + "src": "15698:1:42", + "valueSize": 1 + }, + { + "declaration": 7021, + "isOffset": false, + "isSlot": false, + "src": "15736:1:42", + "valueSize": 1 + }, + { + "declaration": 7023, + "isOffset": false, + "isSlot": false, + "src": "15774:1:42", + "valueSize": 1 + }, + { + "declaration": 7028, + "isOffset": false, + "isSlot": false, + "src": "16008:6:42", + "valueSize": 1 + }, + { + "declaration": 7026, + "isOffset": false, + "isSlot": false, + "src": "15938:7:42", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 7038, + "nodeType": "InlineAssembly", + "src": "14601:1438:42" + } + ] + }, + "documentation": { + "id": 7017, + "nodeType": "StructuredDocumentation", + "src": "13704:738:42", + "text": " @dev Returns the modular exponentiation of the specified base, exponent and modulus (b ** e % m).\n It includes a success flag indicating if the operation succeeded. Operation will be marked as failed if trying\n to operate modulo 0 or if the underlying precompile reverted.\n IMPORTANT: The result is only valid if the success flag is true. When using this function, make sure the chain\n you're using it on supports the precompiled contract for modular exponentiation at address 0x05 as specified in\n https://eips.ethereum.org/EIPS/eip-198[EIP-198]. Otherwise, the underlying function will succeed given the lack\n of a revert, but the result may be incorrectly interpreted as 0." + }, + "id": 7040, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryModExp", + "nameLocation": "14456:9:42", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7024, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7019, + "mutability": "mutable", + "name": "b", + "nameLocation": "14474:1:42", + "nodeType": "VariableDeclaration", + "scope": 7040, + "src": "14466:9:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7018, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14466:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7021, + "mutability": "mutable", + "name": "e", + "nameLocation": "14485:1:42", + "nodeType": "VariableDeclaration", + "scope": 7040, + "src": "14477:9:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7020, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14477:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7023, + "mutability": "mutable", + "name": "m", + "nameLocation": "14496:1:42", + "nodeType": "VariableDeclaration", + "scope": 7040, + "src": "14488:9:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7022, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14488:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "14465:33:42" + }, + "returnParameters": { + "id": 7029, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7026, + "mutability": "mutable", + "name": "success", + "nameLocation": "14527:7:42", + "nodeType": "VariableDeclaration", + "scope": 7040, + "src": "14522:12:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7025, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "14522:4:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7028, + "mutability": "mutable", + "name": "result", + "nameLocation": "14544:6:42", + "nodeType": "VariableDeclaration", + "scope": 7040, + "src": "14536:14:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7027, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14536:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "14521:30:42" + }, + "scope": 7995, + "src": "14447:1598:42", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7075, + "nodeType": "Block", + "src": "16242:179:42", + "statements": [ + { + "assignments": [ + 7053, + 7055 + ], + "declarations": [ + { + "constant": false, + "id": 7053, + "mutability": "mutable", + "name": "success", + "nameLocation": "16258:7:42", + "nodeType": "VariableDeclaration", + "scope": 7075, + "src": "16253:12:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7052, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "16253:4:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7055, + "mutability": "mutable", + "name": "result", + "nameLocation": "16280:6:42", + "nodeType": "VariableDeclaration", + "scope": 7075, + "src": "16267:19:42", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7054, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "16267:5:42", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "id": 7061, + "initialValue": { + "arguments": [ + { + "id": 7057, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7043, + "src": "16300:1:42", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 7058, + "name": "e", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7045, + "src": "16303:1:42", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 7059, + "name": "m", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7047, + "src": "16306:1:42", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 7056, + "name": "tryModExp", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 7040, + 7122 + ], + "referencedDeclaration": 7122, + "src": "16290:9:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory,bytes memory,bytes memory) view returns (bool,bytes memory)" + } + }, + "id": 7060, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16290:18:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16252:56:42" + }, + { + "condition": { + "id": 7063, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "16322:8:42", + "subExpression": { + "id": 7062, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7053, + "src": "16323:7:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7072, + "nodeType": "IfStatement", + "src": "16318:74:42", + "trueBody": { + "id": 7071, + "nodeType": "Block", + "src": "16332:60:42", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 7067, + "name": "Panic", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5585, + "src": "16358:5:42", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Panic_$5585_$", + "typeString": "type(library Panic)" + } + }, + "id": 7068, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "16364:16:42", + "memberName": "DIVISION_BY_ZERO", + "nodeType": "MemberAccess", + "referencedDeclaration": 5552, + "src": "16358:22:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 7064, + "name": "Panic", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5585, + "src": "16346:5:42", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Panic_$5585_$", + "typeString": "type(library Panic)" + } + }, + "id": 7066, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16352:5:42", + "memberName": "panic", + "nodeType": "MemberAccess", + "referencedDeclaration": 5584, + "src": "16346:11:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$__$", + "typeString": "function (uint256) pure" + } + }, + "id": 7069, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16346:35:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 7070, + "nodeType": "ExpressionStatement", + "src": "16346:35:42" + } + ] + } + }, + { + "expression": { + "id": 7073, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7055, + "src": "16408:6:42", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 7051, + "id": 7074, + "nodeType": "Return", + "src": "16401:13:42" + } + ] + }, + "documentation": { + "id": 7041, + "nodeType": "StructuredDocumentation", + "src": "16051:85:42", + "text": " @dev Variant of {modExp} that supports inputs of arbitrary length." + }, + "id": 7076, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "modExp", + "nameLocation": "16150:6:42", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7048, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7043, + "mutability": "mutable", + "name": "b", + "nameLocation": "16170:1:42", + "nodeType": "VariableDeclaration", + "scope": 7076, + "src": "16157:14:42", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7042, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "16157:5:42", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7045, + "mutability": "mutable", + "name": "e", + "nameLocation": "16186:1:42", + "nodeType": "VariableDeclaration", + "scope": 7076, + "src": "16173:14:42", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7044, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "16173:5:42", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7047, + "mutability": "mutable", + "name": "m", + "nameLocation": "16202:1:42", + "nodeType": "VariableDeclaration", + "scope": 7076, + "src": "16189:14:42", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7046, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "16189:5:42", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "16156:48:42" + }, + "returnParameters": { + "id": 7051, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7050, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7076, + "src": "16228:12:42", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7049, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "16228:5:42", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "16227:14:42" + }, + "scope": 7995, + "src": "16141:280:42", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7121, + "nodeType": "Block", + "src": "16675:771:42", + "statements": [ + { + "condition": { + "arguments": [ + { + "id": 7091, + "name": "m", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7083, + "src": "16700:1:42", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 7090, + "name": "_zeroBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7155, + "src": "16689:10:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (bytes memory) pure returns (bool)" + } + }, + "id": 7092, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16689:13:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7100, + "nodeType": "IfStatement", + "src": "16685:47:42", + "trueBody": { + "expression": { + "components": [ + { + "hexValue": "66616c7365", + "id": 7093, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16712:5:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + { + "arguments": [ + { + "hexValue": "30", + "id": 7096, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16729:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 7095, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "16719:9:42", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (uint256) pure returns (bytes memory)" + }, + "typeName": { + "id": 7094, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "16723:5:42", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + } + }, + "id": 7097, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16719:12:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "id": 7098, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "16711:21:42", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "functionReturnParameters": 7089, + "id": 7099, + "nodeType": "Return", + "src": "16704:28:42" + } + }, + { + "assignments": [ + 7102 + ], + "declarations": [ + { + "constant": false, + "id": 7102, + "mutability": "mutable", + "name": "mLen", + "nameLocation": "16751:4:42", + "nodeType": "VariableDeclaration", + "scope": 7121, + "src": "16743:12:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7101, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16743:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7105, + "initialValue": { + "expression": { + "id": 7103, + "name": "m", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7083, + "src": "16758:1:42", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 7104, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16760:6:42", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "16758:8:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16743:23:42" + }, + { + "expression": { + "id": 7118, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7106, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7088, + "src": "16848:6:42", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "expression": { + "id": 7109, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7079, + "src": "16874:1:42", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 7110, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16876:6:42", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "16874:8:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 7111, + "name": "e", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7081, + "src": "16884:1:42", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 7112, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16886:6:42", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "16884:8:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 7113, + "name": "mLen", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7102, + "src": "16894:4:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 7114, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7079, + "src": "16900:1:42", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 7115, + "name": "e", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7081, + "src": "16903:1:42", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "id": 7116, + "name": "m", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7083, + "src": "16906:1:42", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 7107, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "16857:3:42", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 7108, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "16861:12:42", + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "16857:16:42", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 7117, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16857:51:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "src": "16848:60:42", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 7119, + "nodeType": "ExpressionStatement", + "src": "16848:60:42" + }, + { + "AST": { + "nativeSrc": "16944:496:42", + "nodeType": "YulBlock", + "src": "16944:496:42", + "statements": [ + { + "nativeSrc": "16958:32:42", + "nodeType": "YulVariableDeclaration", + "src": "16958:32:42", + "value": { + "arguments": [ + { + "name": "result", + "nativeSrc": "16977:6:42", + "nodeType": "YulIdentifier", + "src": "16977:6:42" + }, + { + "kind": "number", + "nativeSrc": "16985:4:42", + "nodeType": "YulLiteral", + "src": "16985:4:42", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16973:3:42", + "nodeType": "YulIdentifier", + "src": "16973:3:42" + }, + "nativeSrc": "16973:17:42", + "nodeType": "YulFunctionCall", + "src": "16973:17:42" + }, + "variables": [ + { + "name": "dataPtr", + "nativeSrc": "16962:7:42", + "nodeType": "YulTypedName", + "src": "16962:7:42", + "type": "" + } + ] + }, + { + "nativeSrc": "17080:73:42", + "nodeType": "YulAssignment", + "src": "17080:73:42", + "value": { + "arguments": [ + { + "arguments": [], + "functionName": { + "name": "gas", + "nativeSrc": "17102:3:42", + "nodeType": "YulIdentifier", + "src": "17102:3:42" + }, + "nativeSrc": "17102:5:42", + "nodeType": "YulFunctionCall", + "src": "17102:5:42" + }, + { + "kind": "number", + "nativeSrc": "17109:4:42", + "nodeType": "YulLiteral", + "src": "17109:4:42", + "type": "", + "value": "0x05" + }, + { + "name": "dataPtr", + "nativeSrc": "17115:7:42", + "nodeType": "YulIdentifier", + "src": "17115:7:42" + }, + { + "arguments": [ + { + "name": "result", + "nativeSrc": "17130:6:42", + "nodeType": "YulIdentifier", + "src": "17130:6:42" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "17124:5:42", + "nodeType": "YulIdentifier", + "src": "17124:5:42" + }, + "nativeSrc": "17124:13:42", + "nodeType": "YulFunctionCall", + "src": "17124:13:42" + }, + { + "name": "dataPtr", + "nativeSrc": "17139:7:42", + "nodeType": "YulIdentifier", + "src": "17139:7:42" + }, + { + "name": "mLen", + "nativeSrc": "17148:4:42", + "nodeType": "YulIdentifier", + "src": "17148:4:42" + } + ], + "functionName": { + "name": "staticcall", + "nativeSrc": "17091:10:42", + "nodeType": "YulIdentifier", + "src": "17091:10:42" + }, + "nativeSrc": "17091:62:42", + "nodeType": "YulFunctionCall", + "src": "17091:62:42" + }, + "variableNames": [ + { + "name": "success", + "nativeSrc": "17080:7:42", + "nodeType": "YulIdentifier", + "src": "17080:7:42" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "result", + "nativeSrc": "17309:6:42", + "nodeType": "YulIdentifier", + "src": "17309:6:42" + }, + { + "name": "mLen", + "nativeSrc": "17317:4:42", + "nodeType": "YulIdentifier", + "src": "17317:4:42" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "17302:6:42", + "nodeType": "YulIdentifier", + "src": "17302:6:42" + }, + "nativeSrc": "17302:20:42", + "nodeType": "YulFunctionCall", + "src": "17302:20:42" + }, + "nativeSrc": "17302:20:42", + "nodeType": "YulExpressionStatement", + "src": "17302:20:42" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "17405:4:42", + "nodeType": "YulLiteral", + "src": "17405:4:42", + "type": "", + "value": "0x40" + }, + { + "arguments": [ + { + "name": "dataPtr", + "nativeSrc": "17415:7:42", + "nodeType": "YulIdentifier", + "src": "17415:7:42" + }, + { + "name": "mLen", + "nativeSrc": "17424:4:42", + "nodeType": "YulIdentifier", + "src": "17424:4:42" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17411:3:42", + "nodeType": "YulIdentifier", + "src": "17411:3:42" + }, + "nativeSrc": "17411:18:42", + "nodeType": "YulFunctionCall", + "src": "17411:18:42" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "17398:6:42", + "nodeType": "YulIdentifier", + "src": "17398:6:42" + }, + "nativeSrc": "17398:32:42", + "nodeType": "YulFunctionCall", + "src": "17398:32:42" + }, + "nativeSrc": "17398:32:42", + "nodeType": "YulExpressionStatement", + "src": "17398:32:42" + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 7102, + "isOffset": false, + "isSlot": false, + "src": "17148:4:42", + "valueSize": 1 + }, + { + "declaration": 7102, + "isOffset": false, + "isSlot": false, + "src": "17317:4:42", + "valueSize": 1 + }, + { + "declaration": 7102, + "isOffset": false, + "isSlot": false, + "src": "17424:4:42", + "valueSize": 1 + }, + { + "declaration": 7088, + "isOffset": false, + "isSlot": false, + "src": "16977:6:42", + "valueSize": 1 + }, + { + "declaration": 7088, + "isOffset": false, + "isSlot": false, + "src": "17130:6:42", + "valueSize": 1 + }, + { + "declaration": 7088, + "isOffset": false, + "isSlot": false, + "src": "17309:6:42", + "valueSize": 1 + }, + { + "declaration": 7086, + "isOffset": false, + "isSlot": false, + "src": "17080:7:42", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 7120, + "nodeType": "InlineAssembly", + "src": "16919:521:42" + } + ] + }, + "documentation": { + "id": 7077, + "nodeType": "StructuredDocumentation", + "src": "16427:88:42", + "text": " @dev Variant of {tryModExp} that supports inputs of arbitrary length." + }, + "id": 7122, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryModExp", + "nameLocation": "16529:9:42", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7084, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7079, + "mutability": "mutable", + "name": "b", + "nameLocation": "16561:1:42", + "nodeType": "VariableDeclaration", + "scope": 7122, + "src": "16548:14:42", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7078, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "16548:5:42", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7081, + "mutability": "mutable", + "name": "e", + "nameLocation": "16585:1:42", + "nodeType": "VariableDeclaration", + "scope": 7122, + "src": "16572:14:42", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7080, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "16572:5:42", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7083, + "mutability": "mutable", + "name": "m", + "nameLocation": "16609:1:42", + "nodeType": "VariableDeclaration", + "scope": 7122, + "src": "16596:14:42", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7082, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "16596:5:42", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "16538:78:42" + }, + "returnParameters": { + "id": 7089, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7086, + "mutability": "mutable", + "name": "success", + "nameLocation": "16645:7:42", + "nodeType": "VariableDeclaration", + "scope": 7122, + "src": "16640:12:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7085, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "16640:4:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7088, + "mutability": "mutable", + "name": "result", + "nameLocation": "16667:6:42", + "nodeType": "VariableDeclaration", + "scope": 7122, + "src": "16654:19:42", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7087, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "16654:5:42", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "16639:35:42" + }, + "scope": 7995, + "src": "16520:926:42", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7154, + "nodeType": "Block", + "src": "17601:176:42", + "statements": [ + { + "body": { + "id": 7150, + "nodeType": "Block", + "src": "17658:92:42", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + "id": 7145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 7141, + "name": "byteArray", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7125, + "src": "17676:9:42", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 7143, + "indexExpression": { + "id": 7142, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7131, + "src": "17686:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17676:12:42", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 7144, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17692:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "17676:17:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7149, + "nodeType": "IfStatement", + "src": "17672:68:42", + "trueBody": { + "id": 7148, + "nodeType": "Block", + "src": "17695:45:42", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 7146, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17720:5:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 7129, + "id": 7147, + "nodeType": "Return", + "src": "17713:12:42" + } + ] + } + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7137, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7134, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7131, + "src": "17631:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 7135, + "name": "byteArray", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7125, + "src": "17635:9:42", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 7136, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17645:6:42", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "17635:16:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "17631:20:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7151, + "initializationExpression": { + "assignments": [ + 7131 + ], + "declarations": [ + { + "constant": false, + "id": 7131, + "mutability": "mutable", + "name": "i", + "nameLocation": "17624:1:42", + "nodeType": "VariableDeclaration", + "scope": 7151, + "src": "17616:9:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7130, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17616:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7133, + "initialValue": { + "hexValue": "30", + "id": 7132, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17628:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "17616:13:42" + }, + "isSimpleCounterLoop": true, + "loopExpression": { + "expression": { + "id": 7139, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": true, + "src": "17653:3:42", + "subExpression": { + "id": 7138, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7131, + "src": "17655:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7140, + "nodeType": "ExpressionStatement", + "src": "17653:3:42" + }, + "nodeType": "ForStatement", + "src": "17611:139:42" + }, + { + "expression": { + "hexValue": "74727565", + "id": 7152, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17766:4:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 7129, + "id": 7153, + "nodeType": "Return", + "src": "17759:11:42" + } + ] + }, + "documentation": { + "id": 7123, + "nodeType": "StructuredDocumentation", + "src": "17452:72:42", + "text": " @dev Returns whether the provided byte array is zero." + }, + "id": 7155, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_zeroBytes", + "nameLocation": "17538:10:42", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7126, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7125, + "mutability": "mutable", + "name": "byteArray", + "nameLocation": "17562:9:42", + "nodeType": "VariableDeclaration", + "scope": 7155, + "src": "17549:22:42", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7124, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "17549:5:42", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "17548:24:42" + }, + "returnParameters": { + "id": 7129, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7128, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7155, + "src": "17595:4:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7127, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "17595:4:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "17594:6:42" + }, + "scope": 7995, + "src": "17529:248:42", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 7373, + "nodeType": "Block", + "src": "18137:5124:42", + "statements": [ + { + "id": 7372, + "nodeType": "UncheckedBlock", + "src": "18147:5108:42", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7163, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7158, + "src": "18241:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "hexValue": "31", + "id": 7164, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18246:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "18241:6:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7169, + "nodeType": "IfStatement", + "src": "18237:53:42", + "trueBody": { + "id": 7168, + "nodeType": "Block", + "src": "18249:41:42", + "statements": [ + { + "expression": { + "id": 7166, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7158, + "src": "18274:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 7162, + "id": 7167, + "nodeType": "Return", + "src": "18267:8:42" + } + ] + } + }, + { + "assignments": [ + 7171 + ], + "declarations": [ + { + "constant": false, + "id": 7171, + "mutability": "mutable", + "name": "aa", + "nameLocation": "19225:2:42", + "nodeType": "VariableDeclaration", + "scope": 7372, + "src": "19217:10:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7170, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19217:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7173, + "initialValue": { + "id": 7172, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7158, + "src": "19230:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "19217:14:42" + }, + { + "assignments": [ + 7175 + ], + "declarations": [ + { + "constant": false, + "id": 7175, + "mutability": "mutable", + "name": "xn", + "nameLocation": "19253:2:42", + "nodeType": "VariableDeclaration", + "scope": 7372, + "src": "19245:10:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7174, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19245:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7177, + "initialValue": { + "hexValue": "31", + "id": 7176, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19258:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "VariableDeclarationStatement", + "src": "19245:14:42" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7183, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7178, + "name": "aa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7171, + "src": "19278:2:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1", + "typeString": "int_const 3402...(31 digits omitted)...1456" + }, + "id": 7181, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 7179, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19285:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "313238", + "id": 7180, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19290:3:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "19285:8:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1", + "typeString": "int_const 3402...(31 digits omitted)...1456" + } + } + ], + "id": 7182, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "19284:10:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1", + "typeString": "int_const 3402...(31 digits omitted)...1456" + } + }, + "src": "19278:16:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7193, + "nodeType": "IfStatement", + "src": "19274:92:42", + "trueBody": { + "id": 7192, + "nodeType": "Block", + "src": "19296:70:42", + "statements": [ + { + "expression": { + "id": 7186, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7184, + "name": "aa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7171, + "src": "19314:2:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "hexValue": "313238", + "id": 7185, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19321:3:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "19314:10:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7187, + "nodeType": "ExpressionStatement", + "src": "19314:10:42" + }, + { + "expression": { + "id": 7190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7188, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7175, + "src": "19342:2:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "<<=", + "rightHandSide": { + "hexValue": "3634", + "id": 7189, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19349:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "19342:9:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7191, + "nodeType": "ExpressionStatement", + "src": "19342:9:42" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7199, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7194, + "name": "aa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7171, + "src": "19383:2:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_rational_18446744073709551616_by_1", + "typeString": "int_const 18446744073709551616" + }, + "id": 7197, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 7195, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19390:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "3634", + "id": 7196, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19395:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "19390:7:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_18446744073709551616_by_1", + "typeString": "int_const 18446744073709551616" + } + } + ], + "id": 7198, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "19389:9:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_18446744073709551616_by_1", + "typeString": "int_const 18446744073709551616" + } + }, + "src": "19383:15:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7209, + "nodeType": "IfStatement", + "src": "19379:90:42", + "trueBody": { + "id": 7208, + "nodeType": "Block", + "src": "19400:69:42", + "statements": [ + { + "expression": { + "id": 7202, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7200, + "name": "aa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7171, + "src": "19418:2:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "hexValue": "3634", + "id": 7201, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19425:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "19418:9:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7203, + "nodeType": "ExpressionStatement", + "src": "19418:9:42" + }, + { + "expression": { + "id": 7206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7204, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7175, + "src": "19445:2:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "<<=", + "rightHandSide": { + "hexValue": "3332", + "id": 7205, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19452:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "19445:9:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7207, + "nodeType": "ExpressionStatement", + "src": "19445:9:42" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7215, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7210, + "name": "aa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7171, + "src": "19486:2:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_rational_4294967296_by_1", + "typeString": "int_const 4294967296" + }, + "id": 7213, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 7211, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19493:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "3332", + "id": 7212, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19498:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "19493:7:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_4294967296_by_1", + "typeString": "int_const 4294967296" + } + } + ], + "id": 7214, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "19492:9:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_4294967296_by_1", + "typeString": "int_const 4294967296" + } + }, + "src": "19486:15:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7225, + "nodeType": "IfStatement", + "src": "19482:90:42", + "trueBody": { + "id": 7224, + "nodeType": "Block", + "src": "19503:69:42", + "statements": [ + { + "expression": { + "id": 7218, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7216, + "name": "aa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7171, + "src": "19521:2:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "hexValue": "3332", + "id": 7217, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19528:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "19521:9:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7219, + "nodeType": "ExpressionStatement", + "src": "19521:9:42" + }, + { + "expression": { + "id": 7222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7220, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7175, + "src": "19548:2:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "<<=", + "rightHandSide": { + "hexValue": "3136", + "id": 7221, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19555:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "src": "19548:9:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7223, + "nodeType": "ExpressionStatement", + "src": "19548:9:42" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7226, + "name": "aa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7171, + "src": "19589:2:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_rational_65536_by_1", + "typeString": "int_const 65536" + }, + "id": 7229, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 7227, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19596:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "3136", + "id": 7228, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19601:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "src": "19596:7:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_65536_by_1", + "typeString": "int_const 65536" + } + } + ], + "id": 7230, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "19595:9:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_65536_by_1", + "typeString": "int_const 65536" + } + }, + "src": "19589:15:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7241, + "nodeType": "IfStatement", + "src": "19585:89:42", + "trueBody": { + "id": 7240, + "nodeType": "Block", + "src": "19606:68:42", + "statements": [ + { + "expression": { + "id": 7234, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7232, + "name": "aa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7171, + "src": "19624:2:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "hexValue": "3136", + "id": 7233, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19631:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "src": "19624:9:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7235, + "nodeType": "ExpressionStatement", + "src": "19624:9:42" + }, + { + "expression": { + "id": 7238, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7236, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7175, + "src": "19651:2:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "<<=", + "rightHandSide": { + "hexValue": "38", + "id": 7237, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19658:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "19651:8:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7239, + "nodeType": "ExpressionStatement", + "src": "19651:8:42" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7247, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7242, + "name": "aa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7171, + "src": "19691:2:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + }, + "id": 7245, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 7243, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19698:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "38", + "id": 7244, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19703:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "19698:6:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + } + } + ], + "id": 7246, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "19697:8:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + } + }, + "src": "19691:14:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7257, + "nodeType": "IfStatement", + "src": "19687:87:42", + "trueBody": { + "id": 7256, + "nodeType": "Block", + "src": "19707:67:42", + "statements": [ + { + "expression": { + "id": 7250, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7248, + "name": "aa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7171, + "src": "19725:2:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "hexValue": "38", + "id": 7249, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19732:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "19725:8:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7251, + "nodeType": "ExpressionStatement", + "src": "19725:8:42" + }, + { + "expression": { + "id": 7254, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7252, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7175, + "src": "19751:2:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "<<=", + "rightHandSide": { + "hexValue": "34", + "id": 7253, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19758:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "src": "19751:8:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7255, + "nodeType": "ExpressionStatement", + "src": "19751:8:42" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7258, + "name": "aa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7171, + "src": "19791:2:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "id": 7261, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 7259, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19798:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "34", + "id": 7260, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19803:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "src": "19798:6:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + } + } + ], + "id": 7262, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "19797:8:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + } + }, + "src": "19791:14:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7273, + "nodeType": "IfStatement", + "src": "19787:87:42", + "trueBody": { + "id": 7272, + "nodeType": "Block", + "src": "19807:67:42", + "statements": [ + { + "expression": { + "id": 7266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7264, + "name": "aa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7171, + "src": "19825:2:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "hexValue": "34", + "id": 7265, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19832:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "src": "19825:8:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7267, + "nodeType": "ExpressionStatement", + "src": "19825:8:42" + }, + { + "expression": { + "id": 7270, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7268, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7175, + "src": "19851:2:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "<<=", + "rightHandSide": { + "hexValue": "32", + "id": 7269, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19858:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "19851:8:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7271, + "nodeType": "ExpressionStatement", + "src": "19851:8:42" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7279, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7274, + "name": "aa", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7171, + "src": "19891:2:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "id": 7277, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 7275, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19898:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "32", + "id": 7276, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19903:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "19898:6:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + } + } + ], + "id": 7278, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "19897:8:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + } + }, + "src": "19891:14:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7285, + "nodeType": "IfStatement", + "src": "19887:61:42", + "trueBody": { + "id": 7284, + "nodeType": "Block", + "src": "19907:41:42", + "statements": [ + { + "expression": { + "id": 7282, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7280, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7175, + "src": "19925:2:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "<<=", + "rightHandSide": { + "hexValue": "31", + "id": 7281, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19932:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "19925:8:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7283, + "nodeType": "ExpressionStatement", + "src": "19925:8:42" + } + ] + } + }, + { + "expression": { + "id": 7293, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7286, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7175, + "src": "20368:2:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7289, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "33", + "id": 7287, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20374:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 7288, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7175, + "src": "20378:2:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "20374:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 7290, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "20373:8:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "31", + "id": 7291, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20385:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "20373:13:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "20368:18:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7294, + "nodeType": "ExpressionStatement", + "src": "20368:18:42" + }, + { + "expression": { + "id": 7304, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7295, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7175, + "src": "22273:2:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7303, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7300, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7296, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7175, + "src": "22279:2:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7299, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7297, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7158, + "src": "22284:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 7298, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7175, + "src": "22288:2:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22284:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22279:11:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 7301, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "22278:13:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "31", + "id": 7302, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22295:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "22278:18:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22273:23:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7305, + "nodeType": "ExpressionStatement", + "src": "22273:23:42" + }, + { + "expression": { + "id": 7315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7306, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7175, + "src": "22382:2:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7314, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7311, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7307, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7175, + "src": "22388:2:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7310, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7308, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7158, + "src": "22393:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 7309, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7175, + "src": "22397:2:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22393:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22388:11:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 7312, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "22387:13:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "31", + "id": 7313, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22404:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "22387:18:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22382:23:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7316, + "nodeType": "ExpressionStatement", + "src": "22382:23:42" + }, + { + "expression": { + "id": 7326, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7317, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7175, + "src": "22493:2:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7322, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7318, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7175, + "src": "22499:2:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7321, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7319, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7158, + "src": "22504:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 7320, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7175, + "src": "22508:2:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22504:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22499:11:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 7323, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "22498:13:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "31", + "id": 7324, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22515:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "22498:18:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22493:23:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7327, + "nodeType": "ExpressionStatement", + "src": "22493:23:42" + }, + { + "expression": { + "id": 7337, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7328, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7175, + "src": "22602:2:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7333, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7329, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7175, + "src": "22608:2:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7330, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7158, + "src": "22613:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 7331, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7175, + "src": "22617:2:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22613:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22608:11:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 7334, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "22607:13:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "31", + "id": 7335, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22624:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "22607:18:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22602:23:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7338, + "nodeType": "ExpressionStatement", + "src": "22602:23:42" + }, + { + "expression": { + "id": 7348, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7339, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7175, + "src": "22712:2:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7347, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7344, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7340, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7175, + "src": "22718:2:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7341, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7158, + "src": "22723:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 7342, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7175, + "src": "22727:2:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22723:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22718:11:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 7345, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "22717:13:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "31", + "id": 7346, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22734:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "22717:18:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22712:23:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7349, + "nodeType": "ExpressionStatement", + "src": "22712:23:42" + }, + { + "expression": { + "id": 7359, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7350, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7175, + "src": "22822:2:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7355, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7351, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7175, + "src": "22828:2:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7354, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7352, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7158, + "src": "22833:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 7353, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7175, + "src": "22837:2:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22833:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22828:11:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 7356, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "22827:13:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "31", + "id": 7357, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22844:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "22827:18:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22822:23:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7360, + "nodeType": "ExpressionStatement", + "src": "22822:23:42" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7370, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7361, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7175, + "src": "23211:2:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7364, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7175, + "src": "23232:2:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7367, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7365, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7158, + "src": "23237:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "id": 7366, + "name": "xn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7175, + "src": "23241:2:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "23237:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "23232:11:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 7362, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9760, + "src": "23216:8:42", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$9760_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 7363, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "23225:6:42", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 9759, + "src": "23216:15:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 7369, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23216:28:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "23211:33:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 7162, + "id": 7371, + "nodeType": "Return", + "src": "23204:40:42" + } + ] + } + ] + }, + "documentation": { + "id": 7156, + "nodeType": "StructuredDocumentation", + "src": "17783:292:42", + "text": " @dev Returns the square root of a number. If the number is not a perfect square, the value is rounded\n towards zero.\n This method is based on Newton's method for computing square roots; the algorithm is restricted to only\n using integer operations." + }, + "id": 7374, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sqrt", + "nameLocation": "18089:4:42", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7159, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7158, + "mutability": "mutable", + "name": "a", + "nameLocation": "18102:1:42", + "nodeType": "VariableDeclaration", + "scope": 7374, + "src": "18094:9:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7157, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18094:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "18093:11:42" + }, + "returnParameters": { + "id": 7162, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7161, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7374, + "src": "18128:7:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7160, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18128:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "18127:9:42" + }, + "scope": 7995, + "src": "18080:5181:42", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7407, + "nodeType": "Block", + "src": "23434:171:42", + "statements": [ + { + "id": 7406, + "nodeType": "UncheckedBlock", + "src": "23444:155:42", + "statements": [ + { + "assignments": [ + 7386 + ], + "declarations": [ + { + "constant": false, + "id": 7386, + "mutability": "mutable", + "name": "result", + "nameLocation": "23476:6:42", + "nodeType": "VariableDeclaration", + "scope": 7406, + "src": "23468:14:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7385, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "23468:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7390, + "initialValue": { + "arguments": [ + { + "id": 7388, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7377, + "src": "23490:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7387, + "name": "sqrt", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 7374, + 7408 + ], + "referencedDeclaration": 7374, + "src": "23485:4:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint256)" + } + }, + "id": 7389, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23485:7:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "23468:24:42" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7404, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7391, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7386, + "src": "23513:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 7402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 7395, + "name": "rounding", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7380, + "src": "23555:8:42", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$6401", + "typeString": "enum Math.Rounding" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_enum$_Rounding_$6401", + "typeString": "enum Math.Rounding" + } + ], + "id": 7394, + "name": "unsignedRoundsUp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7994, + "src": "23538:16:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_enum$_Rounding_$6401_$returns$_t_bool_$", + "typeString": "function (enum Math.Rounding) pure returns (bool)" + } + }, + "id": 7396, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23538:26:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7401, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7399, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7397, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7386, + "src": "23568:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "id": 7398, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7386, + "src": "23577:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "23568:15:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 7400, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7377, + "src": "23586:1:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "23568:19:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "23538:49:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 7392, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9760, + "src": "23522:8:42", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$9760_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 7393, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "23531:6:42", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 9759, + "src": "23522:15:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 7403, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23522:66:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "23513:75:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 7384, + "id": 7405, + "nodeType": "Return", + "src": "23506:82:42" + } + ] + } + ] + }, + "documentation": { + "id": 7375, + "nodeType": "StructuredDocumentation", + "src": "23267:86:42", + "text": " @dev Calculates sqrt(a), following the selected rounding direction." + }, + "id": 7408, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sqrt", + "nameLocation": "23367:4:42", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7381, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7377, + "mutability": "mutable", + "name": "a", + "nameLocation": "23380:1:42", + "nodeType": "VariableDeclaration", + "scope": 7408, + "src": "23372:9:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7376, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "23372:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7380, + "mutability": "mutable", + "name": "rounding", + "nameLocation": "23392:8:42", + "nodeType": "VariableDeclaration", + "scope": 7408, + "src": "23383:17:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$6401", + "typeString": "enum Math.Rounding" + }, + "typeName": { + "id": 7379, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7378, + "name": "Rounding", + "nameLocations": [ + "23383:8:42" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6401, + "src": "23383:8:42" + }, + "referencedDeclaration": 6401, + "src": "23383:8:42", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$6401", + "typeString": "enum Math.Rounding" + } + }, + "visibility": "internal" + } + ], + "src": "23371:30:42" + }, + "returnParameters": { + "id": 7384, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7383, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7408, + "src": "23425:7:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7382, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "23425:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "23424:9:42" + }, + "scope": 7995, + "src": "23358:247:42", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7603, + "nodeType": "Block", + "src": "23796:981:42", + "statements": [ + { + "assignments": [ + 7417 + ], + "declarations": [ + { + "constant": false, + "id": 7417, + "mutability": "mutable", + "name": "result", + "nameLocation": "23814:6:42", + "nodeType": "VariableDeclaration", + "scope": 7603, + "src": "23806:14:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7416, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "23806:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7419, + "initialValue": { + "hexValue": "30", + "id": 7418, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23823:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "23806:18:42" + }, + { + "assignments": [ + 7421 + ], + "declarations": [ + { + "constant": false, + "id": 7421, + "mutability": "mutable", + "name": "exp", + "nameLocation": "23842:3:42", + "nodeType": "VariableDeclaration", + "scope": 7603, + "src": "23834:11:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7420, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "23834:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7422, + "nodeType": "VariableDeclarationStatement", + "src": "23834:11:42" + }, + { + "id": 7600, + "nodeType": "UncheckedBlock", + "src": "23855:893:42", + "statements": [ + { + "expression": { + "id": 7437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7423, + "name": "exp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7421, + "src": "23879:3:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7436, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "313238", + "id": 7424, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23885:3:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7434, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7427, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7411, + "src": "23907:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_rational_340282366920938463463374607431768211455_by_1", + "typeString": "int_const 3402...(31 digits omitted)...1455" + }, + "id": 7433, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1", + "typeString": "int_const 3402...(31 digits omitted)...1456" + }, + "id": 7430, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 7428, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23916:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "313238", + "id": 7429, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23921:3:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "23916:8:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1", + "typeString": "int_const 3402...(31 digits omitted)...1456" + } + } + ], + "id": 7431, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "23915:10:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1", + "typeString": "int_const 3402...(31 digits omitted)...1456" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 7432, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23928:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "23915:14:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_340282366920938463463374607431768211455_by_1", + "typeString": "int_const 3402...(31 digits omitted)...1455" + } + }, + "src": "23907:22:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 7425, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9760, + "src": "23891:8:42", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$9760_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 7426, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "23900:6:42", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 9759, + "src": "23891:15:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 7435, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23891:39:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "23885:45:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "23879:51:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7438, + "nodeType": "ExpressionStatement", + "src": "23879:51:42" + }, + { + "expression": { + "id": 7441, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7439, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7411, + "src": "23944:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "id": 7440, + "name": "exp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7421, + "src": "23954:3:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "23944:13:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7442, + "nodeType": "ExpressionStatement", + "src": "23944:13:42" + }, + { + "expression": { + "id": 7445, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7443, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7417, + "src": "23971:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 7444, + "name": "exp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7421, + "src": "23981:3:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "23971:13:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7446, + "nodeType": "ExpressionStatement", + "src": "23971:13:42" + }, + { + "expression": { + "id": 7461, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7447, + "name": "exp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7421, + "src": "23999:3:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7460, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3634", + "id": 7448, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24005:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7458, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7451, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7411, + "src": "24026:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_rational_18446744073709551615_by_1", + "typeString": "int_const 18446744073709551615" + }, + "id": 7457, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_rational_18446744073709551616_by_1", + "typeString": "int_const 18446744073709551616" + }, + "id": 7454, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 7452, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24035:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "3634", + "id": 7453, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24040:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "24035:7:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_18446744073709551616_by_1", + "typeString": "int_const 18446744073709551616" + } + } + ], + "id": 7455, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "24034:9:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_18446744073709551616_by_1", + "typeString": "int_const 18446744073709551616" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 7456, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24046:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "24034:13:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_18446744073709551615_by_1", + "typeString": "int_const 18446744073709551615" + } + }, + "src": "24026:21:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 7449, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9760, + "src": "24010:8:42", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$9760_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 7450, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "24019:6:42", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 9759, + "src": "24010:15:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 7459, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24010:38:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24005:43:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "23999:49:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7462, + "nodeType": "ExpressionStatement", + "src": "23999:49:42" + }, + { + "expression": { + "id": 7465, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7463, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7411, + "src": "24062:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "id": 7464, + "name": "exp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7421, + "src": "24072:3:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24062:13:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7466, + "nodeType": "ExpressionStatement", + "src": "24062:13:42" + }, + { + "expression": { + "id": 7469, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7467, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7417, + "src": "24089:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 7468, + "name": "exp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7421, + "src": "24099:3:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24089:13:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7470, + "nodeType": "ExpressionStatement", + "src": "24089:13:42" + }, + { + "expression": { + "id": 7485, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7471, + "name": "exp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7421, + "src": "24117:3:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7484, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3332", + "id": 7472, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24123:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7482, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7475, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7411, + "src": "24144:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_rational_4294967295_by_1", + "typeString": "int_const 4294967295" + }, + "id": 7481, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_rational_4294967296_by_1", + "typeString": "int_const 4294967296" + }, + "id": 7478, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 7476, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24153:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "3332", + "id": 7477, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24158:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "24153:7:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_4294967296_by_1", + "typeString": "int_const 4294967296" + } + } + ], + "id": 7479, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "24152:9:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_4294967296_by_1", + "typeString": "int_const 4294967296" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 7480, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24164:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "24152:13:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_4294967295_by_1", + "typeString": "int_const 4294967295" + } + }, + "src": "24144:21:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 7473, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9760, + "src": "24128:8:42", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$9760_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 7474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "24137:6:42", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 9759, + "src": "24128:15:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 7483, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24128:38:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24123:43:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24117:49:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7486, + "nodeType": "ExpressionStatement", + "src": "24117:49:42" + }, + { + "expression": { + "id": 7489, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7487, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7411, + "src": "24180:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "id": 7488, + "name": "exp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7421, + "src": "24190:3:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24180:13:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7490, + "nodeType": "ExpressionStatement", + "src": "24180:13:42" + }, + { + "expression": { + "id": 7493, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7491, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7417, + "src": "24207:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 7492, + "name": "exp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7421, + "src": "24217:3:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24207:13:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7494, + "nodeType": "ExpressionStatement", + "src": "24207:13:42" + }, + { + "expression": { + "id": 7509, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7495, + "name": "exp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7421, + "src": "24235:3:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7508, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3136", + "id": 7496, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24241:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7499, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7411, + "src": "24262:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_rational_65535_by_1", + "typeString": "int_const 65535" + }, + "id": 7505, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_rational_65536_by_1", + "typeString": "int_const 65536" + }, + "id": 7502, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 7500, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24271:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "3136", + "id": 7501, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24276:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "src": "24271:7:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_65536_by_1", + "typeString": "int_const 65536" + } + } + ], + "id": 7503, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "24270:9:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_65536_by_1", + "typeString": "int_const 65536" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 7504, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24282:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "24270:13:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_65535_by_1", + "typeString": "int_const 65535" + } + }, + "src": "24262:21:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 7497, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9760, + "src": "24246:8:42", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$9760_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 7498, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "24255:6:42", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 9759, + "src": "24246:15:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 7507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24246:38:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24241:43:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24235:49:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7510, + "nodeType": "ExpressionStatement", + "src": "24235:49:42" + }, + { + "expression": { + "id": 7513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7511, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7411, + "src": "24298:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "id": 7512, + "name": "exp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7421, + "src": "24308:3:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24298:13:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7514, + "nodeType": "ExpressionStatement", + "src": "24298:13:42" + }, + { + "expression": { + "id": 7517, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7515, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7417, + "src": "24325:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 7516, + "name": "exp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7421, + "src": "24335:3:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24325:13:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7518, + "nodeType": "ExpressionStatement", + "src": "24325:13:42" + }, + { + "expression": { + "id": 7533, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7519, + "name": "exp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7421, + "src": "24353:3:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7532, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "38", + "id": 7520, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24359:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7530, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7523, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7411, + "src": "24379:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_rational_255_by_1", + "typeString": "int_const 255" + }, + "id": 7529, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + }, + "id": 7526, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 7524, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24388:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "38", + "id": 7525, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24393:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "24388:6:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + } + } + ], + "id": 7527, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "24387:8:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 7528, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24398:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "24387:12:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_255_by_1", + "typeString": "int_const 255" + } + }, + "src": "24379:20:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 7521, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9760, + "src": "24363:8:42", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$9760_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 7522, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "24372:6:42", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 9759, + "src": "24363:15:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 7531, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24363:37:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24359:41:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24353:47:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7534, + "nodeType": "ExpressionStatement", + "src": "24353:47:42" + }, + { + "expression": { + "id": 7537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7535, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7411, + "src": "24414:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "id": 7536, + "name": "exp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7421, + "src": "24424:3:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24414:13:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7538, + "nodeType": "ExpressionStatement", + "src": "24414:13:42" + }, + { + "expression": { + "id": 7541, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7539, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7417, + "src": "24441:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 7540, + "name": "exp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7421, + "src": "24451:3:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24441:13:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7542, + "nodeType": "ExpressionStatement", + "src": "24441:13:42" + }, + { + "expression": { + "id": 7557, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7543, + "name": "exp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7421, + "src": "24469:3:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7556, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "34", + "id": 7544, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24475:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7554, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7547, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7411, + "src": "24495:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_rational_15_by_1", + "typeString": "int_const 15" + }, + "id": 7553, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "id": 7550, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 7548, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24504:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "34", + "id": 7549, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24509:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "src": "24504:6:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + } + } + ], + "id": 7551, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "24503:8:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 7552, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24514:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "24503:12:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_15_by_1", + "typeString": "int_const 15" + } + }, + "src": "24495:20:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 7545, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9760, + "src": "24479:8:42", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$9760_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 7546, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "24488:6:42", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 9759, + "src": "24479:15:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 7555, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24479:37:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24475:41:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24469:47:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7558, + "nodeType": "ExpressionStatement", + "src": "24469:47:42" + }, + { + "expression": { + "id": 7561, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7559, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7411, + "src": "24530:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "id": 7560, + "name": "exp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7421, + "src": "24540:3:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24530:13:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7562, + "nodeType": "ExpressionStatement", + "src": "24530:13:42" + }, + { + "expression": { + "id": 7565, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7563, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7417, + "src": "24557:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 7564, + "name": "exp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7421, + "src": "24567:3:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24557:13:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7566, + "nodeType": "ExpressionStatement", + "src": "24557:13:42" + }, + { + "expression": { + "id": 7581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7567, + "name": "exp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7421, + "src": "24585:3:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "32", + "id": 7568, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24591:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7571, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7411, + "src": "24611:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "id": 7577, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "id": 7574, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 7572, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24620:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "32", + "id": 7573, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24625:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "24620:6:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + } + } + ], + "id": 7575, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "24619:8:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 7576, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24630:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "24619:12:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + } + }, + "src": "24611:20:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 7569, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9760, + "src": "24595:8:42", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$9760_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 7570, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "24604:6:42", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 9759, + "src": "24595:15:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 7579, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24595:37:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24591:41:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24585:47:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7582, + "nodeType": "ExpressionStatement", + "src": "24585:47:42" + }, + { + "expression": { + "id": 7585, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7583, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7411, + "src": "24646:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "id": 7584, + "name": "exp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7421, + "src": "24656:3:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24646:13:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7586, + "nodeType": "ExpressionStatement", + "src": "24646:13:42" + }, + { + "expression": { + "id": 7589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7587, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7417, + "src": "24673:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 7588, + "name": "exp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7421, + "src": "24683:3:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24673:13:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7590, + "nodeType": "ExpressionStatement", + "src": "24673:13:42" + }, + { + "expression": { + "id": 7598, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7591, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7417, + "src": "24701:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7596, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7594, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7411, + "src": "24727:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "31", + "id": 7595, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24735:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "24727:9:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 7592, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9760, + "src": "24711:8:42", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$9760_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 7593, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "24720:6:42", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 9759, + "src": "24711:15:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 7597, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24711:26:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24701:36:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7599, + "nodeType": "ExpressionStatement", + "src": "24701:36:42" + } + ] + }, + { + "expression": { + "id": 7601, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7417, + "src": "24764:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 7415, + "id": 7602, + "nodeType": "Return", + "src": "24757:13:42" + } + ] + }, + "documentation": { + "id": 7409, + "nodeType": "StructuredDocumentation", + "src": "23611:119:42", + "text": " @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0." + }, + "id": 7604, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "log2", + "nameLocation": "23744:4:42", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7412, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7411, + "mutability": "mutable", + "name": "value", + "nameLocation": "23757:5:42", + "nodeType": "VariableDeclaration", + "scope": 7604, + "src": "23749:13:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7410, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "23749:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "23748:15:42" + }, + "returnParameters": { + "id": 7415, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7414, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7604, + "src": "23787:7:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7413, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "23787:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "23786:9:42" + }, + "scope": 7995, + "src": "23735:1042:42", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7637, + "nodeType": "Block", + "src": "25010:175:42", + "statements": [ + { + "id": 7636, + "nodeType": "UncheckedBlock", + "src": "25020:159:42", + "statements": [ + { + "assignments": [ + 7616 + ], + "declarations": [ + { + "constant": false, + "id": 7616, + "mutability": "mutable", + "name": "result", + "nameLocation": "25052:6:42", + "nodeType": "VariableDeclaration", + "scope": 7636, + "src": "25044:14:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7615, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "25044:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7620, + "initialValue": { + "arguments": [ + { + "id": 7618, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7607, + "src": "25066:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7617, + "name": "log2", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 7604, + 7638 + ], + "referencedDeclaration": 7604, + "src": "25061:4:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint256)" + } + }, + "id": 7619, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25061:11:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "25044:28:42" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7634, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7621, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7616, + "src": "25093:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 7632, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 7625, + "name": "rounding", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7610, + "src": "25135:8:42", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$6401", + "typeString": "enum Math.Rounding" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_enum$_Rounding_$6401", + "typeString": "enum Math.Rounding" + } + ], + "id": 7624, + "name": "unsignedRoundsUp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7994, + "src": "25118:16:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_enum$_Rounding_$6401_$returns$_t_bool_$", + "typeString": "function (enum Math.Rounding) pure returns (bool)" + } + }, + "id": 7626, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25118:26:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7631, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7629, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 7627, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25148:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "id": 7628, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7616, + "src": "25153:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "25148:11:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 7630, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7607, + "src": "25162:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "25148:19:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "25118:49:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 7622, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9760, + "src": "25102:8:42", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$9760_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 7623, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "25111:6:42", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 9759, + "src": "25102:15:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 7633, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25102:66:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "25093:75:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 7614, + "id": 7635, + "nodeType": "Return", + "src": "25086:82:42" + } + ] + } + ] + }, + "documentation": { + "id": 7605, + "nodeType": "StructuredDocumentation", + "src": "24783:142:42", + "text": " @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0." + }, + "id": 7638, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "log2", + "nameLocation": "24939:4:42", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7611, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7607, + "mutability": "mutable", + "name": "value", + "nameLocation": "24952:5:42", + "nodeType": "VariableDeclaration", + "scope": 7638, + "src": "24944:13:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7606, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "24944:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7610, + "mutability": "mutable", + "name": "rounding", + "nameLocation": "24968:8:42", + "nodeType": "VariableDeclaration", + "scope": 7638, + "src": "24959:17:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$6401", + "typeString": "enum Math.Rounding" + }, + "typeName": { + "id": 7609, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7608, + "name": "Rounding", + "nameLocations": [ + "24959:8:42" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6401, + "src": "24959:8:42" + }, + "referencedDeclaration": 6401, + "src": "24959:8:42", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$6401", + "typeString": "enum Math.Rounding" + } + }, + "visibility": "internal" + } + ], + "src": "24943:34:42" + }, + "returnParameters": { + "id": 7614, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7613, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7638, + "src": "25001:7:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7612, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "25001:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "25000:9:42" + }, + "scope": 7995, + "src": "24930:255:42", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7766, + "nodeType": "Block", + "src": "25378:854:42", + "statements": [ + { + "assignments": [ + 7647 + ], + "declarations": [ + { + "constant": false, + "id": 7647, + "mutability": "mutable", + "name": "result", + "nameLocation": "25396:6:42", + "nodeType": "VariableDeclaration", + "scope": 7766, + "src": "25388:14:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7646, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "25388:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7649, + "initialValue": { + "hexValue": "30", + "id": 7648, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25405:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "25388:18:42" + }, + { + "id": 7763, + "nodeType": "UncheckedBlock", + "src": "25416:787:42", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7654, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7650, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7641, + "src": "25444:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1", + "typeString": "int_const 1000...(57 digits omitted)...0000" + }, + "id": 7653, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 7651, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25453:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "3634", + "id": 7652, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25459:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "25453:8:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1", + "typeString": "int_const 1000...(57 digits omitted)...0000" + } + }, + "src": "25444:17:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7666, + "nodeType": "IfStatement", + "src": "25440:103:42", + "trueBody": { + "id": 7665, + "nodeType": "Block", + "src": "25463:80:42", + "statements": [ + { + "expression": { + "id": 7659, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7655, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7641, + "src": "25481:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "/=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1", + "typeString": "int_const 1000...(57 digits omitted)...0000" + }, + "id": 7658, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 7656, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25490:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "3634", + "id": 7657, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25496:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "25490:8:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1", + "typeString": "int_const 1000...(57 digits omitted)...0000" + } + }, + "src": "25481:17:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7660, + "nodeType": "ExpressionStatement", + "src": "25481:17:42" + }, + { + "expression": { + "id": 7663, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7661, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7647, + "src": "25516:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "3634", + "id": 7662, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25526:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "25516:12:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7664, + "nodeType": "ExpressionStatement", + "src": "25516:12:42" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7671, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7667, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7641, + "src": "25560:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_rational_100000000000000000000000000000000_by_1", + "typeString": "int_const 1000...(25 digits omitted)...0000" + }, + "id": 7670, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 7668, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25569:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "3332", + "id": 7669, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25575:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "25569:8:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_100000000000000000000000000000000_by_1", + "typeString": "int_const 1000...(25 digits omitted)...0000" + } + }, + "src": "25560:17:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7683, + "nodeType": "IfStatement", + "src": "25556:103:42", + "trueBody": { + "id": 7682, + "nodeType": "Block", + "src": "25579:80:42", + "statements": [ + { + "expression": { + "id": 7676, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7672, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7641, + "src": "25597:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "/=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_rational_100000000000000000000000000000000_by_1", + "typeString": "int_const 1000...(25 digits omitted)...0000" + }, + "id": 7675, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 7673, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25606:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "3332", + "id": 7674, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25612:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "25606:8:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_100000000000000000000000000000000_by_1", + "typeString": "int_const 1000...(25 digits omitted)...0000" + } + }, + "src": "25597:17:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7677, + "nodeType": "ExpressionStatement", + "src": "25597:17:42" + }, + { + "expression": { + "id": 7680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7678, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7647, + "src": "25632:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "3332", + "id": 7679, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25642:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "25632:12:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7681, + "nodeType": "ExpressionStatement", + "src": "25632:12:42" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7684, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7641, + "src": "25676:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_rational_10000000000000000_by_1", + "typeString": "int_const 10000000000000000" + }, + "id": 7687, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 7685, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25685:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "3136", + "id": 7686, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25691:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "src": "25685:8:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_10000000000000000_by_1", + "typeString": "int_const 10000000000000000" + } + }, + "src": "25676:17:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7700, + "nodeType": "IfStatement", + "src": "25672:103:42", + "trueBody": { + "id": 7699, + "nodeType": "Block", + "src": "25695:80:42", + "statements": [ + { + "expression": { + "id": 7693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7689, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7641, + "src": "25713:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "/=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_rational_10000000000000000_by_1", + "typeString": "int_const 10000000000000000" + }, + "id": 7692, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 7690, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25722:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "3136", + "id": 7691, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25728:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "src": "25722:8:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_10000000000000000_by_1", + "typeString": "int_const 10000000000000000" + } + }, + "src": "25713:17:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7694, + "nodeType": "ExpressionStatement", + "src": "25713:17:42" + }, + { + "expression": { + "id": 7697, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7695, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7647, + "src": "25748:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "3136", + "id": 7696, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25758:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "src": "25748:12:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7698, + "nodeType": "ExpressionStatement", + "src": "25748:12:42" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7705, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7701, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7641, + "src": "25792:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_rational_100000000_by_1", + "typeString": "int_const 100000000" + }, + "id": 7704, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 7702, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25801:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "38", + "id": 7703, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25807:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "25801:7:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_100000000_by_1", + "typeString": "int_const 100000000" + } + }, + "src": "25792:16:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7717, + "nodeType": "IfStatement", + "src": "25788:100:42", + "trueBody": { + "id": 7716, + "nodeType": "Block", + "src": "25810:78:42", + "statements": [ + { + "expression": { + "id": 7710, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7706, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7641, + "src": "25828:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "/=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_rational_100000000_by_1", + "typeString": "int_const 100000000" + }, + "id": 7709, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 7707, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25837:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "38", + "id": 7708, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25843:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "25837:7:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_100000000_by_1", + "typeString": "int_const 100000000" + } + }, + "src": "25828:16:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7711, + "nodeType": "ExpressionStatement", + "src": "25828:16:42" + }, + { + "expression": { + "id": 7714, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7712, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7647, + "src": "25862:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "38", + "id": 7713, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25872:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "25862:11:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7715, + "nodeType": "ExpressionStatement", + "src": "25862:11:42" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7722, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7718, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7641, + "src": "25905:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_rational_10000_by_1", + "typeString": "int_const 10000" + }, + "id": 7721, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 7719, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25914:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "34", + "id": 7720, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25920:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "src": "25914:7:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_10000_by_1", + "typeString": "int_const 10000" + } + }, + "src": "25905:16:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7734, + "nodeType": "IfStatement", + "src": "25901:100:42", + "trueBody": { + "id": 7733, + "nodeType": "Block", + "src": "25923:78:42", + "statements": [ + { + "expression": { + "id": 7727, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7723, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7641, + "src": "25941:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "/=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_rational_10000_by_1", + "typeString": "int_const 10000" + }, + "id": 7726, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 7724, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25950:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "34", + "id": 7725, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25956:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "src": "25950:7:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_10000_by_1", + "typeString": "int_const 10000" + } + }, + "src": "25941:16:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7728, + "nodeType": "ExpressionStatement", + "src": "25941:16:42" + }, + { + "expression": { + "id": 7731, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7729, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7647, + "src": "25975:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "34", + "id": 7730, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25985:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "src": "25975:11:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7732, + "nodeType": "ExpressionStatement", + "src": "25975:11:42" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7739, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7735, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7641, + "src": "26018:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_rational_100_by_1", + "typeString": "int_const 100" + }, + "id": 7738, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 7736, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26027:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "32", + "id": 7737, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26033:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "26027:7:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_100_by_1", + "typeString": "int_const 100" + } + }, + "src": "26018:16:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7751, + "nodeType": "IfStatement", + "src": "26014:100:42", + "trueBody": { + "id": 7750, + "nodeType": "Block", + "src": "26036:78:42", + "statements": [ + { + "expression": { + "id": 7744, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7740, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7641, + "src": "26054:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "/=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_rational_100_by_1", + "typeString": "int_const 100" + }, + "id": 7743, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 7741, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26063:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "32", + "id": 7742, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26069:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "26063:7:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_100_by_1", + "typeString": "int_const 100" + } + }, + "src": "26054:16:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7745, + "nodeType": "ExpressionStatement", + "src": "26054:16:42" + }, + { + "expression": { + "id": 7748, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7746, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7647, + "src": "26088:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "32", + "id": 7747, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26098:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "26088:11:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7749, + "nodeType": "ExpressionStatement", + "src": "26088:11:42" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7756, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7752, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7641, + "src": "26131:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "id": 7755, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 7753, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26140:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "hexValue": "31", + "id": 7754, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26146:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "26140:7:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + } + }, + "src": "26131:16:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 7762, + "nodeType": "IfStatement", + "src": "26127:66:42", + "trueBody": { + "id": 7761, + "nodeType": "Block", + "src": "26149:44:42", + "statements": [ + { + "expression": { + "id": 7759, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7757, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7647, + "src": "26167:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "hexValue": "31", + "id": 7758, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26177:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "26167:11:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7760, + "nodeType": "ExpressionStatement", + "src": "26167:11:42" + } + ] + } + } + ] + }, + { + "expression": { + "id": 7764, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7647, + "src": "26219:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 7645, + "id": 7765, + "nodeType": "Return", + "src": "26212:13:42" + } + ] + }, + "documentation": { + "id": 7639, + "nodeType": "StructuredDocumentation", + "src": "25191:120:42", + "text": " @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0." + }, + "id": 7767, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "log10", + "nameLocation": "25325:5:42", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7642, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7641, + "mutability": "mutable", + "name": "value", + "nameLocation": "25339:5:42", + "nodeType": "VariableDeclaration", + "scope": 7767, + "src": "25331:13:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7640, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "25331:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "25330:15:42" + }, + "returnParameters": { + "id": 7645, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7644, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7767, + "src": "25369:7:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7643, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "25369:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "25368:9:42" + }, + "scope": 7995, + "src": "25316:916:42", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7800, + "nodeType": "Block", + "src": "26467:177:42", + "statements": [ + { + "id": 7799, + "nodeType": "UncheckedBlock", + "src": "26477:161:42", + "statements": [ + { + "assignments": [ + 7779 + ], + "declarations": [ + { + "constant": false, + "id": 7779, + "mutability": "mutable", + "name": "result", + "nameLocation": "26509:6:42", + "nodeType": "VariableDeclaration", + "scope": 7799, + "src": "26501:14:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7778, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26501:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7783, + "initialValue": { + "arguments": [ + { + "id": 7781, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7770, + "src": "26524:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7780, + "name": "log10", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 7767, + 7801 + ], + "referencedDeclaration": 7767, + "src": "26518:5:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint256)" + } + }, + "id": 7782, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26518:12:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "26501:29:42" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7797, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7784, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7779, + "src": "26551:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 7795, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 7788, + "name": "rounding", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7773, + "src": "26593:8:42", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$6401", + "typeString": "enum Math.Rounding" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_enum$_Rounding_$6401", + "typeString": "enum Math.Rounding" + } + ], + "id": 7787, + "name": "unsignedRoundsUp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7994, + "src": "26576:16:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_enum$_Rounding_$6401_$returns$_t_bool_$", + "typeString": "function (enum Math.Rounding) pure returns (bool)" + } + }, + "id": 7789, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26576:26:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7794, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7792, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 7790, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26606:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "id": 7791, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7779, + "src": "26612:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "26606:12:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 7793, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7770, + "src": "26621:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "26606:20:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "26576:50:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 7785, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9760, + "src": "26560:8:42", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$9760_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 7786, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "26569:6:42", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 9759, + "src": "26560:15:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 7796, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26560:67:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "26551:76:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 7777, + "id": 7798, + "nodeType": "Return", + "src": "26544:83:42" + } + ] + } + ] + }, + "documentation": { + "id": 7768, + "nodeType": "StructuredDocumentation", + "src": "26238:143:42", + "text": " @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0." + }, + "id": 7801, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "log10", + "nameLocation": "26395:5:42", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7774, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7770, + "mutability": "mutable", + "name": "value", + "nameLocation": "26409:5:42", + "nodeType": "VariableDeclaration", + "scope": 7801, + "src": "26401:13:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7769, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26401:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7773, + "mutability": "mutable", + "name": "rounding", + "nameLocation": "26425:8:42", + "nodeType": "VariableDeclaration", + "scope": 7801, + "src": "26416:17:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$6401", + "typeString": "enum Math.Rounding" + }, + "typeName": { + "id": 7772, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7771, + "name": "Rounding", + "nameLocations": [ + "26416:8:42" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6401, + "src": "26416:8:42" + }, + "referencedDeclaration": 6401, + "src": "26416:8:42", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$6401", + "typeString": "enum Math.Rounding" + } + }, + "visibility": "internal" + } + ], + "src": "26400:34:42" + }, + "returnParameters": { + "id": 7777, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7776, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7801, + "src": "26458:7:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7775, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26458:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "26457:9:42" + }, + "scope": 7995, + "src": "26386:258:42", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7937, + "nodeType": "Block", + "src": "26964:674:42", + "statements": [ + { + "assignments": [ + 7810 + ], + "declarations": [ + { + "constant": false, + "id": 7810, + "mutability": "mutable", + "name": "result", + "nameLocation": "26982:6:42", + "nodeType": "VariableDeclaration", + "scope": 7937, + "src": "26974:14:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7809, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26974:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7812, + "initialValue": { + "hexValue": "30", + "id": 7811, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26991:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "26974:18:42" + }, + { + "assignments": [ + 7814 + ], + "declarations": [ + { + "constant": false, + "id": 7814, + "mutability": "mutable", + "name": "isGt", + "nameLocation": "27010:4:42", + "nodeType": "VariableDeclaration", + "scope": 7937, + "src": "27002:12:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7813, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27002:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7815, + "nodeType": "VariableDeclarationStatement", + "src": "27002:12:42" + }, + { + "id": 7934, + "nodeType": "UncheckedBlock", + "src": "27024:585:42", + "statements": [ + { + "expression": { + "id": 7828, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7816, + "name": "isGt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7814, + "src": "27048:4:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7826, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7819, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7804, + "src": "27071:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_rational_340282366920938463463374607431768211455_by_1", + "typeString": "int_const 3402...(31 digits omitted)...1455" + }, + "id": 7825, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1", + "typeString": "int_const 3402...(31 digits omitted)...1456" + }, + "id": 7822, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 7820, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27080:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "313238", + "id": 7821, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27085:3:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "27080:8:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1", + "typeString": "int_const 3402...(31 digits omitted)...1456" + } + } + ], + "id": 7823, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "27079:10:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1", + "typeString": "int_const 3402...(31 digits omitted)...1456" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 7824, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27092:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "27079:14:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_340282366920938463463374607431768211455_by_1", + "typeString": "int_const 3402...(31 digits omitted)...1455" + } + }, + "src": "27071:22:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 7817, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9760, + "src": "27055:8:42", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$9760_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 7818, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "27064:6:42", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 9759, + "src": "27055:15:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 7827, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27055:39:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27048:46:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7829, + "nodeType": "ExpressionStatement", + "src": "27048:46:42" + }, + { + "expression": { + "id": 7834, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7830, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7804, + "src": "27108:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7833, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7831, + "name": "isGt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7814, + "src": "27118:4:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "hexValue": "313238", + "id": 7832, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27125:3:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + "src": "27118:10:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27108:20:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7835, + "nodeType": "ExpressionStatement", + "src": "27108:20:42" + }, + { + "expression": { + "id": 7840, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7836, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7810, + "src": "27142:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7839, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7837, + "name": "isGt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7814, + "src": "27152:4:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "hexValue": "3136", + "id": 7838, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27159:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "src": "27152:9:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27142:19:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7841, + "nodeType": "ExpressionStatement", + "src": "27142:19:42" + }, + { + "expression": { + "id": 7854, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7842, + "name": "isGt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7814, + "src": "27176:4:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7852, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7845, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7804, + "src": "27199:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_rational_18446744073709551615_by_1", + "typeString": "int_const 18446744073709551615" + }, + "id": 7851, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_rational_18446744073709551616_by_1", + "typeString": "int_const 18446744073709551616" + }, + "id": 7848, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 7846, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27208:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "3634", + "id": 7847, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27213:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "27208:7:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_18446744073709551616_by_1", + "typeString": "int_const 18446744073709551616" + } + } + ], + "id": 7849, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "27207:9:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_18446744073709551616_by_1", + "typeString": "int_const 18446744073709551616" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 7850, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27219:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "27207:13:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_18446744073709551615_by_1", + "typeString": "int_const 18446744073709551615" + } + }, + "src": "27199:21:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 7843, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9760, + "src": "27183:8:42", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$9760_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 7844, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "27192:6:42", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 9759, + "src": "27183:15:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 7853, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27183:38:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27176:45:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7855, + "nodeType": "ExpressionStatement", + "src": "27176:45:42" + }, + { + "expression": { + "id": 7860, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7856, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7804, + "src": "27235:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7859, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7857, + "name": "isGt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7814, + "src": "27245:4:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "hexValue": "3634", + "id": 7858, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27252:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + "src": "27245:9:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27235:19:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7861, + "nodeType": "ExpressionStatement", + "src": "27235:19:42" + }, + { + "expression": { + "id": 7866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7862, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7810, + "src": "27268:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7865, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7863, + "name": "isGt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7814, + "src": "27278:4:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "hexValue": "38", + "id": 7864, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27285:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "27278:8:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27268:18:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7867, + "nodeType": "ExpressionStatement", + "src": "27268:18:42" + }, + { + "expression": { + "id": 7880, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7868, + "name": "isGt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7814, + "src": "27301:4:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7878, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7871, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7804, + "src": "27324:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_rational_4294967295_by_1", + "typeString": "int_const 4294967295" + }, + "id": 7877, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_rational_4294967296_by_1", + "typeString": "int_const 4294967296" + }, + "id": 7874, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 7872, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27333:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "3332", + "id": 7873, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27338:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "27333:7:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_4294967296_by_1", + "typeString": "int_const 4294967296" + } + } + ], + "id": 7875, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "27332:9:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_4294967296_by_1", + "typeString": "int_const 4294967296" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 7876, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27344:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "27332:13:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_4294967295_by_1", + "typeString": "int_const 4294967295" + } + }, + "src": "27324:21:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 7869, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9760, + "src": "27308:8:42", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$9760_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 7870, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "27317:6:42", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 9759, + "src": "27308:15:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 7879, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27308:38:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27301:45:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7881, + "nodeType": "ExpressionStatement", + "src": "27301:45:42" + }, + { + "expression": { + "id": 7886, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7882, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7804, + "src": "27360:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7885, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7883, + "name": "isGt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7814, + "src": "27370:4:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "hexValue": "3332", + "id": 7884, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27377:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "27370:9:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27360:19:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7887, + "nodeType": "ExpressionStatement", + "src": "27360:19:42" + }, + { + "expression": { + "id": 7892, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7888, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7810, + "src": "27393:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7891, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7889, + "name": "isGt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7814, + "src": "27403:4:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "hexValue": "34", + "id": 7890, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27410:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_4_by_1", + "typeString": "int_const 4" + }, + "value": "4" + }, + "src": "27403:8:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27393:18:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7893, + "nodeType": "ExpressionStatement", + "src": "27393:18:42" + }, + { + "expression": { + "id": 7906, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7894, + "name": "isGt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7814, + "src": "27426:4:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7904, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7897, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7804, + "src": "27449:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_rational_65535_by_1", + "typeString": "int_const 65535" + }, + "id": 7903, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_rational_65536_by_1", + "typeString": "int_const 65536" + }, + "id": 7900, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 7898, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27458:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "3136", + "id": 7899, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27463:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "src": "27458:7:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_65536_by_1", + "typeString": "int_const 65536" + } + } + ], + "id": 7901, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "27457:9:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_65536_by_1", + "typeString": "int_const 65536" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 7902, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27469:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "27457:13:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_65535_by_1", + "typeString": "int_const 65535" + } + }, + "src": "27449:21:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 7895, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9760, + "src": "27433:8:42", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$9760_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 7896, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "27442:6:42", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 9759, + "src": "27433:15:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 7905, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27433:38:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27426:45:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7907, + "nodeType": "ExpressionStatement", + "src": "27426:45:42" + }, + { + "expression": { + "id": 7912, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7908, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7804, + "src": "27485:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": ">>=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7911, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7909, + "name": "isGt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7814, + "src": "27495:4:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "hexValue": "3136", + "id": 7910, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27502:2:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + "src": "27495:9:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27485:19:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7913, + "nodeType": "ExpressionStatement", + "src": "27485:19:42" + }, + { + "expression": { + "id": 7918, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7914, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7810, + "src": "27518:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7917, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7915, + "name": "isGt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7814, + "src": "27528:4:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "hexValue": "32", + "id": 7916, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27535:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "27528:8:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27518:18:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7919, + "nodeType": "ExpressionStatement", + "src": "27518:18:42" + }, + { + "expression": { + "id": 7932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 7920, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7810, + "src": "27551:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7930, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7923, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7804, + "src": "27577:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_rational_255_by_1", + "typeString": "int_const 255" + }, + "id": 7929, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + }, + "id": 7926, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 7924, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27586:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "38", + "id": 7925, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27591:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + "src": "27586:6:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + } + } + ], + "id": 7927, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "27585:8:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_256_by_1", + "typeString": "int_const 256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 7928, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27596:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "27585:12:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_255_by_1", + "typeString": "int_const 255" + } + }, + "src": "27577:20:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 7921, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9760, + "src": "27561:8:42", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$9760_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 7922, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "27570:6:42", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 9759, + "src": "27561:15:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 7931, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27561:37:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27551:47:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 7933, + "nodeType": "ExpressionStatement", + "src": "27551:47:42" + } + ] + }, + { + "expression": { + "id": 7935, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7810, + "src": "27625:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 7808, + "id": 7936, + "nodeType": "Return", + "src": "27618:13:42" + } + ] + }, + "documentation": { + "id": 7802, + "nodeType": "StructuredDocumentation", + "src": "26650:246:42", + "text": " @dev Return the log in base 256 of a positive value rounded towards zero.\n Returns 0 if given 0.\n Adding one to the result gives the number of pairs of hex symbols needed to represent `value` as a hex string." + }, + "id": 7938, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "log256", + "nameLocation": "26910:6:42", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7805, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7804, + "mutability": "mutable", + "name": "value", + "nameLocation": "26925:5:42", + "nodeType": "VariableDeclaration", + "scope": 7938, + "src": "26917:13:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7803, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26917:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "26916:15:42" + }, + "returnParameters": { + "id": 7808, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7807, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7938, + "src": "26955:7:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7806, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26955:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "26954:9:42" + }, + "scope": 7995, + "src": "26901:737:42", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7974, + "nodeType": "Block", + "src": "27875:184:42", + "statements": [ + { + "id": 7973, + "nodeType": "UncheckedBlock", + "src": "27885:168:42", + "statements": [ + { + "assignments": [ + 7950 + ], + "declarations": [ + { + "constant": false, + "id": 7950, + "mutability": "mutable", + "name": "result", + "nameLocation": "27917:6:42", + "nodeType": "VariableDeclaration", + "scope": 7973, + "src": "27909:14:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7949, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27909:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 7954, + "initialValue": { + "arguments": [ + { + "id": 7952, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7941, + "src": "27933:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 7951, + "name": "log256", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 7938, + 7975 + ], + "referencedDeclaration": 7938, + "src": "27926:6:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256) pure returns (uint256)" + } + }, + "id": 7953, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27926:13:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "27909:30:42" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7971, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7955, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7950, + "src": "27960:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 7969, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 7959, + "name": "rounding", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7944, + "src": "28002:8:42", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$6401", + "typeString": "enum Math.Rounding" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_enum$_Rounding_$6401", + "typeString": "enum Math.Rounding" + } + ], + "id": 7958, + "name": "unsignedRoundsUp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7994, + "src": "27985:16:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_enum$_Rounding_$6401_$returns$_t_bool_$", + "typeString": "function (enum Math.Rounding) pure returns (bool)" + } + }, + "id": 7960, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27985:26:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7968, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7966, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31", + "id": 7961, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28015:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 7964, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 7962, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7950, + "src": "28021:6:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<<", + "rightExpression": { + "hexValue": "33", + "id": 7963, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28031:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_3_by_1", + "typeString": "int_const 3" + }, + "value": "3" + }, + "src": "28021:11:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 7965, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "28020:13:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28015:18:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 7967, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7941, + "src": "28036:5:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "28015:26:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "27985:56:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 7956, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9760, + "src": "27969:8:42", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$9760_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 7957, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "27978:6:42", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 9759, + "src": "27969:15:42", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 7970, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27969:73:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "27960:82:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 7948, + "id": 7972, + "nodeType": "Return", + "src": "27953:89:42" + } + ] + } + ] + }, + "documentation": { + "id": 7939, + "nodeType": "StructuredDocumentation", + "src": "27644:144:42", + "text": " @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0." + }, + "id": 7975, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "log256", + "nameLocation": "27802:6:42", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7945, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7941, + "mutability": "mutable", + "name": "value", + "nameLocation": "27817:5:42", + "nodeType": "VariableDeclaration", + "scope": 7975, + "src": "27809:13:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7940, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27809:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7944, + "mutability": "mutable", + "name": "rounding", + "nameLocation": "27833:8:42", + "nodeType": "VariableDeclaration", + "scope": 7975, + "src": "27824:17:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$6401", + "typeString": "enum Math.Rounding" + }, + "typeName": { + "id": 7943, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7942, + "name": "Rounding", + "nameLocations": [ + "27824:8:42" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6401, + "src": "27824:8:42" + }, + "referencedDeclaration": 6401, + "src": "27824:8:42", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$6401", + "typeString": "enum Math.Rounding" + } + }, + "visibility": "internal" + } + ], + "src": "27808:34:42" + }, + "returnParameters": { + "id": 7948, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7947, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7975, + "src": "27866:7:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7946, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27866:7:42", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "27865:9:42" + }, + "scope": 7995, + "src": "27793:266:42", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 7993, + "nodeType": "Block", + "src": "28257:48:42", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 7991, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 7989, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 7986, + "name": "rounding", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7979, + "src": "28280:8:42", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$6401", + "typeString": "enum Math.Rounding" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_enum$_Rounding_$6401", + "typeString": "enum Math.Rounding" + } + ], + "id": 7985, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "28274:5:42", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": { + "id": 7984, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "28274:5:42", + "typeDescriptions": {} + } + }, + "id": 7987, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28274:15:42", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "hexValue": "32", + "id": 7988, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28292:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "28274:19:42", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "31", + "id": 7990, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28297:1:42", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "28274:24:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 7983, + "id": 7992, + "nodeType": "Return", + "src": "28267:31:42" + } + ] + }, + "documentation": { + "id": 7976, + "nodeType": "StructuredDocumentation", + "src": "28065:113:42", + "text": " @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers." + }, + "id": 7994, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "unsignedRoundsUp", + "nameLocation": "28192:16:42", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 7980, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7979, + "mutability": "mutable", + "name": "rounding", + "nameLocation": "28218:8:42", + "nodeType": "VariableDeclaration", + "scope": 7994, + "src": "28209:17:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$6401", + "typeString": "enum Math.Rounding" + }, + "typeName": { + "id": 7978, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 7977, + "name": "Rounding", + "nameLocations": [ + "28209:8:42" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6401, + "src": "28209:8:42" + }, + "referencedDeclaration": 6401, + "src": "28209:8:42", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Rounding_$6401", + "typeString": "enum Math.Rounding" + } + }, + "visibility": "internal" + } + ], + "src": "28208:19:42" + }, + "returnParameters": { + "id": 7983, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 7982, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 7994, + "src": "28251:4:42", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 7981, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "28251:4:42", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "28250:6:42" + }, + "scope": 7995, + "src": "28183:122:42", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 7996, + "src": "281:28026:42", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "103:28205:42" + }, + "id": 42 + }, + "@openzeppelin/contracts/utils/math/SafeCast.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/utils/math/SafeCast.sol", + "exportedSymbols": { + "SafeCast": [ + 9760 + ] + }, + "id": 9761, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 7997, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "192:24:43" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "SafeCast", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 7998, + "nodeType": "StructuredDocumentation", + "src": "218:550:43", + "text": " @dev Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow\n checks.\n Downcasting from uint256/int256 in Solidity does not revert on overflow. This can\n easily result in undesired exploitation or bugs, since developers usually\n assume that overflows raise errors. `SafeCast` restores this intuition by\n reverting the transaction when such an operation overflows.\n Using this library instead of the unchecked operations eliminates an entire\n class of bugs, so it's recommended to use it always." + }, + "fullyImplemented": true, + "id": 9760, + "linearizedBaseContracts": [ + 9760 + ], + "name": "SafeCast", + "nameLocation": "777:8:43", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 7999, + "nodeType": "StructuredDocumentation", + "src": "792:68:43", + "text": " @dev Value doesn't fit in an uint of `bits` size." + }, + "errorSelector": "6dfcc650", + "id": 8005, + "name": "SafeCastOverflowedUintDowncast", + "nameLocation": "871:30:43", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 8004, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8001, + "mutability": "mutable", + "name": "bits", + "nameLocation": "908:4:43", + "nodeType": "VariableDeclaration", + "scope": 8005, + "src": "902:10:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 8000, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "902:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8003, + "mutability": "mutable", + "name": "value", + "nameLocation": "922:5:43", + "nodeType": "VariableDeclaration", + "scope": 8005, + "src": "914:13:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8002, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "914:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "901:27:43" + }, + "src": "865:64:43" + }, + { + "documentation": { + "id": 8006, + "nodeType": "StructuredDocumentation", + "src": "935:75:43", + "text": " @dev An int value doesn't fit in an uint of `bits` size." + }, + "errorSelector": "a8ce4432", + "id": 8010, + "name": "SafeCastOverflowedIntToUint", + "nameLocation": "1021:27:43", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 8009, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8008, + "mutability": "mutable", + "name": "value", + "nameLocation": "1056:5:43", + "nodeType": "VariableDeclaration", + "scope": 8010, + "src": "1049:12:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 8007, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1049:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "1048:14:43" + }, + "src": "1015:48:43" + }, + { + "documentation": { + "id": 8011, + "nodeType": "StructuredDocumentation", + "src": "1069:67:43", + "text": " @dev Value doesn't fit in an int of `bits` size." + }, + "errorSelector": "327269a7", + "id": 8017, + "name": "SafeCastOverflowedIntDowncast", + "nameLocation": "1147:29:43", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 8016, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8013, + "mutability": "mutable", + "name": "bits", + "nameLocation": "1183:4:43", + "nodeType": "VariableDeclaration", + "scope": 8017, + "src": "1177:10:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 8012, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1177:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8015, + "mutability": "mutable", + "name": "value", + "nameLocation": "1196:5:43", + "nodeType": "VariableDeclaration", + "scope": 8017, + "src": "1189:12:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 8014, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1189:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "1176:26:43" + }, + "src": "1141:62:43" + }, + { + "documentation": { + "id": 8018, + "nodeType": "StructuredDocumentation", + "src": "1209:75:43", + "text": " @dev An uint value doesn't fit in an int of `bits` size." + }, + "errorSelector": "24775e06", + "id": 8022, + "name": "SafeCastOverflowedUintToInt", + "nameLocation": "1295:27:43", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 8021, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8020, + "mutability": "mutable", + "name": "value", + "nameLocation": "1331:5:43", + "nodeType": "VariableDeclaration", + "scope": 8022, + "src": "1323:13:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8019, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1323:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1322:15:43" + }, + "src": "1289:49:43" + }, + { + "body": { + "id": 8049, + "nodeType": "Block", + "src": "1695:152:43", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8036, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8030, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8025, + "src": "1709:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 8033, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1722:7:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint248_$", + "typeString": "type(uint248)" + }, + "typeName": { + "id": 8032, + "name": "uint248", + "nodeType": "ElementaryTypeName", + "src": "1722:7:43", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint248_$", + "typeString": "type(uint248)" + } + ], + "id": 8031, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "1717:4:43", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 8034, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1717:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint248", + "typeString": "type(uint248)" + } + }, + "id": 8035, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "1731:3:43", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "1717:17:43", + "typeDescriptions": { + "typeIdentifier": "t_uint248", + "typeString": "uint248" + } + }, + "src": "1709:25:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8043, + "nodeType": "IfStatement", + "src": "1705:105:43", + "trueBody": { + "id": 8042, + "nodeType": "Block", + "src": "1736:74:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "323438", + "id": 8038, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1788:3:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_248_by_1", + "typeString": "int_const 248" + }, + "value": "248" + }, + { + "id": 8039, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8025, + "src": "1793:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_248_by_1", + "typeString": "int_const 248" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8037, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8005, + "src": "1757:30:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$", + "typeString": "function (uint8,uint256) pure" + } + }, + "id": 8040, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1757:42:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8041, + "nodeType": "RevertStatement", + "src": "1750:49:43" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 8046, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8025, + "src": "1834:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8045, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1826:7:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint248_$", + "typeString": "type(uint248)" + }, + "typeName": { + "id": 8044, + "name": "uint248", + "nodeType": "ElementaryTypeName", + "src": "1826:7:43", + "typeDescriptions": {} + } + }, + "id": 8047, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1826:14:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint248", + "typeString": "uint248" + } + }, + "functionReturnParameters": 8029, + "id": 8048, + "nodeType": "Return", + "src": "1819:21:43" + } + ] + }, + "documentation": { + "id": 8023, + "nodeType": "StructuredDocumentation", + "src": "1344:280:43", + "text": " @dev Returns the downcasted uint248 from uint256, reverting on\n overflow (when the input is greater than largest uint248).\n Counterpart to Solidity's `uint248` operator.\n Requirements:\n - input must fit into 248 bits" + }, + "id": 8050, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint248", + "nameLocation": "1638:9:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8026, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8025, + "mutability": "mutable", + "name": "value", + "nameLocation": "1656:5:43", + "nodeType": "VariableDeclaration", + "scope": 8050, + "src": "1648:13:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8024, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1648:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1647:15:43" + }, + "returnParameters": { + "id": 8029, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8028, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8050, + "src": "1686:7:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint248", + "typeString": "uint248" + }, + "typeName": { + "id": 8027, + "name": "uint248", + "nodeType": "ElementaryTypeName", + "src": "1686:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint248", + "typeString": "uint248" + } + }, + "visibility": "internal" + } + ], + "src": "1685:9:43" + }, + "scope": 9760, + "src": "1629:218:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8077, + "nodeType": "Block", + "src": "2204:152:43", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8058, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8053, + "src": "2218:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 8061, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2231:7:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint240_$", + "typeString": "type(uint240)" + }, + "typeName": { + "id": 8060, + "name": "uint240", + "nodeType": "ElementaryTypeName", + "src": "2231:7:43", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint240_$", + "typeString": "type(uint240)" + } + ], + "id": 8059, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "2226:4:43", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 8062, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2226:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint240", + "typeString": "type(uint240)" + } + }, + "id": 8063, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2240:3:43", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "2226:17:43", + "typeDescriptions": { + "typeIdentifier": "t_uint240", + "typeString": "uint240" + } + }, + "src": "2218:25:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8071, + "nodeType": "IfStatement", + "src": "2214:105:43", + "trueBody": { + "id": 8070, + "nodeType": "Block", + "src": "2245:74:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "323430", + "id": 8066, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2297:3:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_240_by_1", + "typeString": "int_const 240" + }, + "value": "240" + }, + { + "id": 8067, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8053, + "src": "2302:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_240_by_1", + "typeString": "int_const 240" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8065, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8005, + "src": "2266:30:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$", + "typeString": "function (uint8,uint256) pure" + } + }, + "id": 8068, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2266:42:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8069, + "nodeType": "RevertStatement", + "src": "2259:49:43" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 8074, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8053, + "src": "2343:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8073, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2335:7:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint240_$", + "typeString": "type(uint240)" + }, + "typeName": { + "id": 8072, + "name": "uint240", + "nodeType": "ElementaryTypeName", + "src": "2335:7:43", + "typeDescriptions": {} + } + }, + "id": 8075, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2335:14:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint240", + "typeString": "uint240" + } + }, + "functionReturnParameters": 8057, + "id": 8076, + "nodeType": "Return", + "src": "2328:21:43" + } + ] + }, + "documentation": { + "id": 8051, + "nodeType": "StructuredDocumentation", + "src": "1853:280:43", + "text": " @dev Returns the downcasted uint240 from uint256, reverting on\n overflow (when the input is greater than largest uint240).\n Counterpart to Solidity's `uint240` operator.\n Requirements:\n - input must fit into 240 bits" + }, + "id": 8078, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint240", + "nameLocation": "2147:9:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8054, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8053, + "mutability": "mutable", + "name": "value", + "nameLocation": "2165:5:43", + "nodeType": "VariableDeclaration", + "scope": 8078, + "src": "2157:13:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8052, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2157:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2156:15:43" + }, + "returnParameters": { + "id": 8057, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8056, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8078, + "src": "2195:7:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint240", + "typeString": "uint240" + }, + "typeName": { + "id": 8055, + "name": "uint240", + "nodeType": "ElementaryTypeName", + "src": "2195:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint240", + "typeString": "uint240" + } + }, + "visibility": "internal" + } + ], + "src": "2194:9:43" + }, + "scope": 9760, + "src": "2138:218:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8105, + "nodeType": "Block", + "src": "2713:152:43", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8092, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8086, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8081, + "src": "2727:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 8089, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2740:7:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint232_$", + "typeString": "type(uint232)" + }, + "typeName": { + "id": 8088, + "name": "uint232", + "nodeType": "ElementaryTypeName", + "src": "2740:7:43", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint232_$", + "typeString": "type(uint232)" + } + ], + "id": 8087, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "2735:4:43", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 8090, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2735:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint232", + "typeString": "type(uint232)" + } + }, + "id": 8091, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "2749:3:43", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "2735:17:43", + "typeDescriptions": { + "typeIdentifier": "t_uint232", + "typeString": "uint232" + } + }, + "src": "2727:25:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8099, + "nodeType": "IfStatement", + "src": "2723:105:43", + "trueBody": { + "id": 8098, + "nodeType": "Block", + "src": "2754:74:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "323332", + "id": 8094, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2806:3:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_232_by_1", + "typeString": "int_const 232" + }, + "value": "232" + }, + { + "id": 8095, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8081, + "src": "2811:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_232_by_1", + "typeString": "int_const 232" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8093, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8005, + "src": "2775:30:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$", + "typeString": "function (uint8,uint256) pure" + } + }, + "id": 8096, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2775:42:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8097, + "nodeType": "RevertStatement", + "src": "2768:49:43" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 8102, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8081, + "src": "2852:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8101, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2844:7:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint232_$", + "typeString": "type(uint232)" + }, + "typeName": { + "id": 8100, + "name": "uint232", + "nodeType": "ElementaryTypeName", + "src": "2844:7:43", + "typeDescriptions": {} + } + }, + "id": 8103, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2844:14:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint232", + "typeString": "uint232" + } + }, + "functionReturnParameters": 8085, + "id": 8104, + "nodeType": "Return", + "src": "2837:21:43" + } + ] + }, + "documentation": { + "id": 8079, + "nodeType": "StructuredDocumentation", + "src": "2362:280:43", + "text": " @dev Returns the downcasted uint232 from uint256, reverting on\n overflow (when the input is greater than largest uint232).\n Counterpart to Solidity's `uint232` operator.\n Requirements:\n - input must fit into 232 bits" + }, + "id": 8106, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint232", + "nameLocation": "2656:9:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8082, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8081, + "mutability": "mutable", + "name": "value", + "nameLocation": "2674:5:43", + "nodeType": "VariableDeclaration", + "scope": 8106, + "src": "2666:13:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8080, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2666:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2665:15:43" + }, + "returnParameters": { + "id": 8085, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8084, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8106, + "src": "2704:7:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint232", + "typeString": "uint232" + }, + "typeName": { + "id": 8083, + "name": "uint232", + "nodeType": "ElementaryTypeName", + "src": "2704:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint232", + "typeString": "uint232" + } + }, + "visibility": "internal" + } + ], + "src": "2703:9:43" + }, + "scope": 9760, + "src": "2647:218:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8133, + "nodeType": "Block", + "src": "3222:152:43", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8120, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8114, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8109, + "src": "3236:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 8117, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3249:7:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint224_$", + "typeString": "type(uint224)" + }, + "typeName": { + "id": 8116, + "name": "uint224", + "nodeType": "ElementaryTypeName", + "src": "3249:7:43", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint224_$", + "typeString": "type(uint224)" + } + ], + "id": 8115, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "3244:4:43", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 8118, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3244:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint224", + "typeString": "type(uint224)" + } + }, + "id": 8119, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "3258:3:43", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "3244:17:43", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + }, + "src": "3236:25:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8127, + "nodeType": "IfStatement", + "src": "3232:105:43", + "trueBody": { + "id": 8126, + "nodeType": "Block", + "src": "3263:74:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "323234", + "id": 8122, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3315:3:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_224_by_1", + "typeString": "int_const 224" + }, + "value": "224" + }, + { + "id": 8123, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8109, + "src": "3320:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_224_by_1", + "typeString": "int_const 224" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8121, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8005, + "src": "3284:30:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$", + "typeString": "function (uint8,uint256) pure" + } + }, + "id": 8124, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3284:42:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8125, + "nodeType": "RevertStatement", + "src": "3277:49:43" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 8130, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8109, + "src": "3361:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8129, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3353:7:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint224_$", + "typeString": "type(uint224)" + }, + "typeName": { + "id": 8128, + "name": "uint224", + "nodeType": "ElementaryTypeName", + "src": "3353:7:43", + "typeDescriptions": {} + } + }, + "id": 8131, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3353:14:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + }, + "functionReturnParameters": 8113, + "id": 8132, + "nodeType": "Return", + "src": "3346:21:43" + } + ] + }, + "documentation": { + "id": 8107, + "nodeType": "StructuredDocumentation", + "src": "2871:280:43", + "text": " @dev Returns the downcasted uint224 from uint256, reverting on\n overflow (when the input is greater than largest uint224).\n Counterpart to Solidity's `uint224` operator.\n Requirements:\n - input must fit into 224 bits" + }, + "id": 8134, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint224", + "nameLocation": "3165:9:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8110, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8109, + "mutability": "mutable", + "name": "value", + "nameLocation": "3183:5:43", + "nodeType": "VariableDeclaration", + "scope": 8134, + "src": "3175:13:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8108, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3175:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3174:15:43" + }, + "returnParameters": { + "id": 8113, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8112, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8134, + "src": "3213:7:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + }, + "typeName": { + "id": 8111, + "name": "uint224", + "nodeType": "ElementaryTypeName", + "src": "3213:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint224", + "typeString": "uint224" + } + }, + "visibility": "internal" + } + ], + "src": "3212:9:43" + }, + "scope": 9760, + "src": "3156:218:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8161, + "nodeType": "Block", + "src": "3731:152:43", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8148, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8142, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8137, + "src": "3745:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 8145, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3758:7:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint216_$", + "typeString": "type(uint216)" + }, + "typeName": { + "id": 8144, + "name": "uint216", + "nodeType": "ElementaryTypeName", + "src": "3758:7:43", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint216_$", + "typeString": "type(uint216)" + } + ], + "id": 8143, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "3753:4:43", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 8146, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3753:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint216", + "typeString": "type(uint216)" + } + }, + "id": 8147, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "3767:3:43", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "3753:17:43", + "typeDescriptions": { + "typeIdentifier": "t_uint216", + "typeString": "uint216" + } + }, + "src": "3745:25:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8155, + "nodeType": "IfStatement", + "src": "3741:105:43", + "trueBody": { + "id": 8154, + "nodeType": "Block", + "src": "3772:74:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "323136", + "id": 8150, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3824:3:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_216_by_1", + "typeString": "int_const 216" + }, + "value": "216" + }, + { + "id": 8151, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8137, + "src": "3829:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_216_by_1", + "typeString": "int_const 216" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8149, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8005, + "src": "3793:30:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$", + "typeString": "function (uint8,uint256) pure" + } + }, + "id": 8152, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3793:42:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8153, + "nodeType": "RevertStatement", + "src": "3786:49:43" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 8158, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8137, + "src": "3870:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8157, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3862:7:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint216_$", + "typeString": "type(uint216)" + }, + "typeName": { + "id": 8156, + "name": "uint216", + "nodeType": "ElementaryTypeName", + "src": "3862:7:43", + "typeDescriptions": {} + } + }, + "id": 8159, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3862:14:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint216", + "typeString": "uint216" + } + }, + "functionReturnParameters": 8141, + "id": 8160, + "nodeType": "Return", + "src": "3855:21:43" + } + ] + }, + "documentation": { + "id": 8135, + "nodeType": "StructuredDocumentation", + "src": "3380:280:43", + "text": " @dev Returns the downcasted uint216 from uint256, reverting on\n overflow (when the input is greater than largest uint216).\n Counterpart to Solidity's `uint216` operator.\n Requirements:\n - input must fit into 216 bits" + }, + "id": 8162, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint216", + "nameLocation": "3674:9:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8138, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8137, + "mutability": "mutable", + "name": "value", + "nameLocation": "3692:5:43", + "nodeType": "VariableDeclaration", + "scope": 8162, + "src": "3684:13:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8136, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3684:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3683:15:43" + }, + "returnParameters": { + "id": 8141, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8140, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8162, + "src": "3722:7:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint216", + "typeString": "uint216" + }, + "typeName": { + "id": 8139, + "name": "uint216", + "nodeType": "ElementaryTypeName", + "src": "3722:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint216", + "typeString": "uint216" + } + }, + "visibility": "internal" + } + ], + "src": "3721:9:43" + }, + "scope": 9760, + "src": "3665:218:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8189, + "nodeType": "Block", + "src": "4240:152:43", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8176, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8170, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8165, + "src": "4254:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 8173, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4267:7:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint208_$", + "typeString": "type(uint208)" + }, + "typeName": { + "id": 8172, + "name": "uint208", + "nodeType": "ElementaryTypeName", + "src": "4267:7:43", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint208_$", + "typeString": "type(uint208)" + } + ], + "id": 8171, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "4262:4:43", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 8174, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4262:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint208", + "typeString": "type(uint208)" + } + }, + "id": 8175, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4276:3:43", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "4262:17:43", + "typeDescriptions": { + "typeIdentifier": "t_uint208", + "typeString": "uint208" + } + }, + "src": "4254:25:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8183, + "nodeType": "IfStatement", + "src": "4250:105:43", + "trueBody": { + "id": 8182, + "nodeType": "Block", + "src": "4281:74:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "323038", + "id": 8178, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4333:3:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_208_by_1", + "typeString": "int_const 208" + }, + "value": "208" + }, + { + "id": 8179, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8165, + "src": "4338:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_208_by_1", + "typeString": "int_const 208" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8177, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8005, + "src": "4302:30:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$", + "typeString": "function (uint8,uint256) pure" + } + }, + "id": 8180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4302:42:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8181, + "nodeType": "RevertStatement", + "src": "4295:49:43" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 8186, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8165, + "src": "4379:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8185, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4371:7:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint208_$", + "typeString": "type(uint208)" + }, + "typeName": { + "id": 8184, + "name": "uint208", + "nodeType": "ElementaryTypeName", + "src": "4371:7:43", + "typeDescriptions": {} + } + }, + "id": 8187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4371:14:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint208", + "typeString": "uint208" + } + }, + "functionReturnParameters": 8169, + "id": 8188, + "nodeType": "Return", + "src": "4364:21:43" + } + ] + }, + "documentation": { + "id": 8163, + "nodeType": "StructuredDocumentation", + "src": "3889:280:43", + "text": " @dev Returns the downcasted uint208 from uint256, reverting on\n overflow (when the input is greater than largest uint208).\n Counterpart to Solidity's `uint208` operator.\n Requirements:\n - input must fit into 208 bits" + }, + "id": 8190, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint208", + "nameLocation": "4183:9:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8166, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8165, + "mutability": "mutable", + "name": "value", + "nameLocation": "4201:5:43", + "nodeType": "VariableDeclaration", + "scope": 8190, + "src": "4193:13:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8164, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4193:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4192:15:43" + }, + "returnParameters": { + "id": 8169, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8168, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8190, + "src": "4231:7:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint208", + "typeString": "uint208" + }, + "typeName": { + "id": 8167, + "name": "uint208", + "nodeType": "ElementaryTypeName", + "src": "4231:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint208", + "typeString": "uint208" + } + }, + "visibility": "internal" + } + ], + "src": "4230:9:43" + }, + "scope": 9760, + "src": "4174:218:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8217, + "nodeType": "Block", + "src": "4749:152:43", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8204, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8198, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8193, + "src": "4763:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 8201, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4776:7:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint200_$", + "typeString": "type(uint200)" + }, + "typeName": { + "id": 8200, + "name": "uint200", + "nodeType": "ElementaryTypeName", + "src": "4776:7:43", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint200_$", + "typeString": "type(uint200)" + } + ], + "id": 8199, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "4771:4:43", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 8202, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4771:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint200", + "typeString": "type(uint200)" + } + }, + "id": 8203, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4785:3:43", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "4771:17:43", + "typeDescriptions": { + "typeIdentifier": "t_uint200", + "typeString": "uint200" + } + }, + "src": "4763:25:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8211, + "nodeType": "IfStatement", + "src": "4759:105:43", + "trueBody": { + "id": 8210, + "nodeType": "Block", + "src": "4790:74:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "323030", + "id": 8206, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4842:3:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_200_by_1", + "typeString": "int_const 200" + }, + "value": "200" + }, + { + "id": 8207, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8193, + "src": "4847:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_200_by_1", + "typeString": "int_const 200" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8205, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8005, + "src": "4811:30:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$", + "typeString": "function (uint8,uint256) pure" + } + }, + "id": 8208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4811:42:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8209, + "nodeType": "RevertStatement", + "src": "4804:49:43" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 8214, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8193, + "src": "4888:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8213, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4880:7:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint200_$", + "typeString": "type(uint200)" + }, + "typeName": { + "id": 8212, + "name": "uint200", + "nodeType": "ElementaryTypeName", + "src": "4880:7:43", + "typeDescriptions": {} + } + }, + "id": 8215, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4880:14:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint200", + "typeString": "uint200" + } + }, + "functionReturnParameters": 8197, + "id": 8216, + "nodeType": "Return", + "src": "4873:21:43" + } + ] + }, + "documentation": { + "id": 8191, + "nodeType": "StructuredDocumentation", + "src": "4398:280:43", + "text": " @dev Returns the downcasted uint200 from uint256, reverting on\n overflow (when the input is greater than largest uint200).\n Counterpart to Solidity's `uint200` operator.\n Requirements:\n - input must fit into 200 bits" + }, + "id": 8218, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint200", + "nameLocation": "4692:9:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8194, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8193, + "mutability": "mutable", + "name": "value", + "nameLocation": "4710:5:43", + "nodeType": "VariableDeclaration", + "scope": 8218, + "src": "4702:13:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8192, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4702:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4701:15:43" + }, + "returnParameters": { + "id": 8197, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8196, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8218, + "src": "4740:7:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint200", + "typeString": "uint200" + }, + "typeName": { + "id": 8195, + "name": "uint200", + "nodeType": "ElementaryTypeName", + "src": "4740:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint200", + "typeString": "uint200" + } + }, + "visibility": "internal" + } + ], + "src": "4739:9:43" + }, + "scope": 9760, + "src": "4683:218:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8245, + "nodeType": "Block", + "src": "5258:152:43", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8232, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8226, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8221, + "src": "5272:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 8229, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5285:7:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint192_$", + "typeString": "type(uint192)" + }, + "typeName": { + "id": 8228, + "name": "uint192", + "nodeType": "ElementaryTypeName", + "src": "5285:7:43", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint192_$", + "typeString": "type(uint192)" + } + ], + "id": 8227, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "5280:4:43", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 8230, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5280:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint192", + "typeString": "type(uint192)" + } + }, + "id": 8231, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "5294:3:43", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "5280:17:43", + "typeDescriptions": { + "typeIdentifier": "t_uint192", + "typeString": "uint192" + } + }, + "src": "5272:25:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8239, + "nodeType": "IfStatement", + "src": "5268:105:43", + "trueBody": { + "id": 8238, + "nodeType": "Block", + "src": "5299:74:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313932", + "id": 8234, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5351:3:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_192_by_1", + "typeString": "int_const 192" + }, + "value": "192" + }, + { + "id": 8235, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8221, + "src": "5356:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_192_by_1", + "typeString": "int_const 192" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8233, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8005, + "src": "5320:30:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$", + "typeString": "function (uint8,uint256) pure" + } + }, + "id": 8236, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5320:42:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8237, + "nodeType": "RevertStatement", + "src": "5313:49:43" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 8242, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8221, + "src": "5397:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8241, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5389:7:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint192_$", + "typeString": "type(uint192)" + }, + "typeName": { + "id": 8240, + "name": "uint192", + "nodeType": "ElementaryTypeName", + "src": "5389:7:43", + "typeDescriptions": {} + } + }, + "id": 8243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5389:14:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint192", + "typeString": "uint192" + } + }, + "functionReturnParameters": 8225, + "id": 8244, + "nodeType": "Return", + "src": "5382:21:43" + } + ] + }, + "documentation": { + "id": 8219, + "nodeType": "StructuredDocumentation", + "src": "4907:280:43", + "text": " @dev Returns the downcasted uint192 from uint256, reverting on\n overflow (when the input is greater than largest uint192).\n Counterpart to Solidity's `uint192` operator.\n Requirements:\n - input must fit into 192 bits" + }, + "id": 8246, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint192", + "nameLocation": "5201:9:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8222, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8221, + "mutability": "mutable", + "name": "value", + "nameLocation": "5219:5:43", + "nodeType": "VariableDeclaration", + "scope": 8246, + "src": "5211:13:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8220, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5211:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5210:15:43" + }, + "returnParameters": { + "id": 8225, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8224, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8246, + "src": "5249:7:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint192", + "typeString": "uint192" + }, + "typeName": { + "id": 8223, + "name": "uint192", + "nodeType": "ElementaryTypeName", + "src": "5249:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint192", + "typeString": "uint192" + } + }, + "visibility": "internal" + } + ], + "src": "5248:9:43" + }, + "scope": 9760, + "src": "5192:218:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8273, + "nodeType": "Block", + "src": "5767:152:43", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8260, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8254, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8249, + "src": "5781:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 8257, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5794:7:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint184_$", + "typeString": "type(uint184)" + }, + "typeName": { + "id": 8256, + "name": "uint184", + "nodeType": "ElementaryTypeName", + "src": "5794:7:43", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint184_$", + "typeString": "type(uint184)" + } + ], + "id": 8255, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "5789:4:43", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 8258, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5789:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint184", + "typeString": "type(uint184)" + } + }, + "id": 8259, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "5803:3:43", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "5789:17:43", + "typeDescriptions": { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + } + }, + "src": "5781:25:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8267, + "nodeType": "IfStatement", + "src": "5777:105:43", + "trueBody": { + "id": 8266, + "nodeType": "Block", + "src": "5808:74:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313834", + "id": 8262, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5860:3:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_184_by_1", + "typeString": "int_const 184" + }, + "value": "184" + }, + { + "id": 8263, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8249, + "src": "5865:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_184_by_1", + "typeString": "int_const 184" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8261, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8005, + "src": "5829:30:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$", + "typeString": "function (uint8,uint256) pure" + } + }, + "id": 8264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5829:42:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8265, + "nodeType": "RevertStatement", + "src": "5822:49:43" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 8270, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8249, + "src": "5906:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8269, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5898:7:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint184_$", + "typeString": "type(uint184)" + }, + "typeName": { + "id": 8268, + "name": "uint184", + "nodeType": "ElementaryTypeName", + "src": "5898:7:43", + "typeDescriptions": {} + } + }, + "id": 8271, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5898:14:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + } + }, + "functionReturnParameters": 8253, + "id": 8272, + "nodeType": "Return", + "src": "5891:21:43" + } + ] + }, + "documentation": { + "id": 8247, + "nodeType": "StructuredDocumentation", + "src": "5416:280:43", + "text": " @dev Returns the downcasted uint184 from uint256, reverting on\n overflow (when the input is greater than largest uint184).\n Counterpart to Solidity's `uint184` operator.\n Requirements:\n - input must fit into 184 bits" + }, + "id": 8274, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint184", + "nameLocation": "5710:9:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8250, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8249, + "mutability": "mutable", + "name": "value", + "nameLocation": "5728:5:43", + "nodeType": "VariableDeclaration", + "scope": 8274, + "src": "5720:13:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8248, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5720:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5719:15:43" + }, + "returnParameters": { + "id": 8253, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8252, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8274, + "src": "5758:7:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + }, + "typeName": { + "id": 8251, + "name": "uint184", + "nodeType": "ElementaryTypeName", + "src": "5758:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint184", + "typeString": "uint184" + } + }, + "visibility": "internal" + } + ], + "src": "5757:9:43" + }, + "scope": 9760, + "src": "5701:218:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8301, + "nodeType": "Block", + "src": "6276:152:43", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8288, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8282, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8277, + "src": "6290:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 8285, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6303:7:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint176_$", + "typeString": "type(uint176)" + }, + "typeName": { + "id": 8284, + "name": "uint176", + "nodeType": "ElementaryTypeName", + "src": "6303:7:43", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint176_$", + "typeString": "type(uint176)" + } + ], + "id": 8283, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "6298:4:43", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 8286, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6298:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint176", + "typeString": "type(uint176)" + } + }, + "id": 8287, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6312:3:43", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "6298:17:43", + "typeDescriptions": { + "typeIdentifier": "t_uint176", + "typeString": "uint176" + } + }, + "src": "6290:25:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8295, + "nodeType": "IfStatement", + "src": "6286:105:43", + "trueBody": { + "id": 8294, + "nodeType": "Block", + "src": "6317:74:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313736", + "id": 8290, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6369:3:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_176_by_1", + "typeString": "int_const 176" + }, + "value": "176" + }, + { + "id": 8291, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8277, + "src": "6374:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_176_by_1", + "typeString": "int_const 176" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8289, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8005, + "src": "6338:30:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$", + "typeString": "function (uint8,uint256) pure" + } + }, + "id": 8292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6338:42:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8293, + "nodeType": "RevertStatement", + "src": "6331:49:43" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 8298, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8277, + "src": "6415:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8297, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6407:7:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint176_$", + "typeString": "type(uint176)" + }, + "typeName": { + "id": 8296, + "name": "uint176", + "nodeType": "ElementaryTypeName", + "src": "6407:7:43", + "typeDescriptions": {} + } + }, + "id": 8299, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6407:14:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint176", + "typeString": "uint176" + } + }, + "functionReturnParameters": 8281, + "id": 8300, + "nodeType": "Return", + "src": "6400:21:43" + } + ] + }, + "documentation": { + "id": 8275, + "nodeType": "StructuredDocumentation", + "src": "5925:280:43", + "text": " @dev Returns the downcasted uint176 from uint256, reverting on\n overflow (when the input is greater than largest uint176).\n Counterpart to Solidity's `uint176` operator.\n Requirements:\n - input must fit into 176 bits" + }, + "id": 8302, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint176", + "nameLocation": "6219:9:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8278, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8277, + "mutability": "mutable", + "name": "value", + "nameLocation": "6237:5:43", + "nodeType": "VariableDeclaration", + "scope": 8302, + "src": "6229:13:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8276, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6229:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6228:15:43" + }, + "returnParameters": { + "id": 8281, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8280, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8302, + "src": "6267:7:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint176", + "typeString": "uint176" + }, + "typeName": { + "id": 8279, + "name": "uint176", + "nodeType": "ElementaryTypeName", + "src": "6267:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint176", + "typeString": "uint176" + } + }, + "visibility": "internal" + } + ], + "src": "6266:9:43" + }, + "scope": 9760, + "src": "6210:218:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8329, + "nodeType": "Block", + "src": "6785:152:43", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8310, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8305, + "src": "6799:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 8313, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6812:7:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint168_$", + "typeString": "type(uint168)" + }, + "typeName": { + "id": 8312, + "name": "uint168", + "nodeType": "ElementaryTypeName", + "src": "6812:7:43", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint168_$", + "typeString": "type(uint168)" + } + ], + "id": 8311, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "6807:4:43", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 8314, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6807:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint168", + "typeString": "type(uint168)" + } + }, + "id": 8315, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6821:3:43", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "6807:17:43", + "typeDescriptions": { + "typeIdentifier": "t_uint168", + "typeString": "uint168" + } + }, + "src": "6799:25:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8323, + "nodeType": "IfStatement", + "src": "6795:105:43", + "trueBody": { + "id": 8322, + "nodeType": "Block", + "src": "6826:74:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313638", + "id": 8318, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6878:3:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_168_by_1", + "typeString": "int_const 168" + }, + "value": "168" + }, + { + "id": 8319, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8305, + "src": "6883:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_168_by_1", + "typeString": "int_const 168" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8317, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8005, + "src": "6847:30:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$", + "typeString": "function (uint8,uint256) pure" + } + }, + "id": 8320, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6847:42:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8321, + "nodeType": "RevertStatement", + "src": "6840:49:43" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 8326, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8305, + "src": "6924:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8325, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6916:7:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint168_$", + "typeString": "type(uint168)" + }, + "typeName": { + "id": 8324, + "name": "uint168", + "nodeType": "ElementaryTypeName", + "src": "6916:7:43", + "typeDescriptions": {} + } + }, + "id": 8327, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6916:14:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint168", + "typeString": "uint168" + } + }, + "functionReturnParameters": 8309, + "id": 8328, + "nodeType": "Return", + "src": "6909:21:43" + } + ] + }, + "documentation": { + "id": 8303, + "nodeType": "StructuredDocumentation", + "src": "6434:280:43", + "text": " @dev Returns the downcasted uint168 from uint256, reverting on\n overflow (when the input is greater than largest uint168).\n Counterpart to Solidity's `uint168` operator.\n Requirements:\n - input must fit into 168 bits" + }, + "id": 8330, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint168", + "nameLocation": "6728:9:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8306, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8305, + "mutability": "mutable", + "name": "value", + "nameLocation": "6746:5:43", + "nodeType": "VariableDeclaration", + "scope": 8330, + "src": "6738:13:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8304, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6738:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6737:15:43" + }, + "returnParameters": { + "id": 8309, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8308, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8330, + "src": "6776:7:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint168", + "typeString": "uint168" + }, + "typeName": { + "id": 8307, + "name": "uint168", + "nodeType": "ElementaryTypeName", + "src": "6776:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint168", + "typeString": "uint168" + } + }, + "visibility": "internal" + } + ], + "src": "6775:9:43" + }, + "scope": 9760, + "src": "6719:218:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8357, + "nodeType": "Block", + "src": "7294:152:43", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8344, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8338, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8333, + "src": "7308:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 8341, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7321:7:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 8340, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "7321:7:43", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + } + ], + "id": 8339, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "7316:4:43", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 8342, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7316:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint160", + "typeString": "type(uint160)" + } + }, + "id": 8343, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "7330:3:43", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "7316:17:43", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "src": "7308:25:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8351, + "nodeType": "IfStatement", + "src": "7304:105:43", + "trueBody": { + "id": 8350, + "nodeType": "Block", + "src": "7335:74:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313630", + "id": 8346, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7387:3:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_160_by_1", + "typeString": "int_const 160" + }, + "value": "160" + }, + { + "id": 8347, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8333, + "src": "7392:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_160_by_1", + "typeString": "int_const 160" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8345, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8005, + "src": "7356:30:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$", + "typeString": "function (uint8,uint256) pure" + } + }, + "id": 8348, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7356:42:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8349, + "nodeType": "RevertStatement", + "src": "7349:49:43" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 8354, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8333, + "src": "7433:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8353, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7425:7:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 8352, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "7425:7:43", + "typeDescriptions": {} + } + }, + "id": 8355, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7425:14:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "functionReturnParameters": 8337, + "id": 8356, + "nodeType": "Return", + "src": "7418:21:43" + } + ] + }, + "documentation": { + "id": 8331, + "nodeType": "StructuredDocumentation", + "src": "6943:280:43", + "text": " @dev Returns the downcasted uint160 from uint256, reverting on\n overflow (when the input is greater than largest uint160).\n Counterpart to Solidity's `uint160` operator.\n Requirements:\n - input must fit into 160 bits" + }, + "id": 8358, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint160", + "nameLocation": "7237:9:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8334, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8333, + "mutability": "mutable", + "name": "value", + "nameLocation": "7255:5:43", + "nodeType": "VariableDeclaration", + "scope": 8358, + "src": "7247:13:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8332, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7247:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7246:15:43" + }, + "returnParameters": { + "id": 8337, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8336, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8358, + "src": "7285:7:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + }, + "typeName": { + "id": 8335, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "7285:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + }, + "visibility": "internal" + } + ], + "src": "7284:9:43" + }, + "scope": 9760, + "src": "7228:218:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8385, + "nodeType": "Block", + "src": "7803:152:43", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8372, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8366, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8361, + "src": "7817:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 8369, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7830:7:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint152_$", + "typeString": "type(uint152)" + }, + "typeName": { + "id": 8368, + "name": "uint152", + "nodeType": "ElementaryTypeName", + "src": "7830:7:43", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint152_$", + "typeString": "type(uint152)" + } + ], + "id": 8367, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "7825:4:43", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 8370, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7825:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint152", + "typeString": "type(uint152)" + } + }, + "id": 8371, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "7839:3:43", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "7825:17:43", + "typeDescriptions": { + "typeIdentifier": "t_uint152", + "typeString": "uint152" + } + }, + "src": "7817:25:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8379, + "nodeType": "IfStatement", + "src": "7813:105:43", + "trueBody": { + "id": 8378, + "nodeType": "Block", + "src": "7844:74:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313532", + "id": 8374, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7896:3:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_152_by_1", + "typeString": "int_const 152" + }, + "value": "152" + }, + { + "id": 8375, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8361, + "src": "7901:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_152_by_1", + "typeString": "int_const 152" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8373, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8005, + "src": "7865:30:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$", + "typeString": "function (uint8,uint256) pure" + } + }, + "id": 8376, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7865:42:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8377, + "nodeType": "RevertStatement", + "src": "7858:49:43" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 8382, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8361, + "src": "7942:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8381, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7934:7:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint152_$", + "typeString": "type(uint152)" + }, + "typeName": { + "id": 8380, + "name": "uint152", + "nodeType": "ElementaryTypeName", + "src": "7934:7:43", + "typeDescriptions": {} + } + }, + "id": 8383, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7934:14:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint152", + "typeString": "uint152" + } + }, + "functionReturnParameters": 8365, + "id": 8384, + "nodeType": "Return", + "src": "7927:21:43" + } + ] + }, + "documentation": { + "id": 8359, + "nodeType": "StructuredDocumentation", + "src": "7452:280:43", + "text": " @dev Returns the downcasted uint152 from uint256, reverting on\n overflow (when the input is greater than largest uint152).\n Counterpart to Solidity's `uint152` operator.\n Requirements:\n - input must fit into 152 bits" + }, + "id": 8386, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint152", + "nameLocation": "7746:9:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8362, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8361, + "mutability": "mutable", + "name": "value", + "nameLocation": "7764:5:43", + "nodeType": "VariableDeclaration", + "scope": 8386, + "src": "7756:13:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8360, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7756:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7755:15:43" + }, + "returnParameters": { + "id": 8365, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8364, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8386, + "src": "7794:7:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint152", + "typeString": "uint152" + }, + "typeName": { + "id": 8363, + "name": "uint152", + "nodeType": "ElementaryTypeName", + "src": "7794:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint152", + "typeString": "uint152" + } + }, + "visibility": "internal" + } + ], + "src": "7793:9:43" + }, + "scope": 9760, + "src": "7737:218:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8413, + "nodeType": "Block", + "src": "8312:152:43", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8400, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8394, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8389, + "src": "8326:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 8397, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8339:7:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint144_$", + "typeString": "type(uint144)" + }, + "typeName": { + "id": 8396, + "name": "uint144", + "nodeType": "ElementaryTypeName", + "src": "8339:7:43", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint144_$", + "typeString": "type(uint144)" + } + ], + "id": 8395, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "8334:4:43", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 8398, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8334:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint144", + "typeString": "type(uint144)" + } + }, + "id": 8399, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "8348:3:43", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "8334:17:43", + "typeDescriptions": { + "typeIdentifier": "t_uint144", + "typeString": "uint144" + } + }, + "src": "8326:25:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8407, + "nodeType": "IfStatement", + "src": "8322:105:43", + "trueBody": { + "id": 8406, + "nodeType": "Block", + "src": "8353:74:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313434", + "id": 8402, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8405:3:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_144_by_1", + "typeString": "int_const 144" + }, + "value": "144" + }, + { + "id": 8403, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8389, + "src": "8410:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_144_by_1", + "typeString": "int_const 144" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8401, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8005, + "src": "8374:30:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$", + "typeString": "function (uint8,uint256) pure" + } + }, + "id": 8404, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8374:42:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8405, + "nodeType": "RevertStatement", + "src": "8367:49:43" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 8410, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8389, + "src": "8451:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8409, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8443:7:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint144_$", + "typeString": "type(uint144)" + }, + "typeName": { + "id": 8408, + "name": "uint144", + "nodeType": "ElementaryTypeName", + "src": "8443:7:43", + "typeDescriptions": {} + } + }, + "id": 8411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8443:14:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint144", + "typeString": "uint144" + } + }, + "functionReturnParameters": 8393, + "id": 8412, + "nodeType": "Return", + "src": "8436:21:43" + } + ] + }, + "documentation": { + "id": 8387, + "nodeType": "StructuredDocumentation", + "src": "7961:280:43", + "text": " @dev Returns the downcasted uint144 from uint256, reverting on\n overflow (when the input is greater than largest uint144).\n Counterpart to Solidity's `uint144` operator.\n Requirements:\n - input must fit into 144 bits" + }, + "id": 8414, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint144", + "nameLocation": "8255:9:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8390, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8389, + "mutability": "mutable", + "name": "value", + "nameLocation": "8273:5:43", + "nodeType": "VariableDeclaration", + "scope": 8414, + "src": "8265:13:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8388, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8265:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8264:15:43" + }, + "returnParameters": { + "id": 8393, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8392, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8414, + "src": "8303:7:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint144", + "typeString": "uint144" + }, + "typeName": { + "id": 8391, + "name": "uint144", + "nodeType": "ElementaryTypeName", + "src": "8303:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint144", + "typeString": "uint144" + } + }, + "visibility": "internal" + } + ], + "src": "8302:9:43" + }, + "scope": 9760, + "src": "8246:218:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8441, + "nodeType": "Block", + "src": "8821:152:43", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8428, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8422, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8417, + "src": "8835:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 8425, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8848:7:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint136_$", + "typeString": "type(uint136)" + }, + "typeName": { + "id": 8424, + "name": "uint136", + "nodeType": "ElementaryTypeName", + "src": "8848:7:43", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint136_$", + "typeString": "type(uint136)" + } + ], + "id": 8423, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "8843:4:43", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 8426, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8843:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint136", + "typeString": "type(uint136)" + } + }, + "id": 8427, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "8857:3:43", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "8843:17:43", + "typeDescriptions": { + "typeIdentifier": "t_uint136", + "typeString": "uint136" + } + }, + "src": "8835:25:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8435, + "nodeType": "IfStatement", + "src": "8831:105:43", + "trueBody": { + "id": 8434, + "nodeType": "Block", + "src": "8862:74:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313336", + "id": 8430, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8914:3:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_136_by_1", + "typeString": "int_const 136" + }, + "value": "136" + }, + { + "id": 8431, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8417, + "src": "8919:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_136_by_1", + "typeString": "int_const 136" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8429, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8005, + "src": "8883:30:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$", + "typeString": "function (uint8,uint256) pure" + } + }, + "id": 8432, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8883:42:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8433, + "nodeType": "RevertStatement", + "src": "8876:49:43" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 8438, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8417, + "src": "8960:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8437, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8952:7:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint136_$", + "typeString": "type(uint136)" + }, + "typeName": { + "id": 8436, + "name": "uint136", + "nodeType": "ElementaryTypeName", + "src": "8952:7:43", + "typeDescriptions": {} + } + }, + "id": 8439, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8952:14:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint136", + "typeString": "uint136" + } + }, + "functionReturnParameters": 8421, + "id": 8440, + "nodeType": "Return", + "src": "8945:21:43" + } + ] + }, + "documentation": { + "id": 8415, + "nodeType": "StructuredDocumentation", + "src": "8470:280:43", + "text": " @dev Returns the downcasted uint136 from uint256, reverting on\n overflow (when the input is greater than largest uint136).\n Counterpart to Solidity's `uint136` operator.\n Requirements:\n - input must fit into 136 bits" + }, + "id": 8442, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint136", + "nameLocation": "8764:9:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8418, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8417, + "mutability": "mutable", + "name": "value", + "nameLocation": "8782:5:43", + "nodeType": "VariableDeclaration", + "scope": 8442, + "src": "8774:13:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8416, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8774:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8773:15:43" + }, + "returnParameters": { + "id": 8421, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8420, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8442, + "src": "8812:7:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint136", + "typeString": "uint136" + }, + "typeName": { + "id": 8419, + "name": "uint136", + "nodeType": "ElementaryTypeName", + "src": "8812:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint136", + "typeString": "uint136" + } + }, + "visibility": "internal" + } + ], + "src": "8811:9:43" + }, + "scope": 9760, + "src": "8755:218:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8469, + "nodeType": "Block", + "src": "9330:152:43", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8456, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8450, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8445, + "src": "9344:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 8453, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9357:7:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + }, + "typeName": { + "id": 8452, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "9357:7:43", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + } + ], + "id": 8451, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "9352:4:43", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 8454, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9352:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint128", + "typeString": "type(uint128)" + } + }, + "id": 8455, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "9366:3:43", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "9352:17:43", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "9344:25:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8463, + "nodeType": "IfStatement", + "src": "9340:105:43", + "trueBody": { + "id": 8462, + "nodeType": "Block", + "src": "9371:74:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313238", + "id": 8458, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9423:3:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + { + "id": 8459, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8445, + "src": "9428:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8457, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8005, + "src": "9392:30:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$", + "typeString": "function (uint8,uint256) pure" + } + }, + "id": 8460, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9392:42:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8461, + "nodeType": "RevertStatement", + "src": "9385:49:43" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 8466, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8445, + "src": "9469:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8465, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9461:7:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + }, + "typeName": { + "id": 8464, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "9461:7:43", + "typeDescriptions": {} + } + }, + "id": 8467, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9461:14:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "functionReturnParameters": 8449, + "id": 8468, + "nodeType": "Return", + "src": "9454:21:43" + } + ] + }, + "documentation": { + "id": 8443, + "nodeType": "StructuredDocumentation", + "src": "8979:280:43", + "text": " @dev Returns the downcasted uint128 from uint256, reverting on\n overflow (when the input is greater than largest uint128).\n Counterpart to Solidity's `uint128` operator.\n Requirements:\n - input must fit into 128 bits" + }, + "id": 8470, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint128", + "nameLocation": "9273:9:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8446, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8445, + "mutability": "mutable", + "name": "value", + "nameLocation": "9291:5:43", + "nodeType": "VariableDeclaration", + "scope": 8470, + "src": "9283:13:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8444, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9283:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9282:15:43" + }, + "returnParameters": { + "id": 8449, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8448, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8470, + "src": "9321:7:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 8447, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "9321:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "9320:9:43" + }, + "scope": 9760, + "src": "9264:218:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8497, + "nodeType": "Block", + "src": "9839:152:43", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8484, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8478, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8473, + "src": "9853:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 8481, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9866:7:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint120_$", + "typeString": "type(uint120)" + }, + "typeName": { + "id": 8480, + "name": "uint120", + "nodeType": "ElementaryTypeName", + "src": "9866:7:43", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint120_$", + "typeString": "type(uint120)" + } + ], + "id": 8479, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "9861:4:43", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 8482, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9861:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint120", + "typeString": "type(uint120)" + } + }, + "id": 8483, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "9875:3:43", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "9861:17:43", + "typeDescriptions": { + "typeIdentifier": "t_uint120", + "typeString": "uint120" + } + }, + "src": "9853:25:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8491, + "nodeType": "IfStatement", + "src": "9849:105:43", + "trueBody": { + "id": 8490, + "nodeType": "Block", + "src": "9880:74:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313230", + "id": 8486, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9932:3:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_120_by_1", + "typeString": "int_const 120" + }, + "value": "120" + }, + { + "id": 8487, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8473, + "src": "9937:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_120_by_1", + "typeString": "int_const 120" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8485, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8005, + "src": "9901:30:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$", + "typeString": "function (uint8,uint256) pure" + } + }, + "id": 8488, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9901:42:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8489, + "nodeType": "RevertStatement", + "src": "9894:49:43" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 8494, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8473, + "src": "9978:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8493, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9970:7:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint120_$", + "typeString": "type(uint120)" + }, + "typeName": { + "id": 8492, + "name": "uint120", + "nodeType": "ElementaryTypeName", + "src": "9970:7:43", + "typeDescriptions": {} + } + }, + "id": 8495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9970:14:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint120", + "typeString": "uint120" + } + }, + "functionReturnParameters": 8477, + "id": 8496, + "nodeType": "Return", + "src": "9963:21:43" + } + ] + }, + "documentation": { + "id": 8471, + "nodeType": "StructuredDocumentation", + "src": "9488:280:43", + "text": " @dev Returns the downcasted uint120 from uint256, reverting on\n overflow (when the input is greater than largest uint120).\n Counterpart to Solidity's `uint120` operator.\n Requirements:\n - input must fit into 120 bits" + }, + "id": 8498, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint120", + "nameLocation": "9782:9:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8474, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8473, + "mutability": "mutable", + "name": "value", + "nameLocation": "9800:5:43", + "nodeType": "VariableDeclaration", + "scope": 8498, + "src": "9792:13:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8472, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9792:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9791:15:43" + }, + "returnParameters": { + "id": 8477, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8476, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8498, + "src": "9830:7:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint120", + "typeString": "uint120" + }, + "typeName": { + "id": 8475, + "name": "uint120", + "nodeType": "ElementaryTypeName", + "src": "9830:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint120", + "typeString": "uint120" + } + }, + "visibility": "internal" + } + ], + "src": "9829:9:43" + }, + "scope": 9760, + "src": "9773:218:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8525, + "nodeType": "Block", + "src": "10348:152:43", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8506, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8501, + "src": "10362:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 8509, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10375:7:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint112_$", + "typeString": "type(uint112)" + }, + "typeName": { + "id": 8508, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "10375:7:43", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint112_$", + "typeString": "type(uint112)" + } + ], + "id": 8507, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "10370:4:43", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 8510, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10370:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint112", + "typeString": "type(uint112)" + } + }, + "id": 8511, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "10384:3:43", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "10370:17:43", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "src": "10362:25:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8519, + "nodeType": "IfStatement", + "src": "10358:105:43", + "trueBody": { + "id": 8518, + "nodeType": "Block", + "src": "10389:74:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313132", + "id": 8514, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10441:3:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_112_by_1", + "typeString": "int_const 112" + }, + "value": "112" + }, + { + "id": 8515, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8501, + "src": "10446:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_112_by_1", + "typeString": "int_const 112" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8513, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8005, + "src": "10410:30:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$", + "typeString": "function (uint8,uint256) pure" + } + }, + "id": 8516, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10410:42:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8517, + "nodeType": "RevertStatement", + "src": "10403:49:43" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 8522, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8501, + "src": "10487:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8521, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10479:7:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint112_$", + "typeString": "type(uint112)" + }, + "typeName": { + "id": 8520, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "10479:7:43", + "typeDescriptions": {} + } + }, + "id": 8523, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10479:14:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "functionReturnParameters": 8505, + "id": 8524, + "nodeType": "Return", + "src": "10472:21:43" + } + ] + }, + "documentation": { + "id": 8499, + "nodeType": "StructuredDocumentation", + "src": "9997:280:43", + "text": " @dev Returns the downcasted uint112 from uint256, reverting on\n overflow (when the input is greater than largest uint112).\n Counterpart to Solidity's `uint112` operator.\n Requirements:\n - input must fit into 112 bits" + }, + "id": 8526, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint112", + "nameLocation": "10291:9:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8502, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8501, + "mutability": "mutable", + "name": "value", + "nameLocation": "10309:5:43", + "nodeType": "VariableDeclaration", + "scope": 8526, + "src": "10301:13:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8500, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10301:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10300:15:43" + }, + "returnParameters": { + "id": 8505, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8504, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8526, + "src": "10339:7:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + }, + "typeName": { + "id": 8503, + "name": "uint112", + "nodeType": "ElementaryTypeName", + "src": "10339:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint112", + "typeString": "uint112" + } + }, + "visibility": "internal" + } + ], + "src": "10338:9:43" + }, + "scope": 9760, + "src": "10282:218:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8553, + "nodeType": "Block", + "src": "10857:152:43", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8540, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8534, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8529, + "src": "10871:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 8537, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10884:7:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint104_$", + "typeString": "type(uint104)" + }, + "typeName": { + "id": 8536, + "name": "uint104", + "nodeType": "ElementaryTypeName", + "src": "10884:7:43", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint104_$", + "typeString": "type(uint104)" + } + ], + "id": 8535, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "10879:4:43", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 8538, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10879:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint104", + "typeString": "type(uint104)" + } + }, + "id": 8539, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "10893:3:43", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "10879:17:43", + "typeDescriptions": { + "typeIdentifier": "t_uint104", + "typeString": "uint104" + } + }, + "src": "10871:25:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8547, + "nodeType": "IfStatement", + "src": "10867:105:43", + "trueBody": { + "id": 8546, + "nodeType": "Block", + "src": "10898:74:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313034", + "id": 8542, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10950:3:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_104_by_1", + "typeString": "int_const 104" + }, + "value": "104" + }, + { + "id": 8543, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8529, + "src": "10955:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_104_by_1", + "typeString": "int_const 104" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8541, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8005, + "src": "10919:30:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$", + "typeString": "function (uint8,uint256) pure" + } + }, + "id": 8544, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10919:42:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8545, + "nodeType": "RevertStatement", + "src": "10912:49:43" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 8550, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8529, + "src": "10996:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8549, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10988:7:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint104_$", + "typeString": "type(uint104)" + }, + "typeName": { + "id": 8548, + "name": "uint104", + "nodeType": "ElementaryTypeName", + "src": "10988:7:43", + "typeDescriptions": {} + } + }, + "id": 8551, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10988:14:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint104", + "typeString": "uint104" + } + }, + "functionReturnParameters": 8533, + "id": 8552, + "nodeType": "Return", + "src": "10981:21:43" + } + ] + }, + "documentation": { + "id": 8527, + "nodeType": "StructuredDocumentation", + "src": "10506:280:43", + "text": " @dev Returns the downcasted uint104 from uint256, reverting on\n overflow (when the input is greater than largest uint104).\n Counterpart to Solidity's `uint104` operator.\n Requirements:\n - input must fit into 104 bits" + }, + "id": 8554, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint104", + "nameLocation": "10800:9:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8530, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8529, + "mutability": "mutable", + "name": "value", + "nameLocation": "10818:5:43", + "nodeType": "VariableDeclaration", + "scope": 8554, + "src": "10810:13:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8528, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10810:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10809:15:43" + }, + "returnParameters": { + "id": 8533, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8532, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8554, + "src": "10848:7:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint104", + "typeString": "uint104" + }, + "typeName": { + "id": 8531, + "name": "uint104", + "nodeType": "ElementaryTypeName", + "src": "10848:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint104", + "typeString": "uint104" + } + }, + "visibility": "internal" + } + ], + "src": "10847:9:43" + }, + "scope": 9760, + "src": "10791:218:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8581, + "nodeType": "Block", + "src": "11360:149:43", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8562, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8557, + "src": "11374:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 8565, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11387:6:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint96_$", + "typeString": "type(uint96)" + }, + "typeName": { + "id": 8564, + "name": "uint96", + "nodeType": "ElementaryTypeName", + "src": "11387:6:43", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint96_$", + "typeString": "type(uint96)" + } + ], + "id": 8563, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "11382:4:43", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 8566, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11382:12:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint96", + "typeString": "type(uint96)" + } + }, + "id": 8567, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "11395:3:43", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "11382:16:43", + "typeDescriptions": { + "typeIdentifier": "t_uint96", + "typeString": "uint96" + } + }, + "src": "11374:24:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8575, + "nodeType": "IfStatement", + "src": "11370:103:43", + "trueBody": { + "id": 8574, + "nodeType": "Block", + "src": "11400:73:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3936", + "id": 8570, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11452:2:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_96_by_1", + "typeString": "int_const 96" + }, + "value": "96" + }, + { + "id": 8571, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8557, + "src": "11456:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_96_by_1", + "typeString": "int_const 96" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8569, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8005, + "src": "11421:30:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$", + "typeString": "function (uint8,uint256) pure" + } + }, + "id": 8572, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11421:41:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8573, + "nodeType": "RevertStatement", + "src": "11414:48:43" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 8578, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8557, + "src": "11496:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8577, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11489:6:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint96_$", + "typeString": "type(uint96)" + }, + "typeName": { + "id": 8576, + "name": "uint96", + "nodeType": "ElementaryTypeName", + "src": "11489:6:43", + "typeDescriptions": {} + } + }, + "id": 8579, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11489:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint96", + "typeString": "uint96" + } + }, + "functionReturnParameters": 8561, + "id": 8580, + "nodeType": "Return", + "src": "11482:20:43" + } + ] + }, + "documentation": { + "id": 8555, + "nodeType": "StructuredDocumentation", + "src": "11015:276:43", + "text": " @dev Returns the downcasted uint96 from uint256, reverting on\n overflow (when the input is greater than largest uint96).\n Counterpart to Solidity's `uint96` operator.\n Requirements:\n - input must fit into 96 bits" + }, + "id": 8582, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint96", + "nameLocation": "11305:8:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8558, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8557, + "mutability": "mutable", + "name": "value", + "nameLocation": "11322:5:43", + "nodeType": "VariableDeclaration", + "scope": 8582, + "src": "11314:13:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8556, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11314:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11313:15:43" + }, + "returnParameters": { + "id": 8561, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8560, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8582, + "src": "11352:6:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint96", + "typeString": "uint96" + }, + "typeName": { + "id": 8559, + "name": "uint96", + "nodeType": "ElementaryTypeName", + "src": "11352:6:43", + "typeDescriptions": { + "typeIdentifier": "t_uint96", + "typeString": "uint96" + } + }, + "visibility": "internal" + } + ], + "src": "11351:8:43" + }, + "scope": 9760, + "src": "11296:213:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8609, + "nodeType": "Block", + "src": "11860:149:43", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8596, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8590, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8585, + "src": "11874:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 8593, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11887:6:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint88_$", + "typeString": "type(uint88)" + }, + "typeName": { + "id": 8592, + "name": "uint88", + "nodeType": "ElementaryTypeName", + "src": "11887:6:43", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint88_$", + "typeString": "type(uint88)" + } + ], + "id": 8591, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "11882:4:43", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 8594, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11882:12:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint88", + "typeString": "type(uint88)" + } + }, + "id": 8595, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "11895:3:43", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "11882:16:43", + "typeDescriptions": { + "typeIdentifier": "t_uint88", + "typeString": "uint88" + } + }, + "src": "11874:24:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8603, + "nodeType": "IfStatement", + "src": "11870:103:43", + "trueBody": { + "id": 8602, + "nodeType": "Block", + "src": "11900:73:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3838", + "id": 8598, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11952:2:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_88_by_1", + "typeString": "int_const 88" + }, + "value": "88" + }, + { + "id": 8599, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8585, + "src": "11956:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_88_by_1", + "typeString": "int_const 88" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8597, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8005, + "src": "11921:30:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$", + "typeString": "function (uint8,uint256) pure" + } + }, + "id": 8600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11921:41:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8601, + "nodeType": "RevertStatement", + "src": "11914:48:43" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 8606, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8585, + "src": "11996:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8605, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11989:6:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint88_$", + "typeString": "type(uint88)" + }, + "typeName": { + "id": 8604, + "name": "uint88", + "nodeType": "ElementaryTypeName", + "src": "11989:6:43", + "typeDescriptions": {} + } + }, + "id": 8607, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11989:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint88", + "typeString": "uint88" + } + }, + "functionReturnParameters": 8589, + "id": 8608, + "nodeType": "Return", + "src": "11982:20:43" + } + ] + }, + "documentation": { + "id": 8583, + "nodeType": "StructuredDocumentation", + "src": "11515:276:43", + "text": " @dev Returns the downcasted uint88 from uint256, reverting on\n overflow (when the input is greater than largest uint88).\n Counterpart to Solidity's `uint88` operator.\n Requirements:\n - input must fit into 88 bits" + }, + "id": 8610, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint88", + "nameLocation": "11805:8:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8586, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8585, + "mutability": "mutable", + "name": "value", + "nameLocation": "11822:5:43", + "nodeType": "VariableDeclaration", + "scope": 8610, + "src": "11814:13:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8584, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11814:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11813:15:43" + }, + "returnParameters": { + "id": 8589, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8588, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8610, + "src": "11852:6:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint88", + "typeString": "uint88" + }, + "typeName": { + "id": 8587, + "name": "uint88", + "nodeType": "ElementaryTypeName", + "src": "11852:6:43", + "typeDescriptions": { + "typeIdentifier": "t_uint88", + "typeString": "uint88" + } + }, + "visibility": "internal" + } + ], + "src": "11851:8:43" + }, + "scope": 9760, + "src": "11796:213:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8637, + "nodeType": "Block", + "src": "12360:149:43", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8624, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8618, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8613, + "src": "12374:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 8621, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12387:6:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint80_$", + "typeString": "type(uint80)" + }, + "typeName": { + "id": 8620, + "name": "uint80", + "nodeType": "ElementaryTypeName", + "src": "12387:6:43", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint80_$", + "typeString": "type(uint80)" + } + ], + "id": 8619, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "12382:4:43", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 8622, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12382:12:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint80", + "typeString": "type(uint80)" + } + }, + "id": 8623, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "12395:3:43", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "12382:16:43", + "typeDescriptions": { + "typeIdentifier": "t_uint80", + "typeString": "uint80" + } + }, + "src": "12374:24:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8631, + "nodeType": "IfStatement", + "src": "12370:103:43", + "trueBody": { + "id": 8630, + "nodeType": "Block", + "src": "12400:73:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3830", + "id": 8626, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12452:2:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_80_by_1", + "typeString": "int_const 80" + }, + "value": "80" + }, + { + "id": 8627, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8613, + "src": "12456:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_80_by_1", + "typeString": "int_const 80" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8625, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8005, + "src": "12421:30:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$", + "typeString": "function (uint8,uint256) pure" + } + }, + "id": 8628, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12421:41:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8629, + "nodeType": "RevertStatement", + "src": "12414:48:43" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 8634, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8613, + "src": "12496:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8633, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12489:6:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint80_$", + "typeString": "type(uint80)" + }, + "typeName": { + "id": 8632, + "name": "uint80", + "nodeType": "ElementaryTypeName", + "src": "12489:6:43", + "typeDescriptions": {} + } + }, + "id": 8635, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12489:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint80", + "typeString": "uint80" + } + }, + "functionReturnParameters": 8617, + "id": 8636, + "nodeType": "Return", + "src": "12482:20:43" + } + ] + }, + "documentation": { + "id": 8611, + "nodeType": "StructuredDocumentation", + "src": "12015:276:43", + "text": " @dev Returns the downcasted uint80 from uint256, reverting on\n overflow (when the input is greater than largest uint80).\n Counterpart to Solidity's `uint80` operator.\n Requirements:\n - input must fit into 80 bits" + }, + "id": 8638, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint80", + "nameLocation": "12305:8:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8614, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8613, + "mutability": "mutable", + "name": "value", + "nameLocation": "12322:5:43", + "nodeType": "VariableDeclaration", + "scope": 8638, + "src": "12314:13:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8612, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12314:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12313:15:43" + }, + "returnParameters": { + "id": 8617, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8616, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8638, + "src": "12352:6:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint80", + "typeString": "uint80" + }, + "typeName": { + "id": 8615, + "name": "uint80", + "nodeType": "ElementaryTypeName", + "src": "12352:6:43", + "typeDescriptions": { + "typeIdentifier": "t_uint80", + "typeString": "uint80" + } + }, + "visibility": "internal" + } + ], + "src": "12351:8:43" + }, + "scope": 9760, + "src": "12296:213:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8665, + "nodeType": "Block", + "src": "12860:149:43", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8646, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8641, + "src": "12874:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 8649, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12887:6:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint72_$", + "typeString": "type(uint72)" + }, + "typeName": { + "id": 8648, + "name": "uint72", + "nodeType": "ElementaryTypeName", + "src": "12887:6:43", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint72_$", + "typeString": "type(uint72)" + } + ], + "id": 8647, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "12882:4:43", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 8650, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12882:12:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint72", + "typeString": "type(uint72)" + } + }, + "id": 8651, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "12895:3:43", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "12882:16:43", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } + }, + "src": "12874:24:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8659, + "nodeType": "IfStatement", + "src": "12870:103:43", + "trueBody": { + "id": 8658, + "nodeType": "Block", + "src": "12900:73:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3732", + "id": 8654, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12952:2:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_72_by_1", + "typeString": "int_const 72" + }, + "value": "72" + }, + { + "id": 8655, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8641, + "src": "12956:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_72_by_1", + "typeString": "int_const 72" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8653, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8005, + "src": "12921:30:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$", + "typeString": "function (uint8,uint256) pure" + } + }, + "id": 8656, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12921:41:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8657, + "nodeType": "RevertStatement", + "src": "12914:48:43" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 8662, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8641, + "src": "12996:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8661, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12989:6:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint72_$", + "typeString": "type(uint72)" + }, + "typeName": { + "id": 8660, + "name": "uint72", + "nodeType": "ElementaryTypeName", + "src": "12989:6:43", + "typeDescriptions": {} + } + }, + "id": 8663, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12989:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } + }, + "functionReturnParameters": 8645, + "id": 8664, + "nodeType": "Return", + "src": "12982:20:43" + } + ] + }, + "documentation": { + "id": 8639, + "nodeType": "StructuredDocumentation", + "src": "12515:276:43", + "text": " @dev Returns the downcasted uint72 from uint256, reverting on\n overflow (when the input is greater than largest uint72).\n Counterpart to Solidity's `uint72` operator.\n Requirements:\n - input must fit into 72 bits" + }, + "id": 8666, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint72", + "nameLocation": "12805:8:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8642, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8641, + "mutability": "mutable", + "name": "value", + "nameLocation": "12822:5:43", + "nodeType": "VariableDeclaration", + "scope": 8666, + "src": "12814:13:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8640, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12814:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12813:15:43" + }, + "returnParameters": { + "id": 8645, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8644, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8666, + "src": "12852:6:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + }, + "typeName": { + "id": 8643, + "name": "uint72", + "nodeType": "ElementaryTypeName", + "src": "12852:6:43", + "typeDescriptions": { + "typeIdentifier": "t_uint72", + "typeString": "uint72" + } + }, + "visibility": "internal" + } + ], + "src": "12851:8:43" + }, + "scope": 9760, + "src": "12796:213:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8693, + "nodeType": "Block", + "src": "13360:149:43", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8674, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8669, + "src": "13374:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 8677, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13387:6:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + }, + "typeName": { + "id": 8676, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "13387:6:43", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + } + ], + "id": 8675, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "13382:4:43", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 8678, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13382:12:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint64", + "typeString": "type(uint64)" + } + }, + "id": 8679, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "13395:3:43", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "13382:16:43", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "src": "13374:24:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8687, + "nodeType": "IfStatement", + "src": "13370:103:43", + "trueBody": { + "id": 8686, + "nodeType": "Block", + "src": "13400:73:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3634", + "id": 8682, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13452:2:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + { + "id": 8683, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8669, + "src": "13456:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8681, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8005, + "src": "13421:30:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$", + "typeString": "function (uint8,uint256) pure" + } + }, + "id": 8684, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13421:41:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8685, + "nodeType": "RevertStatement", + "src": "13414:48:43" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 8690, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8669, + "src": "13496:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8689, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13489:6:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint64_$", + "typeString": "type(uint64)" + }, + "typeName": { + "id": 8688, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "13489:6:43", + "typeDescriptions": {} + } + }, + "id": 8691, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13489:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "functionReturnParameters": 8673, + "id": 8692, + "nodeType": "Return", + "src": "13482:20:43" + } + ] + }, + "documentation": { + "id": 8667, + "nodeType": "StructuredDocumentation", + "src": "13015:276:43", + "text": " @dev Returns the downcasted uint64 from uint256, reverting on\n overflow (when the input is greater than largest uint64).\n Counterpart to Solidity's `uint64` operator.\n Requirements:\n - input must fit into 64 bits" + }, + "id": 8694, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint64", + "nameLocation": "13305:8:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8670, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8669, + "mutability": "mutable", + "name": "value", + "nameLocation": "13322:5:43", + "nodeType": "VariableDeclaration", + "scope": 8694, + "src": "13314:13:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8668, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13314:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "13313:15:43" + }, + "returnParameters": { + "id": 8673, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8672, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8694, + "src": "13352:6:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + }, + "typeName": { + "id": 8671, + "name": "uint64", + "nodeType": "ElementaryTypeName", + "src": "13352:6:43", + "typeDescriptions": { + "typeIdentifier": "t_uint64", + "typeString": "uint64" + } + }, + "visibility": "internal" + } + ], + "src": "13351:8:43" + }, + "scope": 9760, + "src": "13296:213:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8721, + "nodeType": "Block", + "src": "13860:149:43", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8708, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8702, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8697, + "src": "13874:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 8705, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13887:6:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint56_$", + "typeString": "type(uint56)" + }, + "typeName": { + "id": 8704, + "name": "uint56", + "nodeType": "ElementaryTypeName", + "src": "13887:6:43", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint56_$", + "typeString": "type(uint56)" + } + ], + "id": 8703, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "13882:4:43", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 8706, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13882:12:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint56", + "typeString": "type(uint56)" + } + }, + "id": 8707, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "13895:3:43", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "13882:16:43", + "typeDescriptions": { + "typeIdentifier": "t_uint56", + "typeString": "uint56" + } + }, + "src": "13874:24:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8715, + "nodeType": "IfStatement", + "src": "13870:103:43", + "trueBody": { + "id": 8714, + "nodeType": "Block", + "src": "13900:73:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3536", + "id": 8710, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13952:2:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_56_by_1", + "typeString": "int_const 56" + }, + "value": "56" + }, + { + "id": 8711, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8697, + "src": "13956:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_56_by_1", + "typeString": "int_const 56" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8709, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8005, + "src": "13921:30:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$", + "typeString": "function (uint8,uint256) pure" + } + }, + "id": 8712, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13921:41:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8713, + "nodeType": "RevertStatement", + "src": "13914:48:43" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 8718, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8697, + "src": "13996:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8717, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13989:6:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint56_$", + "typeString": "type(uint56)" + }, + "typeName": { + "id": 8716, + "name": "uint56", + "nodeType": "ElementaryTypeName", + "src": "13989:6:43", + "typeDescriptions": {} + } + }, + "id": 8719, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13989:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint56", + "typeString": "uint56" + } + }, + "functionReturnParameters": 8701, + "id": 8720, + "nodeType": "Return", + "src": "13982:20:43" + } + ] + }, + "documentation": { + "id": 8695, + "nodeType": "StructuredDocumentation", + "src": "13515:276:43", + "text": " @dev Returns the downcasted uint56 from uint256, reverting on\n overflow (when the input is greater than largest uint56).\n Counterpart to Solidity's `uint56` operator.\n Requirements:\n - input must fit into 56 bits" + }, + "id": 8722, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint56", + "nameLocation": "13805:8:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8698, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8697, + "mutability": "mutable", + "name": "value", + "nameLocation": "13822:5:43", + "nodeType": "VariableDeclaration", + "scope": 8722, + "src": "13814:13:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8696, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13814:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "13813:15:43" + }, + "returnParameters": { + "id": 8701, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8700, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8722, + "src": "13852:6:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint56", + "typeString": "uint56" + }, + "typeName": { + "id": 8699, + "name": "uint56", + "nodeType": "ElementaryTypeName", + "src": "13852:6:43", + "typeDescriptions": { + "typeIdentifier": "t_uint56", + "typeString": "uint56" + } + }, + "visibility": "internal" + } + ], + "src": "13851:8:43" + }, + "scope": 9760, + "src": "13796:213:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8749, + "nodeType": "Block", + "src": "14360:149:43", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8736, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8730, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8725, + "src": "14374:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 8733, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14387:6:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint48_$", + "typeString": "type(uint48)" + }, + "typeName": { + "id": 8732, + "name": "uint48", + "nodeType": "ElementaryTypeName", + "src": "14387:6:43", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint48_$", + "typeString": "type(uint48)" + } + ], + "id": 8731, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "14382:4:43", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 8734, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14382:12:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint48", + "typeString": "type(uint48)" + } + }, + "id": 8735, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "14395:3:43", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "14382:16:43", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "src": "14374:24:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8743, + "nodeType": "IfStatement", + "src": "14370:103:43", + "trueBody": { + "id": 8742, + "nodeType": "Block", + "src": "14400:73:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3438", + "id": 8738, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14452:2:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_48_by_1", + "typeString": "int_const 48" + }, + "value": "48" + }, + { + "id": 8739, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8725, + "src": "14456:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_48_by_1", + "typeString": "int_const 48" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8737, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8005, + "src": "14421:30:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$", + "typeString": "function (uint8,uint256) pure" + } + }, + "id": 8740, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14421:41:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8741, + "nodeType": "RevertStatement", + "src": "14414:48:43" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 8746, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8725, + "src": "14496:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8745, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14489:6:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint48_$", + "typeString": "type(uint48)" + }, + "typeName": { + "id": 8744, + "name": "uint48", + "nodeType": "ElementaryTypeName", + "src": "14489:6:43", + "typeDescriptions": {} + } + }, + "id": 8747, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14489:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "functionReturnParameters": 8729, + "id": 8748, + "nodeType": "Return", + "src": "14482:20:43" + } + ] + }, + "documentation": { + "id": 8723, + "nodeType": "StructuredDocumentation", + "src": "14015:276:43", + "text": " @dev Returns the downcasted uint48 from uint256, reverting on\n overflow (when the input is greater than largest uint48).\n Counterpart to Solidity's `uint48` operator.\n Requirements:\n - input must fit into 48 bits" + }, + "id": 8750, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint48", + "nameLocation": "14305:8:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8726, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8725, + "mutability": "mutable", + "name": "value", + "nameLocation": "14322:5:43", + "nodeType": "VariableDeclaration", + "scope": 8750, + "src": "14314:13:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8724, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14314:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "14313:15:43" + }, + "returnParameters": { + "id": 8729, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8728, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8750, + "src": "14352:6:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + }, + "typeName": { + "id": 8727, + "name": "uint48", + "nodeType": "ElementaryTypeName", + "src": "14352:6:43", + "typeDescriptions": { + "typeIdentifier": "t_uint48", + "typeString": "uint48" + } + }, + "visibility": "internal" + } + ], + "src": "14351:8:43" + }, + "scope": 9760, + "src": "14296:213:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8777, + "nodeType": "Block", + "src": "14860:149:43", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8758, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8753, + "src": "14874:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 8761, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14887:6:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint40_$", + "typeString": "type(uint40)" + }, + "typeName": { + "id": 8760, + "name": "uint40", + "nodeType": "ElementaryTypeName", + "src": "14887:6:43", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint40_$", + "typeString": "type(uint40)" + } + ], + "id": 8759, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "14882:4:43", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 8762, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14882:12:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint40", + "typeString": "type(uint40)" + } + }, + "id": 8763, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "14895:3:43", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "14882:16:43", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + }, + "src": "14874:24:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8771, + "nodeType": "IfStatement", + "src": "14870:103:43", + "trueBody": { + "id": 8770, + "nodeType": "Block", + "src": "14900:73:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3430", + "id": 8766, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14952:2:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_40_by_1", + "typeString": "int_const 40" + }, + "value": "40" + }, + { + "id": 8767, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8753, + "src": "14956:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_40_by_1", + "typeString": "int_const 40" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8765, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8005, + "src": "14921:30:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$", + "typeString": "function (uint8,uint256) pure" + } + }, + "id": 8768, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14921:41:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8769, + "nodeType": "RevertStatement", + "src": "14914:48:43" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 8774, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8753, + "src": "14996:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8773, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14989:6:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint40_$", + "typeString": "type(uint40)" + }, + "typeName": { + "id": 8772, + "name": "uint40", + "nodeType": "ElementaryTypeName", + "src": "14989:6:43", + "typeDescriptions": {} + } + }, + "id": 8775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14989:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + }, + "functionReturnParameters": 8757, + "id": 8776, + "nodeType": "Return", + "src": "14982:20:43" + } + ] + }, + "documentation": { + "id": 8751, + "nodeType": "StructuredDocumentation", + "src": "14515:276:43", + "text": " @dev Returns the downcasted uint40 from uint256, reverting on\n overflow (when the input is greater than largest uint40).\n Counterpart to Solidity's `uint40` operator.\n Requirements:\n - input must fit into 40 bits" + }, + "id": 8778, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint40", + "nameLocation": "14805:8:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8754, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8753, + "mutability": "mutable", + "name": "value", + "nameLocation": "14822:5:43", + "nodeType": "VariableDeclaration", + "scope": 8778, + "src": "14814:13:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8752, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14814:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "14813:15:43" + }, + "returnParameters": { + "id": 8757, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8756, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8778, + "src": "14852:6:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + }, + "typeName": { + "id": 8755, + "name": "uint40", + "nodeType": "ElementaryTypeName", + "src": "14852:6:43", + "typeDescriptions": { + "typeIdentifier": "t_uint40", + "typeString": "uint40" + } + }, + "visibility": "internal" + } + ], + "src": "14851:8:43" + }, + "scope": 9760, + "src": "14796:213:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8805, + "nodeType": "Block", + "src": "15360:149:43", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8792, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8786, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8781, + "src": "15374:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 8789, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15387:6:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint32_$", + "typeString": "type(uint32)" + }, + "typeName": { + "id": 8788, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "15387:6:43", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint32_$", + "typeString": "type(uint32)" + } + ], + "id": 8787, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "15382:4:43", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 8790, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15382:12:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint32", + "typeString": "type(uint32)" + } + }, + "id": 8791, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "15395:3:43", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "15382:16:43", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "src": "15374:24:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8799, + "nodeType": "IfStatement", + "src": "15370:103:43", + "trueBody": { + "id": 8798, + "nodeType": "Block", + "src": "15400:73:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3332", + "id": 8794, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15452:2:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + { + "id": 8795, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8781, + "src": "15456:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8793, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8005, + "src": "15421:30:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$", + "typeString": "function (uint8,uint256) pure" + } + }, + "id": 8796, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15421:41:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8797, + "nodeType": "RevertStatement", + "src": "15414:48:43" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 8802, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8781, + "src": "15496:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8801, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15489:6:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint32_$", + "typeString": "type(uint32)" + }, + "typeName": { + "id": 8800, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "15489:6:43", + "typeDescriptions": {} + } + }, + "id": 8803, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15489:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "functionReturnParameters": 8785, + "id": 8804, + "nodeType": "Return", + "src": "15482:20:43" + } + ] + }, + "documentation": { + "id": 8779, + "nodeType": "StructuredDocumentation", + "src": "15015:276:43", + "text": " @dev Returns the downcasted uint32 from uint256, reverting on\n overflow (when the input is greater than largest uint32).\n Counterpart to Solidity's `uint32` operator.\n Requirements:\n - input must fit into 32 bits" + }, + "id": 8806, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint32", + "nameLocation": "15305:8:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8782, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8781, + "mutability": "mutable", + "name": "value", + "nameLocation": "15322:5:43", + "nodeType": "VariableDeclaration", + "scope": 8806, + "src": "15314:13:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8780, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15314:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "15313:15:43" + }, + "returnParameters": { + "id": 8785, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8784, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8806, + "src": "15352:6:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 8783, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "15352:6:43", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + } + ], + "src": "15351:8:43" + }, + "scope": 9760, + "src": "15296:213:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8833, + "nodeType": "Block", + "src": "15860:149:43", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8820, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8814, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8809, + "src": "15874:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 8817, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15887:6:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint24_$", + "typeString": "type(uint24)" + }, + "typeName": { + "id": 8816, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "15887:6:43", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint24_$", + "typeString": "type(uint24)" + } + ], + "id": 8815, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "15882:4:43", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 8818, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15882:12:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint24", + "typeString": "type(uint24)" + } + }, + "id": 8819, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "15895:3:43", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "15882:16:43", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "src": "15874:24:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8827, + "nodeType": "IfStatement", + "src": "15870:103:43", + "trueBody": { + "id": 8826, + "nodeType": "Block", + "src": "15900:73:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3234", + "id": 8822, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15952:2:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_24_by_1", + "typeString": "int_const 24" + }, + "value": "24" + }, + { + "id": 8823, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8809, + "src": "15956:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_24_by_1", + "typeString": "int_const 24" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8821, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8005, + "src": "15921:30:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$", + "typeString": "function (uint8,uint256) pure" + } + }, + "id": 8824, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15921:41:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8825, + "nodeType": "RevertStatement", + "src": "15914:48:43" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 8830, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8809, + "src": "15996:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8829, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "15989:6:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint24_$", + "typeString": "type(uint24)" + }, + "typeName": { + "id": 8828, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "15989:6:43", + "typeDescriptions": {} + } + }, + "id": 8831, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15989:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "functionReturnParameters": 8813, + "id": 8832, + "nodeType": "Return", + "src": "15982:20:43" + } + ] + }, + "documentation": { + "id": 8807, + "nodeType": "StructuredDocumentation", + "src": "15515:276:43", + "text": " @dev Returns the downcasted uint24 from uint256, reverting on\n overflow (when the input is greater than largest uint24).\n Counterpart to Solidity's `uint24` operator.\n Requirements:\n - input must fit into 24 bits" + }, + "id": 8834, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint24", + "nameLocation": "15805:8:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8810, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8809, + "mutability": "mutable", + "name": "value", + "nameLocation": "15822:5:43", + "nodeType": "VariableDeclaration", + "scope": 8834, + "src": "15814:13:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8808, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15814:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "15813:15:43" + }, + "returnParameters": { + "id": 8813, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8812, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8834, + "src": "15852:6:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + }, + "typeName": { + "id": 8811, + "name": "uint24", + "nodeType": "ElementaryTypeName", + "src": "15852:6:43", + "typeDescriptions": { + "typeIdentifier": "t_uint24", + "typeString": "uint24" + } + }, + "visibility": "internal" + } + ], + "src": "15851:8:43" + }, + "scope": 9760, + "src": "15796:213:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8861, + "nodeType": "Block", + "src": "16360:149:43", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8848, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8842, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8837, + "src": "16374:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 8845, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16387:6:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint16_$", + "typeString": "type(uint16)" + }, + "typeName": { + "id": 8844, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "16387:6:43", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint16_$", + "typeString": "type(uint16)" + } + ], + "id": 8843, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "16382:4:43", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 8846, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16382:12:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint16", + "typeString": "type(uint16)" + } + }, + "id": 8847, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "16395:3:43", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "16382:16:43", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "16374:24:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8855, + "nodeType": "IfStatement", + "src": "16370:103:43", + "trueBody": { + "id": 8854, + "nodeType": "Block", + "src": "16400:73:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3136", + "id": 8850, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16452:2:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + { + "id": 8851, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8837, + "src": "16456:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8849, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8005, + "src": "16421:30:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$", + "typeString": "function (uint8,uint256) pure" + } + }, + "id": 8852, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16421:41:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8853, + "nodeType": "RevertStatement", + "src": "16414:48:43" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 8858, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8837, + "src": "16496:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8857, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16489:6:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint16_$", + "typeString": "type(uint16)" + }, + "typeName": { + "id": 8856, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "16489:6:43", + "typeDescriptions": {} + } + }, + "id": 8859, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16489:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "functionReturnParameters": 8841, + "id": 8860, + "nodeType": "Return", + "src": "16482:20:43" + } + ] + }, + "documentation": { + "id": 8835, + "nodeType": "StructuredDocumentation", + "src": "16015:276:43", + "text": " @dev Returns the downcasted uint16 from uint256, reverting on\n overflow (when the input is greater than largest uint16).\n Counterpart to Solidity's `uint16` operator.\n Requirements:\n - input must fit into 16 bits" + }, + "id": 8862, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint16", + "nameLocation": "16305:8:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8838, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8837, + "mutability": "mutable", + "name": "value", + "nameLocation": "16322:5:43", + "nodeType": "VariableDeclaration", + "scope": 8862, + "src": "16314:13:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8836, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16314:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "16313:15:43" + }, + "returnParameters": { + "id": 8841, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8840, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8862, + "src": "16352:6:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 8839, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "16352:6:43", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "16351:8:43" + }, + "scope": 9760, + "src": "16296:213:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8889, + "nodeType": "Block", + "src": "16854:146:43", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 8876, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8870, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8865, + "src": "16868:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "arguments": [ + { + "id": 8873, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16881:5:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": { + "id": 8872, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "16881:5:43", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + } + ], + "id": 8871, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "16876:4:43", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 8874, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16876:11:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_uint8", + "typeString": "type(uint8)" + } + }, + "id": 8875, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "16888:3:43", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "16876:15:43", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "16868:23:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8883, + "nodeType": "IfStatement", + "src": "16864:101:43", + "trueBody": { + "id": 8882, + "nodeType": "Block", + "src": "16893:72:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "38", + "id": 8878, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16945:1:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + { + "id": 8879, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8865, + "src": "16948:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8877, + "name": "SafeCastOverflowedUintDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8005, + "src": "16914:30:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_uint256_$returns$__$", + "typeString": "function (uint8,uint256) pure" + } + }, + "id": 8880, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16914:40:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8881, + "nodeType": "RevertStatement", + "src": "16907:47:43" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 8886, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8865, + "src": "16987:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 8885, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16981:5:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": { + "id": 8884, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "16981:5:43", + "typeDescriptions": {} + } + }, + "id": 8887, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16981:12:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "functionReturnParameters": 8869, + "id": 8888, + "nodeType": "Return", + "src": "16974:19:43" + } + ] + }, + "documentation": { + "id": 8863, + "nodeType": "StructuredDocumentation", + "src": "16515:272:43", + "text": " @dev Returns the downcasted uint8 from uint256, reverting on\n overflow (when the input is greater than largest uint8).\n Counterpart to Solidity's `uint8` operator.\n Requirements:\n - input must fit into 8 bits" + }, + "id": 8890, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint8", + "nameLocation": "16801:7:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8866, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8865, + "mutability": "mutable", + "name": "value", + "nameLocation": "16817:5:43", + "nodeType": "VariableDeclaration", + "scope": 8890, + "src": "16809:13:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8864, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16809:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "16808:15:43" + }, + "returnParameters": { + "id": 8869, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8868, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8890, + "src": "16847:5:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 8867, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "16847:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "16846:7:43" + }, + "scope": 9760, + "src": "16792:208:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8912, + "nodeType": "Block", + "src": "17236:128:43", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 8900, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8898, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8893, + "src": "17250:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "hexValue": "30", + "id": 8899, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17258:1:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "17250:9:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8906, + "nodeType": "IfStatement", + "src": "17246:81:43", + "trueBody": { + "id": 8905, + "nodeType": "Block", + "src": "17261:66:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 8902, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8893, + "src": "17310:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 8901, + "name": "SafeCastOverflowedIntToUint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8010, + "src": "17282:27:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_int256_$returns$__$", + "typeString": "function (int256) pure" + } + }, + "id": 8903, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17282:34:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8904, + "nodeType": "RevertStatement", + "src": "17275:41:43" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 8909, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8893, + "src": "17351:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 8908, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "17343:7:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 8907, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17343:7:43", + "typeDescriptions": {} + } + }, + "id": 8910, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17343:14:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 8897, + "id": 8911, + "nodeType": "Return", + "src": "17336:21:43" + } + ] + }, + "documentation": { + "id": 8891, + "nodeType": "StructuredDocumentation", + "src": "17006:160:43", + "text": " @dev Converts a signed int256 into an unsigned uint256.\n Requirements:\n - input must be greater than or equal to 0." + }, + "id": 8913, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint256", + "nameLocation": "17180:9:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8894, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8893, + "mutability": "mutable", + "name": "value", + "nameLocation": "17197:5:43", + "nodeType": "VariableDeclaration", + "scope": 8913, + "src": "17190:12:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 8892, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "17190:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "17189:14:43" + }, + "returnParameters": { + "id": 8897, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8896, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 8913, + "src": "17227:7:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 8895, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17227:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "17226:9:43" + }, + "scope": 9760, + "src": "17171:193:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8938, + "nodeType": "Block", + "src": "17761:150:43", + "statements": [ + { + "expression": { + "id": 8926, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 8921, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8919, + "src": "17771:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int248", + "typeString": "int248" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 8924, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8916, + "src": "17791:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 8923, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "17784:6:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int248_$", + "typeString": "type(int248)" + }, + "typeName": { + "id": 8922, + "name": "int248", + "nodeType": "ElementaryTypeName", + "src": "17784:6:43", + "typeDescriptions": {} + } + }, + "id": 8925, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17784:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int248", + "typeString": "int248" + } + }, + "src": "17771:26:43", + "typeDescriptions": { + "typeIdentifier": "t_int248", + "typeString": "int248" + } + }, + "id": 8927, + "nodeType": "ExpressionStatement", + "src": "17771:26:43" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 8930, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8928, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8919, + "src": "17811:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int248", + "typeString": "int248" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 8929, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8916, + "src": "17825:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "17811:19:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8937, + "nodeType": "IfStatement", + "src": "17807:98:43", + "trueBody": { + "id": 8936, + "nodeType": "Block", + "src": "17832:73:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "323438", + "id": 8932, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17883:3:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_248_by_1", + "typeString": "int_const 248" + }, + "value": "248" + }, + { + "id": 8933, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8916, + "src": "17888:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_248_by_1", + "typeString": "int_const 248" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 8931, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8017, + "src": "17853:29:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$__$", + "typeString": "function (uint8,int256) pure" + } + }, + "id": 8934, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17853:41:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8935, + "nodeType": "RevertStatement", + "src": "17846:48:43" + } + ] + } + } + ] + }, + "documentation": { + "id": 8914, + "nodeType": "StructuredDocumentation", + "src": "17370:312:43", + "text": " @dev Returns the downcasted int248 from int256, reverting on\n overflow (when the input is less than smallest int248 or\n greater than largest int248).\n Counterpart to Solidity's `int248` operator.\n Requirements:\n - input must fit into 248 bits" + }, + "id": 8939, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt248", + "nameLocation": "17696:8:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8917, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8916, + "mutability": "mutable", + "name": "value", + "nameLocation": "17712:5:43", + "nodeType": "VariableDeclaration", + "scope": 8939, + "src": "17705:12:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 8915, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "17705:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "17704:14:43" + }, + "returnParameters": { + "id": 8920, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8919, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "17749:10:43", + "nodeType": "VariableDeclaration", + "scope": 8939, + "src": "17742:17:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int248", + "typeString": "int248" + }, + "typeName": { + "id": 8918, + "name": "int248", + "nodeType": "ElementaryTypeName", + "src": "17742:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int248", + "typeString": "int248" + } + }, + "visibility": "internal" + } + ], + "src": "17741:19:43" + }, + "scope": 9760, + "src": "17687:224:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8964, + "nodeType": "Block", + "src": "18308:150:43", + "statements": [ + { + "expression": { + "id": 8952, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 8947, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8945, + "src": "18318:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int240", + "typeString": "int240" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 8950, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8942, + "src": "18338:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 8949, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "18331:6:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int240_$", + "typeString": "type(int240)" + }, + "typeName": { + "id": 8948, + "name": "int240", + "nodeType": "ElementaryTypeName", + "src": "18331:6:43", + "typeDescriptions": {} + } + }, + "id": 8951, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18331:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int240", + "typeString": "int240" + } + }, + "src": "18318:26:43", + "typeDescriptions": { + "typeIdentifier": "t_int240", + "typeString": "int240" + } + }, + "id": 8953, + "nodeType": "ExpressionStatement", + "src": "18318:26:43" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 8956, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8954, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8945, + "src": "18358:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int240", + "typeString": "int240" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 8955, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8942, + "src": "18372:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "18358:19:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8963, + "nodeType": "IfStatement", + "src": "18354:98:43", + "trueBody": { + "id": 8962, + "nodeType": "Block", + "src": "18379:73:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "323430", + "id": 8958, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18430:3:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_240_by_1", + "typeString": "int_const 240" + }, + "value": "240" + }, + { + "id": 8959, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8942, + "src": "18435:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_240_by_1", + "typeString": "int_const 240" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 8957, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8017, + "src": "18400:29:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$__$", + "typeString": "function (uint8,int256) pure" + } + }, + "id": 8960, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18400:41:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8961, + "nodeType": "RevertStatement", + "src": "18393:48:43" + } + ] + } + } + ] + }, + "documentation": { + "id": 8940, + "nodeType": "StructuredDocumentation", + "src": "17917:312:43", + "text": " @dev Returns the downcasted int240 from int256, reverting on\n overflow (when the input is less than smallest int240 or\n greater than largest int240).\n Counterpart to Solidity's `int240` operator.\n Requirements:\n - input must fit into 240 bits" + }, + "id": 8965, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt240", + "nameLocation": "18243:8:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8943, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8942, + "mutability": "mutable", + "name": "value", + "nameLocation": "18259:5:43", + "nodeType": "VariableDeclaration", + "scope": 8965, + "src": "18252:12:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 8941, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "18252:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "18251:14:43" + }, + "returnParameters": { + "id": 8946, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8945, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "18296:10:43", + "nodeType": "VariableDeclaration", + "scope": 8965, + "src": "18289:17:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int240", + "typeString": "int240" + }, + "typeName": { + "id": 8944, + "name": "int240", + "nodeType": "ElementaryTypeName", + "src": "18289:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int240", + "typeString": "int240" + } + }, + "visibility": "internal" + } + ], + "src": "18288:19:43" + }, + "scope": 9760, + "src": "18234:224:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 8990, + "nodeType": "Block", + "src": "18855:150:43", + "statements": [ + { + "expression": { + "id": 8978, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 8973, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8971, + "src": "18865:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int232", + "typeString": "int232" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 8976, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8968, + "src": "18885:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 8975, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "18878:6:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int232_$", + "typeString": "type(int232)" + }, + "typeName": { + "id": 8974, + "name": "int232", + "nodeType": "ElementaryTypeName", + "src": "18878:6:43", + "typeDescriptions": {} + } + }, + "id": 8977, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18878:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int232", + "typeString": "int232" + } + }, + "src": "18865:26:43", + "typeDescriptions": { + "typeIdentifier": "t_int232", + "typeString": "int232" + } + }, + "id": 8979, + "nodeType": "ExpressionStatement", + "src": "18865:26:43" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 8982, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 8980, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8971, + "src": "18905:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int232", + "typeString": "int232" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 8981, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8968, + "src": "18919:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "18905:19:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 8989, + "nodeType": "IfStatement", + "src": "18901:98:43", + "trueBody": { + "id": 8988, + "nodeType": "Block", + "src": "18926:73:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "323332", + "id": 8984, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18977:3:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_232_by_1", + "typeString": "int_const 232" + }, + "value": "232" + }, + { + "id": 8985, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8968, + "src": "18982:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_232_by_1", + "typeString": "int_const 232" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 8983, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8017, + "src": "18947:29:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$__$", + "typeString": "function (uint8,int256) pure" + } + }, + "id": 8986, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18947:41:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 8987, + "nodeType": "RevertStatement", + "src": "18940:48:43" + } + ] + } + } + ] + }, + "documentation": { + "id": 8966, + "nodeType": "StructuredDocumentation", + "src": "18464:312:43", + "text": " @dev Returns the downcasted int232 from int256, reverting on\n overflow (when the input is less than smallest int232 or\n greater than largest int232).\n Counterpart to Solidity's `int232` operator.\n Requirements:\n - input must fit into 232 bits" + }, + "id": 8991, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt232", + "nameLocation": "18790:8:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8969, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8968, + "mutability": "mutable", + "name": "value", + "nameLocation": "18806:5:43", + "nodeType": "VariableDeclaration", + "scope": 8991, + "src": "18799:12:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 8967, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "18799:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "18798:14:43" + }, + "returnParameters": { + "id": 8972, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8971, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "18843:10:43", + "nodeType": "VariableDeclaration", + "scope": 8991, + "src": "18836:17:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int232", + "typeString": "int232" + }, + "typeName": { + "id": 8970, + "name": "int232", + "nodeType": "ElementaryTypeName", + "src": "18836:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int232", + "typeString": "int232" + } + }, + "visibility": "internal" + } + ], + "src": "18835:19:43" + }, + "scope": 9760, + "src": "18781:224:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9016, + "nodeType": "Block", + "src": "19402:150:43", + "statements": [ + { + "expression": { + "id": 9004, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 8999, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8997, + "src": "19412:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int224", + "typeString": "int224" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9002, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8994, + "src": "19432:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9001, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "19425:6:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int224_$", + "typeString": "type(int224)" + }, + "typeName": { + "id": 9000, + "name": "int224", + "nodeType": "ElementaryTypeName", + "src": "19425:6:43", + "typeDescriptions": {} + } + }, + "id": 9003, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19425:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int224", + "typeString": "int224" + } + }, + "src": "19412:26:43", + "typeDescriptions": { + "typeIdentifier": "t_int224", + "typeString": "int224" + } + }, + "id": 9005, + "nodeType": "ExpressionStatement", + "src": "19412:26:43" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 9008, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9006, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8997, + "src": "19452:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int224", + "typeString": "int224" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 9007, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8994, + "src": "19466:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "19452:19:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9015, + "nodeType": "IfStatement", + "src": "19448:98:43", + "trueBody": { + "id": 9014, + "nodeType": "Block", + "src": "19473:73:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "323234", + "id": 9010, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "19524:3:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_224_by_1", + "typeString": "int_const 224" + }, + "value": "224" + }, + { + "id": 9011, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8994, + "src": "19529:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_224_by_1", + "typeString": "int_const 224" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9009, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8017, + "src": "19494:29:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$__$", + "typeString": "function (uint8,int256) pure" + } + }, + "id": 9012, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19494:41:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9013, + "nodeType": "RevertStatement", + "src": "19487:48:43" + } + ] + } + } + ] + }, + "documentation": { + "id": 8992, + "nodeType": "StructuredDocumentation", + "src": "19011:312:43", + "text": " @dev Returns the downcasted int224 from int256, reverting on\n overflow (when the input is less than smallest int224 or\n greater than largest int224).\n Counterpart to Solidity's `int224` operator.\n Requirements:\n - input must fit into 224 bits" + }, + "id": 9017, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt224", + "nameLocation": "19337:8:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 8995, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8994, + "mutability": "mutable", + "name": "value", + "nameLocation": "19353:5:43", + "nodeType": "VariableDeclaration", + "scope": 9017, + "src": "19346:12:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 8993, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "19346:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "19345:14:43" + }, + "returnParameters": { + "id": 8998, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8997, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "19390:10:43", + "nodeType": "VariableDeclaration", + "scope": 9017, + "src": "19383:17:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int224", + "typeString": "int224" + }, + "typeName": { + "id": 8996, + "name": "int224", + "nodeType": "ElementaryTypeName", + "src": "19383:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int224", + "typeString": "int224" + } + }, + "visibility": "internal" + } + ], + "src": "19382:19:43" + }, + "scope": 9760, + "src": "19328:224:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9042, + "nodeType": "Block", + "src": "19949:150:43", + "statements": [ + { + "expression": { + "id": 9030, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9025, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9023, + "src": "19959:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int216", + "typeString": "int216" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9028, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9020, + "src": "19979:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9027, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "19972:6:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int216_$", + "typeString": "type(int216)" + }, + "typeName": { + "id": 9026, + "name": "int216", + "nodeType": "ElementaryTypeName", + "src": "19972:6:43", + "typeDescriptions": {} + } + }, + "id": 9029, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19972:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int216", + "typeString": "int216" + } + }, + "src": "19959:26:43", + "typeDescriptions": { + "typeIdentifier": "t_int216", + "typeString": "int216" + } + }, + "id": 9031, + "nodeType": "ExpressionStatement", + "src": "19959:26:43" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 9034, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9032, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9023, + "src": "19999:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int216", + "typeString": "int216" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 9033, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9020, + "src": "20013:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "19999:19:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9041, + "nodeType": "IfStatement", + "src": "19995:98:43", + "trueBody": { + "id": 9040, + "nodeType": "Block", + "src": "20020:73:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "323136", + "id": 9036, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20071:3:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_216_by_1", + "typeString": "int_const 216" + }, + "value": "216" + }, + { + "id": 9037, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9020, + "src": "20076:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_216_by_1", + "typeString": "int_const 216" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9035, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8017, + "src": "20041:29:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$__$", + "typeString": "function (uint8,int256) pure" + } + }, + "id": 9038, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20041:41:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9039, + "nodeType": "RevertStatement", + "src": "20034:48:43" + } + ] + } + } + ] + }, + "documentation": { + "id": 9018, + "nodeType": "StructuredDocumentation", + "src": "19558:312:43", + "text": " @dev Returns the downcasted int216 from int256, reverting on\n overflow (when the input is less than smallest int216 or\n greater than largest int216).\n Counterpart to Solidity's `int216` operator.\n Requirements:\n - input must fit into 216 bits" + }, + "id": 9043, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt216", + "nameLocation": "19884:8:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9021, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9020, + "mutability": "mutable", + "name": "value", + "nameLocation": "19900:5:43", + "nodeType": "VariableDeclaration", + "scope": 9043, + "src": "19893:12:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9019, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "19893:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "19892:14:43" + }, + "returnParameters": { + "id": 9024, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9023, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "19937:10:43", + "nodeType": "VariableDeclaration", + "scope": 9043, + "src": "19930:17:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int216", + "typeString": "int216" + }, + "typeName": { + "id": 9022, + "name": "int216", + "nodeType": "ElementaryTypeName", + "src": "19930:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int216", + "typeString": "int216" + } + }, + "visibility": "internal" + } + ], + "src": "19929:19:43" + }, + "scope": 9760, + "src": "19875:224:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9068, + "nodeType": "Block", + "src": "20496:150:43", + "statements": [ + { + "expression": { + "id": 9056, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9051, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9049, + "src": "20506:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int208", + "typeString": "int208" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9054, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9046, + "src": "20526:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9053, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "20519:6:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int208_$", + "typeString": "type(int208)" + }, + "typeName": { + "id": 9052, + "name": "int208", + "nodeType": "ElementaryTypeName", + "src": "20519:6:43", + "typeDescriptions": {} + } + }, + "id": 9055, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20519:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int208", + "typeString": "int208" + } + }, + "src": "20506:26:43", + "typeDescriptions": { + "typeIdentifier": "t_int208", + "typeString": "int208" + } + }, + "id": 9057, + "nodeType": "ExpressionStatement", + "src": "20506:26:43" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 9060, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9058, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9049, + "src": "20546:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int208", + "typeString": "int208" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 9059, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9046, + "src": "20560:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "20546:19:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9067, + "nodeType": "IfStatement", + "src": "20542:98:43", + "trueBody": { + "id": 9066, + "nodeType": "Block", + "src": "20567:73:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "323038", + "id": 9062, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "20618:3:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_208_by_1", + "typeString": "int_const 208" + }, + "value": "208" + }, + { + "id": 9063, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9046, + "src": "20623:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_208_by_1", + "typeString": "int_const 208" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9061, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8017, + "src": "20588:29:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$__$", + "typeString": "function (uint8,int256) pure" + } + }, + "id": 9064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20588:41:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9065, + "nodeType": "RevertStatement", + "src": "20581:48:43" + } + ] + } + } + ] + }, + "documentation": { + "id": 9044, + "nodeType": "StructuredDocumentation", + "src": "20105:312:43", + "text": " @dev Returns the downcasted int208 from int256, reverting on\n overflow (when the input is less than smallest int208 or\n greater than largest int208).\n Counterpart to Solidity's `int208` operator.\n Requirements:\n - input must fit into 208 bits" + }, + "id": 9069, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt208", + "nameLocation": "20431:8:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9047, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9046, + "mutability": "mutable", + "name": "value", + "nameLocation": "20447:5:43", + "nodeType": "VariableDeclaration", + "scope": 9069, + "src": "20440:12:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9045, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "20440:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "20439:14:43" + }, + "returnParameters": { + "id": 9050, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9049, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "20484:10:43", + "nodeType": "VariableDeclaration", + "scope": 9069, + "src": "20477:17:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int208", + "typeString": "int208" + }, + "typeName": { + "id": 9048, + "name": "int208", + "nodeType": "ElementaryTypeName", + "src": "20477:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int208", + "typeString": "int208" + } + }, + "visibility": "internal" + } + ], + "src": "20476:19:43" + }, + "scope": 9760, + "src": "20422:224:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9094, + "nodeType": "Block", + "src": "21043:150:43", + "statements": [ + { + "expression": { + "id": 9082, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9077, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9075, + "src": "21053:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int200", + "typeString": "int200" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9080, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9072, + "src": "21073:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9079, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "21066:6:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int200_$", + "typeString": "type(int200)" + }, + "typeName": { + "id": 9078, + "name": "int200", + "nodeType": "ElementaryTypeName", + "src": "21066:6:43", + "typeDescriptions": {} + } + }, + "id": 9081, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21066:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int200", + "typeString": "int200" + } + }, + "src": "21053:26:43", + "typeDescriptions": { + "typeIdentifier": "t_int200", + "typeString": "int200" + } + }, + "id": 9083, + "nodeType": "ExpressionStatement", + "src": "21053:26:43" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 9086, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9084, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9075, + "src": "21093:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int200", + "typeString": "int200" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 9085, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9072, + "src": "21107:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "21093:19:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9093, + "nodeType": "IfStatement", + "src": "21089:98:43", + "trueBody": { + "id": 9092, + "nodeType": "Block", + "src": "21114:73:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "323030", + "id": 9088, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21165:3:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_200_by_1", + "typeString": "int_const 200" + }, + "value": "200" + }, + { + "id": 9089, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9072, + "src": "21170:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_200_by_1", + "typeString": "int_const 200" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9087, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8017, + "src": "21135:29:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$__$", + "typeString": "function (uint8,int256) pure" + } + }, + "id": 9090, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21135:41:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9091, + "nodeType": "RevertStatement", + "src": "21128:48:43" + } + ] + } + } + ] + }, + "documentation": { + "id": 9070, + "nodeType": "StructuredDocumentation", + "src": "20652:312:43", + "text": " @dev Returns the downcasted int200 from int256, reverting on\n overflow (when the input is less than smallest int200 or\n greater than largest int200).\n Counterpart to Solidity's `int200` operator.\n Requirements:\n - input must fit into 200 bits" + }, + "id": 9095, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt200", + "nameLocation": "20978:8:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9073, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9072, + "mutability": "mutable", + "name": "value", + "nameLocation": "20994:5:43", + "nodeType": "VariableDeclaration", + "scope": 9095, + "src": "20987:12:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9071, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "20987:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "20986:14:43" + }, + "returnParameters": { + "id": 9076, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9075, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "21031:10:43", + "nodeType": "VariableDeclaration", + "scope": 9095, + "src": "21024:17:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int200", + "typeString": "int200" + }, + "typeName": { + "id": 9074, + "name": "int200", + "nodeType": "ElementaryTypeName", + "src": "21024:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int200", + "typeString": "int200" + } + }, + "visibility": "internal" + } + ], + "src": "21023:19:43" + }, + "scope": 9760, + "src": "20969:224:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9120, + "nodeType": "Block", + "src": "21590:150:43", + "statements": [ + { + "expression": { + "id": 9108, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9103, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9101, + "src": "21600:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int192", + "typeString": "int192" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9106, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9098, + "src": "21620:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9105, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "21613:6:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int192_$", + "typeString": "type(int192)" + }, + "typeName": { + "id": 9104, + "name": "int192", + "nodeType": "ElementaryTypeName", + "src": "21613:6:43", + "typeDescriptions": {} + } + }, + "id": 9107, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21613:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int192", + "typeString": "int192" + } + }, + "src": "21600:26:43", + "typeDescriptions": { + "typeIdentifier": "t_int192", + "typeString": "int192" + } + }, + "id": 9109, + "nodeType": "ExpressionStatement", + "src": "21600:26:43" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 9112, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9110, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9101, + "src": "21640:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int192", + "typeString": "int192" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 9111, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9098, + "src": "21654:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "21640:19:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9119, + "nodeType": "IfStatement", + "src": "21636:98:43", + "trueBody": { + "id": 9118, + "nodeType": "Block", + "src": "21661:73:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313932", + "id": 9114, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21712:3:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_192_by_1", + "typeString": "int_const 192" + }, + "value": "192" + }, + { + "id": 9115, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9098, + "src": "21717:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_192_by_1", + "typeString": "int_const 192" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9113, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8017, + "src": "21682:29:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$__$", + "typeString": "function (uint8,int256) pure" + } + }, + "id": 9116, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21682:41:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9117, + "nodeType": "RevertStatement", + "src": "21675:48:43" + } + ] + } + } + ] + }, + "documentation": { + "id": 9096, + "nodeType": "StructuredDocumentation", + "src": "21199:312:43", + "text": " @dev Returns the downcasted int192 from int256, reverting on\n overflow (when the input is less than smallest int192 or\n greater than largest int192).\n Counterpart to Solidity's `int192` operator.\n Requirements:\n - input must fit into 192 bits" + }, + "id": 9121, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt192", + "nameLocation": "21525:8:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9099, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9098, + "mutability": "mutable", + "name": "value", + "nameLocation": "21541:5:43", + "nodeType": "VariableDeclaration", + "scope": 9121, + "src": "21534:12:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9097, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "21534:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "21533:14:43" + }, + "returnParameters": { + "id": 9102, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9101, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "21578:10:43", + "nodeType": "VariableDeclaration", + "scope": 9121, + "src": "21571:17:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int192", + "typeString": "int192" + }, + "typeName": { + "id": 9100, + "name": "int192", + "nodeType": "ElementaryTypeName", + "src": "21571:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int192", + "typeString": "int192" + } + }, + "visibility": "internal" + } + ], + "src": "21570:19:43" + }, + "scope": 9760, + "src": "21516:224:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9146, + "nodeType": "Block", + "src": "22137:150:43", + "statements": [ + { + "expression": { + "id": 9134, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9129, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9127, + "src": "22147:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int184", + "typeString": "int184" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9132, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9124, + "src": "22167:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9131, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "22160:6:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int184_$", + "typeString": "type(int184)" + }, + "typeName": { + "id": 9130, + "name": "int184", + "nodeType": "ElementaryTypeName", + "src": "22160:6:43", + "typeDescriptions": {} + } + }, + "id": 9133, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22160:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int184", + "typeString": "int184" + } + }, + "src": "22147:26:43", + "typeDescriptions": { + "typeIdentifier": "t_int184", + "typeString": "int184" + } + }, + "id": 9135, + "nodeType": "ExpressionStatement", + "src": "22147:26:43" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 9138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9136, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9127, + "src": "22187:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int184", + "typeString": "int184" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 9137, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9124, + "src": "22201:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "22187:19:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9145, + "nodeType": "IfStatement", + "src": "22183:98:43", + "trueBody": { + "id": 9144, + "nodeType": "Block", + "src": "22208:73:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313834", + "id": 9140, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22259:3:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_184_by_1", + "typeString": "int_const 184" + }, + "value": "184" + }, + { + "id": 9141, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9124, + "src": "22264:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_184_by_1", + "typeString": "int_const 184" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9139, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8017, + "src": "22229:29:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$__$", + "typeString": "function (uint8,int256) pure" + } + }, + "id": 9142, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22229:41:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9143, + "nodeType": "RevertStatement", + "src": "22222:48:43" + } + ] + } + } + ] + }, + "documentation": { + "id": 9122, + "nodeType": "StructuredDocumentation", + "src": "21746:312:43", + "text": " @dev Returns the downcasted int184 from int256, reverting on\n overflow (when the input is less than smallest int184 or\n greater than largest int184).\n Counterpart to Solidity's `int184` operator.\n Requirements:\n - input must fit into 184 bits" + }, + "id": 9147, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt184", + "nameLocation": "22072:8:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9125, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9124, + "mutability": "mutable", + "name": "value", + "nameLocation": "22088:5:43", + "nodeType": "VariableDeclaration", + "scope": 9147, + "src": "22081:12:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9123, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "22081:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "22080:14:43" + }, + "returnParameters": { + "id": 9128, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9127, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "22125:10:43", + "nodeType": "VariableDeclaration", + "scope": 9147, + "src": "22118:17:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int184", + "typeString": "int184" + }, + "typeName": { + "id": 9126, + "name": "int184", + "nodeType": "ElementaryTypeName", + "src": "22118:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int184", + "typeString": "int184" + } + }, + "visibility": "internal" + } + ], + "src": "22117:19:43" + }, + "scope": 9760, + "src": "22063:224:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9172, + "nodeType": "Block", + "src": "22684:150:43", + "statements": [ + { + "expression": { + "id": 9160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9155, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9153, + "src": "22694:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int176", + "typeString": "int176" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9158, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9150, + "src": "22714:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9157, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "22707:6:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int176_$", + "typeString": "type(int176)" + }, + "typeName": { + "id": 9156, + "name": "int176", + "nodeType": "ElementaryTypeName", + "src": "22707:6:43", + "typeDescriptions": {} + } + }, + "id": 9159, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22707:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int176", + "typeString": "int176" + } + }, + "src": "22694:26:43", + "typeDescriptions": { + "typeIdentifier": "t_int176", + "typeString": "int176" + } + }, + "id": 9161, + "nodeType": "ExpressionStatement", + "src": "22694:26:43" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 9164, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9162, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9153, + "src": "22734:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int176", + "typeString": "int176" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 9163, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9150, + "src": "22748:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "22734:19:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9171, + "nodeType": "IfStatement", + "src": "22730:98:43", + "trueBody": { + "id": 9170, + "nodeType": "Block", + "src": "22755:73:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313736", + "id": 9166, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "22806:3:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_176_by_1", + "typeString": "int_const 176" + }, + "value": "176" + }, + { + "id": 9167, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9150, + "src": "22811:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_176_by_1", + "typeString": "int_const 176" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9165, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8017, + "src": "22776:29:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$__$", + "typeString": "function (uint8,int256) pure" + } + }, + "id": 9168, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22776:41:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9169, + "nodeType": "RevertStatement", + "src": "22769:48:43" + } + ] + } + } + ] + }, + "documentation": { + "id": 9148, + "nodeType": "StructuredDocumentation", + "src": "22293:312:43", + "text": " @dev Returns the downcasted int176 from int256, reverting on\n overflow (when the input is less than smallest int176 or\n greater than largest int176).\n Counterpart to Solidity's `int176` operator.\n Requirements:\n - input must fit into 176 bits" + }, + "id": 9173, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt176", + "nameLocation": "22619:8:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9151, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9150, + "mutability": "mutable", + "name": "value", + "nameLocation": "22635:5:43", + "nodeType": "VariableDeclaration", + "scope": 9173, + "src": "22628:12:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9149, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "22628:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "22627:14:43" + }, + "returnParameters": { + "id": 9154, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9153, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "22672:10:43", + "nodeType": "VariableDeclaration", + "scope": 9173, + "src": "22665:17:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int176", + "typeString": "int176" + }, + "typeName": { + "id": 9152, + "name": "int176", + "nodeType": "ElementaryTypeName", + "src": "22665:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int176", + "typeString": "int176" + } + }, + "visibility": "internal" + } + ], + "src": "22664:19:43" + }, + "scope": 9760, + "src": "22610:224:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9198, + "nodeType": "Block", + "src": "23231:150:43", + "statements": [ + { + "expression": { + "id": 9186, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9181, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9179, + "src": "23241:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int168", + "typeString": "int168" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9184, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9176, + "src": "23261:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9183, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "23254:6:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int168_$", + "typeString": "type(int168)" + }, + "typeName": { + "id": 9182, + "name": "int168", + "nodeType": "ElementaryTypeName", + "src": "23254:6:43", + "typeDescriptions": {} + } + }, + "id": 9185, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23254:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int168", + "typeString": "int168" + } + }, + "src": "23241:26:43", + "typeDescriptions": { + "typeIdentifier": "t_int168", + "typeString": "int168" + } + }, + "id": 9187, + "nodeType": "ExpressionStatement", + "src": "23241:26:43" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 9190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9188, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9179, + "src": "23281:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int168", + "typeString": "int168" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 9189, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9176, + "src": "23295:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "23281:19:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9197, + "nodeType": "IfStatement", + "src": "23277:98:43", + "trueBody": { + "id": 9196, + "nodeType": "Block", + "src": "23302:73:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313638", + "id": 9192, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23353:3:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_168_by_1", + "typeString": "int_const 168" + }, + "value": "168" + }, + { + "id": 9193, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9176, + "src": "23358:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_168_by_1", + "typeString": "int_const 168" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9191, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8017, + "src": "23323:29:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$__$", + "typeString": "function (uint8,int256) pure" + } + }, + "id": 9194, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23323:41:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9195, + "nodeType": "RevertStatement", + "src": "23316:48:43" + } + ] + } + } + ] + }, + "documentation": { + "id": 9174, + "nodeType": "StructuredDocumentation", + "src": "22840:312:43", + "text": " @dev Returns the downcasted int168 from int256, reverting on\n overflow (when the input is less than smallest int168 or\n greater than largest int168).\n Counterpart to Solidity's `int168` operator.\n Requirements:\n - input must fit into 168 bits" + }, + "id": 9199, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt168", + "nameLocation": "23166:8:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9177, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9176, + "mutability": "mutable", + "name": "value", + "nameLocation": "23182:5:43", + "nodeType": "VariableDeclaration", + "scope": 9199, + "src": "23175:12:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9175, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "23175:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "23174:14:43" + }, + "returnParameters": { + "id": 9180, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9179, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "23219:10:43", + "nodeType": "VariableDeclaration", + "scope": 9199, + "src": "23212:17:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int168", + "typeString": "int168" + }, + "typeName": { + "id": 9178, + "name": "int168", + "nodeType": "ElementaryTypeName", + "src": "23212:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int168", + "typeString": "int168" + } + }, + "visibility": "internal" + } + ], + "src": "23211:19:43" + }, + "scope": 9760, + "src": "23157:224:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9224, + "nodeType": "Block", + "src": "23778:150:43", + "statements": [ + { + "expression": { + "id": 9212, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9207, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9205, + "src": "23788:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int160", + "typeString": "int160" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9210, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9202, + "src": "23808:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9209, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "23801:6:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int160_$", + "typeString": "type(int160)" + }, + "typeName": { + "id": 9208, + "name": "int160", + "nodeType": "ElementaryTypeName", + "src": "23801:6:43", + "typeDescriptions": {} + } + }, + "id": 9211, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23801:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int160", + "typeString": "int160" + } + }, + "src": "23788:26:43", + "typeDescriptions": { + "typeIdentifier": "t_int160", + "typeString": "int160" + } + }, + "id": 9213, + "nodeType": "ExpressionStatement", + "src": "23788:26:43" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 9216, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9214, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9205, + "src": "23828:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int160", + "typeString": "int160" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 9215, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9202, + "src": "23842:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "23828:19:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9223, + "nodeType": "IfStatement", + "src": "23824:98:43", + "trueBody": { + "id": 9222, + "nodeType": "Block", + "src": "23849:73:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313630", + "id": 9218, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23900:3:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_160_by_1", + "typeString": "int_const 160" + }, + "value": "160" + }, + { + "id": 9219, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9202, + "src": "23905:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_160_by_1", + "typeString": "int_const 160" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9217, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8017, + "src": "23870:29:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$__$", + "typeString": "function (uint8,int256) pure" + } + }, + "id": 9220, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23870:41:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9221, + "nodeType": "RevertStatement", + "src": "23863:48:43" + } + ] + } + } + ] + }, + "documentation": { + "id": 9200, + "nodeType": "StructuredDocumentation", + "src": "23387:312:43", + "text": " @dev Returns the downcasted int160 from int256, reverting on\n overflow (when the input is less than smallest int160 or\n greater than largest int160).\n Counterpart to Solidity's `int160` operator.\n Requirements:\n - input must fit into 160 bits" + }, + "id": 9225, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt160", + "nameLocation": "23713:8:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9203, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9202, + "mutability": "mutable", + "name": "value", + "nameLocation": "23729:5:43", + "nodeType": "VariableDeclaration", + "scope": 9225, + "src": "23722:12:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9201, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "23722:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "23721:14:43" + }, + "returnParameters": { + "id": 9206, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9205, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "23766:10:43", + "nodeType": "VariableDeclaration", + "scope": 9225, + "src": "23759:17:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int160", + "typeString": "int160" + }, + "typeName": { + "id": 9204, + "name": "int160", + "nodeType": "ElementaryTypeName", + "src": "23759:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int160", + "typeString": "int160" + } + }, + "visibility": "internal" + } + ], + "src": "23758:19:43" + }, + "scope": 9760, + "src": "23704:224:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9250, + "nodeType": "Block", + "src": "24325:150:43", + "statements": [ + { + "expression": { + "id": 9238, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9233, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9231, + "src": "24335:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int152", + "typeString": "int152" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9236, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9228, + "src": "24355:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9235, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "24348:6:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int152_$", + "typeString": "type(int152)" + }, + "typeName": { + "id": 9234, + "name": "int152", + "nodeType": "ElementaryTypeName", + "src": "24348:6:43", + "typeDescriptions": {} + } + }, + "id": 9237, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24348:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int152", + "typeString": "int152" + } + }, + "src": "24335:26:43", + "typeDescriptions": { + "typeIdentifier": "t_int152", + "typeString": "int152" + } + }, + "id": 9239, + "nodeType": "ExpressionStatement", + "src": "24335:26:43" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 9242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9240, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9231, + "src": "24375:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int152", + "typeString": "int152" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 9241, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9228, + "src": "24389:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "24375:19:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9249, + "nodeType": "IfStatement", + "src": "24371:98:43", + "trueBody": { + "id": 9248, + "nodeType": "Block", + "src": "24396:73:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313532", + "id": 9244, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24447:3:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_152_by_1", + "typeString": "int_const 152" + }, + "value": "152" + }, + { + "id": 9245, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9228, + "src": "24452:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_152_by_1", + "typeString": "int_const 152" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9243, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8017, + "src": "24417:29:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$__$", + "typeString": "function (uint8,int256) pure" + } + }, + "id": 9246, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24417:41:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9247, + "nodeType": "RevertStatement", + "src": "24410:48:43" + } + ] + } + } + ] + }, + "documentation": { + "id": 9226, + "nodeType": "StructuredDocumentation", + "src": "23934:312:43", + "text": " @dev Returns the downcasted int152 from int256, reverting on\n overflow (when the input is less than smallest int152 or\n greater than largest int152).\n Counterpart to Solidity's `int152` operator.\n Requirements:\n - input must fit into 152 bits" + }, + "id": 9251, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt152", + "nameLocation": "24260:8:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9229, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9228, + "mutability": "mutable", + "name": "value", + "nameLocation": "24276:5:43", + "nodeType": "VariableDeclaration", + "scope": 9251, + "src": "24269:12:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9227, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "24269:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "24268:14:43" + }, + "returnParameters": { + "id": 9232, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9231, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "24313:10:43", + "nodeType": "VariableDeclaration", + "scope": 9251, + "src": "24306:17:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int152", + "typeString": "int152" + }, + "typeName": { + "id": 9230, + "name": "int152", + "nodeType": "ElementaryTypeName", + "src": "24306:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int152", + "typeString": "int152" + } + }, + "visibility": "internal" + } + ], + "src": "24305:19:43" + }, + "scope": 9760, + "src": "24251:224:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9276, + "nodeType": "Block", + "src": "24872:150:43", + "statements": [ + { + "expression": { + "id": 9264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9259, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9257, + "src": "24882:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int144", + "typeString": "int144" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9262, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9254, + "src": "24902:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9261, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "24895:6:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int144_$", + "typeString": "type(int144)" + }, + "typeName": { + "id": 9260, + "name": "int144", + "nodeType": "ElementaryTypeName", + "src": "24895:6:43", + "typeDescriptions": {} + } + }, + "id": 9263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24895:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int144", + "typeString": "int144" + } + }, + "src": "24882:26:43", + "typeDescriptions": { + "typeIdentifier": "t_int144", + "typeString": "int144" + } + }, + "id": 9265, + "nodeType": "ExpressionStatement", + "src": "24882:26:43" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 9268, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9266, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9257, + "src": "24922:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int144", + "typeString": "int144" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 9267, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9254, + "src": "24936:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "24922:19:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9275, + "nodeType": "IfStatement", + "src": "24918:98:43", + "trueBody": { + "id": 9274, + "nodeType": "Block", + "src": "24943:73:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313434", + "id": 9270, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24994:3:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_144_by_1", + "typeString": "int_const 144" + }, + "value": "144" + }, + { + "id": 9271, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9254, + "src": "24999:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_144_by_1", + "typeString": "int_const 144" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9269, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8017, + "src": "24964:29:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$__$", + "typeString": "function (uint8,int256) pure" + } + }, + "id": 9272, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24964:41:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9273, + "nodeType": "RevertStatement", + "src": "24957:48:43" + } + ] + } + } + ] + }, + "documentation": { + "id": 9252, + "nodeType": "StructuredDocumentation", + "src": "24481:312:43", + "text": " @dev Returns the downcasted int144 from int256, reverting on\n overflow (when the input is less than smallest int144 or\n greater than largest int144).\n Counterpart to Solidity's `int144` operator.\n Requirements:\n - input must fit into 144 bits" + }, + "id": 9277, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt144", + "nameLocation": "24807:8:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9255, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9254, + "mutability": "mutable", + "name": "value", + "nameLocation": "24823:5:43", + "nodeType": "VariableDeclaration", + "scope": 9277, + "src": "24816:12:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9253, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "24816:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "24815:14:43" + }, + "returnParameters": { + "id": 9258, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9257, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "24860:10:43", + "nodeType": "VariableDeclaration", + "scope": 9277, + "src": "24853:17:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int144", + "typeString": "int144" + }, + "typeName": { + "id": 9256, + "name": "int144", + "nodeType": "ElementaryTypeName", + "src": "24853:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int144", + "typeString": "int144" + } + }, + "visibility": "internal" + } + ], + "src": "24852:19:43" + }, + "scope": 9760, + "src": "24798:224:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9302, + "nodeType": "Block", + "src": "25419:150:43", + "statements": [ + { + "expression": { + "id": 9290, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9285, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9283, + "src": "25429:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int136", + "typeString": "int136" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9288, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9280, + "src": "25449:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9287, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "25442:6:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int136_$", + "typeString": "type(int136)" + }, + "typeName": { + "id": 9286, + "name": "int136", + "nodeType": "ElementaryTypeName", + "src": "25442:6:43", + "typeDescriptions": {} + } + }, + "id": 9289, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25442:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int136", + "typeString": "int136" + } + }, + "src": "25429:26:43", + "typeDescriptions": { + "typeIdentifier": "t_int136", + "typeString": "int136" + } + }, + "id": 9291, + "nodeType": "ExpressionStatement", + "src": "25429:26:43" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 9294, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9292, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9283, + "src": "25469:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int136", + "typeString": "int136" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 9293, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9280, + "src": "25483:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "25469:19:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9301, + "nodeType": "IfStatement", + "src": "25465:98:43", + "trueBody": { + "id": 9300, + "nodeType": "Block", + "src": "25490:73:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313336", + "id": 9296, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "25541:3:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_136_by_1", + "typeString": "int_const 136" + }, + "value": "136" + }, + { + "id": 9297, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9280, + "src": "25546:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_136_by_1", + "typeString": "int_const 136" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9295, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8017, + "src": "25511:29:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$__$", + "typeString": "function (uint8,int256) pure" + } + }, + "id": 9298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25511:41:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9299, + "nodeType": "RevertStatement", + "src": "25504:48:43" + } + ] + } + } + ] + }, + "documentation": { + "id": 9278, + "nodeType": "StructuredDocumentation", + "src": "25028:312:43", + "text": " @dev Returns the downcasted int136 from int256, reverting on\n overflow (when the input is less than smallest int136 or\n greater than largest int136).\n Counterpart to Solidity's `int136` operator.\n Requirements:\n - input must fit into 136 bits" + }, + "id": 9303, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt136", + "nameLocation": "25354:8:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9281, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9280, + "mutability": "mutable", + "name": "value", + "nameLocation": "25370:5:43", + "nodeType": "VariableDeclaration", + "scope": 9303, + "src": "25363:12:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9279, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "25363:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "25362:14:43" + }, + "returnParameters": { + "id": 9284, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9283, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "25407:10:43", + "nodeType": "VariableDeclaration", + "scope": 9303, + "src": "25400:17:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int136", + "typeString": "int136" + }, + "typeName": { + "id": 9282, + "name": "int136", + "nodeType": "ElementaryTypeName", + "src": "25400:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int136", + "typeString": "int136" + } + }, + "visibility": "internal" + } + ], + "src": "25399:19:43" + }, + "scope": 9760, + "src": "25345:224:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9328, + "nodeType": "Block", + "src": "25966:150:43", + "statements": [ + { + "expression": { + "id": 9316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9311, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9309, + "src": "25976:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int128", + "typeString": "int128" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9314, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9306, + "src": "25996:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9313, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "25989:6:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int128_$", + "typeString": "type(int128)" + }, + "typeName": { + "id": 9312, + "name": "int128", + "nodeType": "ElementaryTypeName", + "src": "25989:6:43", + "typeDescriptions": {} + } + }, + "id": 9315, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25989:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int128", + "typeString": "int128" + } + }, + "src": "25976:26:43", + "typeDescriptions": { + "typeIdentifier": "t_int128", + "typeString": "int128" + } + }, + "id": 9317, + "nodeType": "ExpressionStatement", + "src": "25976:26:43" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 9320, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9318, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9309, + "src": "26016:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int128", + "typeString": "int128" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 9319, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9306, + "src": "26030:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "26016:19:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9327, + "nodeType": "IfStatement", + "src": "26012:98:43", + "trueBody": { + "id": 9326, + "nodeType": "Block", + "src": "26037:73:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313238", + "id": 9322, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26088:3:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + "value": "128" + }, + { + "id": 9323, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9306, + "src": "26093:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_128_by_1", + "typeString": "int_const 128" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9321, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8017, + "src": "26058:29:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$__$", + "typeString": "function (uint8,int256) pure" + } + }, + "id": 9324, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26058:41:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9325, + "nodeType": "RevertStatement", + "src": "26051:48:43" + } + ] + } + } + ] + }, + "documentation": { + "id": 9304, + "nodeType": "StructuredDocumentation", + "src": "25575:312:43", + "text": " @dev Returns the downcasted int128 from int256, reverting on\n overflow (when the input is less than smallest int128 or\n greater than largest int128).\n Counterpart to Solidity's `int128` operator.\n Requirements:\n - input must fit into 128 bits" + }, + "id": 9329, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt128", + "nameLocation": "25901:8:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9307, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9306, + "mutability": "mutable", + "name": "value", + "nameLocation": "25917:5:43", + "nodeType": "VariableDeclaration", + "scope": 9329, + "src": "25910:12:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9305, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "25910:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "25909:14:43" + }, + "returnParameters": { + "id": 9310, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9309, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "25954:10:43", + "nodeType": "VariableDeclaration", + "scope": 9329, + "src": "25947:17:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int128", + "typeString": "int128" + }, + "typeName": { + "id": 9308, + "name": "int128", + "nodeType": "ElementaryTypeName", + "src": "25947:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int128", + "typeString": "int128" + } + }, + "visibility": "internal" + } + ], + "src": "25946:19:43" + }, + "scope": 9760, + "src": "25892:224:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9354, + "nodeType": "Block", + "src": "26513:150:43", + "statements": [ + { + "expression": { + "id": 9342, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9337, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9335, + "src": "26523:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int120", + "typeString": "int120" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9340, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9332, + "src": "26543:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9339, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "26536:6:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int120_$", + "typeString": "type(int120)" + }, + "typeName": { + "id": 9338, + "name": "int120", + "nodeType": "ElementaryTypeName", + "src": "26536:6:43", + "typeDescriptions": {} + } + }, + "id": 9341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26536:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int120", + "typeString": "int120" + } + }, + "src": "26523:26:43", + "typeDescriptions": { + "typeIdentifier": "t_int120", + "typeString": "int120" + } + }, + "id": 9343, + "nodeType": "ExpressionStatement", + "src": "26523:26:43" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 9346, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9344, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9335, + "src": "26563:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int120", + "typeString": "int120" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 9345, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9332, + "src": "26577:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "26563:19:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9353, + "nodeType": "IfStatement", + "src": "26559:98:43", + "trueBody": { + "id": 9352, + "nodeType": "Block", + "src": "26584:73:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313230", + "id": 9348, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "26635:3:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_120_by_1", + "typeString": "int_const 120" + }, + "value": "120" + }, + { + "id": 9349, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9332, + "src": "26640:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_120_by_1", + "typeString": "int_const 120" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9347, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8017, + "src": "26605:29:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$__$", + "typeString": "function (uint8,int256) pure" + } + }, + "id": 9350, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26605:41:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9351, + "nodeType": "RevertStatement", + "src": "26598:48:43" + } + ] + } + } + ] + }, + "documentation": { + "id": 9330, + "nodeType": "StructuredDocumentation", + "src": "26122:312:43", + "text": " @dev Returns the downcasted int120 from int256, reverting on\n overflow (when the input is less than smallest int120 or\n greater than largest int120).\n Counterpart to Solidity's `int120` operator.\n Requirements:\n - input must fit into 120 bits" + }, + "id": 9355, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt120", + "nameLocation": "26448:8:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9333, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9332, + "mutability": "mutable", + "name": "value", + "nameLocation": "26464:5:43", + "nodeType": "VariableDeclaration", + "scope": 9355, + "src": "26457:12:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9331, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "26457:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "26456:14:43" + }, + "returnParameters": { + "id": 9336, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9335, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "26501:10:43", + "nodeType": "VariableDeclaration", + "scope": 9355, + "src": "26494:17:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int120", + "typeString": "int120" + }, + "typeName": { + "id": 9334, + "name": "int120", + "nodeType": "ElementaryTypeName", + "src": "26494:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int120", + "typeString": "int120" + } + }, + "visibility": "internal" + } + ], + "src": "26493:19:43" + }, + "scope": 9760, + "src": "26439:224:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9380, + "nodeType": "Block", + "src": "27060:150:43", + "statements": [ + { + "expression": { + "id": 9368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9363, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9361, + "src": "27070:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int112", + "typeString": "int112" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9366, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9358, + "src": "27090:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9365, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "27083:6:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int112_$", + "typeString": "type(int112)" + }, + "typeName": { + "id": 9364, + "name": "int112", + "nodeType": "ElementaryTypeName", + "src": "27083:6:43", + "typeDescriptions": {} + } + }, + "id": 9367, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27083:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int112", + "typeString": "int112" + } + }, + "src": "27070:26:43", + "typeDescriptions": { + "typeIdentifier": "t_int112", + "typeString": "int112" + } + }, + "id": 9369, + "nodeType": "ExpressionStatement", + "src": "27070:26:43" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 9372, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9370, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9361, + "src": "27110:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int112", + "typeString": "int112" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 9371, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9358, + "src": "27124:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "27110:19:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9379, + "nodeType": "IfStatement", + "src": "27106:98:43", + "trueBody": { + "id": 9378, + "nodeType": "Block", + "src": "27131:73:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313132", + "id": 9374, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27182:3:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_112_by_1", + "typeString": "int_const 112" + }, + "value": "112" + }, + { + "id": 9375, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9358, + "src": "27187:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_112_by_1", + "typeString": "int_const 112" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9373, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8017, + "src": "27152:29:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$__$", + "typeString": "function (uint8,int256) pure" + } + }, + "id": 9376, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27152:41:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9377, + "nodeType": "RevertStatement", + "src": "27145:48:43" + } + ] + } + } + ] + }, + "documentation": { + "id": 9356, + "nodeType": "StructuredDocumentation", + "src": "26669:312:43", + "text": " @dev Returns the downcasted int112 from int256, reverting on\n overflow (when the input is less than smallest int112 or\n greater than largest int112).\n Counterpart to Solidity's `int112` operator.\n Requirements:\n - input must fit into 112 bits" + }, + "id": 9381, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt112", + "nameLocation": "26995:8:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9359, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9358, + "mutability": "mutable", + "name": "value", + "nameLocation": "27011:5:43", + "nodeType": "VariableDeclaration", + "scope": 9381, + "src": "27004:12:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9357, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "27004:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "27003:14:43" + }, + "returnParameters": { + "id": 9362, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9361, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "27048:10:43", + "nodeType": "VariableDeclaration", + "scope": 9381, + "src": "27041:17:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int112", + "typeString": "int112" + }, + "typeName": { + "id": 9360, + "name": "int112", + "nodeType": "ElementaryTypeName", + "src": "27041:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int112", + "typeString": "int112" + } + }, + "visibility": "internal" + } + ], + "src": "27040:19:43" + }, + "scope": 9760, + "src": "26986:224:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9406, + "nodeType": "Block", + "src": "27607:150:43", + "statements": [ + { + "expression": { + "id": 9394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9389, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9387, + "src": "27617:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int104", + "typeString": "int104" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9392, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9384, + "src": "27637:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9391, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "27630:6:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int104_$", + "typeString": "type(int104)" + }, + "typeName": { + "id": 9390, + "name": "int104", + "nodeType": "ElementaryTypeName", + "src": "27630:6:43", + "typeDescriptions": {} + } + }, + "id": 9393, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27630:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int104", + "typeString": "int104" + } + }, + "src": "27617:26:43", + "typeDescriptions": { + "typeIdentifier": "t_int104", + "typeString": "int104" + } + }, + "id": 9395, + "nodeType": "ExpressionStatement", + "src": "27617:26:43" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 9398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9396, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9387, + "src": "27657:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int104", + "typeString": "int104" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 9397, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9384, + "src": "27671:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "27657:19:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9405, + "nodeType": "IfStatement", + "src": "27653:98:43", + "trueBody": { + "id": 9404, + "nodeType": "Block", + "src": "27678:73:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "313034", + "id": 9400, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "27729:3:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_104_by_1", + "typeString": "int_const 104" + }, + "value": "104" + }, + { + "id": 9401, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9384, + "src": "27734:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_104_by_1", + "typeString": "int_const 104" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9399, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8017, + "src": "27699:29:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$__$", + "typeString": "function (uint8,int256) pure" + } + }, + "id": 9402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27699:41:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9403, + "nodeType": "RevertStatement", + "src": "27692:48:43" + } + ] + } + } + ] + }, + "documentation": { + "id": 9382, + "nodeType": "StructuredDocumentation", + "src": "27216:312:43", + "text": " @dev Returns the downcasted int104 from int256, reverting on\n overflow (when the input is less than smallest int104 or\n greater than largest int104).\n Counterpart to Solidity's `int104` operator.\n Requirements:\n - input must fit into 104 bits" + }, + "id": 9407, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt104", + "nameLocation": "27542:8:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9385, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9384, + "mutability": "mutable", + "name": "value", + "nameLocation": "27558:5:43", + "nodeType": "VariableDeclaration", + "scope": 9407, + "src": "27551:12:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9383, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "27551:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "27550:14:43" + }, + "returnParameters": { + "id": 9388, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9387, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "27595:10:43", + "nodeType": "VariableDeclaration", + "scope": 9407, + "src": "27588:17:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int104", + "typeString": "int104" + }, + "typeName": { + "id": 9386, + "name": "int104", + "nodeType": "ElementaryTypeName", + "src": "27588:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int104", + "typeString": "int104" + } + }, + "visibility": "internal" + } + ], + "src": "27587:19:43" + }, + "scope": 9760, + "src": "27533:224:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9432, + "nodeType": "Block", + "src": "28147:148:43", + "statements": [ + { + "expression": { + "id": 9420, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9415, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9413, + "src": "28157:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int96", + "typeString": "int96" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9418, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9410, + "src": "28176:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9417, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "28170:5:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int96_$", + "typeString": "type(int96)" + }, + "typeName": { + "id": 9416, + "name": "int96", + "nodeType": "ElementaryTypeName", + "src": "28170:5:43", + "typeDescriptions": {} + } + }, + "id": 9419, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28170:12:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int96", + "typeString": "int96" + } + }, + "src": "28157:25:43", + "typeDescriptions": { + "typeIdentifier": "t_int96", + "typeString": "int96" + } + }, + "id": 9421, + "nodeType": "ExpressionStatement", + "src": "28157:25:43" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 9424, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9422, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9413, + "src": "28196:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int96", + "typeString": "int96" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 9423, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9410, + "src": "28210:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "28196:19:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9431, + "nodeType": "IfStatement", + "src": "28192:97:43", + "trueBody": { + "id": 9430, + "nodeType": "Block", + "src": "28217:72:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3936", + "id": 9426, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28268:2:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_96_by_1", + "typeString": "int_const 96" + }, + "value": "96" + }, + { + "id": 9427, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9410, + "src": "28272:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_96_by_1", + "typeString": "int_const 96" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9425, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8017, + "src": "28238:29:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$__$", + "typeString": "function (uint8,int256) pure" + } + }, + "id": 9428, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28238:40:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9429, + "nodeType": "RevertStatement", + "src": "28231:47:43" + } + ] + } + } + ] + }, + "documentation": { + "id": 9408, + "nodeType": "StructuredDocumentation", + "src": "27763:307:43", + "text": " @dev Returns the downcasted int96 from int256, reverting on\n overflow (when the input is less than smallest int96 or\n greater than largest int96).\n Counterpart to Solidity's `int96` operator.\n Requirements:\n - input must fit into 96 bits" + }, + "id": 9433, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt96", + "nameLocation": "28084:7:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9411, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9410, + "mutability": "mutable", + "name": "value", + "nameLocation": "28099:5:43", + "nodeType": "VariableDeclaration", + "scope": 9433, + "src": "28092:12:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9409, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "28092:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "28091:14:43" + }, + "returnParameters": { + "id": 9414, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9413, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "28135:10:43", + "nodeType": "VariableDeclaration", + "scope": 9433, + "src": "28129:16:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int96", + "typeString": "int96" + }, + "typeName": { + "id": 9412, + "name": "int96", + "nodeType": "ElementaryTypeName", + "src": "28129:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int96", + "typeString": "int96" + } + }, + "visibility": "internal" + } + ], + "src": "28128:18:43" + }, + "scope": 9760, + "src": "28075:220:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9458, + "nodeType": "Block", + "src": "28685:148:43", + "statements": [ + { + "expression": { + "id": 9446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9441, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9439, + "src": "28695:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int88", + "typeString": "int88" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9444, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9436, + "src": "28714:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9443, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "28708:5:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int88_$", + "typeString": "type(int88)" + }, + "typeName": { + "id": 9442, + "name": "int88", + "nodeType": "ElementaryTypeName", + "src": "28708:5:43", + "typeDescriptions": {} + } + }, + "id": 9445, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28708:12:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int88", + "typeString": "int88" + } + }, + "src": "28695:25:43", + "typeDescriptions": { + "typeIdentifier": "t_int88", + "typeString": "int88" + } + }, + "id": 9447, + "nodeType": "ExpressionStatement", + "src": "28695:25:43" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 9450, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9448, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9439, + "src": "28734:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int88", + "typeString": "int88" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 9449, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9436, + "src": "28748:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "28734:19:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9457, + "nodeType": "IfStatement", + "src": "28730:97:43", + "trueBody": { + "id": 9456, + "nodeType": "Block", + "src": "28755:72:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3838", + "id": 9452, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "28806:2:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_88_by_1", + "typeString": "int_const 88" + }, + "value": "88" + }, + { + "id": 9453, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9436, + "src": "28810:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_88_by_1", + "typeString": "int_const 88" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9451, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8017, + "src": "28776:29:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$__$", + "typeString": "function (uint8,int256) pure" + } + }, + "id": 9454, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28776:40:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9455, + "nodeType": "RevertStatement", + "src": "28769:47:43" + } + ] + } + } + ] + }, + "documentation": { + "id": 9434, + "nodeType": "StructuredDocumentation", + "src": "28301:307:43", + "text": " @dev Returns the downcasted int88 from int256, reverting on\n overflow (when the input is less than smallest int88 or\n greater than largest int88).\n Counterpart to Solidity's `int88` operator.\n Requirements:\n - input must fit into 88 bits" + }, + "id": 9459, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt88", + "nameLocation": "28622:7:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9437, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9436, + "mutability": "mutable", + "name": "value", + "nameLocation": "28637:5:43", + "nodeType": "VariableDeclaration", + "scope": 9459, + "src": "28630:12:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9435, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "28630:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "28629:14:43" + }, + "returnParameters": { + "id": 9440, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9439, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "28673:10:43", + "nodeType": "VariableDeclaration", + "scope": 9459, + "src": "28667:16:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int88", + "typeString": "int88" + }, + "typeName": { + "id": 9438, + "name": "int88", + "nodeType": "ElementaryTypeName", + "src": "28667:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int88", + "typeString": "int88" + } + }, + "visibility": "internal" + } + ], + "src": "28666:18:43" + }, + "scope": 9760, + "src": "28613:220:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9484, + "nodeType": "Block", + "src": "29223:148:43", + "statements": [ + { + "expression": { + "id": 9472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9467, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9465, + "src": "29233:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int80", + "typeString": "int80" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9470, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9462, + "src": "29252:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9469, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "29246:5:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int80_$", + "typeString": "type(int80)" + }, + "typeName": { + "id": 9468, + "name": "int80", + "nodeType": "ElementaryTypeName", + "src": "29246:5:43", + "typeDescriptions": {} + } + }, + "id": 9471, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29246:12:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int80", + "typeString": "int80" + } + }, + "src": "29233:25:43", + "typeDescriptions": { + "typeIdentifier": "t_int80", + "typeString": "int80" + } + }, + "id": 9473, + "nodeType": "ExpressionStatement", + "src": "29233:25:43" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 9476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9474, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9465, + "src": "29272:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int80", + "typeString": "int80" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 9475, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9462, + "src": "29286:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "29272:19:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9483, + "nodeType": "IfStatement", + "src": "29268:97:43", + "trueBody": { + "id": 9482, + "nodeType": "Block", + "src": "29293:72:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3830", + "id": 9478, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29344:2:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_80_by_1", + "typeString": "int_const 80" + }, + "value": "80" + }, + { + "id": 9479, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9462, + "src": "29348:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_80_by_1", + "typeString": "int_const 80" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9477, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8017, + "src": "29314:29:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$__$", + "typeString": "function (uint8,int256) pure" + } + }, + "id": 9480, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29314:40:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9481, + "nodeType": "RevertStatement", + "src": "29307:47:43" + } + ] + } + } + ] + }, + "documentation": { + "id": 9460, + "nodeType": "StructuredDocumentation", + "src": "28839:307:43", + "text": " @dev Returns the downcasted int80 from int256, reverting on\n overflow (when the input is less than smallest int80 or\n greater than largest int80).\n Counterpart to Solidity's `int80` operator.\n Requirements:\n - input must fit into 80 bits" + }, + "id": 9485, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt80", + "nameLocation": "29160:7:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9463, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9462, + "mutability": "mutable", + "name": "value", + "nameLocation": "29175:5:43", + "nodeType": "VariableDeclaration", + "scope": 9485, + "src": "29168:12:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9461, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "29168:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "29167:14:43" + }, + "returnParameters": { + "id": 9466, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9465, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "29211:10:43", + "nodeType": "VariableDeclaration", + "scope": 9485, + "src": "29205:16:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int80", + "typeString": "int80" + }, + "typeName": { + "id": 9464, + "name": "int80", + "nodeType": "ElementaryTypeName", + "src": "29205:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int80", + "typeString": "int80" + } + }, + "visibility": "internal" + } + ], + "src": "29204:18:43" + }, + "scope": 9760, + "src": "29151:220:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9510, + "nodeType": "Block", + "src": "29761:148:43", + "statements": [ + { + "expression": { + "id": 9498, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9493, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9491, + "src": "29771:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int72", + "typeString": "int72" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9496, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9488, + "src": "29790:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9495, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "29784:5:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int72_$", + "typeString": "type(int72)" + }, + "typeName": { + "id": 9494, + "name": "int72", + "nodeType": "ElementaryTypeName", + "src": "29784:5:43", + "typeDescriptions": {} + } + }, + "id": 9497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29784:12:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int72", + "typeString": "int72" + } + }, + "src": "29771:25:43", + "typeDescriptions": { + "typeIdentifier": "t_int72", + "typeString": "int72" + } + }, + "id": 9499, + "nodeType": "ExpressionStatement", + "src": "29771:25:43" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 9502, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9500, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9491, + "src": "29810:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int72", + "typeString": "int72" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 9501, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9488, + "src": "29824:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "29810:19:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9509, + "nodeType": "IfStatement", + "src": "29806:97:43", + "trueBody": { + "id": 9508, + "nodeType": "Block", + "src": "29831:72:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3732", + "id": 9504, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "29882:2:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_72_by_1", + "typeString": "int_const 72" + }, + "value": "72" + }, + { + "id": 9505, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9488, + "src": "29886:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_72_by_1", + "typeString": "int_const 72" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9503, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8017, + "src": "29852:29:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$__$", + "typeString": "function (uint8,int256) pure" + } + }, + "id": 9506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29852:40:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9507, + "nodeType": "RevertStatement", + "src": "29845:47:43" + } + ] + } + } + ] + }, + "documentation": { + "id": 9486, + "nodeType": "StructuredDocumentation", + "src": "29377:307:43", + "text": " @dev Returns the downcasted int72 from int256, reverting on\n overflow (when the input is less than smallest int72 or\n greater than largest int72).\n Counterpart to Solidity's `int72` operator.\n Requirements:\n - input must fit into 72 bits" + }, + "id": 9511, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt72", + "nameLocation": "29698:7:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9489, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9488, + "mutability": "mutable", + "name": "value", + "nameLocation": "29713:5:43", + "nodeType": "VariableDeclaration", + "scope": 9511, + "src": "29706:12:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9487, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "29706:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "29705:14:43" + }, + "returnParameters": { + "id": 9492, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9491, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "29749:10:43", + "nodeType": "VariableDeclaration", + "scope": 9511, + "src": "29743:16:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int72", + "typeString": "int72" + }, + "typeName": { + "id": 9490, + "name": "int72", + "nodeType": "ElementaryTypeName", + "src": "29743:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int72", + "typeString": "int72" + } + }, + "visibility": "internal" + } + ], + "src": "29742:18:43" + }, + "scope": 9760, + "src": "29689:220:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9536, + "nodeType": "Block", + "src": "30299:148:43", + "statements": [ + { + "expression": { + "id": 9524, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9519, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9517, + "src": "30309:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int64", + "typeString": "int64" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9522, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9514, + "src": "30328:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9521, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "30322:5:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int64_$", + "typeString": "type(int64)" + }, + "typeName": { + "id": 9520, + "name": "int64", + "nodeType": "ElementaryTypeName", + "src": "30322:5:43", + "typeDescriptions": {} + } + }, + "id": 9523, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "30322:12:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int64", + "typeString": "int64" + } + }, + "src": "30309:25:43", + "typeDescriptions": { + "typeIdentifier": "t_int64", + "typeString": "int64" + } + }, + "id": 9525, + "nodeType": "ExpressionStatement", + "src": "30309:25:43" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 9528, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9526, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9517, + "src": "30348:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int64", + "typeString": "int64" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 9527, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9514, + "src": "30362:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "30348:19:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9535, + "nodeType": "IfStatement", + "src": "30344:97:43", + "trueBody": { + "id": 9534, + "nodeType": "Block", + "src": "30369:72:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3634", + "id": 9530, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30420:2:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + "value": "64" + }, + { + "id": 9531, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9514, + "src": "30424:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_64_by_1", + "typeString": "int_const 64" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9529, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8017, + "src": "30390:29:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$__$", + "typeString": "function (uint8,int256) pure" + } + }, + "id": 9532, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "30390:40:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9533, + "nodeType": "RevertStatement", + "src": "30383:47:43" + } + ] + } + } + ] + }, + "documentation": { + "id": 9512, + "nodeType": "StructuredDocumentation", + "src": "29915:307:43", + "text": " @dev Returns the downcasted int64 from int256, reverting on\n overflow (when the input is less than smallest int64 or\n greater than largest int64).\n Counterpart to Solidity's `int64` operator.\n Requirements:\n - input must fit into 64 bits" + }, + "id": 9537, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt64", + "nameLocation": "30236:7:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9515, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9514, + "mutability": "mutable", + "name": "value", + "nameLocation": "30251:5:43", + "nodeType": "VariableDeclaration", + "scope": 9537, + "src": "30244:12:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9513, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "30244:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "30243:14:43" + }, + "returnParameters": { + "id": 9518, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9517, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "30287:10:43", + "nodeType": "VariableDeclaration", + "scope": 9537, + "src": "30281:16:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int64", + "typeString": "int64" + }, + "typeName": { + "id": 9516, + "name": "int64", + "nodeType": "ElementaryTypeName", + "src": "30281:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int64", + "typeString": "int64" + } + }, + "visibility": "internal" + } + ], + "src": "30280:18:43" + }, + "scope": 9760, + "src": "30227:220:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9562, + "nodeType": "Block", + "src": "30837:148:43", + "statements": [ + { + "expression": { + "id": 9550, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9545, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9543, + "src": "30847:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int56", + "typeString": "int56" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9548, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9540, + "src": "30866:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9547, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "30860:5:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int56_$", + "typeString": "type(int56)" + }, + "typeName": { + "id": 9546, + "name": "int56", + "nodeType": "ElementaryTypeName", + "src": "30860:5:43", + "typeDescriptions": {} + } + }, + "id": 9549, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "30860:12:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int56", + "typeString": "int56" + } + }, + "src": "30847:25:43", + "typeDescriptions": { + "typeIdentifier": "t_int56", + "typeString": "int56" + } + }, + "id": 9551, + "nodeType": "ExpressionStatement", + "src": "30847:25:43" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 9554, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9552, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9543, + "src": "30886:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int56", + "typeString": "int56" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 9553, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9540, + "src": "30900:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "30886:19:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9561, + "nodeType": "IfStatement", + "src": "30882:97:43", + "trueBody": { + "id": 9560, + "nodeType": "Block", + "src": "30907:72:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3536", + "id": 9556, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "30958:2:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_56_by_1", + "typeString": "int_const 56" + }, + "value": "56" + }, + { + "id": 9557, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9540, + "src": "30962:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_56_by_1", + "typeString": "int_const 56" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9555, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8017, + "src": "30928:29:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$__$", + "typeString": "function (uint8,int256) pure" + } + }, + "id": 9558, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "30928:40:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9559, + "nodeType": "RevertStatement", + "src": "30921:47:43" + } + ] + } + } + ] + }, + "documentation": { + "id": 9538, + "nodeType": "StructuredDocumentation", + "src": "30453:307:43", + "text": " @dev Returns the downcasted int56 from int256, reverting on\n overflow (when the input is less than smallest int56 or\n greater than largest int56).\n Counterpart to Solidity's `int56` operator.\n Requirements:\n - input must fit into 56 bits" + }, + "id": 9563, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt56", + "nameLocation": "30774:7:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9541, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9540, + "mutability": "mutable", + "name": "value", + "nameLocation": "30789:5:43", + "nodeType": "VariableDeclaration", + "scope": 9563, + "src": "30782:12:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9539, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "30782:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "30781:14:43" + }, + "returnParameters": { + "id": 9544, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9543, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "30825:10:43", + "nodeType": "VariableDeclaration", + "scope": 9563, + "src": "30819:16:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int56", + "typeString": "int56" + }, + "typeName": { + "id": 9542, + "name": "int56", + "nodeType": "ElementaryTypeName", + "src": "30819:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int56", + "typeString": "int56" + } + }, + "visibility": "internal" + } + ], + "src": "30818:18:43" + }, + "scope": 9760, + "src": "30765:220:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9588, + "nodeType": "Block", + "src": "31375:148:43", + "statements": [ + { + "expression": { + "id": 9576, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9571, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9569, + "src": "31385:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int48", + "typeString": "int48" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9574, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9566, + "src": "31404:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9573, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "31398:5:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int48_$", + "typeString": "type(int48)" + }, + "typeName": { + "id": 9572, + "name": "int48", + "nodeType": "ElementaryTypeName", + "src": "31398:5:43", + "typeDescriptions": {} + } + }, + "id": 9575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31398:12:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int48", + "typeString": "int48" + } + }, + "src": "31385:25:43", + "typeDescriptions": { + "typeIdentifier": "t_int48", + "typeString": "int48" + } + }, + "id": 9577, + "nodeType": "ExpressionStatement", + "src": "31385:25:43" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 9580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9578, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9569, + "src": "31424:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int48", + "typeString": "int48" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 9579, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9566, + "src": "31438:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "31424:19:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9587, + "nodeType": "IfStatement", + "src": "31420:97:43", + "trueBody": { + "id": 9586, + "nodeType": "Block", + "src": "31445:72:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3438", + "id": 9582, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "31496:2:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_48_by_1", + "typeString": "int_const 48" + }, + "value": "48" + }, + { + "id": 9583, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9566, + "src": "31500:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_48_by_1", + "typeString": "int_const 48" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9581, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8017, + "src": "31466:29:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$__$", + "typeString": "function (uint8,int256) pure" + } + }, + "id": 9584, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31466:40:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9585, + "nodeType": "RevertStatement", + "src": "31459:47:43" + } + ] + } + } + ] + }, + "documentation": { + "id": 9564, + "nodeType": "StructuredDocumentation", + "src": "30991:307:43", + "text": " @dev Returns the downcasted int48 from int256, reverting on\n overflow (when the input is less than smallest int48 or\n greater than largest int48).\n Counterpart to Solidity's `int48` operator.\n Requirements:\n - input must fit into 48 bits" + }, + "id": 9589, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt48", + "nameLocation": "31312:7:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9567, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9566, + "mutability": "mutable", + "name": "value", + "nameLocation": "31327:5:43", + "nodeType": "VariableDeclaration", + "scope": 9589, + "src": "31320:12:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9565, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "31320:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "31319:14:43" + }, + "returnParameters": { + "id": 9570, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9569, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "31363:10:43", + "nodeType": "VariableDeclaration", + "scope": 9589, + "src": "31357:16:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int48", + "typeString": "int48" + }, + "typeName": { + "id": 9568, + "name": "int48", + "nodeType": "ElementaryTypeName", + "src": "31357:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int48", + "typeString": "int48" + } + }, + "visibility": "internal" + } + ], + "src": "31356:18:43" + }, + "scope": 9760, + "src": "31303:220:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9614, + "nodeType": "Block", + "src": "31913:148:43", + "statements": [ + { + "expression": { + "id": 9602, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9597, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9595, + "src": "31923:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int40", + "typeString": "int40" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9600, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9592, + "src": "31942:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9599, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "31936:5:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int40_$", + "typeString": "type(int40)" + }, + "typeName": { + "id": 9598, + "name": "int40", + "nodeType": "ElementaryTypeName", + "src": "31936:5:43", + "typeDescriptions": {} + } + }, + "id": 9601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31936:12:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int40", + "typeString": "int40" + } + }, + "src": "31923:25:43", + "typeDescriptions": { + "typeIdentifier": "t_int40", + "typeString": "int40" + } + }, + "id": 9603, + "nodeType": "ExpressionStatement", + "src": "31923:25:43" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 9606, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9604, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9595, + "src": "31962:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int40", + "typeString": "int40" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 9605, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9592, + "src": "31976:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "31962:19:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9613, + "nodeType": "IfStatement", + "src": "31958:97:43", + "trueBody": { + "id": 9612, + "nodeType": "Block", + "src": "31983:72:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3430", + "id": 9608, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32034:2:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_40_by_1", + "typeString": "int_const 40" + }, + "value": "40" + }, + { + "id": 9609, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9592, + "src": "32038:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_40_by_1", + "typeString": "int_const 40" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9607, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8017, + "src": "32004:29:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$__$", + "typeString": "function (uint8,int256) pure" + } + }, + "id": 9610, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "32004:40:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9611, + "nodeType": "RevertStatement", + "src": "31997:47:43" + } + ] + } + } + ] + }, + "documentation": { + "id": 9590, + "nodeType": "StructuredDocumentation", + "src": "31529:307:43", + "text": " @dev Returns the downcasted int40 from int256, reverting on\n overflow (when the input is less than smallest int40 or\n greater than largest int40).\n Counterpart to Solidity's `int40` operator.\n Requirements:\n - input must fit into 40 bits" + }, + "id": 9615, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt40", + "nameLocation": "31850:7:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9593, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9592, + "mutability": "mutable", + "name": "value", + "nameLocation": "31865:5:43", + "nodeType": "VariableDeclaration", + "scope": 9615, + "src": "31858:12:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9591, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "31858:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "31857:14:43" + }, + "returnParameters": { + "id": 9596, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9595, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "31901:10:43", + "nodeType": "VariableDeclaration", + "scope": 9615, + "src": "31895:16:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int40", + "typeString": "int40" + }, + "typeName": { + "id": 9594, + "name": "int40", + "nodeType": "ElementaryTypeName", + "src": "31895:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int40", + "typeString": "int40" + } + }, + "visibility": "internal" + } + ], + "src": "31894:18:43" + }, + "scope": 9760, + "src": "31841:220:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9640, + "nodeType": "Block", + "src": "32451:148:43", + "statements": [ + { + "expression": { + "id": 9628, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9623, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9621, + "src": "32461:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int32", + "typeString": "int32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9626, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9618, + "src": "32480:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9625, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "32474:5:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int32_$", + "typeString": "type(int32)" + }, + "typeName": { + "id": 9624, + "name": "int32", + "nodeType": "ElementaryTypeName", + "src": "32474:5:43", + "typeDescriptions": {} + } + }, + "id": 9627, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "32474:12:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int32", + "typeString": "int32" + } + }, + "src": "32461:25:43", + "typeDescriptions": { + "typeIdentifier": "t_int32", + "typeString": "int32" + } + }, + "id": 9629, + "nodeType": "ExpressionStatement", + "src": "32461:25:43" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 9632, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9630, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9621, + "src": "32500:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int32", + "typeString": "int32" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 9631, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9618, + "src": "32514:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "32500:19:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9639, + "nodeType": "IfStatement", + "src": "32496:97:43", + "trueBody": { + "id": 9638, + "nodeType": "Block", + "src": "32521:72:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3332", + "id": 9634, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "32572:2:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + { + "id": 9635, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9618, + "src": "32576:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9633, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8017, + "src": "32542:29:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$__$", + "typeString": "function (uint8,int256) pure" + } + }, + "id": 9636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "32542:40:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9637, + "nodeType": "RevertStatement", + "src": "32535:47:43" + } + ] + } + } + ] + }, + "documentation": { + "id": 9616, + "nodeType": "StructuredDocumentation", + "src": "32067:307:43", + "text": " @dev Returns the downcasted int32 from int256, reverting on\n overflow (when the input is less than smallest int32 or\n greater than largest int32).\n Counterpart to Solidity's `int32` operator.\n Requirements:\n - input must fit into 32 bits" + }, + "id": 9641, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt32", + "nameLocation": "32388:7:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9619, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9618, + "mutability": "mutable", + "name": "value", + "nameLocation": "32403:5:43", + "nodeType": "VariableDeclaration", + "scope": 9641, + "src": "32396:12:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9617, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "32396:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "32395:14:43" + }, + "returnParameters": { + "id": 9622, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9621, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "32439:10:43", + "nodeType": "VariableDeclaration", + "scope": 9641, + "src": "32433:16:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int32", + "typeString": "int32" + }, + "typeName": { + "id": 9620, + "name": "int32", + "nodeType": "ElementaryTypeName", + "src": "32433:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int32", + "typeString": "int32" + } + }, + "visibility": "internal" + } + ], + "src": "32432:18:43" + }, + "scope": 9760, + "src": "32379:220:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9666, + "nodeType": "Block", + "src": "32989:148:43", + "statements": [ + { + "expression": { + "id": 9654, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9649, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9647, + "src": "32999:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9652, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9644, + "src": "33018:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9651, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "33012:5:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int24_$", + "typeString": "type(int24)" + }, + "typeName": { + "id": 9650, + "name": "int24", + "nodeType": "ElementaryTypeName", + "src": "33012:5:43", + "typeDescriptions": {} + } + }, + "id": 9653, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "33012:12:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + }, + "src": "32999:25:43", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + }, + "id": 9655, + "nodeType": "ExpressionStatement", + "src": "32999:25:43" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 9658, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9656, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9647, + "src": "33038:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 9657, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9644, + "src": "33052:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "33038:19:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9665, + "nodeType": "IfStatement", + "src": "33034:97:43", + "trueBody": { + "id": 9664, + "nodeType": "Block", + "src": "33059:72:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3234", + "id": 9660, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33110:2:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_24_by_1", + "typeString": "int_const 24" + }, + "value": "24" + }, + { + "id": 9661, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9644, + "src": "33114:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_24_by_1", + "typeString": "int_const 24" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9659, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8017, + "src": "33080:29:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$__$", + "typeString": "function (uint8,int256) pure" + } + }, + "id": 9662, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "33080:40:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9663, + "nodeType": "RevertStatement", + "src": "33073:47:43" + } + ] + } + } + ] + }, + "documentation": { + "id": 9642, + "nodeType": "StructuredDocumentation", + "src": "32605:307:43", + "text": " @dev Returns the downcasted int24 from int256, reverting on\n overflow (when the input is less than smallest int24 or\n greater than largest int24).\n Counterpart to Solidity's `int24` operator.\n Requirements:\n - input must fit into 24 bits" + }, + "id": 9667, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt24", + "nameLocation": "32926:7:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9645, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9644, + "mutability": "mutable", + "name": "value", + "nameLocation": "32941:5:43", + "nodeType": "VariableDeclaration", + "scope": 9667, + "src": "32934:12:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9643, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "32934:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "32933:14:43" + }, + "returnParameters": { + "id": 9648, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9647, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "32977:10:43", + "nodeType": "VariableDeclaration", + "scope": 9667, + "src": "32971:16:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + }, + "typeName": { + "id": 9646, + "name": "int24", + "nodeType": "ElementaryTypeName", + "src": "32971:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int24", + "typeString": "int24" + } + }, + "visibility": "internal" + } + ], + "src": "32970:18:43" + }, + "scope": 9760, + "src": "32917:220:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9692, + "nodeType": "Block", + "src": "33527:148:43", + "statements": [ + { + "expression": { + "id": 9680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9675, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9673, + "src": "33537:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int16", + "typeString": "int16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9678, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9670, + "src": "33556:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9677, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "33550:5:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int16_$", + "typeString": "type(int16)" + }, + "typeName": { + "id": 9676, + "name": "int16", + "nodeType": "ElementaryTypeName", + "src": "33550:5:43", + "typeDescriptions": {} + } + }, + "id": 9679, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "33550:12:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int16", + "typeString": "int16" + } + }, + "src": "33537:25:43", + "typeDescriptions": { + "typeIdentifier": "t_int16", + "typeString": "int16" + } + }, + "id": 9681, + "nodeType": "ExpressionStatement", + "src": "33537:25:43" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 9684, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9682, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9673, + "src": "33576:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int16", + "typeString": "int16" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 9683, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9670, + "src": "33590:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "33576:19:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9691, + "nodeType": "IfStatement", + "src": "33572:97:43", + "trueBody": { + "id": 9690, + "nodeType": "Block", + "src": "33597:72:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "3136", + "id": 9686, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "33648:2:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + "value": "16" + }, + { + "id": 9687, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9670, + "src": "33652:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_16_by_1", + "typeString": "int_const 16" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9685, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8017, + "src": "33618:29:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$__$", + "typeString": "function (uint8,int256) pure" + } + }, + "id": 9688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "33618:40:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9689, + "nodeType": "RevertStatement", + "src": "33611:47:43" + } + ] + } + } + ] + }, + "documentation": { + "id": 9668, + "nodeType": "StructuredDocumentation", + "src": "33143:307:43", + "text": " @dev Returns the downcasted int16 from int256, reverting on\n overflow (when the input is less than smallest int16 or\n greater than largest int16).\n Counterpart to Solidity's `int16` operator.\n Requirements:\n - input must fit into 16 bits" + }, + "id": 9693, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt16", + "nameLocation": "33464:7:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9671, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9670, + "mutability": "mutable", + "name": "value", + "nameLocation": "33479:5:43", + "nodeType": "VariableDeclaration", + "scope": 9693, + "src": "33472:12:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9669, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "33472:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "33471:14:43" + }, + "returnParameters": { + "id": 9674, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9673, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "33515:10:43", + "nodeType": "VariableDeclaration", + "scope": 9693, + "src": "33509:16:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int16", + "typeString": "int16" + }, + "typeName": { + "id": 9672, + "name": "int16", + "nodeType": "ElementaryTypeName", + "src": "33509:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int16", + "typeString": "int16" + } + }, + "visibility": "internal" + } + ], + "src": "33508:18:43" + }, + "scope": 9760, + "src": "33455:220:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9718, + "nodeType": "Block", + "src": "34058:146:43", + "statements": [ + { + "expression": { + "id": 9706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 9701, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9699, + "src": "34068:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int8", + "typeString": "int8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 9704, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9696, + "src": "34086:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9703, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "34081:4:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int8_$", + "typeString": "type(int8)" + }, + "typeName": { + "id": 9702, + "name": "int8", + "nodeType": "ElementaryTypeName", + "src": "34081:4:43", + "typeDescriptions": {} + } + }, + "id": 9705, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "34081:11:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int8", + "typeString": "int8" + } + }, + "src": "34068:24:43", + "typeDescriptions": { + "typeIdentifier": "t_int8", + "typeString": "int8" + } + }, + "id": 9707, + "nodeType": "ExpressionStatement", + "src": "34068:24:43" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 9710, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9708, + "name": "downcasted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9699, + "src": "34106:10:43", + "typeDescriptions": { + "typeIdentifier": "t_int8", + "typeString": "int8" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 9709, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9696, + "src": "34120:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "34106:19:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9717, + "nodeType": "IfStatement", + "src": "34102:96:43", + "trueBody": { + "id": 9716, + "nodeType": "Block", + "src": "34127:71:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "hexValue": "38", + "id": 9712, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "34178:1:43", + "typeDescriptions": { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + "value": "8" + }, + { + "id": 9713, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9696, + "src": "34181:5:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_8_by_1", + "typeString": "int_const 8" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9711, + "name": "SafeCastOverflowedIntDowncast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8017, + "src": "34148:29:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint8_$_t_int256_$returns$__$", + "typeString": "function (uint8,int256) pure" + } + }, + "id": 9714, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "34148:39:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9715, + "nodeType": "RevertStatement", + "src": "34141:46:43" + } + ] + } + } + ] + }, + "documentation": { + "id": 9694, + "nodeType": "StructuredDocumentation", + "src": "33681:302:43", + "text": " @dev Returns the downcasted int8 from int256, reverting on\n overflow (when the input is less than smallest int8 or\n greater than largest int8).\n Counterpart to Solidity's `int8` operator.\n Requirements:\n - input must fit into 8 bits" + }, + "id": 9719, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt8", + "nameLocation": "33997:6:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9697, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9696, + "mutability": "mutable", + "name": "value", + "nameLocation": "34011:5:43", + "nodeType": "VariableDeclaration", + "scope": 9719, + "src": "34004:12:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9695, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "34004:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "34003:14:43" + }, + "returnParameters": { + "id": 9700, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9699, + "mutability": "mutable", + "name": "downcasted", + "nameLocation": "34046:10:43", + "nodeType": "VariableDeclaration", + "scope": 9719, + "src": "34041:15:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int8", + "typeString": "int8" + }, + "typeName": { + "id": 9698, + "name": "int8", + "nodeType": "ElementaryTypeName", + "src": "34041:4:43", + "typeDescriptions": { + "typeIdentifier": "t_int8", + "typeString": "int8" + } + }, + "visibility": "internal" + } + ], + "src": "34040:17:43" + }, + "scope": 9760, + "src": "33988:216:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9748, + "nodeType": "Block", + "src": "34444:250:43", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9736, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9727, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9722, + "src": "34557:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "arguments": [ + { + "expression": { + "arguments": [ + { + "id": 9732, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "34578:6:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int256_$", + "typeString": "type(int256)" + }, + "typeName": { + "id": 9731, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "34578:6:43", + "typeDescriptions": {} + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_type$_t_int256_$", + "typeString": "type(int256)" + } + ], + "id": 9730, + "name": "type", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -27, + "src": "34573:4:43", + "typeDescriptions": { + "typeIdentifier": "t_function_metatype_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 9733, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "34573:12:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_magic_meta_type_t_int256", + "typeString": "type(int256)" + } + }, + "id": 9734, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "34586:3:43", + "memberName": "max", + "nodeType": "MemberAccess", + "src": "34573:16:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9729, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "34565:7:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 9728, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "34565:7:43", + "typeDescriptions": {} + } + }, + "id": 9735, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "34565:25:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "34557:33:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 9742, + "nodeType": "IfStatement", + "src": "34553:105:43", + "trueBody": { + "id": 9741, + "nodeType": "Block", + "src": "34592:66:43", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 9738, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9722, + "src": "34641:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 9737, + "name": "SafeCastOverflowedUintToInt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8022, + "src": "34613:27:43", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", + "typeString": "function (uint256) pure" + } + }, + "id": 9739, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "34613:34:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9740, + "nodeType": "RevertStatement", + "src": "34606:41:43" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 9745, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9722, + "src": "34681:5:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 9744, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "34674:6:43", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int256_$", + "typeString": "type(int256)" + }, + "typeName": { + "id": 9743, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "34674:6:43", + "typeDescriptions": {} + } + }, + "id": 9746, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "34674:13:43", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "functionReturnParameters": 9726, + "id": 9747, + "nodeType": "Return", + "src": "34667:20:43" + } + ] + }, + "documentation": { + "id": 9720, + "nodeType": "StructuredDocumentation", + "src": "34210:165:43", + "text": " @dev Converts an unsigned uint256 into a signed int256.\n Requirements:\n - input must be less than or equal to maxInt256." + }, + "id": 9749, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toInt256", + "nameLocation": "34389:8:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9723, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9722, + "mutability": "mutable", + "name": "value", + "nameLocation": "34406:5:43", + "nodeType": "VariableDeclaration", + "scope": 9749, + "src": "34398:13:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9721, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "34398:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "34397:15:43" + }, + "returnParameters": { + "id": 9726, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9725, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 9749, + "src": "34436:6:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9724, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "34436:6:43", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "34435:8:43" + }, + "scope": 9760, + "src": "34380:314:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9758, + "nodeType": "Block", + "src": "34853:87:43", + "statements": [ + { + "AST": { + "nativeSrc": "34888:46:43", + "nodeType": "YulBlock", + "src": "34888:46:43", + "statements": [ + { + "nativeSrc": "34902:22:43", + "nodeType": "YulAssignment", + "src": "34902:22:43", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "b", + "nativeSrc": "34921:1:43", + "nodeType": "YulIdentifier", + "src": "34921:1:43" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "34914:6:43", + "nodeType": "YulIdentifier", + "src": "34914:6:43" + }, + "nativeSrc": "34914:9:43", + "nodeType": "YulFunctionCall", + "src": "34914:9:43" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "34907:6:43", + "nodeType": "YulIdentifier", + "src": "34907:6:43" + }, + "nativeSrc": "34907:17:43", + "nodeType": "YulFunctionCall", + "src": "34907:17:43" + }, + "variableNames": [ + { + "name": "u", + "nativeSrc": "34902:1:43", + "nodeType": "YulIdentifier", + "src": "34902:1:43" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 9752, + "isOffset": false, + "isSlot": false, + "src": "34921:1:43", + "valueSize": 1 + }, + { + "declaration": 9755, + "isOffset": false, + "isSlot": false, + "src": "34902:1:43", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 9757, + "nodeType": "InlineAssembly", + "src": "34863:71:43" + } + ] + }, + "documentation": { + "id": 9750, + "nodeType": "StructuredDocumentation", + "src": "34700:90:43", + "text": " @dev Cast a boolean (false or true) to a uint256 (0 or 1) with no jump." + }, + "id": 9759, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toUint", + "nameLocation": "34804:6:43", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9753, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9752, + "mutability": "mutable", + "name": "b", + "nameLocation": "34816:1:43", + "nodeType": "VariableDeclaration", + "scope": 9759, + "src": "34811:6:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 9751, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "34811:4:43", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "34810:8:43" + }, + "returnParameters": { + "id": 9756, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9755, + "mutability": "mutable", + "name": "u", + "nameLocation": "34850:1:43", + "nodeType": "VariableDeclaration", + "scope": 9759, + "src": "34842:9:43", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9754, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "34842:7:43", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "34841:11:43" + }, + "scope": 9760, + "src": "34795:145:43", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 9761, + "src": "769:34173:43", + "usedErrors": [ + 8005, + 8010, + 8017, + 8022 + ], + "usedEvents": [] + } + ], + "src": "192:34751:43" + }, + "id": 43 + }, + "@openzeppelin/contracts/utils/math/SignedMath.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/utils/math/SignedMath.sol", + "exportedSymbols": { + "SafeCast": [ + 9760 + ], + "SignedMath": [ + 9904 + ] + }, + "id": 9905, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 9762, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "109:24:44" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/math/SafeCast.sol", + "file": "./SafeCast.sol", + "id": 9764, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 9905, + "sourceUnit": 9761, + "src": "135:40:44", + "symbolAliases": [ + { + "foreign": { + "id": 9763, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9760, + "src": "143:8:44", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "SignedMath", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 9765, + "nodeType": "StructuredDocumentation", + "src": "177:80:44", + "text": " @dev Standard signed math utilities missing in the Solidity language." + }, + "fullyImplemented": true, + "id": 9904, + "linearizedBaseContracts": [ + 9904 + ], + "name": "SignedMath", + "nameLocation": "266:10:44", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 9794, + "nodeType": "Block", + "src": "746:215:44", + "statements": [ + { + "id": 9793, + "nodeType": "UncheckedBlock", + "src": "756:199:44", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 9791, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9777, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9772, + "src": "894:1:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "^", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 9789, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 9780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9778, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9770, + "src": "900:1:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "^", + "rightExpression": { + "id": 9779, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9772, + "src": "904:1:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "900:5:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "id": 9781, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "899:7:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 9786, + "name": "condition", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9768, + "src": "932:9:44", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 9784, + "name": "SafeCast", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9760, + "src": "916:8:44", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_SafeCast_$9760_$", + "typeString": "type(library SafeCast)" + } + }, + "id": 9785, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "925:6:44", + "memberName": "toUint", + "nodeType": "MemberAccess", + "referencedDeclaration": 9759, + "src": "916:15:44", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$returns$_t_uint256_$", + "typeString": "function (bool) pure returns (uint256)" + } + }, + "id": 9787, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "916:26:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 9783, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "909:6:44", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int256_$", + "typeString": "type(int256)" + }, + "typeName": { + "id": 9782, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "909:6:44", + "typeDescriptions": {} + } + }, + "id": 9788, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "909:34:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "899:44:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "id": 9790, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "898:46:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "894:50:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "functionReturnParameters": 9776, + "id": 9792, + "nodeType": "Return", + "src": "887:57:44" + } + ] + } + ] + }, + "documentation": { + "id": 9766, + "nodeType": "StructuredDocumentation", + "src": "283:374:44", + "text": " @dev Branchless ternary evaluation for `a ? b : c`. Gas costs are constant.\n IMPORTANT: This function may reduce bytecode size and consume less gas when used standalone.\n However, the compiler may optimize Solidity ternary operations (i.e. `a ? b : c`) to only compute\n one branch when needed, making this function more expensive." + }, + "id": 9795, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ternary", + "nameLocation": "671:7:44", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9773, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9768, + "mutability": "mutable", + "name": "condition", + "nameLocation": "684:9:44", + "nodeType": "VariableDeclaration", + "scope": 9795, + "src": "679:14:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 9767, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "679:4:44", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9770, + "mutability": "mutable", + "name": "a", + "nameLocation": "702:1:44", + "nodeType": "VariableDeclaration", + "scope": 9795, + "src": "695:8:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9769, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "695:6:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9772, + "mutability": "mutable", + "name": "b", + "nameLocation": "712:1:44", + "nodeType": "VariableDeclaration", + "scope": 9795, + "src": "705:8:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9771, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "705:6:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "678:36:44" + }, + "returnParameters": { + "id": 9776, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9775, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 9795, + "src": "738:6:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9774, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "738:6:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "737:8:44" + }, + "scope": 9904, + "src": "662:299:44", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9813, + "nodeType": "Block", + "src": "1102:44:44", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 9808, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9806, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9798, + "src": "1127:1:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 9807, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9800, + "src": "1131:1:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "1127:5:44", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 9809, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9798, + "src": "1134:1:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + { + "id": 9810, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9800, + "src": "1137:1:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9805, + "name": "ternary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9795, + "src": "1119:7:44", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_int256_$_t_int256_$returns$_t_int256_$", + "typeString": "function (bool,int256,int256) pure returns (int256)" + } + }, + "id": 9811, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1119:20:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "functionReturnParameters": 9804, + "id": 9812, + "nodeType": "Return", + "src": "1112:27:44" + } + ] + }, + "documentation": { + "id": 9796, + "nodeType": "StructuredDocumentation", + "src": "967:66:44", + "text": " @dev Returns the largest of two signed numbers." + }, + "id": 9814, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "max", + "nameLocation": "1047:3:44", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9801, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9798, + "mutability": "mutable", + "name": "a", + "nameLocation": "1058:1:44", + "nodeType": "VariableDeclaration", + "scope": 9814, + "src": "1051:8:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9797, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1051:6:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9800, + "mutability": "mutable", + "name": "b", + "nameLocation": "1068:1:44", + "nodeType": "VariableDeclaration", + "scope": 9814, + "src": "1061:8:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9799, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1061:6:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "1050:20:44" + }, + "returnParameters": { + "id": 9804, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9803, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 9814, + "src": "1094:6:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9802, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1094:6:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "1093:8:44" + }, + "scope": 9904, + "src": "1038:108:44", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9832, + "nodeType": "Block", + "src": "1288:44:44", + "statements": [ + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 9827, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9825, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9817, + "src": "1313:1:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 9826, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9819, + "src": "1317:1:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "1313:5:44", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "id": 9828, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9817, + "src": "1320:1:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + { + "id": 9829, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9819, + "src": "1323:1:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9824, + "name": "ternary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9795, + "src": "1305:7:44", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_int256_$_t_int256_$returns$_t_int256_$", + "typeString": "function (bool,int256,int256) pure returns (int256)" + } + }, + "id": 9830, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1305:20:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "functionReturnParameters": 9823, + "id": 9831, + "nodeType": "Return", + "src": "1298:27:44" + } + ] + }, + "documentation": { + "id": 9815, + "nodeType": "StructuredDocumentation", + "src": "1152:67:44", + "text": " @dev Returns the smallest of two signed numbers." + }, + "id": 9833, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "min", + "nameLocation": "1233:3:44", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9820, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9817, + "mutability": "mutable", + "name": "a", + "nameLocation": "1244:1:44", + "nodeType": "VariableDeclaration", + "scope": 9833, + "src": "1237:8:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9816, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1237:6:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9819, + "mutability": "mutable", + "name": "b", + "nameLocation": "1254:1:44", + "nodeType": "VariableDeclaration", + "scope": 9833, + "src": "1247:8:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9818, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1247:6:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "1236:20:44" + }, + "returnParameters": { + "id": 9823, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9822, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 9833, + "src": "1280:6:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9821, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1280:6:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "1279:8:44" + }, + "scope": 9904, + "src": "1224:108:44", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9876, + "nodeType": "Block", + "src": "1537:162:44", + "statements": [ + { + "assignments": [ + 9844 + ], + "declarations": [ + { + "constant": false, + "id": 9844, + "mutability": "mutable", + "name": "x", + "nameLocation": "1606:1:44", + "nodeType": "VariableDeclaration", + "scope": 9876, + "src": "1599:8:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9843, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1599:6:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "id": 9857, + "initialValue": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 9856, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 9847, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9845, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9836, + "src": "1611:1:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "id": 9846, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9838, + "src": "1615:1:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "1611:5:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "id": 9848, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1610:7:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 9854, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 9851, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9849, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9836, + "src": "1622:1:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "^", + "rightExpression": { + "id": 9850, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9838, + "src": "1626:1:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "1622:5:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "id": 9852, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1621:7:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "31", + "id": 9853, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1632:1:44", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1621:12:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "id": 9855, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1620:14:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "1610:24:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1599:35:44" + }, + { + "expression": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 9874, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9858, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9844, + "src": "1651:1:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 9872, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 9863, + "name": "x", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9844, + "src": "1671:1:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9862, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1663:7:44", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 9861, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1663:7:44", + "typeDescriptions": {} + } + }, + "id": 9864, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1663:10:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "323535", + "id": 9865, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1677:3:44", + "typeDescriptions": { + "typeIdentifier": "t_rational_255_by_1", + "typeString": "int_const 255" + }, + "value": "255" + }, + "src": "1663:17:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 9860, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1656:6:44", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_int256_$", + "typeString": "type(int256)" + }, + "typeName": { + "id": 9859, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1656:6:44", + "typeDescriptions": {} + } + }, + "id": 9867, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1656:25:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "&", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 9870, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9868, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9836, + "src": "1685:1:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "^", + "rightExpression": { + "id": 9869, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9838, + "src": "1689:1:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "1685:5:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "id": 9871, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1684:7:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "1656:35:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "id": 9873, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1655:37:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "1651:41:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "functionReturnParameters": 9842, + "id": 9875, + "nodeType": "Return", + "src": "1644:48:44" + } + ] + }, + "documentation": { + "id": 9834, + "nodeType": "StructuredDocumentation", + "src": "1338:126:44", + "text": " @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero." + }, + "id": 9877, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "average", + "nameLocation": "1478:7:44", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9839, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9836, + "mutability": "mutable", + "name": "a", + "nameLocation": "1493:1:44", + "nodeType": "VariableDeclaration", + "scope": 9877, + "src": "1486:8:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9835, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1486:6:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9838, + "mutability": "mutable", + "name": "b", + "nameLocation": "1503:1:44", + "nodeType": "VariableDeclaration", + "scope": 9877, + "src": "1496:8:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9837, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1496:6:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "1485:20:44" + }, + "returnParameters": { + "id": 9842, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9841, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 9877, + "src": "1529:6:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9840, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1529:6:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "1528:8:44" + }, + "scope": 9904, + "src": "1469:230:44", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 9902, + "nodeType": "Block", + "src": "1843:767:44", + "statements": [ + { + "id": 9901, + "nodeType": "UncheckedBlock", + "src": "1853:751:44", + "statements": [ + { + "assignments": [ + 9886 + ], + "declarations": [ + { + "constant": false, + "id": 9886, + "mutability": "mutable", + "name": "mask", + "nameLocation": "2424:4:44", + "nodeType": "VariableDeclaration", + "scope": 9901, + "src": "2417:11:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9885, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "2417:6:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "id": 9890, + "initialValue": { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 9889, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9887, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9880, + "src": "2431:1:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">>", + "rightExpression": { + "hexValue": "323535", + "id": 9888, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2436:3:44", + "typeDescriptions": { + "typeIdentifier": "t_rational_255_by_1", + "typeString": "int_const 255" + }, + "value": "255" + }, + "src": "2431:8:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2417:22:44" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 9898, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "id": 9895, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9893, + "name": "n", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9880, + "src": "2576:1:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 9894, + "name": "mask", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9886, + "src": "2580:4:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "2576:8:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "id": 9896, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2575:10:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "BinaryOperation", + "operator": "^", + "rightExpression": { + "id": 9897, + "name": "mask", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9886, + "src": "2588:4:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "src": "2575:17:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + ], + "id": 9892, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2567:7:44", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 9891, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2567:7:44", + "typeDescriptions": {} + } + }, + "id": 9899, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2567:26:44", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 9884, + "id": 9900, + "nodeType": "Return", + "src": "2560:33:44" + } + ] + } + ] + }, + "documentation": { + "id": 9878, + "nodeType": "StructuredDocumentation", + "src": "1705:78:44", + "text": " @dev Returns the absolute unsigned value of a signed value." + }, + "id": 9903, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "abs", + "nameLocation": "1797:3:44", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9881, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9880, + "mutability": "mutable", + "name": "n", + "nameLocation": "1808:1:44", + "nodeType": "VariableDeclaration", + "scope": 9903, + "src": "1801:8:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + }, + "typeName": { + "id": 9879, + "name": "int256", + "nodeType": "ElementaryTypeName", + "src": "1801:6:44", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "visibility": "internal" + } + ], + "src": "1800:10:44" + }, + "returnParameters": { + "id": 9884, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9883, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 9903, + "src": "1834:7:44", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9882, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1834:7:44", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1833:9:44" + }, + "scope": 9904, + "src": "1788:822:44", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 9905, + "src": "258:2354:44", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "109:2504:44" + }, + "id": 44 + }, + "@openzeppelin/contracts/utils/structs/EnumerableSet.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/utils/structs/EnumerableSet.sol", + "exportedSymbols": { + "EnumerableSet": [ + 10517 + ] + }, + "id": 10518, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 9906, + "literals": [ + "solidity", + "^", + "0.8", + ".20" + ], + "nodeType": "PragmaDirective", + "src": "205:24:45" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "EnumerableSet", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 9907, + "nodeType": "StructuredDocumentation", + "src": "231:1098:45", + "text": " @dev Library for managing\n https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n types.\n Sets have the following properties:\n - Elements are added, removed, and checked for existence in constant time\n (O(1)).\n - Elements are enumerated in O(n). No guarantees are made on the ordering.\n ```solidity\n contract Example {\n // Add the library methods\n using EnumerableSet for EnumerableSet.AddressSet;\n // Declare a set state variable\n EnumerableSet.AddressSet private mySet;\n }\n ```\n As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\n and `uint256` (`UintSet`) are supported.\n [WARNING]\n ====\n Trying to delete such a structure from storage will likely result in data corruption, rendering the structure\n unusable.\n See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info.\n In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an\n array of EnumerableSet.\n ====" + }, + "fullyImplemented": true, + "id": 10517, + "linearizedBaseContracts": [ + 10517 + ], + "name": "EnumerableSet", + "nameLocation": "1338:13:45", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "EnumerableSet.Set", + "id": 9915, + "members": [ + { + "constant": false, + "id": 9910, + "mutability": "mutable", + "name": "_values", + "nameLocation": "1862:7:45", + "nodeType": "VariableDeclaration", + "scope": 9915, + "src": "1852:17:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 9908, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1852:7:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 9909, + "nodeType": "ArrayTypeName", + "src": "1852:9:45", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9914, + "mutability": "mutable", + "name": "_positions", + "nameLocation": "2054:10:45", + "nodeType": "VariableDeclaration", + "scope": 9915, + "src": "2020:44:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + }, + "typeName": { + "id": 9913, + "keyName": "value", + "keyNameLocation": "2036:5:45", + "keyType": { + "id": 9911, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2028:7:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "2020:33:45", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 9912, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2045:7:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "internal" + } + ], + "name": "Set", + "nameLocation": "1805:3:45", + "nodeType": "StructDefinition", + "scope": 10517, + "src": "1798:273:45", + "visibility": "public" + }, + { + "body": { + "id": 9956, + "nodeType": "Block", + "src": "2310:337:45", + "statements": [ + { + "condition": { + "id": 9930, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2324:22:45", + "subExpression": { + "arguments": [ + { + "id": 9927, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9919, + "src": "2335:3:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + { + "id": 9928, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9921, + "src": "2340:5:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$9915_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 9926, + "name": "_contains", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10060, + "src": "2325:9:45", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$9915_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)" + } + }, + "id": 9929, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2325:21:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 9954, + "nodeType": "Block", + "src": "2604:37:45", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 9952, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2625:5:45", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 9925, + "id": 9953, + "nodeType": "Return", + "src": "2618:12:45" + } + ] + }, + "id": 9955, + "nodeType": "IfStatement", + "src": "2320:321:45", + "trueBody": { + "id": 9951, + "nodeType": "Block", + "src": "2348:250:45", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 9936, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9921, + "src": "2379:5:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "expression": { + "id": 9931, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9919, + "src": "2362:3:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 9934, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2366:7:45", + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 9910, + "src": "2362:11:45", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 9935, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2374:4:45", + "memberName": "push", + "nodeType": "MemberAccess", + "src": "2362:16:45", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$_t_bytes32_$returns$__$attached_to$_t_array$_t_bytes32_$dyn_storage_ptr_$", + "typeString": "function (bytes32[] storage pointer,bytes32)" + } + }, + "id": 9937, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2362:23:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 9938, + "nodeType": "ExpressionStatement", + "src": "2362:23:45" + }, + { + "expression": { + "id": 9947, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 9939, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9919, + "src": "2520:3:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 9942, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2524:10:45", + "memberName": "_positions", + "nodeType": "MemberAccess", + "referencedDeclaration": 9914, + "src": "2520:14:45", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 9943, + "indexExpression": { + "id": 9941, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9921, + "src": "2535:5:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2520:21:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "expression": { + "id": 9944, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9919, + "src": "2544:3:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 9945, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2548:7:45", + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 9910, + "src": "2544:11:45", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 9946, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2556:6:45", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "2544:18:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2520:42:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 9948, + "nodeType": "ExpressionStatement", + "src": "2520:42:45" + }, + { + "expression": { + "hexValue": "74727565", + "id": 9949, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2583:4:45", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 9925, + "id": 9950, + "nodeType": "Return", + "src": "2576:11:45" + } + ] + } + } + ] + }, + "documentation": { + "id": 9916, + "nodeType": "StructuredDocumentation", + "src": "2077:159:45", + "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present." + }, + "id": 9957, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_add", + "nameLocation": "2250:4:45", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9922, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9919, + "mutability": "mutable", + "name": "set", + "nameLocation": "2267:3:45", + "nodeType": "VariableDeclaration", + "scope": 9957, + "src": "2255:15:45", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 9918, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 9917, + "name": "Set", + "nameLocations": [ + "2255:3:45" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 9915, + "src": "2255:3:45" + }, + "referencedDeclaration": 9915, + "src": "2255:3:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9921, + "mutability": "mutable", + "name": "value", + "nameLocation": "2280:5:45", + "nodeType": "VariableDeclaration", + "scope": 9957, + "src": "2272:13:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9920, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2272:7:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2254:32:45" + }, + "returnParameters": { + "id": 9925, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9924, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 9957, + "src": "2304:4:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 9923, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2304:4:45", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2303:6:45" + }, + "scope": 10517, + "src": "2241:406:45", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 10040, + "nodeType": "Block", + "src": "2887:1296:45", + "statements": [ + { + "assignments": [ + 9969 + ], + "declarations": [ + { + "constant": false, + "id": 9969, + "mutability": "mutable", + "name": "position", + "nameLocation": "2999:8:45", + "nodeType": "VariableDeclaration", + "scope": 10040, + "src": "2991:16:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9968, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2991:7:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 9974, + "initialValue": { + "baseExpression": { + "expression": { + "id": 9970, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9961, + "src": "3010:3:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 9971, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3014:10:45", + "memberName": "_positions", + "nodeType": "MemberAccess", + "referencedDeclaration": 9914, + "src": "3010:14:45", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 9973, + "indexExpression": { + "id": 9972, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9963, + "src": "3025:5:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3010:21:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2991:40:45" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9977, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9975, + "name": "position", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9969, + "src": "3046:8:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 9976, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3058:1:45", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3046:13:45", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 10038, + "nodeType": "Block", + "src": "4140:37:45", + "statements": [ + { + "expression": { + "hexValue": "66616c7365", + "id": 10036, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4161:5:45", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 9967, + "id": 10037, + "nodeType": "Return", + "src": "4154:12:45" + } + ] + }, + "id": 10039, + "nodeType": "IfStatement", + "src": "3042:1135:45", + "trueBody": { + "id": 10035, + "nodeType": "Block", + "src": "3061:1073:45", + "statements": [ + { + "assignments": [ + 9979 + ], + "declarations": [ + { + "constant": false, + "id": 9979, + "mutability": "mutable", + "name": "valueIndex", + "nameLocation": "3421:10:45", + "nodeType": "VariableDeclaration", + "scope": 10035, + "src": "3413:18:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9978, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3413:7:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 9983, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9982, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9980, + "name": "position", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9969, + "src": "3434:8:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 9981, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3445:1:45", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3434:12:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3413:33:45" + }, + { + "assignments": [ + 9985 + ], + "declarations": [ + { + "constant": false, + "id": 9985, + "mutability": "mutable", + "name": "lastIndex", + "nameLocation": "3468:9:45", + "nodeType": "VariableDeclaration", + "scope": 10035, + "src": "3460:17:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 9984, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3460:7:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 9991, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9990, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 9986, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9961, + "src": "3480:3:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 9987, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3484:7:45", + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 9910, + "src": "3480:11:45", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 9988, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3492:6:45", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "3480:18:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 9989, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3501:1:45", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3480:22:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3460:42:45" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 9994, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 9992, + "name": "valueIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9979, + "src": "3521:10:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 9993, + "name": "lastIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9985, + "src": "3535:9:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3521:23:45", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10019, + "nodeType": "IfStatement", + "src": "3517:378:45", + "trueBody": { + "id": 10018, + "nodeType": "Block", + "src": "3546:349:45", + "statements": [ + { + "assignments": [ + 9996 + ], + "declarations": [ + { + "constant": false, + "id": 9996, + "mutability": "mutable", + "name": "lastValue", + "nameLocation": "3572:9:45", + "nodeType": "VariableDeclaration", + "scope": 10018, + "src": "3564:17:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9995, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3564:7:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 10001, + "initialValue": { + "baseExpression": { + "expression": { + "id": 9997, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9961, + "src": "3584:3:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 9998, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3588:7:45", + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 9910, + "src": "3584:11:45", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 10000, + "indexExpression": { + "id": 9999, + "name": "lastIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9985, + "src": "3596:9:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3584:22:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3564:42:45" + }, + { + "expression": { + "id": 10008, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 10002, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9961, + "src": "3705:3:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 10005, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3709:7:45", + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 9910, + "src": "3705:11:45", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 10006, + "indexExpression": { + "id": 10004, + "name": "valueIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9979, + "src": "3717:10:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3705:23:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 10007, + "name": "lastValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9996, + "src": "3731:9:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3705:35:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 10009, + "nodeType": "ExpressionStatement", + "src": "3705:35:45" + }, + { + "expression": { + "id": 10016, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 10010, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9961, + "src": "3844:3:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 10013, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3848:10:45", + "memberName": "_positions", + "nodeType": "MemberAccess", + "referencedDeclaration": 9914, + "src": "3844:14:45", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 10014, + "indexExpression": { + "id": 10012, + "name": "lastValue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9996, + "src": "3859:9:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3844:25:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 10015, + "name": "position", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9969, + "src": "3872:8:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3844:36:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10017, + "nodeType": "ExpressionStatement", + "src": "3844:36:45" + } + ] + } + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "expression": { + "id": 10020, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9961, + "src": "3973:3:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 10023, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3977:7:45", + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 9910, + "src": "3973:11:45", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 10024, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3985:3:45", + "memberName": "pop", + "nodeType": "MemberAccess", + "src": "3973:15:45", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypop_nonpayable$_t_array$_t_bytes32_$dyn_storage_ptr_$returns$__$attached_to$_t_array$_t_bytes32_$dyn_storage_ptr_$", + "typeString": "function (bytes32[] storage pointer)" + } + }, + "id": 10025, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3973:17:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10026, + "nodeType": "ExpressionStatement", + "src": "3973:17:45" + }, + { + "expression": { + "id": 10031, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "4069:28:45", + "subExpression": { + "baseExpression": { + "expression": { + "id": 10027, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9961, + "src": "4076:3:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 10028, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4080:10:45", + "memberName": "_positions", + "nodeType": "MemberAccess", + "referencedDeclaration": 9914, + "src": "4076:14:45", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 10030, + "indexExpression": { + "id": 10029, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9963, + "src": "4091:5:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4076:21:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10032, + "nodeType": "ExpressionStatement", + "src": "4069:28:45" + }, + { + "expression": { + "hexValue": "74727565", + "id": 10033, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4119:4:45", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 9967, + "id": 10034, + "nodeType": "Return", + "src": "4112:11:45" + } + ] + } + } + ] + }, + "documentation": { + "id": 9958, + "nodeType": "StructuredDocumentation", + "src": "2653:157:45", + "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present." + }, + "id": 10041, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_remove", + "nameLocation": "2824:7:45", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9964, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9961, + "mutability": "mutable", + "name": "set", + "nameLocation": "2844:3:45", + "nodeType": "VariableDeclaration", + "scope": 10041, + "src": "2832:15:45", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 9960, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 9959, + "name": "Set", + "nameLocations": [ + "2832:3:45" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 9915, + "src": "2832:3:45" + }, + "referencedDeclaration": 9915, + "src": "2832:3:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 9963, + "mutability": "mutable", + "name": "value", + "nameLocation": "2857:5:45", + "nodeType": "VariableDeclaration", + "scope": 10041, + "src": "2849:13:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 9962, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2849:7:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2831:32:45" + }, + "returnParameters": { + "id": 9967, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9966, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10041, + "src": "2881:4:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 9965, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2881:4:45", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2880:6:45" + }, + "scope": 10517, + "src": "2815:1368:45", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 10059, + "nodeType": "Block", + "src": "4343:50:45", + "statements": [ + { + "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10057, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "expression": { + "id": 10052, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10045, + "src": "4360:3:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 10053, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4364:10:45", + "memberName": "_positions", + "nodeType": "MemberAccess", + "referencedDeclaration": 9914, + "src": "4360:14:45", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 10055, + "indexExpression": { + "id": 10054, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10047, + "src": "4375:5:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4360:21:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "hexValue": "30", + "id": 10056, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4385:1:45", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4360:26:45", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 10051, + "id": 10058, + "nodeType": "Return", + "src": "4353:33:45" + } + ] + }, + "documentation": { + "id": 10042, + "nodeType": "StructuredDocumentation", + "src": "4189:70:45", + "text": " @dev Returns true if the value is in the set. O(1)." + }, + "id": 10060, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_contains", + "nameLocation": "4273:9:45", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10048, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10045, + "mutability": "mutable", + "name": "set", + "nameLocation": "4295:3:45", + "nodeType": "VariableDeclaration", + "scope": 10060, + "src": "4283:15:45", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 10044, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10043, + "name": "Set", + "nameLocations": [ + "4283:3:45" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 9915, + "src": "4283:3:45" + }, + "referencedDeclaration": 9915, + "src": "4283:3:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10047, + "mutability": "mutable", + "name": "value", + "nameLocation": "4308:5:45", + "nodeType": "VariableDeclaration", + "scope": 10060, + "src": "4300:13:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10046, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4300:7:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4282:32:45" + }, + "returnParameters": { + "id": 10051, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10050, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10060, + "src": "4337:4:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 10049, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4337:4:45", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4336:6:45" + }, + "scope": 10517, + "src": "4264:129:45", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 10073, + "nodeType": "Block", + "src": "4539:42:45", + "statements": [ + { + "expression": { + "expression": { + "expression": { + "id": 10069, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10064, + "src": "4556:3:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 10070, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4560:7:45", + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 9910, + "src": "4556:11:45", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 10071, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4568:6:45", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "4556:18:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 10068, + "id": 10072, + "nodeType": "Return", + "src": "4549:25:45" + } + ] + }, + "documentation": { + "id": 10061, + "nodeType": "StructuredDocumentation", + "src": "4399:70:45", + "text": " @dev Returns the number of values on the set. O(1)." + }, + "id": 10074, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_length", + "nameLocation": "4483:7:45", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10065, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10064, + "mutability": "mutable", + "name": "set", + "nameLocation": "4503:3:45", + "nodeType": "VariableDeclaration", + "scope": 10074, + "src": "4491:15:45", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 10063, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10062, + "name": "Set", + "nameLocations": [ + "4491:3:45" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 9915, + "src": "4491:3:45" + }, + "referencedDeclaration": 9915, + "src": "4491:3:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + } + ], + "src": "4490:17:45" + }, + "returnParameters": { + "id": 10068, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10067, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10074, + "src": "4530:7:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10066, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4530:7:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4529:9:45" + }, + "scope": 10517, + "src": "4474:107:45", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 10090, + "nodeType": "Block", + "src": "4999:42:45", + "statements": [ + { + "expression": { + "baseExpression": { + "expression": { + "id": 10085, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10078, + "src": "5016:3:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 10086, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5020:7:45", + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 9910, + "src": "5016:11:45", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 10088, + "indexExpression": { + "id": 10087, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10080, + "src": "5028:5:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5016:18:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 10084, + "id": 10089, + "nodeType": "Return", + "src": "5009:25:45" + } + ] + }, + "documentation": { + "id": 10075, + "nodeType": "StructuredDocumentation", + "src": "4587:331:45", + "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}." + }, + "id": 10091, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_at", + "nameLocation": "4932:3:45", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10081, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10078, + "mutability": "mutable", + "name": "set", + "nameLocation": "4948:3:45", + "nodeType": "VariableDeclaration", + "scope": 10091, + "src": "4936:15:45", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 10077, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10076, + "name": "Set", + "nameLocations": [ + "4936:3:45" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 9915, + "src": "4936:3:45" + }, + "referencedDeclaration": 9915, + "src": "4936:3:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10080, + "mutability": "mutable", + "name": "index", + "nameLocation": "4961:5:45", + "nodeType": "VariableDeclaration", + "scope": 10091, + "src": "4953:13:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10079, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4953:7:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4935:32:45" + }, + "returnParameters": { + "id": 10084, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10083, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10091, + "src": "4990:7:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10082, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4990:7:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4989:9:45" + }, + "scope": 10517, + "src": "4923:118:45", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 10104, + "nodeType": "Block", + "src": "5655:35:45", + "statements": [ + { + "expression": { + "expression": { + "id": 10101, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10095, + "src": "5672:3:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 10102, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5676:7:45", + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 9910, + "src": "5672:11:45", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "functionReturnParameters": 10100, + "id": 10103, + "nodeType": "Return", + "src": "5665:18:45" + } + ] + }, + "documentation": { + "id": 10092, + "nodeType": "StructuredDocumentation", + "src": "5047:529:45", + "text": " @dev Return the entire set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block." + }, + "id": 10105, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_values", + "nameLocation": "5590:7:45", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10096, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10095, + "mutability": "mutable", + "name": "set", + "nameLocation": "5610:3:45", + "nodeType": "VariableDeclaration", + "scope": 10105, + "src": "5598:15:45", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 10094, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10093, + "name": "Set", + "nameLocations": [ + "5598:3:45" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 9915, + "src": "5598:3:45" + }, + "referencedDeclaration": 9915, + "src": "5598:3:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + } + ], + "src": "5597:17:45" + }, + "returnParameters": { + "id": 10100, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10099, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10105, + "src": "5637:16:45", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 10097, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5637:7:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 10098, + "nodeType": "ArrayTypeName", + "src": "5637:9:45", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "src": "5636:18:45" + }, + "scope": 10517, + "src": "5581:109:45", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "canonicalName": "EnumerableSet.Bytes32Set", + "id": 10109, + "members": [ + { + "constant": false, + "id": 10108, + "mutability": "mutable", + "name": "_inner", + "nameLocation": "5747:6:45", + "nodeType": "VariableDeclaration", + "scope": 10109, + "src": "5743:10:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 10107, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10106, + "name": "Set", + "nameLocations": [ + "5743:3:45" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 9915, + "src": "5743:3:45" + }, + "referencedDeclaration": 9915, + "src": "5743:3:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + } + ], + "name": "Bytes32Set", + "nameLocation": "5722:10:45", + "nodeType": "StructDefinition", + "scope": 10517, + "src": "5715:45:45", + "visibility": "public" + }, + { + "body": { + "id": 10126, + "nodeType": "Block", + "src": "6006:47:45", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 10121, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10113, + "src": "6028:3:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$10109_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set storage pointer" + } + }, + "id": 10122, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6032:6:45", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 10108, + "src": "6028:10:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "id": 10123, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10115, + "src": "6040:5:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$9915_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 10120, + "name": "_add", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9957, + "src": "6023:4:45", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$9915_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 10124, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6023:23:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 10119, + "id": 10125, + "nodeType": "Return", + "src": "6016:30:45" + } + ] + }, + "documentation": { + "id": 10110, + "nodeType": "StructuredDocumentation", + "src": "5766:159:45", + "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present." + }, + "id": 10127, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nameLocation": "5939:3:45", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10116, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10113, + "mutability": "mutable", + "name": "set", + "nameLocation": "5962:3:45", + "nodeType": "VariableDeclaration", + "scope": 10127, + "src": "5943:22:45", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$10109_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + }, + "typeName": { + "id": 10112, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10111, + "name": "Bytes32Set", + "nameLocations": [ + "5943:10:45" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10109, + "src": "5943:10:45" + }, + "referencedDeclaration": 10109, + "src": "5943:10:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$10109_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10115, + "mutability": "mutable", + "name": "value", + "nameLocation": "5975:5:45", + "nodeType": "VariableDeclaration", + "scope": 10127, + "src": "5967:13:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10114, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5967:7:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5942:39:45" + }, + "returnParameters": { + "id": 10119, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10118, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10127, + "src": "6000:4:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 10117, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6000:4:45", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "5999:6:45" + }, + "scope": 10517, + "src": "5930:123:45", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10144, + "nodeType": "Block", + "src": "6300:50:45", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 10139, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10131, + "src": "6325:3:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$10109_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set storage pointer" + } + }, + "id": 10140, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6329:6:45", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 10108, + "src": "6325:10:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "id": 10141, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10133, + "src": "6337:5:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$9915_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 10138, + "name": "_remove", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10041, + "src": "6317:7:45", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$9915_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 10142, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6317:26:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 10137, + "id": 10143, + "nodeType": "Return", + "src": "6310:33:45" + } + ] + }, + "documentation": { + "id": 10128, + "nodeType": "StructuredDocumentation", + "src": "6059:157:45", + "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present." + }, + "id": 10145, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remove", + "nameLocation": "6230:6:45", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10134, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10131, + "mutability": "mutable", + "name": "set", + "nameLocation": "6256:3:45", + "nodeType": "VariableDeclaration", + "scope": 10145, + "src": "6237:22:45", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$10109_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + }, + "typeName": { + "id": 10130, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10129, + "name": "Bytes32Set", + "nameLocations": [ + "6237:10:45" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10109, + "src": "6237:10:45" + }, + "referencedDeclaration": 10109, + "src": "6237:10:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$10109_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10133, + "mutability": "mutable", + "name": "value", + "nameLocation": "6269:5:45", + "nodeType": "VariableDeclaration", + "scope": 10145, + "src": "6261:13:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10132, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6261:7:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "6236:39:45" + }, + "returnParameters": { + "id": 10137, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10136, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10145, + "src": "6294:4:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 10135, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6294:4:45", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "6293:6:45" + }, + "scope": 10517, + "src": "6221:129:45", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10162, + "nodeType": "Block", + "src": "6517:52:45", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 10157, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10149, + "src": "6544:3:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$10109_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set storage pointer" + } + }, + "id": 10158, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6548:6:45", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 10108, + "src": "6544:10:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "id": 10159, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10151, + "src": "6556:5:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$9915_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 10156, + "name": "_contains", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10060, + "src": "6534:9:45", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$9915_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)" + } + }, + "id": 10160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6534:28:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 10155, + "id": 10161, + "nodeType": "Return", + "src": "6527:35:45" + } + ] + }, + "documentation": { + "id": 10146, + "nodeType": "StructuredDocumentation", + "src": "6356:70:45", + "text": " @dev Returns true if the value is in the set. O(1)." + }, + "id": 10163, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "contains", + "nameLocation": "6440:8:45", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10152, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10149, + "mutability": "mutable", + "name": "set", + "nameLocation": "6468:3:45", + "nodeType": "VariableDeclaration", + "scope": 10163, + "src": "6449:22:45", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$10109_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + }, + "typeName": { + "id": 10148, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10147, + "name": "Bytes32Set", + "nameLocations": [ + "6449:10:45" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10109, + "src": "6449:10:45" + }, + "referencedDeclaration": 10109, + "src": "6449:10:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$10109_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10151, + "mutability": "mutable", + "name": "value", + "nameLocation": "6481:5:45", + "nodeType": "VariableDeclaration", + "scope": 10163, + "src": "6473:13:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10150, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6473:7:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "6448:39:45" + }, + "returnParameters": { + "id": 10155, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10154, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10163, + "src": "6511:4:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 10153, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6511:4:45", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "6510:6:45" + }, + "scope": 10517, + "src": "6431:138:45", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10177, + "nodeType": "Block", + "src": "6722:43:45", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 10173, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10167, + "src": "6747:3:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$10109_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set storage pointer" + } + }, + "id": 10174, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6751:6:45", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 10108, + "src": "6747:10:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$9915_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + ], + "id": 10172, + "name": "_length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10074, + "src": "6739:7:45", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$9915_storage_ptr_$returns$_t_uint256_$", + "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (uint256)" + } + }, + "id": 10175, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6739:19:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 10171, + "id": 10176, + "nodeType": "Return", + "src": "6732:26:45" + } + ] + }, + "documentation": { + "id": 10164, + "nodeType": "StructuredDocumentation", + "src": "6575:70:45", + "text": " @dev Returns the number of values in the set. O(1)." + }, + "id": 10178, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "length", + "nameLocation": "6659:6:45", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10168, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10167, + "mutability": "mutable", + "name": "set", + "nameLocation": "6685:3:45", + "nodeType": "VariableDeclaration", + "scope": 10178, + "src": "6666:22:45", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$10109_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + }, + "typeName": { + "id": 10166, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10165, + "name": "Bytes32Set", + "nameLocations": [ + "6666:10:45" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10109, + "src": "6666:10:45" + }, + "referencedDeclaration": 10109, + "src": "6666:10:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$10109_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + }, + "visibility": "internal" + } + ], + "src": "6665:24:45" + }, + "returnParameters": { + "id": 10171, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10170, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10178, + "src": "6713:7:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10169, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6713:7:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6712:9:45" + }, + "scope": 10517, + "src": "6650:115:45", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10195, + "nodeType": "Block", + "src": "7190:46:45", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 10190, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10182, + "src": "7211:3:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$10109_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set storage pointer" + } + }, + "id": 10191, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7215:6:45", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 10108, + "src": "7211:10:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "id": 10192, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10184, + "src": "7223:5:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$9915_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10189, + "name": "_at", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10091, + "src": "7207:3:45", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$9915_storage_ptr_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)" + } + }, + "id": 10193, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7207:22:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 10188, + "id": 10194, + "nodeType": "Return", + "src": "7200:29:45" + } + ] + }, + "documentation": { + "id": 10179, + "nodeType": "StructuredDocumentation", + "src": "6771:331:45", + "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}." + }, + "id": 10196, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "at", + "nameLocation": "7116:2:45", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10185, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10182, + "mutability": "mutable", + "name": "set", + "nameLocation": "7138:3:45", + "nodeType": "VariableDeclaration", + "scope": 10196, + "src": "7119:22:45", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$10109_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + }, + "typeName": { + "id": 10181, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10180, + "name": "Bytes32Set", + "nameLocations": [ + "7119:10:45" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10109, + "src": "7119:10:45" + }, + "referencedDeclaration": 10109, + "src": "7119:10:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$10109_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10184, + "mutability": "mutable", + "name": "index", + "nameLocation": "7151:5:45", + "nodeType": "VariableDeclaration", + "scope": 10196, + "src": "7143:13:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10183, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7143:7:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7118:39:45" + }, + "returnParameters": { + "id": 10188, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10187, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10196, + "src": "7181:7:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10186, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7181:7:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "7180:9:45" + }, + "scope": 10517, + "src": "7107:129:45", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10225, + "nodeType": "Block", + "src": "7857:192:45", + "statements": [ + { + "assignments": [ + 10210 + ], + "declarations": [ + { + "constant": false, + "id": 10210, + "mutability": "mutable", + "name": "store", + "nameLocation": "7884:5:45", + "nodeType": "VariableDeclaration", + "scope": 10225, + "src": "7867:22:45", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 10208, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7867:7:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 10209, + "nodeType": "ArrayTypeName", + "src": "7867:9:45", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "id": 10215, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 10212, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10200, + "src": "7900:3:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$10109_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set storage pointer" + } + }, + "id": 10213, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7904:6:45", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 10108, + "src": "7900:10:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$9915_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + ], + "id": 10211, + "name": "_values", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10105, + "src": "7892:7:45", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$9915_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$", + "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (bytes32[] memory)" + } + }, + "id": 10214, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7892:19:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7867:44:45" + }, + { + "assignments": [ + 10220 + ], + "declarations": [ + { + "constant": false, + "id": 10220, + "mutability": "mutable", + "name": "result", + "nameLocation": "7938:6:45", + "nodeType": "VariableDeclaration", + "scope": 10225, + "src": "7921:23:45", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 10218, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7921:7:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 10219, + "nodeType": "ArrayTypeName", + "src": "7921:9:45", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "id": 10221, + "nodeType": "VariableDeclarationStatement", + "src": "7921:23:45" + }, + { + "AST": { + "nativeSrc": "7980:39:45", + "nodeType": "YulBlock", + "src": "7980:39:45", + "statements": [ + { + "nativeSrc": "7994:15:45", + "nodeType": "YulAssignment", + "src": "7994:15:45", + "value": { + "name": "store", + "nativeSrc": "8004:5:45", + "nodeType": "YulIdentifier", + "src": "8004:5:45" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "7994:6:45", + "nodeType": "YulIdentifier", + "src": "7994:6:45" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 10220, + "isOffset": false, + "isSlot": false, + "src": "7994:6:45", + "valueSize": 1 + }, + { + "declaration": 10210, + "isOffset": false, + "isSlot": false, + "src": "8004:5:45", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 10222, + "nodeType": "InlineAssembly", + "src": "7955:64:45" + }, + { + "expression": { + "id": 10223, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10220, + "src": "8036:6:45", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "functionReturnParameters": 10205, + "id": 10224, + "nodeType": "Return", + "src": "8029:13:45" + } + ] + }, + "documentation": { + "id": 10197, + "nodeType": "StructuredDocumentation", + "src": "7242:529:45", + "text": " @dev Return the entire set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block." + }, + "id": 10226, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "values", + "nameLocation": "7785:6:45", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10201, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10200, + "mutability": "mutable", + "name": "set", + "nameLocation": "7811:3:45", + "nodeType": "VariableDeclaration", + "scope": 10226, + "src": "7792:22:45", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$10109_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + }, + "typeName": { + "id": 10199, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10198, + "name": "Bytes32Set", + "nameLocations": [ + "7792:10:45" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10109, + "src": "7792:10:45" + }, + "referencedDeclaration": 10109, + "src": "7792:10:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$10109_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + }, + "visibility": "internal" + } + ], + "src": "7791:24:45" + }, + "returnParameters": { + "id": 10205, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10204, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10226, + "src": "7839:16:45", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 10202, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7839:7:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 10203, + "nodeType": "ArrayTypeName", + "src": "7839:9:45", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "src": "7838:18:45" + }, + "scope": 10517, + "src": "7776:273:45", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "canonicalName": "EnumerableSet.AddressSet", + "id": 10230, + "members": [ + { + "constant": false, + "id": 10229, + "mutability": "mutable", + "name": "_inner", + "nameLocation": "8106:6:45", + "nodeType": "VariableDeclaration", + "scope": 10230, + "src": "8102:10:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 10228, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10227, + "name": "Set", + "nameLocations": [ + "8102:3:45" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 9915, + "src": "8102:3:45" + }, + "referencedDeclaration": 9915, + "src": "8102:3:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + } + ], + "name": "AddressSet", + "nameLocation": "8081:10:45", + "nodeType": "StructDefinition", + "scope": 10517, + "src": "8074:45:45", + "visibility": "public" + }, + { + "body": { + "id": 10256, + "nodeType": "Block", + "src": "8365:74:45", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 10242, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10234, + "src": "8387:3:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$10230_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 10243, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8391:6:45", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 10229, + "src": "8387:10:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 10250, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10236, + "src": "8423:5:45", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10249, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8415:7:45", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 10248, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "8415:7:45", + "typeDescriptions": {} + } + }, + "id": 10251, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8415:14:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 10247, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8407:7:45", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 10246, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8407:7:45", + "typeDescriptions": {} + } + }, + "id": 10252, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8407:23:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10245, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8399:7:45", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 10244, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8399:7:45", + "typeDescriptions": {} + } + }, + "id": 10253, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8399:32:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$9915_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 10241, + "name": "_add", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9957, + "src": "8382:4:45", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$9915_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 10254, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8382:50:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 10240, + "id": 10255, + "nodeType": "Return", + "src": "8375:57:45" + } + ] + }, + "documentation": { + "id": 10231, + "nodeType": "StructuredDocumentation", + "src": "8125:159:45", + "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present." + }, + "id": 10257, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nameLocation": "8298:3:45", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10237, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10234, + "mutability": "mutable", + "name": "set", + "nameLocation": "8321:3:45", + "nodeType": "VariableDeclaration", + "scope": 10257, + "src": "8302:22:45", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$10230_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "id": 10233, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10232, + "name": "AddressSet", + "nameLocations": [ + "8302:10:45" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10230, + "src": "8302:10:45" + }, + "referencedDeclaration": 10230, + "src": "8302:10:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$10230_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10236, + "mutability": "mutable", + "name": "value", + "nameLocation": "8334:5:45", + "nodeType": "VariableDeclaration", + "scope": 10257, + "src": "8326:13:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10235, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8326:7:45", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "8301:39:45" + }, + "returnParameters": { + "id": 10240, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10239, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10257, + "src": "8359:4:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 10238, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8359:4:45", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "8358:6:45" + }, + "scope": 10517, + "src": "8289:150:45", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10283, + "nodeType": "Block", + "src": "8686:77:45", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 10269, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10261, + "src": "8711:3:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$10230_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 10270, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8715:6:45", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 10229, + "src": "8711:10:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 10277, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10263, + "src": "8747:5:45", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10276, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8739:7:45", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 10275, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "8739:7:45", + "typeDescriptions": {} + } + }, + "id": 10278, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8739:14:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 10274, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8731:7:45", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 10273, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8731:7:45", + "typeDescriptions": {} + } + }, + "id": 10279, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8731:23:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10272, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8723:7:45", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 10271, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8723:7:45", + "typeDescriptions": {} + } + }, + "id": 10280, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8723:32:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$9915_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 10268, + "name": "_remove", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10041, + "src": "8703:7:45", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$9915_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 10281, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8703:53:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 10267, + "id": 10282, + "nodeType": "Return", + "src": "8696:60:45" + } + ] + }, + "documentation": { + "id": 10258, + "nodeType": "StructuredDocumentation", + "src": "8445:157:45", + "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present." + }, + "id": 10284, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remove", + "nameLocation": "8616:6:45", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10264, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10261, + "mutability": "mutable", + "name": "set", + "nameLocation": "8642:3:45", + "nodeType": "VariableDeclaration", + "scope": 10284, + "src": "8623:22:45", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$10230_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "id": 10260, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10259, + "name": "AddressSet", + "nameLocations": [ + "8623:10:45" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10230, + "src": "8623:10:45" + }, + "referencedDeclaration": 10230, + "src": "8623:10:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$10230_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10263, + "mutability": "mutable", + "name": "value", + "nameLocation": "8655:5:45", + "nodeType": "VariableDeclaration", + "scope": 10284, + "src": "8647:13:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10262, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8647:7:45", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "8622:39:45" + }, + "returnParameters": { + "id": 10267, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10266, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10284, + "src": "8680:4:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 10265, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8680:4:45", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "8679:6:45" + }, + "scope": 10517, + "src": "8607:156:45", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10310, + "nodeType": "Block", + "src": "8930:79:45", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 10296, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10288, + "src": "8957:3:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$10230_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 10297, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8961:6:45", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 10229, + "src": "8957:10:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 10304, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10290, + "src": "8993:5:45", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10303, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8985:7:45", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 10302, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "8985:7:45", + "typeDescriptions": {} + } + }, + "id": 10305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8985:14:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 10301, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8977:7:45", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 10300, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8977:7:45", + "typeDescriptions": {} + } + }, + "id": 10306, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8977:23:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10299, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8969:7:45", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 10298, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8969:7:45", + "typeDescriptions": {} + } + }, + "id": 10307, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8969:32:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$9915_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 10295, + "name": "_contains", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10060, + "src": "8947:9:45", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$9915_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)" + } + }, + "id": 10308, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8947:55:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 10294, + "id": 10309, + "nodeType": "Return", + "src": "8940:62:45" + } + ] + }, + "documentation": { + "id": 10285, + "nodeType": "StructuredDocumentation", + "src": "8769:70:45", + "text": " @dev Returns true if the value is in the set. O(1)." + }, + "id": 10311, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "contains", + "nameLocation": "8853:8:45", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10291, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10288, + "mutability": "mutable", + "name": "set", + "nameLocation": "8881:3:45", + "nodeType": "VariableDeclaration", + "scope": 10311, + "src": "8862:22:45", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$10230_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "id": 10287, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10286, + "name": "AddressSet", + "nameLocations": [ + "8862:10:45" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10230, + "src": "8862:10:45" + }, + "referencedDeclaration": 10230, + "src": "8862:10:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$10230_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10290, + "mutability": "mutable", + "name": "value", + "nameLocation": "8894:5:45", + "nodeType": "VariableDeclaration", + "scope": 10311, + "src": "8886:13:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10289, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8886:7:45", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "8861:39:45" + }, + "returnParameters": { + "id": 10294, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10293, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10311, + "src": "8924:4:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 10292, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8924:4:45", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "8923:6:45" + }, + "scope": 10517, + "src": "8844:165:45", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10325, + "nodeType": "Block", + "src": "9162:43:45", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 10321, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10315, + "src": "9187:3:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$10230_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 10322, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9191:6:45", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 10229, + "src": "9187:10:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$9915_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + ], + "id": 10320, + "name": "_length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10074, + "src": "9179:7:45", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$9915_storage_ptr_$returns$_t_uint256_$", + "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (uint256)" + } + }, + "id": 10323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9179:19:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 10319, + "id": 10324, + "nodeType": "Return", + "src": "9172:26:45" + } + ] + }, + "documentation": { + "id": 10312, + "nodeType": "StructuredDocumentation", + "src": "9015:70:45", + "text": " @dev Returns the number of values in the set. O(1)." + }, + "id": 10326, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "length", + "nameLocation": "9099:6:45", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10316, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10315, + "mutability": "mutable", + "name": "set", + "nameLocation": "9125:3:45", + "nodeType": "VariableDeclaration", + "scope": 10326, + "src": "9106:22:45", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$10230_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "id": 10314, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10313, + "name": "AddressSet", + "nameLocations": [ + "9106:10:45" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10230, + "src": "9106:10:45" + }, + "referencedDeclaration": 10230, + "src": "9106:10:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$10230_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "visibility": "internal" + } + ], + "src": "9105:24:45" + }, + "returnParameters": { + "id": 10319, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10318, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10326, + "src": "9153:7:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10317, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9153:7:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9152:9:45" + }, + "scope": 10517, + "src": "9090:115:45", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10352, + "nodeType": "Block", + "src": "9630:73:45", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 10344, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10330, + "src": "9675:3:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$10230_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 10345, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9679:6:45", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 10229, + "src": "9675:10:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "id": 10346, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10332, + "src": "9687:5:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$9915_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10343, + "name": "_at", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10091, + "src": "9671:3:45", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$9915_storage_ptr_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)" + } + }, + "id": 10347, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9671:22:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 10342, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9663:7:45", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 10341, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9663:7:45", + "typeDescriptions": {} + } + }, + "id": 10348, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9663:31:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10340, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9655:7:45", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 10339, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "9655:7:45", + "typeDescriptions": {} + } + }, + "id": 10349, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9655:40:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 10338, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9647:7:45", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 10337, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9647:7:45", + "typeDescriptions": {} + } + }, + "id": 10350, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9647:49:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 10336, + "id": 10351, + "nodeType": "Return", + "src": "9640:56:45" + } + ] + }, + "documentation": { + "id": 10327, + "nodeType": "StructuredDocumentation", + "src": "9211:331:45", + "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}." + }, + "id": 10353, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "at", + "nameLocation": "9556:2:45", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10333, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10330, + "mutability": "mutable", + "name": "set", + "nameLocation": "9578:3:45", + "nodeType": "VariableDeclaration", + "scope": 10353, + "src": "9559:22:45", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$10230_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "id": 10329, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10328, + "name": "AddressSet", + "nameLocations": [ + "9559:10:45" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10230, + "src": "9559:10:45" + }, + "referencedDeclaration": 10230, + "src": "9559:10:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$10230_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10332, + "mutability": "mutable", + "name": "index", + "nameLocation": "9591:5:45", + "nodeType": "VariableDeclaration", + "scope": 10353, + "src": "9583:13:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10331, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9583:7:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9558:39:45" + }, + "returnParameters": { + "id": 10336, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10335, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10353, + "src": "9621:7:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10334, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9621:7:45", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "9620:9:45" + }, + "scope": 10517, + "src": "9547:156:45", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10382, + "nodeType": "Block", + "src": "10324:192:45", + "statements": [ + { + "assignments": [ + 10367 + ], + "declarations": [ + { + "constant": false, + "id": 10367, + "mutability": "mutable", + "name": "store", + "nameLocation": "10351:5:45", + "nodeType": "VariableDeclaration", + "scope": 10382, + "src": "10334:22:45", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 10365, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10334:7:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 10366, + "nodeType": "ArrayTypeName", + "src": "10334:9:45", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "id": 10372, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 10369, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10357, + "src": "10367:3:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$10230_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 10370, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10371:6:45", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 10229, + "src": "10367:10:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$9915_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + ], + "id": 10368, + "name": "_values", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10105, + "src": "10359:7:45", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$9915_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$", + "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (bytes32[] memory)" + } + }, + "id": 10371, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10359:19:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10334:44:45" + }, + { + "assignments": [ + 10377 + ], + "declarations": [ + { + "constant": false, + "id": 10377, + "mutability": "mutable", + "name": "result", + "nameLocation": "10405:6:45", + "nodeType": "VariableDeclaration", + "scope": 10382, + "src": "10388:23:45", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 10375, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10388:7:45", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 10376, + "nodeType": "ArrayTypeName", + "src": "10388:9:45", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "id": 10378, + "nodeType": "VariableDeclarationStatement", + "src": "10388:23:45" + }, + { + "AST": { + "nativeSrc": "10447:39:45", + "nodeType": "YulBlock", + "src": "10447:39:45", + "statements": [ + { + "nativeSrc": "10461:15:45", + "nodeType": "YulAssignment", + "src": "10461:15:45", + "value": { + "name": "store", + "nativeSrc": "10471:5:45", + "nodeType": "YulIdentifier", + "src": "10471:5:45" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "10461:6:45", + "nodeType": "YulIdentifier", + "src": "10461:6:45" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 10377, + "isOffset": false, + "isSlot": false, + "src": "10461:6:45", + "valueSize": 1 + }, + { + "declaration": 10367, + "isOffset": false, + "isSlot": false, + "src": "10471:5:45", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 10379, + "nodeType": "InlineAssembly", + "src": "10422:64:45" + }, + { + "expression": { + "id": 10380, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10377, + "src": "10503:6:45", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "functionReturnParameters": 10362, + "id": 10381, + "nodeType": "Return", + "src": "10496:13:45" + } + ] + }, + "documentation": { + "id": 10354, + "nodeType": "StructuredDocumentation", + "src": "9709:529:45", + "text": " @dev Return the entire set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block." + }, + "id": 10383, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "values", + "nameLocation": "10252:6:45", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10358, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10357, + "mutability": "mutable", + "name": "set", + "nameLocation": "10278:3:45", + "nodeType": "VariableDeclaration", + "scope": 10383, + "src": "10259:22:45", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$10230_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "id": 10356, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10355, + "name": "AddressSet", + "nameLocations": [ + "10259:10:45" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10230, + "src": "10259:10:45" + }, + "referencedDeclaration": 10230, + "src": "10259:10:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$10230_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "visibility": "internal" + } + ], + "src": "10258:24:45" + }, + "returnParameters": { + "id": 10362, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10361, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10383, + "src": "10306:16:45", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 10359, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10306:7:45", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 10360, + "nodeType": "ArrayTypeName", + "src": "10306:9:45", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "src": "10305:18:45" + }, + "scope": 10517, + "src": "10243:273:45", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "canonicalName": "EnumerableSet.UintSet", + "id": 10387, + "members": [ + { + "constant": false, + "id": 10386, + "mutability": "mutable", + "name": "_inner", + "nameLocation": "10567:6:45", + "nodeType": "VariableDeclaration", + "scope": 10387, + "src": "10563:10:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "id": 10385, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10384, + "name": "Set", + "nameLocations": [ + "10563:3:45" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 9915, + "src": "10563:3:45" + }, + "referencedDeclaration": 9915, + "src": "10563:3:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "visibility": "internal" + } + ], + "name": "UintSet", + "nameLocation": "10545:7:45", + "nodeType": "StructDefinition", + "scope": 10517, + "src": "10538:42:45", + "visibility": "public" + }, + { + "body": { + "id": 10407, + "nodeType": "Block", + "src": "10823:56:45", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 10399, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10391, + "src": "10845:3:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$10387_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 10400, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10849:6:45", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 10386, + "src": "10845:10:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "arguments": [ + { + "id": 10403, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10393, + "src": "10865:5:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10402, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10857:7:45", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 10401, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10857:7:45", + "typeDescriptions": {} + } + }, + "id": 10404, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10857:14:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$9915_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 10398, + "name": "_add", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9957, + "src": "10840:4:45", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$9915_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 10405, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10840:32:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 10397, + "id": 10406, + "nodeType": "Return", + "src": "10833:39:45" + } + ] + }, + "documentation": { + "id": 10388, + "nodeType": "StructuredDocumentation", + "src": "10586:159:45", + "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present." + }, + "id": 10408, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nameLocation": "10759:3:45", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10394, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10391, + "mutability": "mutable", + "name": "set", + "nameLocation": "10779:3:45", + "nodeType": "VariableDeclaration", + "scope": 10408, + "src": "10763:19:45", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$10387_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "id": 10390, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10389, + "name": "UintSet", + "nameLocations": [ + "10763:7:45" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10387, + "src": "10763:7:45" + }, + "referencedDeclaration": 10387, + "src": "10763:7:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$10387_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10393, + "mutability": "mutable", + "name": "value", + "nameLocation": "10792:5:45", + "nodeType": "VariableDeclaration", + "scope": 10408, + "src": "10784:13:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10392, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10784:7:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10762:36:45" + }, + "returnParameters": { + "id": 10397, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10396, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10408, + "src": "10817:4:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 10395, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "10817:4:45", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "10816:6:45" + }, + "scope": 10517, + "src": "10750:129:45", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10428, + "nodeType": "Block", + "src": "11123:59:45", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 10420, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10412, + "src": "11148:3:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$10387_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 10421, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11152:6:45", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 10386, + "src": "11148:10:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "arguments": [ + { + "id": 10424, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10414, + "src": "11168:5:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10423, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11160:7:45", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 10422, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11160:7:45", + "typeDescriptions": {} + } + }, + "id": 10425, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11160:14:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$9915_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 10419, + "name": "_remove", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10041, + "src": "11140:7:45", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$9915_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 10426, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11140:35:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 10418, + "id": 10427, + "nodeType": "Return", + "src": "11133:42:45" + } + ] + }, + "documentation": { + "id": 10409, + "nodeType": "StructuredDocumentation", + "src": "10885:157:45", + "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present." + }, + "id": 10429, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remove", + "nameLocation": "11056:6:45", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10415, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10412, + "mutability": "mutable", + "name": "set", + "nameLocation": "11079:3:45", + "nodeType": "VariableDeclaration", + "scope": 10429, + "src": "11063:19:45", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$10387_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "id": 10411, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10410, + "name": "UintSet", + "nameLocations": [ + "11063:7:45" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10387, + "src": "11063:7:45" + }, + "referencedDeclaration": 10387, + "src": "11063:7:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$10387_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10414, + "mutability": "mutable", + "name": "value", + "nameLocation": "11092:5:45", + "nodeType": "VariableDeclaration", + "scope": 10429, + "src": "11084:13:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10413, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11084:7:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11062:36:45" + }, + "returnParameters": { + "id": 10418, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10417, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10429, + "src": "11117:4:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 10416, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "11117:4:45", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "11116:6:45" + }, + "scope": 10517, + "src": "11047:135:45", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10449, + "nodeType": "Block", + "src": "11346:61:45", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 10441, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10433, + "src": "11373:3:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$10387_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 10442, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11377:6:45", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 10386, + "src": "11373:10:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "arguments": [ + { + "id": 10445, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10435, + "src": "11393:5:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10444, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11385:7:45", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 10443, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11385:7:45", + "typeDescriptions": {} + } + }, + "id": 10446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11385:14:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$9915_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 10440, + "name": "_contains", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10060, + "src": "11363:9:45", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$9915_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)" + } + }, + "id": 10447, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11363:37:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 10439, + "id": 10448, + "nodeType": "Return", + "src": "11356:44:45" + } + ] + }, + "documentation": { + "id": 10430, + "nodeType": "StructuredDocumentation", + "src": "11188:70:45", + "text": " @dev Returns true if the value is in the set. O(1)." + }, + "id": 10450, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "contains", + "nameLocation": "11272:8:45", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10436, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10433, + "mutability": "mutable", + "name": "set", + "nameLocation": "11297:3:45", + "nodeType": "VariableDeclaration", + "scope": 10450, + "src": "11281:19:45", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$10387_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "id": 10432, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10431, + "name": "UintSet", + "nameLocations": [ + "11281:7:45" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10387, + "src": "11281:7:45" + }, + "referencedDeclaration": 10387, + "src": "11281:7:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$10387_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10435, + "mutability": "mutable", + "name": "value", + "nameLocation": "11310:5:45", + "nodeType": "VariableDeclaration", + "scope": 10450, + "src": "11302:13:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10434, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11302:7:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11280:36:45" + }, + "returnParameters": { + "id": 10439, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10438, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10450, + "src": "11340:4:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 10437, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "11340:4:45", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "11339:6:45" + }, + "scope": 10517, + "src": "11263:144:45", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10464, + "nodeType": "Block", + "src": "11557:43:45", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 10460, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10454, + "src": "11582:3:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$10387_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 10461, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11586:6:45", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 10386, + "src": "11582:10:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$9915_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + ], + "id": 10459, + "name": "_length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10074, + "src": "11574:7:45", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$9915_storage_ptr_$returns$_t_uint256_$", + "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (uint256)" + } + }, + "id": 10462, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11574:19:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 10458, + "id": 10463, + "nodeType": "Return", + "src": "11567:26:45" + } + ] + }, + "documentation": { + "id": 10451, + "nodeType": "StructuredDocumentation", + "src": "11413:70:45", + "text": " @dev Returns the number of values in the set. O(1)." + }, + "id": 10465, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "length", + "nameLocation": "11497:6:45", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10455, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10454, + "mutability": "mutable", + "name": "set", + "nameLocation": "11520:3:45", + "nodeType": "VariableDeclaration", + "scope": 10465, + "src": "11504:19:45", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$10387_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "id": 10453, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10452, + "name": "UintSet", + "nameLocations": [ + "11504:7:45" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10387, + "src": "11504:7:45" + }, + "referencedDeclaration": 10387, + "src": "11504:7:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$10387_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "visibility": "internal" + } + ], + "src": "11503:21:45" + }, + "returnParameters": { + "id": 10458, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10457, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10465, + "src": "11548:7:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10456, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11548:7:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11547:9:45" + }, + "scope": 10517, + "src": "11488:112:45", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10485, + "nodeType": "Block", + "src": "12022:55:45", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "expression": { + "id": 10479, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10469, + "src": "12051:3:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$10387_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 10480, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12055:6:45", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 10386, + "src": "12051:10:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "id": 10481, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10471, + "src": "12063:5:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$9915_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10478, + "name": "_at", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10091, + "src": "12047:3:45", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$9915_storage_ptr_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)" + } + }, + "id": 10482, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12047:22:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 10477, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12039:7:45", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 10476, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12039:7:45", + "typeDescriptions": {} + } + }, + "id": 10483, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12039:31:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 10475, + "id": 10484, + "nodeType": "Return", + "src": "12032:38:45" + } + ] + }, + "documentation": { + "id": 10466, + "nodeType": "StructuredDocumentation", + "src": "11606:331:45", + "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}." + }, + "id": 10486, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "at", + "nameLocation": "11951:2:45", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10472, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10469, + "mutability": "mutable", + "name": "set", + "nameLocation": "11970:3:45", + "nodeType": "VariableDeclaration", + "scope": 10486, + "src": "11954:19:45", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$10387_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "id": 10468, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10467, + "name": "UintSet", + "nameLocations": [ + "11954:7:45" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10387, + "src": "11954:7:45" + }, + "referencedDeclaration": 10387, + "src": "11954:7:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$10387_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10471, + "mutability": "mutable", + "name": "index", + "nameLocation": "11983:5:45", + "nodeType": "VariableDeclaration", + "scope": 10486, + "src": "11975:13:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10470, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11975:7:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11953:36:45" + }, + "returnParameters": { + "id": 10475, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10474, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10486, + "src": "12013:7:45", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10473, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12013:7:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12012:9:45" + }, + "scope": 10517, + "src": "11942:135:45", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 10515, + "nodeType": "Block", + "src": "12695:192:45", + "statements": [ + { + "assignments": [ + 10500 + ], + "declarations": [ + { + "constant": false, + "id": 10500, + "mutability": "mutable", + "name": "store", + "nameLocation": "12722:5:45", + "nodeType": "VariableDeclaration", + "scope": 10515, + "src": "12705:22:45", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 10498, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12705:7:45", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 10499, + "nodeType": "ArrayTypeName", + "src": "12705:9:45", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "id": 10505, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 10502, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10490, + "src": "12738:3:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$10387_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 10503, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12742:6:45", + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 10386, + "src": "12738:10:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$9915_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$9915_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + ], + "id": 10501, + "name": "_values", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10105, + "src": "12730:7:45", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$9915_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$", + "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (bytes32[] memory)" + } + }, + "id": 10504, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12730:19:45", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12705:44:45" + }, + { + "assignments": [ + 10510 + ], + "declarations": [ + { + "constant": false, + "id": 10510, + "mutability": "mutable", + "name": "result", + "nameLocation": "12776:6:45", + "nodeType": "VariableDeclaration", + "scope": 10515, + "src": "12759:23:45", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 10508, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12759:7:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10509, + "nodeType": "ArrayTypeName", + "src": "12759:9:45", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "id": 10511, + "nodeType": "VariableDeclarationStatement", + "src": "12759:23:45" + }, + { + "AST": { + "nativeSrc": "12818:39:45", + "nodeType": "YulBlock", + "src": "12818:39:45", + "statements": [ + { + "nativeSrc": "12832:15:45", + "nodeType": "YulAssignment", + "src": "12832:15:45", + "value": { + "name": "store", + "nativeSrc": "12842:5:45", + "nodeType": "YulIdentifier", + "src": "12842:5:45" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "12832:6:45", + "nodeType": "YulIdentifier", + "src": "12832:6:45" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 10510, + "isOffset": false, + "isSlot": false, + "src": "12832:6:45", + "valueSize": 1 + }, + { + "declaration": 10500, + "isOffset": false, + "isSlot": false, + "src": "12842:5:45", + "valueSize": 1 + } + ], + "flags": [ + "memory-safe" + ], + "id": 10512, + "nodeType": "InlineAssembly", + "src": "12793:64:45" + }, + { + "expression": { + "id": 10513, + "name": "result", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10510, + "src": "12874:6:45", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "functionReturnParameters": 10495, + "id": 10514, + "nodeType": "Return", + "src": "12867:13:45" + } + ] + }, + "documentation": { + "id": 10487, + "nodeType": "StructuredDocumentation", + "src": "12083:529:45", + "text": " @dev Return the entire set in an array\n WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed\n to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that\n this function has an unbounded cost, and using it as part of a state-changing function may render the function\n uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block." + }, + "id": 10516, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "values", + "nameLocation": "12626:6:45", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10491, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10490, + "mutability": "mutable", + "name": "set", + "nameLocation": "12649:3:45", + "nodeType": "VariableDeclaration", + "scope": 10516, + "src": "12633:19:45", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$10387_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "id": 10489, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10488, + "name": "UintSet", + "nameLocations": [ + "12633:7:45" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10387, + "src": "12633:7:45" + }, + "referencedDeclaration": 10387, + "src": "12633:7:45", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$10387_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "visibility": "internal" + } + ], + "src": "12632:21:45" + }, + "returnParameters": { + "id": 10495, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10494, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10516, + "src": "12677:16:45", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 10492, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12677:7:45", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10493, + "nodeType": "ArrayTypeName", + "src": "12677:9:45", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "12676:18:45" + }, + "scope": 10517, + "src": "12617:270:45", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 10518, + "src": "1330:11559:45", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "205:12685:45" + }, + "id": 45 + }, + "contracts/account/CMAccount.sol": { + "ast": { + "absolutePath": "contracts/account/CMAccount.sol", + "exportedSymbols": { + "AccessControlEnumerableUpgradeable": [ + 586 + ], + "Address": [ + 5481 + ], + "BookingTokenOperator": [ + 15915 + ], + "CMAccount": [ + 11976 + ], + "ChequeManager": [ + 12642 + ], + "ERC1967Proxy": [ + 3580 + ], + "ERC1967Utils": [ + 3874 + ], + "GasMoneyManager": [ + 12916 + ], + "ICMAccountManager": [ + 16920 + ], + "IERC20": [ + 4513 + ], + "IERC721": [ + 5067 + ], + "IERC721Receiver": [ + 5085 + ], + "Initializable": [ + 840 + ], + "PartnerConfiguration": [ + 17836 + ], + "SafeERC20": [ + 4950 + ], + "UUPSUpgradeable": [ + 1022 + ] + }, + "id": 11977, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 10519, + "literals": [ + "solidity", + "0.8", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "86:23:46" + }, + { + "absolutePath": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", + "file": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", + "id": 10521, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 11977, + "sourceUnit": 3581, + "src": "111:86:46", + "symbolAliases": [ + { + "foreign": { + "id": 10520, + "name": "ERC1967Proxy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3580, + "src": "120:12:46", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "id": 10523, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 11977, + "sourceUnit": 841, + "src": "198:98:46", + "symbolAliases": [ + { + "foreign": { + "id": 10522, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 840, + "src": "207:13:46", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", + "file": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", + "id": 10525, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 11977, + "sourceUnit": 1023, + "src": "297:102:46", + "symbolAliases": [ + { + "foreign": { + "id": 10524, + "name": "UUPSUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1022, + "src": "306:15:46", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/access/extensions/AccessControlEnumerableUpgradeable.sol", + "file": "@openzeppelin/contracts-upgradeable/access/extensions/AccessControlEnumerableUpgradeable.sol", + "id": 10527, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 11977, + "sourceUnit": 587, + "src": "400:146:46", + "symbolAliases": [ + { + "foreign": { + "id": 10526, + "name": "AccessControlEnumerableUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 586, + "src": "409:34:46", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/Address.sol", + "file": "@openzeppelin/contracts/utils/Address.sol", + "id": 10529, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 11977, + "sourceUnit": 5482, + "src": "547:68:46", + "symbolAliases": [ + { + "foreign": { + "id": 10528, + "name": "Address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5481, + "src": "556:7:46", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", + "id": 10532, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 11977, + "sourceUnit": 4951, + "src": "616:92:46", + "symbolAliases": [ + { + "foreign": { + "id": 10530, + "name": "SafeERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4950, + "src": "625:9:46", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 10531, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4513, + "src": "636:6:46", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721.sol", + "file": "@openzeppelin/contracts/token/ERC721/IERC721.sol", + "id": 10534, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 11977, + "sourceUnit": 5068, + "src": "709:75:46", + "symbolAliases": [ + { + "foreign": { + "id": 10533, + "name": "IERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5067, + "src": "718:7:46", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol", + "file": "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol", + "id": 10536, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 11977, + "sourceUnit": 5086, + "src": "785:91:46", + "symbolAliases": [ + { + "foreign": { + "id": 10535, + "name": "IERC721Receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5085, + "src": "794:15:46", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol", + "file": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol", + "id": 10538, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 11977, + "sourceUnit": 3875, + "src": "877:86:46", + "symbolAliases": [ + { + "foreign": { + "id": 10537, + "name": "ERC1967Utils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3874, + "src": "886:12:46", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/manager/ICMAccountManager.sol", + "file": "../manager/ICMAccountManager.sol", + "id": 10540, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 11977, + "sourceUnit": 16921, + "src": "965:69:46", + "symbolAliases": [ + { + "foreign": { + "id": 10539, + "name": "ICMAccountManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16920, + "src": "974:17:46", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/account/ChequeManager.sol", + "file": "./ChequeManager.sol", + "id": 10542, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 11977, + "sourceUnit": 12643, + "src": "1035:52:46", + "symbolAliases": [ + { + "foreign": { + "id": 10541, + "name": "ChequeManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12642, + "src": "1044:13:46", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/booking-token/BookingTokenOperator.sol", + "file": "../booking-token/BookingTokenOperator.sol", + "id": 10544, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 11977, + "sourceUnit": 15916, + "src": "1088:81:46", + "symbolAliases": [ + { + "foreign": { + "id": 10543, + "name": "BookingTokenOperator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15915, + "src": "1097:20:46", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/partner/PartnerConfiguration.sol", + "file": "../partner/PartnerConfiguration.sol", + "id": 10546, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 11977, + "sourceUnit": 17837, + "src": "1170:75:46", + "symbolAliases": [ + { + "foreign": { + "id": 10545, + "name": "PartnerConfiguration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17836, + "src": "1179:20:46", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/account/GasMoneyManager.sol", + "file": "./GasMoneyManager.sol", + "id": 10548, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 11977, + "sourceUnit": 12917, + "src": "1246:56:46", + "symbolAliases": [ + { + "foreign": { + "id": 10547, + "name": "GasMoneyManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12916, + "src": "1255:15:46", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 10550, + "name": "Initializable", + "nameLocations": [ + "2638:13:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 840, + "src": "2638:13:46" + }, + "id": 10551, + "nodeType": "InheritanceSpecifier", + "src": "2638:13:46" + }, + { + "baseName": { + "id": 10552, + "name": "AccessControlEnumerableUpgradeable", + "nameLocations": [ + "2657:34:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 586, + "src": "2657:34:46" + }, + "id": 10553, + "nodeType": "InheritanceSpecifier", + "src": "2657:34:46" + }, + { + "baseName": { + "id": 10554, + "name": "UUPSUpgradeable", + "nameLocations": [ + "2697:15:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1022, + "src": "2697:15:46" + }, + "id": 10555, + "nodeType": "InheritanceSpecifier", + "src": "2697:15:46" + }, + { + "baseName": { + "id": 10556, + "name": "IERC721Receiver", + "nameLocations": [ + "2718:15:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5085, + "src": "2718:15:46" + }, + "id": 10557, + "nodeType": "InheritanceSpecifier", + "src": "2718:15:46" + }, + { + "baseName": { + "id": 10558, + "name": "ChequeManager", + "nameLocations": [ + "2739:13:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 12642, + "src": "2739:13:46" + }, + "id": 10559, + "nodeType": "InheritanceSpecifier", + "src": "2739:13:46" + }, + { + "baseName": { + "id": 10560, + "name": "PartnerConfiguration", + "nameLocations": [ + "2758:20:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 17836, + "src": "2758:20:46" + }, + "id": 10561, + "nodeType": "InheritanceSpecifier", + "src": "2758:20:46" + }, + { + "baseName": { + "id": 10562, + "name": "GasMoneyManager", + "nameLocations": [ + "2784:15:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 12916, + "src": "2784:15:46" + }, + "id": 10563, + "nodeType": "InheritanceSpecifier", + "src": "2784:15:46" + } + ], + "canonicalName": "CMAccount", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 10549, + "nodeType": "StructuredDocumentation", + "src": "1304:1307:46", + "text": " @title Camino Messenger Account\n @notice A CM Account manages funds, minting/buying of booking tokens, provided\n or wanted services, and multiple bots for distributors and suppliers on\n Camino Messenger ecosystem.\n Registering bots is done by role based access control. Bot's with\n `CHEQUE_OPERATOR_ROLE` can issue cheques to paid by the {CMAccount} contract.\n Bot can also have `GAS_WITHDRAWER_ROLE` and `BOOKING_OPERATOR_ROLE`.\n `GAS_WITHDRAWER_ROLE` enables a bot to withdraw native coins (CAM) from the\n contract to be used as gas money. This restricted with a `limit`\n (wei/aCAM) and `period` (seconds) by the `BOT_ADMIN_ROLE`. Default starting\n values are 10 CAM per 24 hours.\n `BOOKING_OPERATOR_ROLE` enables a bot to mint and buy Booking Tokens by\n calling the corresponding functions on the {BookingToken} contract. The buy\n operation pays the price of the Booking Token with the funds on the\n {CMAccount} contract.\n @dev This contract uses UUPS style upgradeability. The authorization function\n `_authorizeUpgrade(address)` can be called by the `UPGRADER_ROLE` and is\n restricted to only upgrade to the implementation address registered on the\n {CMAccountManager} contract.\n @custom:security-contact https://r.xyz/program/camino-network" + }, + "fullyImplemented": true, + "id": 11976, + "linearizedBaseContracts": [ + 11976, + 12916, + 17836, + 12642, + 3107, + 5085, + 1022, + 3405, + 586, + 362, + 3147, + 6389, + 3256, + 3230, + 2802, + 840 + ], + "name": "CMAccount", + "nameLocation": "2621:9:46", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 10566, + "libraryName": { + "id": 10564, + "name": "Address", + "nameLocations": [ + "2812:7:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5481, + "src": "2812:7:46" + }, + "nodeType": "UsingForDirective", + "src": "2806:34:46", + "typeName": { + "id": 10565, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2824:15:46", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + }, + { + "global": false, + "id": 10570, + "libraryName": { + "id": 10567, + "name": "SafeERC20", + "nameLocations": [ + "2851:9:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4950, + "src": "2851:9:46" + }, + "nodeType": "UsingForDirective", + "src": "2845:27:46", + "typeName": { + "id": 10569, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10568, + "name": "IERC20", + "nameLocations": [ + "2865:6:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4513, + "src": "2865:6:46" + }, + "referencedDeclaration": 4513, + "src": "2865:6:46", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + } + }, + { + "constant": true, + "documentation": { + "id": 10571, + "nodeType": "StructuredDocumentation", + "src": "3051:90:46", + "text": " @notice Upgrader role can upgrade the contract to a new implementation." + }, + "functionSelector": "f72c0d8b", + "id": 10576, + "mutability": "constant", + "name": "UPGRADER_ROLE", + "nameLocation": "3170:13:46", + "nodeType": "VariableDeclaration", + "scope": 11976, + "src": "3146:66:46", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10572, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3146:7:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "55504752414445525f524f4c45", + "id": 10574, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3196:15:46", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3", + "typeString": "literal_string \"UPGRADER_ROLE\"" + }, + "value": "UPGRADER_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3", + "typeString": "literal_string \"UPGRADER_ROLE\"" + } + ], + "id": 10573, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3186:9:46", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 10575, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3186:26:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 10577, + "nodeType": "StructuredDocumentation", + "src": "3219:111:46", + "text": " @notice Bot admin role can add & remove bots and set gas money withdrawal\n parameters." + }, + "functionSelector": "33746274", + "id": 10582, + "mutability": "constant", + "name": "BOT_ADMIN_ROLE", + "nameLocation": "3359:14:46", + "nodeType": "VariableDeclaration", + "scope": 11976, + "src": "3335:68:46", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10578, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3335:7:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "424f545f41444d494e5f524f4c45", + "id": 10580, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3386:16:46", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c6ae66da7afbd0becbe49ddf95a9256901d87f1bb5e3d43236030e5e4a585b6d", + "typeString": "literal_string \"BOT_ADMIN_ROLE\"" + }, + "value": "BOT_ADMIN_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c6ae66da7afbd0becbe49ddf95a9256901d87f1bb5e3d43236030e5e4a585b6d", + "typeString": "literal_string \"BOT_ADMIN_ROLE\"" + } + ], + "id": 10579, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3376:9:46", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 10581, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3376:27:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 10583, + "nodeType": "StructuredDocumentation", + "src": "3410:111:46", + "text": " @notice Cheque operator role can issue cheques to be paid by this CMAccount\n contract." + }, + "functionSelector": "63e86cc8", + "id": 10588, + "mutability": "constant", + "name": "CHEQUE_OPERATOR_ROLE", + "nameLocation": "3550:20:46", + "nodeType": "VariableDeclaration", + "scope": 11976, + "src": "3526:80:46", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10584, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3526:7:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "4348455155455f4f50455241544f525f524f4c45", + "id": 10586, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3583:22:46", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4c1d97560aef1d9626af2ccff8a6ac6e245c44c307e795e9c16f7211c611a315", + "typeString": "literal_string \"CHEQUE_OPERATOR_ROLE\"" + }, + "value": "CHEQUE_OPERATOR_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_4c1d97560aef1d9626af2ccff8a6ac6e245c44c307e795e9c16f7211c611a315", + "typeString": "literal_string \"CHEQUE_OPERATOR_ROLE\"" + } + ], + "id": 10585, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3573:9:46", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 10587, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3573:33:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 10589, + "nodeType": "StructuredDocumentation", + "src": "3613:191:46", + "text": " @notice Gas withdrawer role can withdraw gas money from the contract. This is\n intended to be used by the bots and is granted when `addMessengerBot` is\n called." + }, + "functionSelector": "383aba87", + "id": 10594, + "mutability": "constant", + "name": "GAS_WITHDRAWER_ROLE", + "nameLocation": "3833:19:46", + "nodeType": "VariableDeclaration", + "scope": 11976, + "src": "3809:78:46", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10590, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3809:7:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "4741535f574954484452415745525f524f4c45", + "id": 10592, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3865:21:46", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e562760eaa817d85ec1bf58364c4d65adb65d99d113c6785ef9aa66567076c95", + "typeString": "literal_string \"GAS_WITHDRAWER_ROLE\"" + }, + "value": "GAS_WITHDRAWER_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_e562760eaa817d85ec1bf58364c4d65adb65d99d113c6785ef9aa66567076c95", + "typeString": "literal_string \"GAS_WITHDRAWER_ROLE\"" + } + ], + "id": 10591, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3855:9:46", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 10593, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3855:32:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 10595, + "nodeType": "StructuredDocumentation", + "src": "3894:80:46", + "text": " @notice Withdrawer role can withdraw funds from the contract." + }, + "functionSelector": "85f438c1", + "id": 10600, + "mutability": "constant", + "name": "WITHDRAWER_ROLE", + "nameLocation": "4003:15:46", + "nodeType": "VariableDeclaration", + "scope": 11976, + "src": "3979:70:46", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10596, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3979:7:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "574954484452415745525f524f4c45", + "id": 10598, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4031:17:46", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4", + "typeString": "literal_string \"WITHDRAWER_ROLE\"" + }, + "value": "WITHDRAWER_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e4", + "typeString": "literal_string \"WITHDRAWER_ROLE\"" + } + ], + "id": 10597, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "4021:9:46", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 10599, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4021:28:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 10601, + "nodeType": "StructuredDocumentation", + "src": "4056:226:46", + "text": " @notice Booking operator role can mint and buy booking tokens using the\n functions on this contract. This is generally used by the bots. The\n price for the booking token is paid by this contract." + }, + "functionSelector": "852b3ccb", + "id": 10606, + "mutability": "constant", + "name": "BOOKING_OPERATOR_ROLE", + "nameLocation": "4311:21:46", + "nodeType": "VariableDeclaration", + "scope": 11976, + "src": "4287:82:46", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10602, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4287:7:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "424f4f4b494e475f4f50455241544f525f524f4c45", + "id": 10604, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4345:23:46", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3acdf00ba9ef08b5f2c22768276611b9af078bf6c24fa36b34ec5e9f2eb061fa", + "typeString": "literal_string \"BOOKING_OPERATOR_ROLE\"" + }, + "value": "BOOKING_OPERATOR_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_3acdf00ba9ef08b5f2c22768276611b9af078bf6c24fa36b34ec5e9f2eb061fa", + "typeString": "literal_string \"BOOKING_OPERATOR_ROLE\"" + } + ], + "id": 10603, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "4335:9:46", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 10605, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4335:34:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 10607, + "nodeType": "StructuredDocumentation", + "src": "4376:91:46", + "text": " @notice Service admin role can add & remove supported & wanted services." + }, + "functionSelector": "d09445c2", + "id": 10612, + "mutability": "constant", + "name": "SERVICE_ADMIN_ROLE", + "nameLocation": "4496:18:46", + "nodeType": "VariableDeclaration", + "scope": 11976, + "src": "4472:76:46", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10608, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4472:7:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "534552564943455f41444d494e5f524f4c45", + "id": 10610, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4527:20:46", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9a95e87c5af084bf5db8491c3a6515da9dd6da39b24b0eb0af08d7b9cd808d91", + "typeString": "literal_string \"SERVICE_ADMIN_ROLE\"" + }, + "value": "SERVICE_ADMIN_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_9a95e87c5af084bf5db8491c3a6515da9dd6da39b24b0eb0af08d7b9cd808d91", + "typeString": "literal_string \"SERVICE_ADMIN_ROLE\"" + } + ], + "id": 10609, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "4517:9:46", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 10611, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4517:31:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "canonicalName": "CMAccount.CMAccountStorage", + "documentation": { + "id": 10613, + "nodeType": "StructuredDocumentation", + "src": "4728:71:46", + "text": "@custom:storage-location erc7201:camino.messenger.storage.CMAccount" + }, + "id": 10623, + "members": [ + { + "constant": false, + "id": 10616, + "mutability": "mutable", + "name": "_manager", + "nameLocation": "4918:8:46", + "nodeType": "VariableDeclaration", + "scope": 10623, + "src": "4910:16:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10615, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4910:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10619, + "mutability": "mutable", + "name": "_bookingToken", + "nameLocation": "5021:13:46", + "nodeType": "VariableDeclaration", + "scope": 10623, + "src": "5013:21:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10618, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5013:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10622, + "mutability": "mutable", + "name": "_prefundAmount", + "nameLocation": "5107:14:46", + "nodeType": "VariableDeclaration", + "scope": 10623, + "src": "5099:22:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10621, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5099:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "CMAccountStorage", + "nameLocation": "4811:16:46", + "nodeType": "StructDefinition", + "scope": 11976, + "src": "4804:324:46", + "visibility": "public" + }, + { + "constant": true, + "id": 10626, + "mutability": "constant", + "name": "CMAccountStorageLocation", + "nameLocation": "5277:24:46", + "nodeType": "VariableDeclaration", + "scope": 11976, + "src": "5252:126:46", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 10624, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5252:7:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307830633762373337393663376363383962396638343962393035366139333230306562613734313838316535376131623033623962656462326330653037313030", + "id": 10625, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5312:66:46", + "typeDescriptions": { + "typeIdentifier": "t_rational_5645873346375426079033729947690106159612509051670143668876781420921770504448_by_1", + "typeString": "int_const 5645...(68 digits omitted)...4448" + }, + "value": "0x0c7b73796c7cc89b9f849b9056a93200eba741881e57a1b03b9bedb2c0e07100" + }, + "visibility": "private" + }, + { + "body": { + "id": 10633, + "nodeType": "Block", + "src": "5467:83:46", + "statements": [ + { + "AST": { + "nativeSrc": "5486:58:46", + "nodeType": "YulBlock", + "src": "5486:58:46", + "statements": [ + { + "nativeSrc": "5500:34:46", + "nodeType": "YulAssignment", + "src": "5500:34:46", + "value": { + "name": "CMAccountStorageLocation", + "nativeSrc": "5510:24:46", + "nodeType": "YulIdentifier", + "src": "5510:24:46" + }, + "variableNames": [ + { + "name": "$.slot", + "nativeSrc": "5500:6:46", + "nodeType": "YulIdentifier", + "src": "5500:6:46" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 10630, + "isOffset": false, + "isSlot": true, + "src": "5500:6:46", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 10626, + "isOffset": false, + "isSlot": false, + "src": "5510:24:46", + "valueSize": 1 + } + ], + "id": 10632, + "nodeType": "InlineAssembly", + "src": "5477:67:46" + } + ] + }, + "id": 10634, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getCMAccountStorage", + "nameLocation": "5394:20:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10627, + "nodeType": "ParameterList", + "parameters": [], + "src": "5414:2:46" + }, + "returnParameters": { + "id": 10631, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10630, + "mutability": "mutable", + "name": "$", + "nameLocation": "5464:1:46", + "nodeType": "VariableDeclaration", + "scope": 10634, + "src": "5439:26:46", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$10623_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage" + }, + "typeName": { + "id": 10629, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10628, + "name": "CMAccountStorage", + "nameLocations": [ + "5439:16:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10623, + "src": "5439:16:46" + }, + "referencedDeclaration": 10623, + "src": "5439:16:46", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$10623_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage" + } + }, + "visibility": "internal" + } + ], + "src": "5438:28:46" + }, + "scope": 11976, + "src": "5385:165:46", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": { + "id": 10635, + "nodeType": "StructuredDocumentation", + "src": "5729:106:46", + "text": " @notice CMAccount upgrade event. Emitted when the CMAccount implementation is upgraded." + }, + "eventSelector": "a3d484f827e1c900ce24494bfdb214bcbad08472a9f0571fb5beac779a682db4", + "id": 10641, + "name": "CMAccountUpgraded", + "nameLocation": "5846:17:46", + "nodeType": "EventDefinition", + "parameters": { + "id": 10640, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10637, + "indexed": true, + "mutability": "mutable", + "name": "oldImplementation", + "nameLocation": "5880:17:46", + "nodeType": "VariableDeclaration", + "scope": 10641, + "src": "5864:33:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10636, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5864:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10639, + "indexed": true, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "5915:17:46", + "nodeType": "VariableDeclaration", + "scope": 10641, + "src": "5899:33:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10638, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5899:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5863:70:46" + }, + "src": "5840:94:46" + }, + { + "anonymous": false, + "documentation": { + "id": 10642, + "nodeType": "StructuredDocumentation", + "src": "5940:77:46", + "text": " @notice Deposit event, emitted when there is a new deposit" + }, + "eventSelector": "e1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c", + "id": 10648, + "name": "Deposit", + "nameLocation": "6028:7:46", + "nodeType": "EventDefinition", + "parameters": { + "id": 10647, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10644, + "indexed": true, + "mutability": "mutable", + "name": "sender", + "nameLocation": "6052:6:46", + "nodeType": "VariableDeclaration", + "scope": 10648, + "src": "6036:22:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10643, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6036:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10646, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nameLocation": "6068:6:46", + "nodeType": "VariableDeclaration", + "scope": 10648, + "src": "6060:14:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10645, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6060:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6035:40:46" + }, + "src": "6022:54:46" + }, + { + "anonymous": false, + "documentation": { + "id": 10649, + "nodeType": "StructuredDocumentation", + "src": "6082:81:46", + "text": " @notice Withdraw event, emitted when there is a new withdrawal" + }, + "eventSelector": "884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a9424364", + "id": 10655, + "name": "Withdraw", + "nameLocation": "6174:8:46", + "nodeType": "EventDefinition", + "parameters": { + "id": 10654, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10651, + "indexed": true, + "mutability": "mutable", + "name": "receiver", + "nameLocation": "6199:8:46", + "nodeType": "VariableDeclaration", + "scope": 10655, + "src": "6183:24:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10650, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6183:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10653, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nameLocation": "6217:6:46", + "nodeType": "VariableDeclaration", + "scope": 10655, + "src": "6209:14:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10652, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6209:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6182:42:46" + }, + "src": "6168:57:46" + }, + { + "anonymous": false, + "documentation": { + "id": 10656, + "nodeType": "StructuredDocumentation", + "src": "6231:46:46", + "text": " @notice Messenger bot added" + }, + "eventSelector": "db3e11ba26e83d528bf96a2167061674c1ce7777c61376d852d172594a873994", + "id": 10660, + "name": "MessengerBotAdded", + "nameLocation": "6288:17:46", + "nodeType": "EventDefinition", + "parameters": { + "id": 10659, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10658, + "indexed": true, + "mutability": "mutable", + "name": "bot", + "nameLocation": "6322:3:46", + "nodeType": "VariableDeclaration", + "scope": 10660, + "src": "6306:19:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10657, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6306:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6305:21:46" + }, + "src": "6282:45:46" + }, + { + "anonymous": false, + "documentation": { + "id": 10661, + "nodeType": "StructuredDocumentation", + "src": "6333:48:46", + "text": " @notice Messenger bot removed" + }, + "eventSelector": "d124523a9cfa28c5dd01826c4fa56192ec7d56859943082e0ca46c3b9dc62913", + "id": 10665, + "name": "MessengerBotRemoved", + "nameLocation": "6392:19:46", + "nodeType": "EventDefinition", + "parameters": { + "id": 10664, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10663, + "indexed": true, + "mutability": "mutable", + "name": "bot", + "nameLocation": "6428:3:46", + "nodeType": "VariableDeclaration", + "scope": 10665, + "src": "6412:19:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10662, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6412:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6411:21:46" + }, + "src": "6386:47:46" + }, + { + "anonymous": false, + "eventSelector": "763f2f41e0c407dd0a7067f44e5468a0db74da9fdb6cd1cb20c7b6dae9375279", + "id": 10669, + "name": "ServiceAdded", + "nameLocation": "6475:12:46", + "nodeType": "EventDefinition", + "parameters": { + "id": 10668, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10667, + "indexed": true, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "6503:11:46", + "nodeType": "VariableDeclaration", + "scope": 10669, + "src": "6488:26:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 10666, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "6488:6:46", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "6487:28:46" + }, + "src": "6469:47:46" + }, + { + "anonymous": false, + "eventSelector": "52f6e0779195109314dfb8cf301d33491c63f136afac4c5d4f35aa934b254813", + "id": 10673, + "name": "ServiceRemoved", + "nameLocation": "6527:14:46", + "nodeType": "EventDefinition", + "parameters": { + "id": 10672, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10671, + "indexed": true, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "6557:11:46", + "nodeType": "VariableDeclaration", + "scope": 10673, + "src": "6542:26:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 10670, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "6542:6:46", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "6541:28:46" + }, + "src": "6521:49:46" + }, + { + "anonymous": false, + "eventSelector": "50cc5f9d56177aa0de269c136f2d2ffd45d7b66c82f0a82f8f840db54d9801f8", + "id": 10677, + "name": "WantedServiceAdded", + "nameLocation": "6582:18:46", + "nodeType": "EventDefinition", + "parameters": { + "id": 10676, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10675, + "indexed": true, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "6616:11:46", + "nodeType": "VariableDeclaration", + "scope": 10677, + "src": "6601:26:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 10674, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "6601:6:46", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "6600:28:46" + }, + "src": "6576:53:46" + }, + { + "anonymous": false, + "eventSelector": "0edb7a081e6ff720ad9e97b837c352ef0548c4d09ec421b9b930b1e0c708e39e", + "id": 10681, + "name": "WantedServiceRemoved", + "nameLocation": "6640:20:46", + "nodeType": "EventDefinition", + "parameters": { + "id": 10680, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10679, + "indexed": true, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "6676:11:46", + "nodeType": "VariableDeclaration", + "scope": 10681, + "src": "6661:26:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 10678, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "6661:6:46", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "6660:28:46" + }, + "src": "6634:55:46" + }, + { + "anonymous": false, + "eventSelector": "dd6c54a4503e1d8a1e75d73648f77d8fe66234b437ce30e20edd51563116ec41", + "id": 10687, + "name": "ServiceFeeUpdated", + "nameLocation": "6701:17:46", + "nodeType": "EventDefinition", + "parameters": { + "id": 10686, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10683, + "indexed": true, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "6734:11:46", + "nodeType": "VariableDeclaration", + "scope": 10687, + "src": "6719:26:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 10682, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "6719:6:46", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10685, + "indexed": false, + "mutability": "mutable", + "name": "fee", + "nameLocation": "6755:3:46", + "nodeType": "VariableDeclaration", + "scope": 10687, + "src": "6747:11:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10684, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6747:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6718:41:46" + }, + "src": "6695:65:46" + }, + { + "anonymous": false, + "eventSelector": "23960b931eb4b63e2e47d040f51cc0de6eef2e865639eb674fbb1890ece3a0ab", + "id": 10693, + "name": "ServiceRestrictedRateUpdated", + "nameLocation": "6771:28:46", + "nodeType": "EventDefinition", + "parameters": { + "id": 10692, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10689, + "indexed": true, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "6815:11:46", + "nodeType": "VariableDeclaration", + "scope": 10693, + "src": "6800:26:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 10688, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "6800:6:46", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10691, + "indexed": false, + "mutability": "mutable", + "name": "restrictedRate", + "nameLocation": "6833:14:46", + "nodeType": "VariableDeclaration", + "scope": 10693, + "src": "6828:19:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 10690, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6828:4:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "6799:49:46" + }, + "src": "6765:84:46" + }, + { + "anonymous": false, + "eventSelector": "d52aef6010d6b6303240865274298b7c5784b14ebf9df788047b34c69c531371", + "id": 10697, + "name": "ServiceCapabilitiesUpdated", + "nameLocation": "6861:26:46", + "nodeType": "EventDefinition", + "parameters": { + "id": 10696, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10695, + "indexed": true, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "6903:11:46", + "nodeType": "VariableDeclaration", + "scope": 10697, + "src": "6888:26:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 10694, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "6888:6:46", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "6887:28:46" + }, + "src": "6855:61:46" + }, + { + "anonymous": false, + "eventSelector": "498a5f4e6f3921f63e6863032989bdb7bb41e5cf5cbde5437c7322c5c8dc46bf", + "id": 10703, + "name": "ServiceCapabilityAdded", + "nameLocation": "6927:22:46", + "nodeType": "EventDefinition", + "parameters": { + "id": 10702, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10699, + "indexed": true, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "6965:11:46", + "nodeType": "VariableDeclaration", + "scope": 10703, + "src": "6950:26:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 10698, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "6950:6:46", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10701, + "indexed": false, + "mutability": "mutable", + "name": "capability", + "nameLocation": "6985:10:46", + "nodeType": "VariableDeclaration", + "scope": 10703, + "src": "6978:17:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 10700, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "6978:6:46", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "6949:47:46" + }, + "src": "6921:76:46" + }, + { + "anonymous": false, + "eventSelector": "ba851faec9e30a9961f0adb49fe025cda6c8d7d0fb9bad99f89c37d057023264", + "id": 10709, + "name": "ServiceCapabilityRemoved", + "nameLocation": "7008:24:46", + "nodeType": "EventDefinition", + "parameters": { + "id": 10708, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10705, + "indexed": true, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "7048:11:46", + "nodeType": "VariableDeclaration", + "scope": 10709, + "src": "7033:26:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 10704, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "7033:6:46", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10707, + "indexed": false, + "mutability": "mutable", + "name": "capability", + "nameLocation": "7068:10:46", + "nodeType": "VariableDeclaration", + "scope": 10709, + "src": "7061:17:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 10706, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "7061:6:46", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "7032:47:46" + }, + "src": "7002:78:46" + }, + { + "documentation": { + "id": 10710, + "nodeType": "StructuredDocumentation", + "src": "7259:97:46", + "text": " @notice CMAccount implementation address does not match the one in the manager" + }, + "errorSelector": "d334043e", + "id": 10716, + "name": "CMAccountImplementationMismatch", + "nameLocation": "7367:31:46", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10715, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10712, + "mutability": "mutable", + "name": "latestImplementation", + "nameLocation": "7407:20:46", + "nodeType": "VariableDeclaration", + "scope": 10716, + "src": "7399:28:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10711, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7399:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10714, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "7437:17:46", + "nodeType": "VariableDeclaration", + "scope": 10716, + "src": "7429:25:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10713, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7429:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "7398:57:46" + }, + "src": "7361:95:46" + }, + { + "documentation": { + "id": 10717, + "nodeType": "StructuredDocumentation", + "src": "7462:105:46", + "text": " @notice New implementation is the same as the current implementation, no update needed" + }, + "errorSelector": "82afabc1", + "id": 10723, + "name": "CMAccountNoUpgradeNeeded", + "nameLocation": "7578:24:46", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10722, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10719, + "mutability": "mutable", + "name": "oldImplementation", + "nameLocation": "7611:17:46", + "nodeType": "VariableDeclaration", + "scope": 10723, + "src": "7603:25:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10718, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7603:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10721, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "7638:17:46", + "nodeType": "VariableDeclaration", + "scope": 10723, + "src": "7630:25:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10720, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7630:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "7602:54:46" + }, + "src": "7572:85:46" + }, + { + "documentation": { + "id": 10724, + "nodeType": "StructuredDocumentation", + "src": "7663:79:46", + "text": " @notice Error to revert with if the prefund is not spent yet" + }, + "errorSelector": "8990ec0a", + "id": 10732, + "name": "PrefundNotSpentYet", + "nameLocation": "7753:18:46", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10731, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10726, + "mutability": "mutable", + "name": "withdrawableAmount", + "nameLocation": "7780:18:46", + "nodeType": "VariableDeclaration", + "scope": 10732, + "src": "7772:26:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10725, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7772:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10728, + "mutability": "mutable", + "name": "prefundLeft", + "nameLocation": "7808:11:46", + "nodeType": "VariableDeclaration", + "scope": 10732, + "src": "7800:19:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10727, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7800:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10730, + "mutability": "mutable", + "name": "amount", + "nameLocation": "7829:6:46", + "nodeType": "VariableDeclaration", + "scope": 10732, + "src": "7821:14:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10729, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7821:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7771:65:46" + }, + "src": "7747:90:46" + }, + { + "documentation": { + "id": 10733, + "nodeType": "StructuredDocumentation", + "src": "7843:70:46", + "text": " @notice Error to revert if transfer to zero address" + }, + "errorSelector": "ea553b34", + "id": 10735, + "name": "TransferToZeroAddress", + "nameLocation": "7924:21:46", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 10734, + "nodeType": "ParameterList", + "parameters": [], + "src": "7945:2:46" + }, + "src": "7918:30:46" + }, + { + "body": { + "id": 10742, + "nodeType": "Block", + "src": "8194:39:46", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10739, + "name": "_disableInitializers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 808, + "src": "8204:20:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 10740, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8204:22:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10741, + "nodeType": "ExpressionStatement", + "src": "8204:22:46" + } + ] + }, + "documentation": { + "id": 10736, + "nodeType": "StructuredDocumentation", + "src": "8127:48:46", + "text": "@custom:oz-upgrades-unsafe-allow constructor" + }, + "id": 10743, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10737, + "nodeType": "ParameterList", + "parameters": [], + "src": "8191:2:46" + }, + "returnParameters": { + "id": 10738, + "nodeType": "ParameterList", + "parameters": [], + "src": "8194:0:46" + }, + "scope": 11976, + "src": "8180:53:46", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 10824, + "nodeType": "Block", + "src": "8426:705:46", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10758, + "name": "__AccessControl_init", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 63, + "src": "8436:20:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 10759, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8436:22:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10760, + "nodeType": "ExpressionStatement", + "src": "8436:22:46" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10761, + "name": "__UUPSUpgradeable_init", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 894, + "src": "8468:22:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 10762, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8468:24:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10763, + "nodeType": "ExpressionStatement", + "src": "8468:24:46" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10764, + "name": "__ChequeManager_init", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12145, + "src": "8502:20:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 10765, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8502:22:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10766, + "nodeType": "ExpressionStatement", + "src": "8502:22:46" + }, + { + "expression": { + "arguments": [ + { + "id": 10768, + "name": "DEFAULT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28, + "src": "8546:18:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 10769, + "name": "defaultAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10751, + "src": "8566:12:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10767, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 545 + ], + "referencedDeclaration": 545, + "src": "8535:10:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 10770, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8535:44:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10771, + "nodeType": "ExpressionStatement", + "src": "8535:44:46" + }, + { + "expression": { + "arguments": [ + { + "id": 10773, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10612, + "src": "8600:18:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 10774, + "name": "defaultAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10751, + "src": "8620:12:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10772, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 545 + ], + "referencedDeclaration": 545, + "src": "8589:10:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 10775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8589:44:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10776, + "nodeType": "ExpressionStatement", + "src": "8589:44:46" + }, + { + "expression": { + "arguments": [ + { + "id": 10778, + "name": "BOT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10582, + "src": "8654:14:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 10779, + "name": "defaultAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10751, + "src": "8670:12:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10777, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 545 + ], + "referencedDeclaration": 545, + "src": "8643:10:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 10780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8643:40:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10781, + "nodeType": "ExpressionStatement", + "src": "8643:40:46" + }, + { + "expression": { + "arguments": [ + { + "id": 10783, + "name": "UPGRADER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10576, + "src": "8704:13:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 10784, + "name": "upgrader", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10753, + "src": "8719:8:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10782, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 545 + ], + "referencedDeclaration": 545, + "src": "8693:10:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 10785, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8693:35:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10786, + "nodeType": "ExpressionStatement", + "src": "8693:35:46" + }, + { + "assignments": [ + 10789 + ], + "declarations": [ + { + "constant": false, + "id": 10789, + "mutability": "mutable", + "name": "$", + "nameLocation": "8764:1:46", + "nodeType": "VariableDeclaration", + "scope": 10824, + "src": "8739:26:46", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$10623_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage" + }, + "typeName": { + "id": 10788, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10787, + "name": "CMAccountStorage", + "nameLocations": [ + "8739:16:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10623, + "src": "8739:16:46" + }, + "referencedDeclaration": 10623, + "src": "8739:16:46", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$10623_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage" + } + }, + "visibility": "internal" + } + ], + "id": 10792, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10790, + "name": "_getCMAccountStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10634, + "src": "8768:20:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_CMAccountStorage_$10623_storage_ptr_$", + "typeString": "function () pure returns (struct CMAccount.CMAccountStorage storage pointer)" + } + }, + "id": 10791, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8768:22:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$10623_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8739:51:46" + }, + { + "expression": { + "id": 10797, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 10793, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10789, + "src": "8801:1:46", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$10623_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage storage pointer" + } + }, + "id": 10795, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "8803:8:46", + "memberName": "_manager", + "nodeType": "MemberAccess", + "referencedDeclaration": 10616, + "src": "8801:10:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 10796, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10745, + "src": "8814:7:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8801:20:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 10798, + "nodeType": "ExpressionStatement", + "src": "8801:20:46" + }, + { + "expression": { + "id": 10803, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 10799, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10789, + "src": "8831:1:46", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$10623_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage storage pointer" + } + }, + "id": 10801, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "8833:13:46", + "memberName": "_bookingToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 10619, + "src": "8831:15:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 10802, + "name": "bookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10747, + "src": "8849:12:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8831:30:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 10804, + "nodeType": "ExpressionStatement", + "src": "8831:30:46" + }, + { + "expression": { + "id": 10809, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 10805, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10789, + "src": "8871:1:46", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$10623_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage storage pointer" + } + }, + "id": 10807, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "8873:14:46", + "memberName": "_prefundAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 10622, + "src": "8871:16:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 10808, + "name": "prefundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10749, + "src": "8890:13:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8871:32:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 10810, + "nodeType": "ExpressionStatement", + "src": "8871:32:46" + }, + { + "assignments": [ + 10812 + ], + "declarations": [ + { + "constant": false, + "id": 10812, + "mutability": "mutable", + "name": "withdrawalLimit", + "nameLocation": "8960:15:46", + "nodeType": "VariableDeclaration", + "scope": 10824, + "src": "8952:23:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10811, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8952:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 10814, + "initialValue": { + "hexValue": "3130", + "id": 10813, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8978:8:46", + "subdenomination": "ether", + "typeDescriptions": { + "typeIdentifier": "t_rational_10000000000000000000_by_1", + "typeString": "int_const 10000000000000000000" + }, + "value": "10" + }, + "nodeType": "VariableDeclarationStatement", + "src": "8952:34:46" + }, + { + "assignments": [ + 10816 + ], + "declarations": [ + { + "constant": false, + "id": 10816, + "mutability": "mutable", + "name": "withdrawalPeriod", + "nameLocation": "9014:16:46", + "nodeType": "VariableDeclaration", + "scope": 10824, + "src": "9006:24:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10815, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9006:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 10818, + "initialValue": { + "hexValue": "3234", + "id": 10817, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9033:8:46", + "subdenomination": "hours", + "typeDescriptions": { + "typeIdentifier": "t_rational_86400_by_1", + "typeString": "int_const 86400" + }, + "value": "24" + }, + "nodeType": "VariableDeclarationStatement", + "src": "9006:35:46" + }, + { + "expression": { + "arguments": [ + { + "id": 10820, + "name": "withdrawalLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10812, + "src": "9090:15:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 10821, + "name": "withdrawalPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10816, + "src": "9107:16:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10819, + "name": "__GasMoneyManager_init", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12733, + "src": "9067:22:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256)" + } + }, + "id": 10822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9067:57:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10823, + "nodeType": "ExpressionStatement", + "src": "9067:57:46" + } + ] + }, + "functionSelector": "33e1a223", + "id": 10825, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 10756, + "kind": "modifierInvocation", + "modifierName": { + "id": 10755, + "name": "initializer", + "nameLocations": [ + "8414:11:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 694, + "src": "8414:11:46" + }, + "nodeType": "ModifierInvocation", + "src": "8414:11:46" + } + ], + "name": "initialize", + "nameLocation": "8248:10:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10754, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10745, + "mutability": "mutable", + "name": "manager", + "nameLocation": "8276:7:46", + "nodeType": "VariableDeclaration", + "scope": 10825, + "src": "8268:15:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10744, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8268:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10747, + "mutability": "mutable", + "name": "bookingToken", + "nameLocation": "8301:12:46", + "nodeType": "VariableDeclaration", + "scope": 10825, + "src": "8293:20:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10746, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8293:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10749, + "mutability": "mutable", + "name": "prefundAmount", + "nameLocation": "8331:13:46", + "nodeType": "VariableDeclaration", + "scope": 10825, + "src": "8323:21:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10748, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8323:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10751, + "mutability": "mutable", + "name": "defaultAdmin", + "nameLocation": "8362:12:46", + "nodeType": "VariableDeclaration", + "scope": 10825, + "src": "8354:20:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10750, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8354:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10753, + "mutability": "mutable", + "name": "upgrader", + "nameLocation": "8392:8:46", + "nodeType": "VariableDeclaration", + "scope": 10825, + "src": "8384:16:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10752, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8384:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "8258:148:46" + }, + "returnParameters": { + "id": 10757, + "nodeType": "ParameterList", + "parameters": [], + "src": "8426:0:46" + }, + "scope": 11976, + "src": "8239:892:46", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 10828, + "nodeType": "Block", + "src": "9164:2:46", + "statements": [] + }, + "id": 10829, + "implemented": true, + "kind": "receive", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10826, + "nodeType": "ParameterList", + "parameters": [], + "src": "9144:2:46" + }, + "returnParameters": { + "id": 10827, + "nodeType": "ParameterList", + "parameters": [], + "src": "9164:0:46" + }, + "scope": 11976, + "src": "9137:29:46", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 12641 + ], + "body": { + "id": 10845, + "nodeType": "Block", + "src": "9529:95:46", + "statements": [ + { + "assignments": [ + 10838 + ], + "declarations": [ + { + "constant": false, + "id": 10838, + "mutability": "mutable", + "name": "$", + "nameLocation": "9564:1:46", + "nodeType": "VariableDeclaration", + "scope": 10845, + "src": "9539:26:46", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$10623_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage" + }, + "typeName": { + "id": 10837, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10836, + "name": "CMAccountStorage", + "nameLocations": [ + "9539:16:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10623, + "src": "9539:16:46" + }, + "referencedDeclaration": 10623, + "src": "9539:16:46", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$10623_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage" + } + }, + "visibility": "internal" + } + ], + "id": 10841, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10839, + "name": "_getCMAccountStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10634, + "src": "9568:20:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_CMAccountStorage_$10623_storage_ptr_$", + "typeString": "function () pure returns (struct CMAccount.CMAccountStorage storage pointer)" + } + }, + "id": 10840, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9568:22:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$10623_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9539:51:46" + }, + { + "expression": { + "expression": { + "id": 10842, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10838, + "src": "9607:1:46", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$10623_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage storage pointer" + } + }, + "id": 10843, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9609:8:46", + "memberName": "_manager", + "nodeType": "MemberAccess", + "referencedDeclaration": 10616, + "src": "9607:10:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 10835, + "id": 10844, + "nodeType": "Return", + "src": "9600:17:46" + } + ] + }, + "documentation": { + "id": 10830, + "nodeType": "StructuredDocumentation", + "src": "9345:111:46", + "text": " @notice Returns the CMAccountManager address.\n @return CMAccountManager address" + }, + "functionSelector": "c162d7da", + "id": 10846, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getManagerAddress", + "nameLocation": "9470:17:46", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 10832, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "9502:8:46" + }, + "parameters": { + "id": 10831, + "nodeType": "ParameterList", + "parameters": [], + "src": "9487:2:46" + }, + "returnParameters": { + "id": 10835, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10834, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10846, + "src": "9520:7:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10833, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9520:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "9519:9:46" + }, + "scope": 11976, + "src": "9461:163:46", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 10861, + "nodeType": "Block", + "src": "9803:100:46", + "statements": [ + { + "assignments": [ + 10854 + ], + "declarations": [ + { + "constant": false, + "id": 10854, + "mutability": "mutable", + "name": "$", + "nameLocation": "9838:1:46", + "nodeType": "VariableDeclaration", + "scope": 10861, + "src": "9813:26:46", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$10623_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage" + }, + "typeName": { + "id": 10853, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10852, + "name": "CMAccountStorage", + "nameLocations": [ + "9813:16:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10623, + "src": "9813:16:46" + }, + "referencedDeclaration": 10623, + "src": "9813:16:46", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$10623_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage" + } + }, + "visibility": "internal" + } + ], + "id": 10857, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10855, + "name": "_getCMAccountStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10634, + "src": "9842:20:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_CMAccountStorage_$10623_storage_ptr_$", + "typeString": "function () pure returns (struct CMAccount.CMAccountStorage storage pointer)" + } + }, + "id": 10856, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9842:22:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$10623_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9813:51:46" + }, + { + "expression": { + "expression": { + "id": 10858, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10854, + "src": "9881:1:46", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$10623_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage storage pointer" + } + }, + "id": 10859, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9883:13:46", + "memberName": "_bookingToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 10619, + "src": "9881:15:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 10851, + "id": 10860, + "nodeType": "Return", + "src": "9874:22:46" + } + ] + }, + "documentation": { + "id": 10847, + "nodeType": "StructuredDocumentation", + "src": "9630:104:46", + "text": " @notice Returns the booking token address.\n @return BookingToken address" + }, + "functionSelector": "4f3f4639", + "id": 10862, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getBookingTokenAddress", + "nameLocation": "9748:22:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10848, + "nodeType": "ParameterList", + "parameters": [], + "src": "9770:2:46" + }, + "returnParameters": { + "id": 10851, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10850, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10862, + "src": "9794:7:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10849, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9794:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "9793:9:46" + }, + "scope": 11976, + "src": "9739:164:46", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 10877, + "nodeType": "Block", + "src": "10063:101:46", + "statements": [ + { + "assignments": [ + 10870 + ], + "declarations": [ + { + "constant": false, + "id": 10870, + "mutability": "mutable", + "name": "$", + "nameLocation": "10098:1:46", + "nodeType": "VariableDeclaration", + "scope": 10877, + "src": "10073:26:46", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$10623_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage" + }, + "typeName": { + "id": 10869, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 10868, + "name": "CMAccountStorage", + "nameLocations": [ + "10073:16:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10623, + "src": "10073:16:46" + }, + "referencedDeclaration": 10623, + "src": "10073:16:46", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$10623_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage" + } + }, + "visibility": "internal" + } + ], + "id": 10873, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10871, + "name": "_getCMAccountStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10634, + "src": "10102:20:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_CMAccountStorage_$10623_storage_ptr_$", + "typeString": "function () pure returns (struct CMAccount.CMAccountStorage storage pointer)" + } + }, + "id": 10872, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10102:22:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$10623_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10073:51:46" + }, + { + "expression": { + "expression": { + "id": 10874, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10870, + "src": "10141:1:46", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountStorage_$10623_storage_ptr", + "typeString": "struct CMAccount.CMAccountStorage storage pointer" + } + }, + "id": 10875, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10143:14:46", + "memberName": "_prefundAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 10622, + "src": "10141:16:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 10867, + "id": 10876, + "nodeType": "Return", + "src": "10134:23:46" + } + ] + }, + "documentation": { + "id": 10863, + "nodeType": "StructuredDocumentation", + "src": "9909:91:46", + "text": " @notice Returns the prefund amount.\n @return prefund amount" + }, + "functionSelector": "c39409e1", + "id": 10878, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getPrefundAmount", + "nameLocation": "10014:16:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10864, + "nodeType": "ParameterList", + "parameters": [], + "src": "10030:2:46" + }, + "returnParameters": { + "id": 10867, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10866, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10878, + "src": "10054:7:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10865, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10054:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10053:9:46" + }, + "scope": 11976, + "src": "10005:159:46", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 976 + ], + "body": { + "id": 10928, + "nodeType": "Block", + "src": "10884:785:46", + "statements": [ + { + "assignments": [ + 10889 + ], + "declarations": [ + { + "constant": false, + "id": 10889, + "mutability": "mutable", + "name": "managerImplementation", + "nameLocation": "10961:21:46", + "nodeType": "VariableDeclaration", + "scope": 10928, + "src": "10953:29:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10888, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10953:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 10896, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10891, + "name": "getManagerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 10846 + ], + "referencedDeclaration": 10846, + "src": "11003:17:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 10892, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11003:19:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10890, + "name": "ICMAccountManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16920, + "src": "10985:17:46", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ICMAccountManager_$16920_$", + "typeString": "type(contract ICMAccountManager)" + } + }, + "id": 10893, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10985:38:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ICMAccountManager_$16920", + "typeString": "contract ICMAccountManager" + } + }, + "id": 10894, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11024:24:46", + "memberName": "getAccountImplementation", + "nodeType": "MemberAccess", + "referencedDeclaration": 16888, + "src": "10985:63:46", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", + "typeString": "function () view external returns (address)" + } + }, + "id": 10895, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10985:65:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10953:97:46" + }, + { + "assignments": [ + 10898 + ], + "declarations": [ + { + "constant": false, + "id": 10898, + "mutability": "mutable", + "name": "oldImplementation", + "nameLocation": "11068:17:46", + "nodeType": "VariableDeclaration", + "scope": 10928, + "src": "11060:25:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10897, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11060:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 10902, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 10899, + "name": "ERC1967Utils", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3874, + "src": "11088:12:46", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC1967Utils_$3874_$", + "typeString": "type(library ERC1967Utils)" + } + }, + "id": 10900, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11101:17:46", + "memberName": "getImplementation", + "nodeType": "MemberAccess", + "referencedDeclaration": 3626, + "src": "11088:30:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 10901, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11088:32:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11060:60:46" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 10905, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10903, + "name": "oldImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10898, + "src": "11206:17:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 10904, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10881, + "src": "11227:17:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "11206:38:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10912, + "nodeType": "IfStatement", + "src": "11202:138:46", + "trueBody": { + "id": 10911, + "nodeType": "Block", + "src": "11246:94:46", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 10907, + "name": "oldImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10898, + "src": "11292:17:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10908, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10881, + "src": "11311:17:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10906, + "name": "CMAccountNoUpgradeNeeded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10723, + "src": "11267:24:46", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address) pure" + } + }, + "id": 10909, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11267:62:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10910, + "nodeType": "RevertStatement", + "src": "11260:69:46" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 10915, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10913, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10881, + "src": "11443:17:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 10914, + "name": "managerImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10889, + "src": "11464:21:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "11443:42:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10922, + "nodeType": "IfStatement", + "src": "11439:153:46", + "trueBody": { + "id": 10921, + "nodeType": "Block", + "src": "11487:105:46", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 10917, + "name": "managerImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10889, + "src": "11540:21:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10918, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10881, + "src": "11563:17:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10916, + "name": "CMAccountImplementationMismatch", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10716, + "src": "11508:31:46", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address) pure" + } + }, + "id": 10919, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11508:73:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10920, + "nodeType": "RevertStatement", + "src": "11501:80:46" + } + ] + } + }, + { + "eventCall": { + "arguments": [ + { + "id": 10924, + "name": "oldImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10898, + "src": "11625:17:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 10925, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10881, + "src": "11644:17:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10923, + "name": "CMAccountUpgraded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10641, + "src": "11607:17:46", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 10926, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11607:55:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10927, + "nodeType": "EmitStatement", + "src": "11602:60:46" + } + ] + }, + "documentation": { + "id": 10879, + "nodeType": "StructuredDocumentation", + "src": "10343:440:46", + "text": " @notice Authorizes the upgrade of the CMAccount.\n Reverts if the new implementation is the same as the old one.\n Reverts if the new implementation does not match the implementation address\n in the manager. Only implementations registered at the manager are allowed.\n @dev Emits a {CMAccountUpgraded} event.\n @param newImplementation The new implementation address" + }, + "id": 10929, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 10885, + "name": "UPGRADER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10576, + "src": "10869:13:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 10886, + "kind": "modifierInvocation", + "modifierName": { + "id": 10884, + "name": "onlyRole", + "nameLocations": [ + "10860:8:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "10860:8:46" + }, + "nodeType": "ModifierInvocation", + "src": "10860:23:46" + } + ], + "name": "_authorizeUpgrade", + "nameLocation": "10797:17:46", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 10883, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "10851:8:46" + }, + "parameters": { + "id": 10882, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10881, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "10823:17:46", + "nodeType": "VariableDeclaration", + "scope": 10929, + "src": "10815:25:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10880, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10815:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "10814:27:46" + }, + "returnParameters": { + "id": 10887, + "nodeType": "ParameterList", + "parameters": [], + "src": "10884:0:46" + }, + "scope": 11976, + "src": "10788:881:46", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 12635 + ], + "body": { + "id": 10943, + "nodeType": "Block", + "src": "11877:58:46", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 10939, + "name": "CHEQUE_OPERATOR_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10588, + "src": "11902:20:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 10940, + "name": "bot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10932, + "src": "11924:3:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 10938, + "name": "hasRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 116, + "src": "11894:7:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) view returns (bool)" + } + }, + "id": 10941, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11894:34:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 10937, + "id": 10942, + "nodeType": "Return", + "src": "11887:41:46" + } + ] + }, + "documentation": { + "id": 10930, + "nodeType": "StructuredDocumentation", + "src": "11675:126:46", + "text": " @notice Returns true if an address is authorized to sign cheques\n @param bot The bot's address" + }, + "functionSelector": "e0b78add", + "id": 10944, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isBotAllowed", + "nameLocation": "11815:12:46", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 10934, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "11853:8:46" + }, + "parameters": { + "id": 10933, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10932, + "mutability": "mutable", + "name": "bot", + "nameLocation": "11836:3:46", + "nodeType": "VariableDeclaration", + "scope": 10944, + "src": "11828:11:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10931, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11828:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "11827:13:46" + }, + "returnParameters": { + "id": 10937, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10936, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 10944, + "src": "11871:4:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 10935, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "11871:4:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "11870:6:46" + }, + "scope": 11976, + "src": "11806:129:46", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 10992, + "nodeType": "Block", + "src": "12169:987:46", + "statements": [ + { + "assignments": [ + 10951 + ], + "declarations": [ + { + "constant": false, + "id": 10951, + "mutability": "mutable", + "name": "prefundAmount", + "nameLocation": "12187:13:46", + "nodeType": "VariableDeclaration", + "scope": 10992, + "src": "12179:21:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10950, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12179:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 10954, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10952, + "name": "getPrefundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10878, + "src": "12203:16:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 10953, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12203:18:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12179:42:46" + }, + { + "assignments": [ + 10956 + ], + "declarations": [ + { + "constant": false, + "id": 10956, + "mutability": "mutable", + "name": "totalChequePayments", + "nameLocation": "12239:19:46", + "nodeType": "VariableDeclaration", + "scope": 10992, + "src": "12231:27:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10955, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12231:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 10959, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 10957, + "name": "getTotalChequePayments", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12627, + "src": "12261:22:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 10958, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12261:24:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12231:54:46" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10962, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10960, + "name": "totalChequePayments", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10956, + "src": "12442:19:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 10961, + "name": "prefundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10951, + "src": "12464:13:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12442:35:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10991, + "nodeType": "IfStatement", + "src": "12438:712:46", + "trueBody": { + "id": 10990, + "nodeType": "Block", + "src": "12479:671:46", + "statements": [ + { + "assignments": [ + 10964 + ], + "declarations": [ + { + "constant": false, + "id": 10964, + "mutability": "mutable", + "name": "prefundLeft", + "nameLocation": "12739:11:46", + "nodeType": "VariableDeclaration", + "scope": 10990, + "src": "12731:19:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10963, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12731:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 10968, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10967, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10965, + "name": "prefundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10951, + "src": "12753:13:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 10966, + "name": "totalChequePayments", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10956, + "src": "12769:19:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12753:35:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12731:57:46" + }, + { + "assignments": [ + 10970 + ], + "declarations": [ + { + "constant": false, + "id": 10970, + "mutability": "mutable", + "name": "withdrawableAmount", + "nameLocation": "12810:18:46", + "nodeType": "VariableDeclaration", + "scope": 10990, + "src": "12802:26:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10969, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12802:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 10978, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10977, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "arguments": [ + { + "id": 10973, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "12839:4:46", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CMAccount_$11976", + "typeString": "contract CMAccount" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_CMAccount_$11976", + "typeString": "contract CMAccount" + } + ], + "id": 10972, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12831:7:46", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 10971, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12831:7:46", + "typeDescriptions": {} + } + }, + "id": 10974, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12831:13:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 10975, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12845:7:46", + "memberName": "balance", + "nodeType": "MemberAccess", + "src": "12831:21:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 10976, + "name": "prefundLeft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10964, + "src": "12855:11:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12831:35:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12802:64:46" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 10981, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 10979, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10947, + "src": "13012:6:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "id": 10980, + "name": "withdrawableAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10970, + "src": "13021:18:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13012:27:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 10989, + "nodeType": "IfStatement", + "src": "13008:132:46", + "trueBody": { + "id": 10988, + "nodeType": "Block", + "src": "13041:99:46", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 10983, + "name": "withdrawableAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10970, + "src": "13085:18:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 10984, + "name": "prefundLeft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10964, + "src": "13105:11:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 10985, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10947, + "src": "13118:6:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 10982, + "name": "PrefundNotSpentYet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10732, + "src": "13066:18:46", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256,uint256) pure" + } + }, + "id": 10986, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13066:59:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 10987, + "nodeType": "RevertStatement", + "src": "13059:66:46" + } + ] + } + } + ] + } + } + ] + }, + "documentation": { + "id": 10945, + "nodeType": "StructuredDocumentation", + "src": "11941:166:46", + "text": " @notice Verifies if the amount is withdrawable by checking if prefund is spent\n @param amount The amount to check if it's withdrawable" + }, + "id": 10993, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkPrefundSpent", + "nameLocation": "12121:18:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10948, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10947, + "mutability": "mutable", + "name": "amount", + "nameLocation": "12148:6:46", + "nodeType": "VariableDeclaration", + "scope": 10993, + "src": "12140:14:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10946, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12140:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12139:16:46" + }, + "returnParameters": { + "id": 10949, + "nodeType": "ParameterList", + "parameters": [], + "src": "12169:0:46" + }, + "scope": 11976, + "src": "12112:1044:46", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 11021, + "nodeType": "Block", + "src": "13584:204:46", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 11007, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10998, + "src": "13694:6:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11006, + "name": "_checkPrefundSpent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10993, + "src": "13675:18:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$__$", + "typeString": "function (uint256) view" + } + }, + "id": 11008, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13675:26:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11009, + "nodeType": "ExpressionStatement", + "src": "13675:26:46" + }, + { + "expression": { + "arguments": [ + { + "id": 11013, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10998, + "src": "13732:6:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 11010, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10996, + "src": "13712:9:46", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 11012, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13722:9:46", + "memberName": "sendValue", + "nodeType": "MemberAccess", + "referencedDeclaration": 5279, + "src": "13712:19:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$attached_to$_t_address_payable_$", + "typeString": "function (address payable,uint256)" + } + }, + "id": 11014, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13712:27:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11015, + "nodeType": "ExpressionStatement", + "src": "13712:27:46" + }, + { + "eventCall": { + "arguments": [ + { + "id": 11017, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10996, + "src": "13763:9:46", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "id": 11018, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10998, + "src": "13774:6:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11016, + "name": "Withdraw", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10655, + "src": "13754:8:46", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 11019, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13754:27:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11020, + "nodeType": "EmitStatement", + "src": "13749:32:46" + } + ] + }, + "documentation": { + "id": 10994, + "nodeType": "StructuredDocumentation", + "src": "13162:308:46", + "text": " @notice Withdraw CAM from the CMAccount\n This function reverts if the amount is bigger then the prefund left to spend. This is to prevent\n spam by forcing user to spend the full prefund for cheques, so they can not just create an account\n and withdraw the prefund." + }, + "functionSelector": "f3fef3a3", + "id": 11022, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 11001, + "kind": "modifierInvocation", + "modifierName": { + "id": 11000, + "name": "nonReentrant", + "nameLocations": [ + "13545:12:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3047, + "src": "13545:12:46" + }, + "nodeType": "ModifierInvocation", + "src": "13545:12:46" + }, + { + "arguments": [ + { + "id": 11003, + "name": "WITHDRAWER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10600, + "src": "13567:15:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 11004, + "kind": "modifierInvocation", + "modifierName": { + "id": 11002, + "name": "onlyRole", + "nameLocations": [ + "13558:8:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "13558:8:46" + }, + "nodeType": "ModifierInvocation", + "src": "13558:25:46" + } + ], + "name": "withdraw", + "nameLocation": "13484:8:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 10999, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 10996, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "13509:9:46", + "nodeType": "VariableDeclaration", + "scope": 11022, + "src": "13493:25:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 10995, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13493:15:46", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10998, + "mutability": "mutable", + "name": "amount", + "nameLocation": "13528:6:46", + "nodeType": "VariableDeclaration", + "scope": 11022, + "src": "13520:14:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10997, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13520:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "13492:43:46" + }, + "returnParameters": { + "id": 11005, + "nodeType": "ParameterList", + "parameters": [], + "src": "13584:0:46" + }, + "scope": 11976, + "src": "13475:313:46", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 11058, + "nodeType": "Block", + "src": "14709:284:46", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11047, + "name": "getBookingTokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10862, + "src": "14770:22:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 11048, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14770:24:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11049, + "name": "reservedFor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11025, + "src": "14808:11:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11050, + "name": "uri", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11027, + "src": "14833:3:46", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "id": 11051, + "name": "expirationTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11029, + "src": "14850:19:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 11052, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11031, + "src": "14883:5:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 11053, + "name": "paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11034, + "src": "14902:12:46", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + { + "id": 11054, + "name": "offchainPaymentCurrency", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11036, + "src": "14928:23:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 11055, + "name": "cancellable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11038, + "src": "14965:11:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "id": 11044, + "name": "BookingTokenOperator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15915, + "src": "14719:20:46", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BookingTokenOperator_$15915_$", + "typeString": "type(library BookingTokenOperator)" + } + }, + "id": 11046, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14740:16:46", + "memberName": "mintBookingToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 15613, + "src": "14719:37:46", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_nonpayable$_t_address_$_t_address_$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_contract$_IERC20_$4513_$_t_uint256_$_t_bool_$returns$__$", + "typeString": "function (address,address,string memory,uint256,uint256,contract IERC20,uint256,bool)" + } + }, + "id": 11056, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14719:267:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11057, + "nodeType": "ExpressionStatement", + "src": "14719:267:46" + } + ] + }, + "documentation": { + "id": 11023, + "nodeType": "StructuredDocumentation", + "src": "13967:452:46", + "text": " @notice Mints booking token.\n @param reservedFor The account to reserve the token for\n @param uri The URI of the token\n @param expirationTimestamp The expiration timestamp\n @param price The price of the token\n @param paymentToken The payment token, if address(0) then native\n @param offchainPaymentCurrency The offchain payment currency\n @param cancellable If the token is cancellable" + }, + "functionSelector": "e26a61bb", + "id": 11059, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 11041, + "name": "BOOKING_OPERATOR_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10606, + "src": "14686:21:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 11042, + "kind": "modifierInvocation", + "modifierName": { + "id": 11040, + "name": "onlyRole", + "nameLocations": [ + "14677:8:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "14677:8:46" + }, + "nodeType": "ModifierInvocation", + "src": "14677:31:46" + } + ], + "name": "mintBookingToken", + "nameLocation": "14433:16:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11039, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11025, + "mutability": "mutable", + "name": "reservedFor", + "nameLocation": "14467:11:46", + "nodeType": "VariableDeclaration", + "scope": 11059, + "src": "14459:19:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11024, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14459:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11027, + "mutability": "mutable", + "name": "uri", + "nameLocation": "14502:3:46", + "nodeType": "VariableDeclaration", + "scope": 11059, + "src": "14488:17:46", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 11026, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "14488:6:46", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11029, + "mutability": "mutable", + "name": "expirationTimestamp", + "nameLocation": "14523:19:46", + "nodeType": "VariableDeclaration", + "scope": 11059, + "src": "14515:27:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11028, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14515:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11031, + "mutability": "mutable", + "name": "price", + "nameLocation": "14560:5:46", + "nodeType": "VariableDeclaration", + "scope": 11059, + "src": "14552:13:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11030, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14552:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11034, + "mutability": "mutable", + "name": "paymentToken", + "nameLocation": "14582:12:46", + "nodeType": "VariableDeclaration", + "scope": 11059, + "src": "14575:19:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 11033, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11032, + "name": "IERC20", + "nameLocations": [ + "14575:6:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4513, + "src": "14575:6:46" + }, + "referencedDeclaration": 4513, + "src": "14575:6:46", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11036, + "mutability": "mutable", + "name": "offchainPaymentCurrency", + "nameLocation": "14612:23:46", + "nodeType": "VariableDeclaration", + "scope": 11059, + "src": "14604:31:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11035, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14604:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11038, + "mutability": "mutable", + "name": "cancellable", + "nameLocation": "14650:11:46", + "nodeType": "VariableDeclaration", + "scope": 11059, + "src": "14645:16:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11037, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "14645:4:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "14449:218:46" + }, + "returnParameters": { + "id": 11043, + "nodeType": "ParameterList", + "parameters": [], + "src": "14709:0:46" + }, + "scope": 11976, + "src": "14424:569:46", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 11085, + "nodeType": "Block", + "src": "15270:125:46", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11078, + "name": "getBookingTokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10862, + "src": "15317:22:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 11079, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15317:24:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11080, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11062, + "src": "15343:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 11081, + "name": "expectedPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11064, + "src": "15352:13:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 11082, + "name": "expectedPaymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11067, + "src": "15367:20:46", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + ], + "expression": { + "id": 11075, + "name": "BookingTokenOperator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15915, + "src": "15280:20:46", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BookingTokenOperator_$15915_$", + "typeString": "type(library BookingTokenOperator)" + } + }, + "id": 11077, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15301:15:46", + "memberName": "buyBookingToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 15714, + "src": "15280:36:46", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_contract$_IERC20_$4513_$returns$__$", + "typeString": "function (address,uint256,uint256,contract IERC20)" + } + }, + "id": 11083, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15280:108:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11084, + "nodeType": "ExpressionStatement", + "src": "15280:108:46" + } + ] + }, + "documentation": { + "id": 11060, + "nodeType": "StructuredDocumentation", + "src": "14999:88:46", + "text": " @notice Buys booking token.\n @param tokenId The token id" + }, + "functionSelector": "cd9ef914", + "id": 11086, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 11070, + "kind": "modifierInvocation", + "modifierName": { + "id": 11069, + "name": "nonReentrant", + "nameLocations": [ + "15225:12:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3047, + "src": "15225:12:46" + }, + "nodeType": "ModifierInvocation", + "src": "15225:12:46" + }, + { + "arguments": [ + { + "id": 11072, + "name": "BOOKING_OPERATOR_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10606, + "src": "15247:21:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 11073, + "kind": "modifierInvocation", + "modifierName": { + "id": 11071, + "name": "onlyRole", + "nameLocations": [ + "15238:8:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "15238:8:46" + }, + "nodeType": "ModifierInvocation", + "src": "15238:31:46" + } + ], + "name": "buyBookingToken", + "nameLocation": "15101:15:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11068, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11062, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "15134:7:46", + "nodeType": "VariableDeclaration", + "scope": 11086, + "src": "15126:15:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11061, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15126:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11064, + "mutability": "mutable", + "name": "expectedPrice", + "nameLocation": "15159:13:46", + "nodeType": "VariableDeclaration", + "scope": 11086, + "src": "15151:21:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11063, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15151:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11067, + "mutability": "mutable", + "name": "expectedPaymentToken", + "nameLocation": "15189:20:46", + "nodeType": "VariableDeclaration", + "scope": 11086, + "src": "15182:27:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 11066, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11065, + "name": "IERC20", + "nameLocations": [ + "15182:6:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4513, + "src": "15182:6:46" + }, + "referencedDeclaration": 4513, + "src": "15182:6:46", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "15116:99:46" + }, + "returnParameters": { + "id": 11074, + "nodeType": "ParameterList", + "parameters": [], + "src": "15270:0:46" + }, + "scope": 11976, + "src": "15092:303:46", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 11103, + "nodeType": "Block", + "src": "15565:89:46", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11098, + "name": "getBookingTokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10862, + "src": "15613:22:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 11099, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15613:24:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11100, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11089, + "src": "15639:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 11095, + "name": "BookingTokenOperator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15915, + "src": "15575:20:46", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BookingTokenOperator_$15915_$", + "typeString": "type(library BookingTokenOperator)" + } + }, + "id": 11097, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15596:16:46", + "memberName": "recordExpiration", + "nodeType": "MemberAccess", + "referencedDeclaration": 15730, + "src": "15575:37:46", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 11101, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15575:72:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11102, + "nodeType": "ExpressionStatement", + "src": "15575:72:46" + } + ] + }, + "documentation": { + "id": 11087, + "nodeType": "StructuredDocumentation", + "src": "15401:75:46", + "text": " @notice Record expiration status if the token is expired" + }, + "functionSelector": "e5a6725c", + "id": 11104, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 11092, + "name": "BOOKING_OPERATOR_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10606, + "src": "15542:21:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 11093, + "kind": "modifierInvocation", + "modifierName": { + "id": 11091, + "name": "onlyRole", + "nameLocations": [ + "15533:8:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "15533:8:46" + }, + "nodeType": "ModifierInvocation", + "src": "15533:31:46" + } + ], + "name": "recordExpiration", + "nameLocation": "15490:16:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11090, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11089, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "15515:7:46", + "nodeType": "VariableDeclaration", + "scope": 11104, + "src": "15507:15:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11088, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15507:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "15506:17:46" + }, + "returnParameters": { + "id": 11094, + "nodeType": "ParameterList", + "parameters": [], + "src": "15565:0:46" + }, + "scope": 11976, + "src": "15481:173:46", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 5084 + ], + "body": { + "id": 11122, + "nodeType": "Block", + "src": "15909:54:46", + "statements": [ + { + "expression": { + "expression": { + "expression": { + "id": 11118, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "15926:4:46", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CMAccount_$11976", + "typeString": "contract CMAccount" + } + }, + "id": 11119, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15931:16:46", + "memberName": "onERC721Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 11123, + "src": "15926:21:46", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", + "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)" + } + }, + "id": 11120, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "15948:8:46", + "memberName": "selector", + "nodeType": "MemberAccess", + "src": "15926:30:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "functionReturnParameters": 11117, + "id": 11121, + "nodeType": "Return", + "src": "15919:37:46" + } + ] + }, + "documentation": { + "id": 11105, + "nodeType": "StructuredDocumentation", + "src": "15660:145:46", + "text": " @notice Always returns `IERC721Receiver.onERC721Received.selector`.\n @dev See {IERC721Receiver-onERC721Received}." + }, + "functionSelector": "150b7a02", + "id": 11123, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "onERC721Received", + "nameLocation": "15819:16:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11114, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11107, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11123, + "src": "15836:7:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11106, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15836:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11109, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11123, + "src": "15845:7:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11108, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15845:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11111, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11123, + "src": "15854:7:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11110, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15854:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11113, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11123, + "src": "15863:12:46", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 11112, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "15863:5:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "15835:41:46" + }, + "returnParameters": { + "id": 11117, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11116, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 11123, + "src": "15901:6:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 11115, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "15901:6:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "15900:8:46" + }, + "scope": 11976, + "src": "15810:153:46", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 11155, + "nodeType": "Block", + "src": "16514:133:46", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 11142, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11137, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11129, + "src": "16528:2:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 11140, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16542:1:46", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 11139, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16534:7:46", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 11138, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16534:7:46", + "typeDescriptions": {} + } + }, + "id": 11141, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16534:10:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "16528:16:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11147, + "nodeType": "IfStatement", + "src": "16524:77:46", + "trueBody": { + "id": 11146, + "nodeType": "Block", + "src": "16546:55:46", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11143, + "name": "TransferToZeroAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10735, + "src": "16567:21:46", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11144, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16567:23:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11145, + "nodeType": "RevertStatement", + "src": "16560:30:46" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 11151, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11129, + "src": "16629:2:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11152, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11131, + "src": "16633:6:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 11148, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11127, + "src": "16610:5:46", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + "id": 11150, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16616:12:46", + "memberName": "safeTransfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 4586, + "src": "16610:18:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4513_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$4513_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 11153, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16610:30:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11154, + "nodeType": "ExpressionStatement", + "src": "16610:30:46" + } + ] + }, + "documentation": { + "id": 11124, + "nodeType": "StructuredDocumentation", + "src": "16142:267:46", + "text": " @notice Transfers ERC20 tokens.\n This function reverts if `to` is the zero address.\n @param token The ERC20 token\n @param to The address to transfer the tokens to\n @param amount The amount of tokens to transfer" + }, + "functionSelector": "9db5dbe4", + "id": 11156, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 11134, + "name": "WITHDRAWER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10600, + "src": "16497:15:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 11135, + "kind": "modifierInvocation", + "modifierName": { + "id": 11133, + "name": "onlyRole", + "nameLocations": [ + "16488:8:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "16488:8:46" + }, + "nodeType": "ModifierInvocation", + "src": "16488:25:46" + } + ], + "name": "transferERC20", + "nameLocation": "16423:13:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11132, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11127, + "mutability": "mutable", + "name": "token", + "nameLocation": "16444:5:46", + "nodeType": "VariableDeclaration", + "scope": 11156, + "src": "16437:12:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 11126, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11125, + "name": "IERC20", + "nameLocations": [ + "16437:6:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4513, + "src": "16437:6:46" + }, + "referencedDeclaration": 4513, + "src": "16437:6:46", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11129, + "mutability": "mutable", + "name": "to", + "nameLocation": "16459:2:46", + "nodeType": "VariableDeclaration", + "scope": 11156, + "src": "16451:10:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11128, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16451:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11131, + "mutability": "mutable", + "name": "amount", + "nameLocation": "16471:6:46", + "nodeType": "VariableDeclaration", + "scope": 11156, + "src": "16463:14:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11130, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16463:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "16436:42:46" + }, + "returnParameters": { + "id": 11136, + "nodeType": "ParameterList", + "parameters": [], + "src": "16514:0:46" + }, + "scope": 11976, + "src": "16414:233:46", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 11192, + "nodeType": "Block", + "src": "17024:153:46", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 11175, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11170, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11162, + "src": "17038:2:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 11173, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17052:1:46", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 11172, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "17044:7:46", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 11171, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17044:7:46", + "typeDescriptions": {} + } + }, + "id": 11174, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17044:10:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "17038:16:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11180, + "nodeType": "IfStatement", + "src": "17034:77:46", + "trueBody": { + "id": 11179, + "nodeType": "Block", + "src": "17056:55:46", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11176, + "name": "TransferToZeroAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10735, + "src": "17077:21:46", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 11177, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17077:23:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11178, + "nodeType": "RevertStatement", + "src": "17070:30:46" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 11186, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "17151:4:46", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CMAccount_$11976", + "typeString": "contract CMAccount" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_CMAccount_$11976", + "typeString": "contract CMAccount" + } + ], + "id": 11185, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "17143:7:46", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 11184, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17143:7:46", + "typeDescriptions": {} + } + }, + "id": 11187, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17143:13:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11188, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11162, + "src": "17158:2:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11189, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11164, + "src": "17162:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 11181, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11160, + "src": "17120:5:46", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721_$5067", + "typeString": "contract IERC721" + } + }, + "id": 11183, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17126:16:46", + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 5022, + "src": "17120:22:46", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256) external" + } + }, + "id": 11190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17120:50:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11191, + "nodeType": "ExpressionStatement", + "src": "17120:50:46" + } + ] + }, + "documentation": { + "id": 11157, + "nodeType": "StructuredDocumentation", + "src": "16653:263:46", + "text": " @notice Transfers ERC721 tokens.\n This function reverts if `to` is the zero address.\n @param token The ERC721 token\n @param to The address to transfer the tokens to\n @param tokenId The token id of the token" + }, + "functionSelector": "1aca6376", + "id": 11193, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 11167, + "name": "WITHDRAWER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10600, + "src": "17007:15:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 11168, + "kind": "modifierInvocation", + "modifierName": { + "id": 11166, + "name": "onlyRole", + "nameLocations": [ + "16998:8:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "16998:8:46" + }, + "nodeType": "ModifierInvocation", + "src": "16998:25:46" + } + ], + "name": "transferERC721", + "nameLocation": "16930:14:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11165, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11160, + "mutability": "mutable", + "name": "token", + "nameLocation": "16953:5:46", + "nodeType": "VariableDeclaration", + "scope": 11193, + "src": "16945:13:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721_$5067", + "typeString": "contract IERC721" + }, + "typeName": { + "id": 11159, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11158, + "name": "IERC721", + "nameLocations": [ + "16945:7:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5067, + "src": "16945:7:46" + }, + "referencedDeclaration": 5067, + "src": "16945:7:46", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721_$5067", + "typeString": "contract IERC721" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11162, + "mutability": "mutable", + "name": "to", + "nameLocation": "16968:2:46", + "nodeType": "VariableDeclaration", + "scope": 11193, + "src": "16960:10:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11161, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16960:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11164, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "16980:7:46", + "nodeType": "VariableDeclaration", + "scope": 11193, + "src": "16972:15:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11163, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16972:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "16944:44:46" + }, + "returnParameters": { + "id": 11169, + "nodeType": "ParameterList", + "parameters": [], + "src": "17024:0:46" + }, + "scope": 11976, + "src": "16921:256:46", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 11222, + "nodeType": "Block", + "src": "18316:132:46", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 11211, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11196, + "src": "18353:11:46", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 11210, + "name": "getServiceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11380, + "src": "18338:14:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (string memory) view returns (bytes32)" + } + }, + "id": 11212, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18338:27:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 11213, + "name": "fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11198, + "src": "18367:3:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 11214, + "name": "capabilities", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11203, + "src": "18372:12:46", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + { + "id": 11215, + "name": "restrictedRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11200, + "src": "18386:14:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 11209, + "name": "_addService", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17118, + "src": "18326:11:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$_t_bool_$returns$__$", + "typeString": "function (bytes32,uint256,string memory[] memory,bool)" + } + }, + "id": 11216, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18326:75:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11217, + "nodeType": "ExpressionStatement", + "src": "18326:75:46" + }, + { + "eventCall": { + "arguments": [ + { + "id": 11219, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11196, + "src": "18429:11:46", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 11218, + "name": "ServiceAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10669, + "src": "18416:12:46", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory)" + } + }, + "id": 11220, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18416:25:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11221, + "nodeType": "EmitStatement", + "src": "18411:30:46" + } + ] + }, + "documentation": { + "id": 11194, + "nodeType": "StructuredDocumentation", + "src": "17356:770:46", + "text": " @notice Adds a service to the account as a supported service.\n `serviceName` is defined as pkg + service name in protobuf. For example:\n ```text\n ┌────────────── pkg ─────────────┐ ┌───── service name ─────┐\n \"cmp.services.accommodation.v1alpha.AccommodationSearchService\")\n ```\n @dev These services are coming from the Camino Messenger Protocol's protobuf\n definitions.\n @param serviceName Service name to add to the account as a supported service\n @param fee Fee of the service in aCAM (wei in ETH terminology)\n @param capabilities Capabilities of the service (if any, optional)" + }, + "functionSelector": "432cf639", + "id": 11223, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 11206, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10612, + "src": "18296:18:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 11207, + "kind": "modifierInvocation", + "modifierName": { + "id": 11205, + "name": "onlyRole", + "nameLocations": [ + "18287:8:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "18287:8:46" + }, + "nodeType": "ModifierInvocation", + "src": "18287:28:46" + } + ], + "name": "addService", + "nameLocation": "18140:10:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11204, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11196, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "18174:11:46", + "nodeType": "VariableDeclaration", + "scope": 11223, + "src": "18160:25:46", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 11195, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "18160:6:46", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11198, + "mutability": "mutable", + "name": "fee", + "nameLocation": "18203:3:46", + "nodeType": "VariableDeclaration", + "scope": 11223, + "src": "18195:11:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11197, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18195:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11200, + "mutability": "mutable", + "name": "restrictedRate", + "nameLocation": "18221:14:46", + "nodeType": "VariableDeclaration", + "scope": 11223, + "src": "18216:19:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11199, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "18216:4:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11203, + "mutability": "mutable", + "name": "capabilities", + "nameLocation": "18261:12:46", + "nodeType": "VariableDeclaration", + "scope": 11223, + "src": "18245:28:46", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 11201, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "18245:6:46", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 11202, + "nodeType": "ArrayTypeName", + "src": "18245:8:46", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + } + ], + "src": "18150:129:46" + }, + "returnParameters": { + "id": 11208, + "nodeType": "ParameterList", + "parameters": [], + "src": "18316:0:46" + }, + "scope": 11976, + "src": "18131:317:46", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 11242, + "nodeType": "Block", + "src": "18617:102:46", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 11234, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11226, + "src": "18657:11:46", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 11233, + "name": "getServiceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11380, + "src": "18642:14:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (string memory) view returns (bytes32)" + } + }, + "id": 11235, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18642:27:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 11232, + "name": "_removeService", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17153, + "src": "18627:14:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$", + "typeString": "function (bytes32)" + } + }, + "id": 11236, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18627:43:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11237, + "nodeType": "ExpressionStatement", + "src": "18627:43:46" + }, + { + "eventCall": { + "arguments": [ + { + "id": 11239, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11226, + "src": "18700:11:46", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 11238, + "name": "ServiceRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10673, + "src": "18685:14:46", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory)" + } + }, + "id": 11240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18685:27:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11241, + "nodeType": "EmitStatement", + "src": "18680:32:46" + } + ] + }, + "documentation": { + "id": 11224, + "nodeType": "StructuredDocumentation", + "src": "18454:72:46", + "text": " @notice Remove a service from the account by its name" + }, + "functionSelector": "f51acaea", + "id": 11243, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 11229, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10612, + "src": "18597:18:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 11230, + "kind": "modifierInvocation", + "modifierName": { + "id": 11228, + "name": "onlyRole", + "nameLocations": [ + "18588:8:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "18588:8:46" + }, + "nodeType": "ModifierInvocation", + "src": "18588:28:46" + } + ], + "name": "removeService", + "nameLocation": "18540:13:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11227, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11226, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "18568:11:46", + "nodeType": "VariableDeclaration", + "scope": 11243, + "src": "18554:25:46", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 11225, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "18554:6:46", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "18553:27:46" + }, + "returnParameters": { + "id": 11231, + "nodeType": "ParameterList", + "parameters": [], + "src": "18617:0:46" + }, + "scope": 11976, + "src": "18531:188:46", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 11266, + "nodeType": "Block", + "src": "18900:115:46", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 11256, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11246, + "src": "18940:11:46", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 11255, + "name": "getServiceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11380, + "src": "18925:14:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (string memory) view returns (bytes32)" + } + }, + "id": 11257, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18925:27:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 11258, + "name": "fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11248, + "src": "18954:3:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11254, + "name": "_setServiceFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17182, + "src": "18910:14:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$returns$__$", + "typeString": "function (bytes32,uint256)" + } + }, + "id": 11259, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18910:48:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11260, + "nodeType": "ExpressionStatement", + "src": "18910:48:46" + }, + { + "eventCall": { + "arguments": [ + { + "id": 11262, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11246, + "src": "18991:11:46", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "id": 11263, + "name": "fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11248, + "src": "19004:3:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11261, + "name": "ServiceFeeUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10687, + "src": "18973:17:46", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_uint256_$returns$__$", + "typeString": "function (string memory,uint256)" + } + }, + "id": 11264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18973:35:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11265, + "nodeType": "EmitStatement", + "src": "18968:40:46" + } + ] + }, + "documentation": { + "id": 11244, + "nodeType": "StructuredDocumentation", + "src": "18737:59:46", + "text": " @notice Set the fee of a service by name" + }, + "functionSelector": "41bf7c69", + "id": 11267, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 11251, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10612, + "src": "18880:18:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 11252, + "kind": "modifierInvocation", + "modifierName": { + "id": 11250, + "name": "onlyRole", + "nameLocations": [ + "18871:8:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "18871:8:46" + }, + "nodeType": "ModifierInvocation", + "src": "18871:28:46" + } + ], + "name": "setServiceFee", + "nameLocation": "18810:13:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11249, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11246, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "18838:11:46", + "nodeType": "VariableDeclaration", + "scope": 11267, + "src": "18824:25:46", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 11245, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "18824:6:46", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11248, + "mutability": "mutable", + "name": "fee", + "nameLocation": "18859:3:46", + "nodeType": "VariableDeclaration", + "scope": 11267, + "src": "18851:11:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11247, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18851:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "18823:40:46" + }, + "returnParameters": { + "id": 11253, + "nodeType": "ParameterList", + "parameters": [], + "src": "18900:0:46" + }, + "scope": 11976, + "src": "18801:214:46", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 11290, + "nodeType": "Block", + "src": "19261:159:46", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 11280, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11270, + "src": "19312:11:46", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 11279, + "name": "getServiceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11380, + "src": "19297:14:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (string memory) view returns (bytes32)" + } + }, + "id": 11281, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19297:27:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 11282, + "name": "restrictedRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11272, + "src": "19326:14:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 11278, + "name": "_setServiceRestrictedRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17211, + "src": "19271:25:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bool_$returns$__$", + "typeString": "function (bytes32,bool)" + } + }, + "id": 11283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19271:70:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11284, + "nodeType": "ExpressionStatement", + "src": "19271:70:46" + }, + { + "eventCall": { + "arguments": [ + { + "id": 11286, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11270, + "src": "19385:11:46", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "id": 11287, + "name": "restrictedRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11272, + "src": "19398:14:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 11285, + "name": "ServiceRestrictedRateUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10693, + "src": "19356:28:46", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_bool_$returns$__$", + "typeString": "function (string memory,bool)" + } + }, + "id": 11288, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19356:57:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11289, + "nodeType": "EmitStatement", + "src": "19351:62:46" + } + ] + }, + "documentation": { + "id": 11268, + "nodeType": "StructuredDocumentation", + "src": "19045:71:46", + "text": " @notice Set the restricted rate of a service by name" + }, + "functionSelector": "a7d022f8", + "id": 11291, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 11275, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10612, + "src": "19241:18:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 11276, + "kind": "modifierInvocation", + "modifierName": { + "id": 11274, + "name": "onlyRole", + "nameLocations": [ + "19232:8:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "19232:8:46" + }, + "nodeType": "ModifierInvocation", + "src": "19232:28:46" + } + ], + "name": "setServiceRestrictedRate", + "nameLocation": "19130:24:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11273, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11270, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "19178:11:46", + "nodeType": "VariableDeclaration", + "scope": 11291, + "src": "19164:25:46", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 11269, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "19164:6:46", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11272, + "mutability": "mutable", + "name": "restrictedRate", + "nameLocation": "19204:14:46", + "nodeType": "VariableDeclaration", + "scope": 11291, + "src": "19199:19:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11271, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "19199:4:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "19154:70:46" + }, + "returnParameters": { + "id": 11277, + "nodeType": "ParameterList", + "parameters": [], + "src": "19261:0:46" + }, + "scope": 11976, + "src": "19121:299:46", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 11314, + "nodeType": "Block", + "src": "19672:137:46", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 11305, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11294, + "src": "19721:11:46", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 11304, + "name": "getServiceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11380, + "src": "19706:14:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (string memory) view returns (bytes32)" + } + }, + "id": 11306, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19706:27:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 11307, + "name": "capabilities", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11297, + "src": "19735:12:46", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + ], + "id": 11303, + "name": "_setServiceCapabilities", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17241, + "src": "19682:23:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$returns$__$", + "typeString": "function (bytes32,string memory[] memory)" + } + }, + "id": 11308, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19682:66:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11309, + "nodeType": "ExpressionStatement", + "src": "19682:66:46" + }, + { + "eventCall": { + "arguments": [ + { + "id": 11311, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11294, + "src": "19790:11:46", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 11310, + "name": "ServiceCapabilitiesUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10697, + "src": "19763:26:46", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory)" + } + }, + "id": 11312, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19763:39:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11313, + "nodeType": "EmitStatement", + "src": "19758:44:46" + } + ] + }, + "documentation": { + "id": 11292, + "nodeType": "StructuredDocumentation", + "src": "19451:69:46", + "text": " @notice Set all capabilities for a service by name" + }, + "functionSelector": "ebc20d20", + "id": 11315, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 11300, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10612, + "src": "19652:18:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 11301, + "kind": "modifierInvocation", + "modifierName": { + "id": 11299, + "name": "onlyRole", + "nameLocations": [ + "19643:8:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "19643:8:46" + }, + "nodeType": "ModifierInvocation", + "src": "19643:28:46" + } + ], + "name": "setServiceCapabilities", + "nameLocation": "19534:22:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11298, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11294, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "19580:11:46", + "nodeType": "VariableDeclaration", + "scope": 11315, + "src": "19566:25:46", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 11293, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "19566:6:46", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11297, + "mutability": "mutable", + "name": "capabilities", + "nameLocation": "19617:12:46", + "nodeType": "VariableDeclaration", + "scope": 11315, + "src": "19601:28:46", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 11295, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "19601:6:46", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 11296, + "nodeType": "ArrayTypeName", + "src": "19601:8:46", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + } + ], + "src": "19556:79:46" + }, + "returnParameters": { + "id": 11302, + "nodeType": "ParameterList", + "parameters": [], + "src": "19672:0:46" + }, + "scope": 11976, + "src": "19525:284:46", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 11338, + "nodeType": "Block", + "src": "20060:141:46", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 11328, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11318, + "src": "20107:11:46", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 11327, + "name": "getServiceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11380, + "src": "20092:14:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (string memory) view returns (bytes32)" + } + }, + "id": 11329, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20092:27:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 11330, + "name": "capability", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11320, + "src": "20121:10:46", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 11326, + "name": "_addServiceCapability", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17271, + "src": "20070:21:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bytes32,string memory)" + } + }, + "id": 11331, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20070:62:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11332, + "nodeType": "ExpressionStatement", + "src": "20070:62:46" + }, + { + "eventCall": { + "arguments": [ + { + "id": 11334, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11318, + "src": "20170:11:46", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "id": 11335, + "name": "capability", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11320, + "src": "20183:10:46", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 11333, + "name": "ServiceCapabilityAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10703, + "src": "20147:22:46", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory,string memory)" + } + }, + "id": 11336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20147:47:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11337, + "nodeType": "EmitStatement", + "src": "20142:52:46" + } + ] + }, + "documentation": { + "id": 11316, + "nodeType": "StructuredDocumentation", + "src": "19841:73:46", + "text": " @notice Add a single capability to the service by name" + }, + "functionSelector": "7512e55b", + "id": 11339, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 11323, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10612, + "src": "20040:18:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 11324, + "kind": "modifierInvocation", + "modifierName": { + "id": 11322, + "name": "onlyRole", + "nameLocations": [ + "20031:8:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "20031:8:46" + }, + "nodeType": "ModifierInvocation", + "src": "20031:28:46" + } + ], + "name": "addServiceCapability", + "nameLocation": "19928:20:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11321, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11318, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "19972:11:46", + "nodeType": "VariableDeclaration", + "scope": 11339, + "src": "19958:25:46", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 11317, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "19958:6:46", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11320, + "mutability": "mutable", + "name": "capability", + "nameLocation": "20007:10:46", + "nodeType": "VariableDeclaration", + "scope": 11339, + "src": "19993:24:46", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 11319, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "19993:6:46", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "19948:75:46" + }, + "returnParameters": { + "id": 11325, + "nodeType": "ParameterList", + "parameters": [], + "src": "20060:0:46" + }, + "scope": 11976, + "src": "19919:282:46", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 11362, + "nodeType": "Block", + "src": "20434:146:46", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 11352, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11342, + "src": "20484:11:46", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 11351, + "name": "getServiceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11380, + "src": "20469:14:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (string memory) view returns (bytes32)" + } + }, + "id": 11353, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20469:27:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 11354, + "name": "capability", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11344, + "src": "20498:10:46", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 11350, + "name": "_removeServiceCapability", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17349, + "src": "20444:24:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bytes32,string memory)" + } + }, + "id": 11355, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20444:65:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11356, + "nodeType": "ExpressionStatement", + "src": "20444:65:46" + }, + { + "eventCall": { + "arguments": [ + { + "id": 11358, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11342, + "src": "20549:11:46", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "id": 11359, + "name": "capability", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11344, + "src": "20562:10:46", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 11357, + "name": "ServiceCapabilityRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10709, + "src": "20524:24:46", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory,string memory)" + } + }, + "id": 11360, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20524:49:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11361, + "nodeType": "EmitStatement", + "src": "20519:54:46" + } + ] + }, + "documentation": { + "id": 11340, + "nodeType": "StructuredDocumentation", + "src": "20207:78:46", + "text": " @notice Remove a single capability from the service by name" + }, + "functionSelector": "8c20f574", + "id": 11363, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 11347, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10612, + "src": "20414:18:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 11348, + "kind": "modifierInvocation", + "modifierName": { + "id": 11346, + "name": "onlyRole", + "nameLocations": [ + "20405:8:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "20405:8:46" + }, + "nodeType": "ModifierInvocation", + "src": "20405:28:46" + } + ], + "name": "removeServiceCapability", + "nameLocation": "20299:23:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11345, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11342, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "20346:11:46", + "nodeType": "VariableDeclaration", + "scope": 11363, + "src": "20332:25:46", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 11341, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "20332:6:46", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11344, + "mutability": "mutable", + "name": "capability", + "nameLocation": "20381:10:46", + "nodeType": "VariableDeclaration", + "scope": 11363, + "src": "20367:24:46", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 11343, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "20367:6:46", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "20322:75:46" + }, + "returnParameters": { + "id": 11349, + "nodeType": "ParameterList", + "parameters": [], + "src": "20434:0:46" + }, + "scope": 11976, + "src": "20290:290:46", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 11379, + "nodeType": "Block", + "src": "20816:106:46", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 11376, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11366, + "src": "20903:11:46", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11372, + "name": "getManagerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 10846 + ], + "referencedDeclaration": 10846, + "src": "20851:17:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 11373, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20851:19:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11371, + "name": "ICMAccountManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16920, + "src": "20833:17:46", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ICMAccountManager_$16920_$", + "typeString": "type(contract ICMAccountManager)" + } + }, + "id": 11374, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20833:38:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ICMAccountManager_$16920", + "typeString": "contract ICMAccountManager" + } + }, + "id": 11375, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "20872:30:46", + "memberName": "getRegisteredServiceHashByName", + "nodeType": "MemberAccess", + "referencedDeclaration": 16912, + "src": "20833:69:46", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_string_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (string memory) view external returns (bytes32)" + } + }, + "id": 11377, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20833:82:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 11370, + "id": 11378, + "nodeType": "Return", + "src": "20826:89:46" + } + ] + }, + "documentation": { + "id": 11364, + "nodeType": "StructuredDocumentation", + "src": "20586:131:46", + "text": " @notice Get service hash by name. Returns the keccak256 hash of the service name\n from the account manager" + }, + "id": 11380, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getServiceHash", + "nameLocation": "20731:14:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11367, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11366, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "20760:11:46", + "nodeType": "VariableDeclaration", + "scope": 11380, + "src": "20746:25:46", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 11365, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "20746:6:46", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "20745:27:46" + }, + "returnParameters": { + "id": 11370, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11369, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "20803:11:46", + "nodeType": "VariableDeclaration", + "scope": 11380, + "src": "20795:19:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11368, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "20795:7:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "20794:21:46" + }, + "scope": 11976, + "src": "20722:200:46", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 11465, + "nodeType": "Block", + "src": "21332:635:46", + "statements": [ + { + "assignments": [ + 11395 + ], + "declarations": [ + { + "constant": false, + "id": 11395, + "mutability": "mutable", + "name": "_serviceHashes", + "nameLocation": "21426:14:46", + "nodeType": "VariableDeclaration", + "scope": 11465, + "src": "21409:31:46", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 11393, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "21409:7:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 11394, + "nodeType": "ArrayTypeName", + "src": "21409:9:46", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "id": 11398, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11396, + "name": "getAllServiceHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17368, + "src": "21443:19:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$", + "typeString": "function () view returns (bytes32[] memory)" + } + }, + "id": 11397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21443:21:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "21409:55:46" + }, + { + "assignments": [ + 11403 + ], + "declarations": [ + { + "constant": false, + "id": 11403, + "mutability": "mutable", + "name": "_serviceNames", + "nameLocation": "21490:13:46", + "nodeType": "VariableDeclaration", + "scope": 11465, + "src": "21474:29:46", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 11401, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "21474:6:46", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 11402, + "nodeType": "ArrayTypeName", + "src": "21474:8:46", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + } + ], + "id": 11410, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 11407, + "name": "_serviceHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11395, + "src": "21519:14:46", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 11408, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "21534:6:46", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "21519:21:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11406, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "21506:12:46", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (string memory[] memory)" + }, + "typeName": { + "baseType": { + "id": 11404, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "21510:6:46", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 11405, + "nodeType": "ArrayTypeName", + "src": "21510:8:46", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + } + }, + "id": 11409, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21506:35:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "21474:67:46" + }, + { + "assignments": [ + 11415 + ], + "declarations": [ + { + "constant": false, + "id": 11415, + "mutability": "mutable", + "name": "_allSupportedServicesList", + "nameLocation": "21568:25:46", + "nodeType": "VariableDeclaration", + "scope": 11465, + "src": "21551:42:46", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Service_$16962_memory_ptr_$dyn_memory_ptr", + "typeString": "struct PartnerConfiguration.Service[]" + }, + "typeName": { + "baseType": { + "id": 11413, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11412, + "name": "Service", + "nameLocations": [ + "21551:7:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16962, + "src": "21551:7:46" + }, + "referencedDeclaration": 16962, + "src": "21551:7:46", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$16962_storage_ptr", + "typeString": "struct PartnerConfiguration.Service" + } + }, + "id": 11414, + "nodeType": "ArrayTypeName", + "src": "21551:9:46", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Service_$16962_storage_$dyn_storage_ptr", + "typeString": "struct PartnerConfiguration.Service[]" + } + }, + "visibility": "internal" + } + ], + "id": 11423, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 11420, + "name": "_serviceHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11395, + "src": "21610:14:46", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 11421, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "21625:6:46", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "21610:21:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11419, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "21596:13:46", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_Service_$16962_memory_ptr_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (struct PartnerConfiguration.Service memory[] memory)" + }, + "typeName": { + "baseType": { + "id": 11417, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11416, + "name": "Service", + "nameLocations": [ + "21600:7:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16962, + "src": "21600:7:46" + }, + "referencedDeclaration": 16962, + "src": "21600:7:46", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$16962_storage_ptr", + "typeString": "struct PartnerConfiguration.Service" + } + }, + "id": 11418, + "nodeType": "ArrayTypeName", + "src": "21600:9:46", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Service_$16962_storage_$dyn_storage_ptr", + "typeString": "struct PartnerConfiguration.Service[]" + } + } + }, + "id": 11422, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21596:36:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Service_$16962_memory_ptr_$dyn_memory_ptr", + "typeString": "struct PartnerConfiguration.Service memory[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "21551:81:46" + }, + { + "body": { + "id": 11459, + "nodeType": "Block", + "src": "21695:206:46", + "statements": [ + { + "expression": { + "id": 11447, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 11435, + "name": "_serviceNames", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11403, + "src": "21709:13:46", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + "id": 11437, + "indexExpression": { + "id": 11436, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11425, + "src": "21723:1:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "21709:16:46", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "baseExpression": { + "id": 11443, + "name": "_serviceHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11395, + "src": "21798:14:46", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 11445, + "indexExpression": { + "id": 11444, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11425, + "src": "21813:1:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21798:17:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11439, + "name": "getManagerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 10846 + ], + "referencedDeclaration": 10846, + "src": "21746:17:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 11440, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21746:19:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11438, + "name": "ICMAccountManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16920, + "src": "21728:17:46", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ICMAccountManager_$16920_$", + "typeString": "type(contract ICMAccountManager)" + } + }, + "id": 11441, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21728:38:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ICMAccountManager_$16920", + "typeString": "contract ICMAccountManager" + } + }, + "id": 11442, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "21767:30:46", + "memberName": "getRegisteredServiceNameByHash", + "nodeType": "MemberAccess", + "referencedDeclaration": 16919, + "src": "21728:69:46", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_string_memory_ptr_$", + "typeString": "function (bytes32) view external returns (string memory)" + } + }, + "id": 11446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21728:88:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "21709:107:46", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "id": 11448, + "nodeType": "ExpressionStatement", + "src": "21709:107:46" + }, + { + "expression": { + "id": 11457, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 11449, + "name": "_allSupportedServicesList", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11415, + "src": "21830:25:46", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Service_$16962_memory_ptr_$dyn_memory_ptr", + "typeString": "struct PartnerConfiguration.Service memory[] memory" + } + }, + "id": 11451, + "indexExpression": { + "id": 11450, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11425, + "src": "21856:1:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "21830:28:46", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$16962_memory_ptr", + "typeString": "struct PartnerConfiguration.Service memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "baseExpression": { + "id": 11453, + "name": "_serviceHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11395, + "src": "21872:14:46", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 11455, + "indexExpression": { + "id": 11454, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11425, + "src": "21887:1:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "21872:17:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 11452, + "name": "getService", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17394, + "src": "21861:10:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_struct$_Service_$16962_memory_ptr_$", + "typeString": "function (bytes32) view returns (struct PartnerConfiguration.Service memory)" + } + }, + "id": 11456, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21861:29:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$16962_memory_ptr", + "typeString": "struct PartnerConfiguration.Service memory" + } + }, + "src": "21830:60:46", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$16962_memory_ptr", + "typeString": "struct PartnerConfiguration.Service memory" + } + }, + "id": 11458, + "nodeType": "ExpressionStatement", + "src": "21830:60:46" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11431, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11428, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11425, + "src": "21663:1:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 11429, + "name": "_serviceHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11395, + "src": "21667:14:46", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 11430, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "21682:6:46", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "21667:21:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "21663:25:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11460, + "initializationExpression": { + "assignments": [ + 11425 + ], + "declarations": [ + { + "constant": false, + "id": 11425, + "mutability": "mutable", + "name": "i", + "nameLocation": "21656:1:46", + "nodeType": "VariableDeclaration", + "scope": 11460, + "src": "21648:9:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11424, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "21648:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 11427, + "initialValue": { + "hexValue": "30", + "id": 11426, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21660:1:46", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "21648:13:46" + }, + "isSimpleCounterLoop": true, + "loopExpression": { + "expression": { + "id": 11433, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "21690:3:46", + "subExpression": { + "id": 11432, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11425, + "src": "21690:1:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11434, + "nodeType": "ExpressionStatement", + "src": "21690:3:46" + }, + "nodeType": "ForStatement", + "src": "21643:258:46" + }, + { + "expression": { + "components": [ + { + "id": 11461, + "name": "_serviceNames", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11403, + "src": "21919:13:46", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + { + "id": 11462, + "name": "_allSupportedServicesList", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11415, + "src": "21934:25:46", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Service_$16962_memory_ptr_$dyn_memory_ptr", + "typeString": "struct PartnerConfiguration.Service memory[] memory" + } + } + ], + "id": 11463, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "21918:42:46", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_Service_$16962_memory_ptr_$dyn_memory_ptr_$", + "typeString": "tuple(string memory[] memory,struct PartnerConfiguration.Service memory[] memory)" + } + }, + "functionReturnParameters": 11390, + "id": 11464, + "nodeType": "Return", + "src": "21911:49:46" + } + ] + }, + "documentation": { + "id": 11381, + "nodeType": "StructuredDocumentation", + "src": "21101:116:46", + "text": " @notice Get all supported services. Return a list of service names and a list of service objects." + }, + "functionSelector": "7eec56c7", + "id": 11466, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getSupportedServices", + "nameLocation": "21231:20:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11382, + "nodeType": "ParameterList", + "parameters": [], + "src": "21251:2:46" + }, + "returnParameters": { + "id": 11390, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11385, + "mutability": "mutable", + "name": "serviceNames", + "nameLocation": "21291:12:46", + "nodeType": "VariableDeclaration", + "scope": 11466, + "src": "21275:28:46", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 11383, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "21275:6:46", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 11384, + "nodeType": "ArrayTypeName", + "src": "21275:8:46", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11389, + "mutability": "mutable", + "name": "services", + "nameLocation": "21322:8:46", + "nodeType": "VariableDeclaration", + "scope": 11466, + "src": "21305:25:46", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Service_$16962_memory_ptr_$dyn_memory_ptr", + "typeString": "struct PartnerConfiguration.Service[]" + }, + "typeName": { + "baseType": { + "id": 11387, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 11386, + "name": "Service", + "nameLocations": [ + "21305:7:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16962, + "src": "21305:7:46" + }, + "referencedDeclaration": 16962, + "src": "21305:7:46", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$16962_storage_ptr", + "typeString": "struct PartnerConfiguration.Service" + } + }, + "id": 11388, + "nodeType": "ArrayTypeName", + "src": "21305:9:46", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Service_$16962_storage_$dyn_storage_ptr", + "typeString": "struct PartnerConfiguration.Service[]" + } + }, + "visibility": "internal" + } + ], + "src": "21274:57:46" + }, + "scope": 11976, + "src": "21222:745:46", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 11480, + "nodeType": "Block", + "src": "22153:66:46", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 11476, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11469, + "src": "22199:11:46", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 11475, + "name": "getServiceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11380, + "src": "22184:14:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (string memory) view returns (bytes32)" + } + }, + "id": 11477, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22184:27:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 11474, + "name": "getServiceFee", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 11481, + 17420 + ], + "referencedDeclaration": 17420, + "src": "22170:13:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$", + "typeString": "function (bytes32) view returns (uint256)" + } + }, + "id": 11478, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22170:42:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 11473, + "id": 11479, + "nodeType": "Return", + "src": "22163:49:46" + } + ] + }, + "documentation": { + "id": 11467, + "nodeType": "StructuredDocumentation", + "src": "21973:91:46", + "text": " @notice Get service fee by name. Overloading the getServiceFee function." + }, + "functionSelector": "18274da4", + "id": 11481, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getServiceFee", + "nameLocation": "22078:13:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11470, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11469, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "22106:11:46", + "nodeType": "VariableDeclaration", + "scope": 11481, + "src": "22092:25:46", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 11468, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "22092:6:46", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "22091:27:46" + }, + "returnParameters": { + "id": 11473, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11472, + "mutability": "mutable", + "name": "fee", + "nameLocation": "22148:3:46", + "nodeType": "VariableDeclaration", + "scope": 11481, + "src": "22140:11:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11471, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "22140:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "22139:13:46" + }, + "scope": 11976, + "src": "22069:150:46", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 11495, + "nodeType": "Block", + "src": "22447:77:46", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 11491, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11484, + "src": "22504:11:46", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 11490, + "name": "getServiceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11380, + "src": "22489:14:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (string memory) view returns (bytes32)" + } + }, + "id": 11492, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22489:27:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 11489, + "name": "getServiceRestrictedRate", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 11496, + 17446 + ], + "referencedDeclaration": 17446, + "src": "22464:24:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (bytes32) view returns (bool)" + } + }, + "id": 11493, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22464:53:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 11488, + "id": 11494, + "nodeType": "Return", + "src": "22457:60:46" + } + ] + }, + "documentation": { + "id": 11482, + "nodeType": "StructuredDocumentation", + "src": "22225:114:46", + "text": " @notice Get service restricted rate by name. Overloading the getServiceRestrictedRate function." + }, + "functionSelector": "b5124635", + "id": 11496, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getServiceRestrictedRate", + "nameLocation": "22353:24:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11485, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11484, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "22392:11:46", + "nodeType": "VariableDeclaration", + "scope": 11496, + "src": "22378:25:46", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 11483, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "22378:6:46", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "22377:27:46" + }, + "returnParameters": { + "id": 11488, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11487, + "mutability": "mutable", + "name": "restrictedRate", + "nameLocation": "22431:14:46", + "nodeType": "VariableDeclaration", + "scope": 11496, + "src": "22426:19:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11486, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "22426:4:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "22425:21:46" + }, + "scope": 11976, + "src": "22344:180:46", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 11511, + "nodeType": "Block", + "src": "22754:75:46", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 11507, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11499, + "src": "22809:11:46", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 11506, + "name": "getServiceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11380, + "src": "22794:14:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (string memory) view returns (bytes32)" + } + }, + "id": 11508, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22794:27:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 11505, + "name": "getServiceCapabilities", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 11512, + 17473 + ], + "referencedDeclaration": 17473, + "src": "22771:22:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$", + "typeString": "function (bytes32) view returns (string memory[] memory)" + } + }, + "id": 11509, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22771:51:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + "functionReturnParameters": 11504, + "id": 11510, + "nodeType": "Return", + "src": "22764:58:46" + } + ] + }, + "documentation": { + "id": 11497, + "nodeType": "StructuredDocumentation", + "src": "22530:109:46", + "text": " @notice Get service capabilities by name. Overloading the getServiceCapabilities function." + }, + "functionSelector": "319d13f3", + "id": 11512, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getServiceCapabilities", + "nameLocation": "22653:22:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11500, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11499, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "22690:11:46", + "nodeType": "VariableDeclaration", + "scope": 11512, + "src": "22676:25:46", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 11498, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "22676:6:46", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "22675:27:46" + }, + "returnParameters": { + "id": 11504, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11503, + "mutability": "mutable", + "name": "capabilities", + "nameLocation": "22740:12:46", + "nodeType": "VariableDeclaration", + "scope": 11512, + "src": "22724:28:46", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 11501, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "22724:6:46", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 11502, + "nodeType": "ArrayTypeName", + "src": "22724:8:46", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + } + ], + "src": "22723:30:46" + }, + "scope": 11976, + "src": "22644:185:46", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 11553, + "nodeType": "Block", + "src": "23210:242:46", + "statements": [ + { + "body": { + "id": 11551, + "nodeType": "Block", + "src": "23270:176:46", + "statements": [ + { + "assignments": [ + 11534 + ], + "declarations": [ + { + "constant": false, + "id": 11534, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "23292:11:46", + "nodeType": "VariableDeclaration", + "scope": 11551, + "src": "23284:19:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11533, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "23284:7:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 11540, + "initialValue": { + "arguments": [ + { + "baseExpression": { + "id": 11536, + "name": "serviceNames", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11516, + "src": "23321:12:46", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + "id": 11538, + "indexExpression": { + "id": 11537, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11523, + "src": "23334:1:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23321:15:46", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 11535, + "name": "getServiceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11380, + "src": "23306:14:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (string memory) view returns (bytes32)" + } + }, + "id": 11539, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23306:31:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "23284:53:46" + }, + { + "expression": { + "arguments": [ + { + "id": 11542, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11534, + "src": "23369:11:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 11541, + "name": "_addWantedService", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17524, + "src": "23351:17:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$", + "typeString": "function (bytes32)" + } + }, + "id": 11543, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23351:30:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11544, + "nodeType": "ExpressionStatement", + "src": "23351:30:46" + }, + { + "eventCall": { + "arguments": [ + { + "baseExpression": { + "id": 11546, + "name": "serviceNames", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11516, + "src": "23419:12:46", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + "id": 11548, + "indexExpression": { + "id": 11547, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11523, + "src": "23432:1:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23419:15:46", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 11545, + "name": "WantedServiceAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10677, + "src": "23400:18:46", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory)" + } + }, + "id": 11549, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23400:35:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11550, + "nodeType": "EmitStatement", + "src": "23395:40:46" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11529, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11526, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11523, + "src": "23240:1:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 11527, + "name": "serviceNames", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11516, + "src": "23244:12:46", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + "id": 11528, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "23257:6:46", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "23244:19:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "23240:23:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11552, + "initializationExpression": { + "assignments": [ + 11523 + ], + "declarations": [ + { + "constant": false, + "id": 11523, + "mutability": "mutable", + "name": "i", + "nameLocation": "23233:1:46", + "nodeType": "VariableDeclaration", + "scope": 11552, + "src": "23225:9:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11522, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "23225:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 11525, + "initialValue": { + "hexValue": "30", + "id": 11524, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23237:1:46", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "23225:13:46" + }, + "isSimpleCounterLoop": true, + "loopExpression": { + "expression": { + "id": 11531, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "23265:3:46", + "subExpression": { + "id": 11530, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11523, + "src": "23265:1:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11532, + "nodeType": "ExpressionStatement", + "src": "23265:3:46" + }, + "nodeType": "ForStatement", + "src": "23220:226:46" + } + ] + }, + "documentation": { + "id": 11513, + "nodeType": "StructuredDocumentation", + "src": "23008:104:46", + "text": " @notice Adds wanted services.\n @param serviceNames List of service names" + }, + "functionSelector": "1c5db99e", + "id": 11554, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 11519, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10612, + "src": "23190:18:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 11520, + "kind": "modifierInvocation", + "modifierName": { + "id": 11518, + "name": "onlyRole", + "nameLocations": [ + "23181:8:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "23181:8:46" + }, + "nodeType": "ModifierInvocation", + "src": "23181:28:46" + } + ], + "name": "addWantedServices", + "nameLocation": "23126:17:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11517, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11516, + "mutability": "mutable", + "name": "serviceNames", + "nameLocation": "23160:12:46", + "nodeType": "VariableDeclaration", + "scope": 11554, + "src": "23144:28:46", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 11514, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "23144:6:46", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 11515, + "nodeType": "ArrayTypeName", + "src": "23144:8:46", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + } + ], + "src": "23143:30:46" + }, + "returnParameters": { + "id": 11521, + "nodeType": "ParameterList", + "parameters": [], + "src": "23210:0:46" + }, + "scope": 11976, + "src": "23117:335:46", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 11595, + "nodeType": "Block", + "src": "23666:247:46", + "statements": [ + { + "body": { + "id": 11593, + "nodeType": "Block", + "src": "23726:181:46", + "statements": [ + { + "assignments": [ + 11576 + ], + "declarations": [ + { + "constant": false, + "id": 11576, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "23748:11:46", + "nodeType": "VariableDeclaration", + "scope": 11593, + "src": "23740:19:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 11575, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "23740:7:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 11582, + "initialValue": { + "arguments": [ + { + "baseExpression": { + "id": 11578, + "name": "serviceNames", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11558, + "src": "23777:12:46", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + "id": 11580, + "indexExpression": { + "id": 11579, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11565, + "src": "23790:1:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23777:15:46", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 11577, + "name": "getServiceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11380, + "src": "23762:14:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_string_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (string memory) view returns (bytes32)" + } + }, + "id": 11581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23762:31:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "23740:53:46" + }, + { + "expression": { + "arguments": [ + { + "id": 11584, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11576, + "src": "23828:11:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 11583, + "name": "_removeWantedService", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17553, + "src": "23807:20:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$", + "typeString": "function (bytes32)" + } + }, + "id": 11585, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23807:33:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11586, + "nodeType": "ExpressionStatement", + "src": "23807:33:46" + }, + { + "eventCall": { + "arguments": [ + { + "baseExpression": { + "id": 11588, + "name": "serviceNames", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11558, + "src": "23880:12:46", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + "id": 11590, + "indexExpression": { + "id": 11589, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11565, + "src": "23893:1:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "23880:15:46", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 11587, + "name": "WantedServiceRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10681, + "src": "23859:20:46", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory)" + } + }, + "id": 11591, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23859:37:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11592, + "nodeType": "EmitStatement", + "src": "23854:42:46" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11571, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11568, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11565, + "src": "23696:1:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 11569, + "name": "serviceNames", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11558, + "src": "23700:12:46", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + "id": 11570, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "23713:6:46", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "23700:19:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "23696:23:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11594, + "initializationExpression": { + "assignments": [ + 11565 + ], + "declarations": [ + { + "constant": false, + "id": 11565, + "mutability": "mutable", + "name": "i", + "nameLocation": "23689:1:46", + "nodeType": "VariableDeclaration", + "scope": 11594, + "src": "23681:9:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11564, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "23681:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 11567, + "initialValue": { + "hexValue": "30", + "id": 11566, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "23693:1:46", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "23681:13:46" + }, + "isSimpleCounterLoop": true, + "loopExpression": { + "expression": { + "id": 11573, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "23721:3:46", + "subExpression": { + "id": 11572, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11565, + "src": "23721:1:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11574, + "nodeType": "ExpressionStatement", + "src": "23721:3:46" + }, + "nodeType": "ForStatement", + "src": "23676:231:46" + } + ] + }, + "documentation": { + "id": 11555, + "nodeType": "StructuredDocumentation", + "src": "23458:107:46", + "text": " @notice Removes wanted services.\n @param serviceNames List of service names" + }, + "functionSelector": "39e4c705", + "id": 11596, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 11561, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10612, + "src": "23646:18:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 11562, + "kind": "modifierInvocation", + "modifierName": { + "id": 11560, + "name": "onlyRole", + "nameLocations": [ + "23637:8:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "23637:8:46" + }, + "nodeType": "ModifierInvocation", + "src": "23637:28:46" + } + ], + "name": "removeWantedServices", + "nameLocation": "23579:20:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11559, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11558, + "mutability": "mutable", + "name": "serviceNames", + "nameLocation": "23616:12:46", + "nodeType": "VariableDeclaration", + "scope": 11596, + "src": "23600:28:46", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 11556, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "23600:6:46", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 11557, + "nodeType": "ArrayTypeName", + "src": "23600:8:46", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + } + ], + "src": "23599:30:46" + }, + "returnParameters": { + "id": 11563, + "nodeType": "ParameterList", + "parameters": [], + "src": "23666:0:46" + }, + "scope": 11976, + "src": "23570:343:46", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 11652, + "nodeType": "Block", + "src": "24112:450:46", + "statements": [ + { + "assignments": [ + 11607 + ], + "declarations": [ + { + "constant": false, + "id": 11607, + "mutability": "mutable", + "name": "_wantedServiceHashes", + "nameLocation": "24139:20:46", + "nodeType": "VariableDeclaration", + "scope": 11652, + "src": "24122:37:46", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 11605, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "24122:7:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 11606, + "nodeType": "ArrayTypeName", + "src": "24122:9:46", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "id": 11610, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11608, + "name": "getWantedServiceHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17572, + "src": "24162:22:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$", + "typeString": "function () view returns (bytes32[] memory)" + } + }, + "id": 11609, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24162:24:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "24122:64:46" + }, + { + "assignments": [ + 11615 + ], + "declarations": [ + { + "constant": false, + "id": 11615, + "mutability": "mutable", + "name": "_wantedServiceNames", + "nameLocation": "24213:19:46", + "nodeType": "VariableDeclaration", + "scope": 11652, + "src": "24197:35:46", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 11613, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "24197:6:46", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 11614, + "nodeType": "ArrayTypeName", + "src": "24197:8:46", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + } + ], + "id": 11622, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 11619, + "name": "_wantedServiceHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11607, + "src": "24248:20:46", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 11620, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "24269:6:46", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "24248:27:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11618, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "24235:12:46", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (string memory[] memory)" + }, + "typeName": { + "baseType": { + "id": 11616, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "24239:6:46", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 11617, + "nodeType": "ArrayTypeName", + "src": "24239:8:46", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + } + }, + "id": 11621, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24235:41:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "24197:79:46" + }, + { + "body": { + "id": 11648, + "nodeType": "Block", + "src": "24345:174:46", + "statements": [ + { + "expression": { + "id": 11646, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 11634, + "name": "_wantedServiceNames", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11615, + "src": "24359:19:46", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + "id": 11636, + "indexExpression": { + "id": 11635, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11624, + "src": "24379:1:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "24359:22:46", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "baseExpression": { + "id": 11642, + "name": "_wantedServiceHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11607, + "src": "24471:20:46", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 11644, + "indexExpression": { + "id": 11643, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11624, + "src": "24492:1:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "24471:23:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11638, + "name": "getManagerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 10846 + ], + "referencedDeclaration": 10846, + "src": "24402:17:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 11639, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24402:19:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11637, + "name": "ICMAccountManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16920, + "src": "24384:17:46", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ICMAccountManager_$16920_$", + "typeString": "type(contract ICMAccountManager)" + } + }, + "id": 11640, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24384:38:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ICMAccountManager_$16920", + "typeString": "contract ICMAccountManager" + } + }, + "id": 11641, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "24423:30:46", + "memberName": "getRegisteredServiceNameByHash", + "nodeType": "MemberAccess", + "referencedDeclaration": 16919, + "src": "24384:69:46", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_string_memory_ptr_$", + "typeString": "function (bytes32) view external returns (string memory)" + } + }, + "id": 11645, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24384:124:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "24359:149:46", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "id": 11647, + "nodeType": "ExpressionStatement", + "src": "24359:149:46" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 11630, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 11627, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11624, + "src": "24307:1:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 11628, + "name": "_wantedServiceHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11607, + "src": "24311:20:46", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 11629, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "24332:6:46", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "24311:27:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "24307:31:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11649, + "initializationExpression": { + "assignments": [ + 11624 + ], + "declarations": [ + { + "constant": false, + "id": 11624, + "mutability": "mutable", + "name": "i", + "nameLocation": "24300:1:46", + "nodeType": "VariableDeclaration", + "scope": 11649, + "src": "24292:9:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11623, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "24292:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 11626, + "initialValue": { + "hexValue": "30", + "id": 11625, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "24304:1:46", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "24292:13:46" + }, + "isSimpleCounterLoop": true, + "loopExpression": { + "expression": { + "id": 11632, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "24340:3:46", + "subExpression": { + "id": 11631, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11624, + "src": "24340:1:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 11633, + "nodeType": "ExpressionStatement", + "src": "24340:3:46" + }, + "nodeType": "ForStatement", + "src": "24287:232:46" + }, + { + "expression": { + "id": 11650, + "name": "_wantedServiceNames", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11615, + "src": "24536:19:46", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + "functionReturnParameters": 11602, + "id": 11651, + "nodeType": "Return", + "src": "24529:26:46" + } + ] + }, + "documentation": { + "id": 11597, + "nodeType": "StructuredDocumentation", + "src": "23919:108:46", + "text": " @notice Get all wanted services.\n @return serviceNames List of service names" + }, + "functionSelector": "08564c19", + "id": 11653, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getWantedServices", + "nameLocation": "24041:17:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11598, + "nodeType": "ParameterList", + "parameters": [], + "src": "24058:2:46" + }, + "returnParameters": { + "id": 11602, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11601, + "mutability": "mutable", + "name": "serviceNames", + "nameLocation": "24098:12:46", + "nodeType": "VariableDeclaration", + "scope": 11653, + "src": "24082:28:46", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 11599, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "24082:6:46", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 11600, + "nodeType": "ArrayTypeName", + "src": "24082:8:46", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + } + ], + "src": "24081:30:46" + }, + "scope": 11976, + "src": "24032:530:46", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 11666, + "nodeType": "Block", + "src": "24977:59:46", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 11663, + "name": "_isSupported", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11656, + "src": "25016:12:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 11662, + "name": "_setOffChainPaymentSupported", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17685, + "src": "24987:28:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bool_$returns$__$", + "typeString": "function (bool)" + } + }, + "id": 11664, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24987:42:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11665, + "nodeType": "ExpressionStatement", + "src": "24987:42:46" + } + ] + }, + "documentation": { + "id": 11654, + "nodeType": "StructuredDocumentation", + "src": "24741:139:46", + "text": " @notice Sets if off-chain payment is supported.\n @param _isSupported true if off-chain payment is supported" + }, + "functionSelector": "a31aa039", + "id": 11667, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 11659, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10612, + "src": "24957:18:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 11660, + "kind": "modifierInvocation", + "modifierName": { + "id": 11658, + "name": "onlyRole", + "nameLocations": [ + "24948:8:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "24948:8:46" + }, + "nodeType": "ModifierInvocation", + "src": "24948:28:46" + } + ], + "name": "setOffChainPaymentSupported", + "nameLocation": "24894:27:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11657, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11656, + "mutability": "mutable", + "name": "_isSupported", + "nameLocation": "24927:12:46", + "nodeType": "VariableDeclaration", + "scope": 11667, + "src": "24922:17:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 11655, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "24922:4:46", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "24921:19:46" + }, + "returnParameters": { + "id": 11661, + "nodeType": "ParameterList", + "parameters": [], + "src": "24977:0:46" + }, + "scope": 11976, + "src": "24885:151:46", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 11680, + "nodeType": "Block", + "src": "25251:52:46", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 11677, + "name": "_supportedToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11670, + "src": "25280:15:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11676, + "name": "_addSupportedToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17606, + "src": "25261:18:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 11678, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25261:35:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11679, + "nodeType": "ExpressionStatement", + "src": "25261:35:46" + } + ] + }, + "documentation": { + "id": 11668, + "nodeType": "StructuredDocumentation", + "src": "25042:116:46", + "text": " @notice Adds a supported payment token.\n @param _supportedToken address of the token" + }, + "functionSelector": "6d69fcaf", + "id": 11681, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 11673, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10612, + "src": "25231:18:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 11674, + "kind": "modifierInvocation", + "modifierName": { + "id": 11672, + "name": "onlyRole", + "nameLocations": [ + "25222:8:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "25222:8:46" + }, + "nodeType": "ModifierInvocation", + "src": "25222:28:46" + } + ], + "name": "addSupportedToken", + "nameLocation": "25172:17:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11671, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11670, + "mutability": "mutable", + "name": "_supportedToken", + "nameLocation": "25198:15:46", + "nodeType": "VariableDeclaration", + "scope": 11681, + "src": "25190:23:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11669, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25190:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "25189:25:46" + }, + "returnParameters": { + "id": 11675, + "nodeType": "ParameterList", + "parameters": [], + "src": "25251:0:46" + }, + "scope": 11976, + "src": "25163:140:46", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 11694, + "nodeType": "Block", + "src": "25524:55:46", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 11691, + "name": "_supportedToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11684, + "src": "25556:15:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11690, + "name": "_removeSupportedToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17640, + "src": "25534:21:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 11692, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25534:38:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11693, + "nodeType": "ExpressionStatement", + "src": "25534:38:46" + } + ] + }, + "documentation": { + "id": 11682, + "nodeType": "StructuredDocumentation", + "src": "25309:119:46", + "text": " @notice Removes a supported payment token.\n @param _supportedToken address of the token" + }, + "functionSelector": "76319190", + "id": 11695, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 11687, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10612, + "src": "25504:18:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 11688, + "kind": "modifierInvocation", + "modifierName": { + "id": 11686, + "name": "onlyRole", + "nameLocations": [ + "25495:8:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "25495:8:46" + }, + "nodeType": "ModifierInvocation", + "src": "25495:28:46" + } + ], + "name": "removeSupportedToken", + "nameLocation": "25442:20:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11685, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11684, + "mutability": "mutable", + "name": "_supportedToken", + "nameLocation": "25471:15:46", + "nodeType": "VariableDeclaration", + "scope": 11695, + "src": "25463:23:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11683, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "25463:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "25462:25:46" + }, + "returnParameters": { + "id": 11689, + "nodeType": "ParameterList", + "parameters": [], + "src": "25524:0:46" + }, + "scope": 11976, + "src": "25433:146:46", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 11711, + "nodeType": "Block", + "src": "26124:51:46", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 11707, + "name": "pubKeyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11698, + "src": "26148:13:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11708, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11700, + "src": "26163:4:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 11706, + "name": "_addPublicKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17745, + "src": "26134:13:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,bytes memory)" + } + }, + "id": 11709, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26134:34:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11710, + "nodeType": "ExpressionStatement", + "src": "26134:34:46" + } + ] + }, + "documentation": { + "id": 11696, + "nodeType": "StructuredDocumentation", + "src": "25758:261:46", + "text": " @notice Add public key with address\n These public keys are intended to be used with for off-chain encryption of private booking data.\n @param pubKeyAddress address of the public key\n @param data public key data" + }, + "functionSelector": "ccde65dc", + "id": 11712, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 11703, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10612, + "src": "26104:18:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 11704, + "kind": "modifierInvocation", + "modifierName": { + "id": 11702, + "name": "onlyRole", + "nameLocations": [ + "26095:8:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "26095:8:46" + }, + "nodeType": "ModifierInvocation", + "src": "26095:28:46" + } + ], + "name": "addPublicKey", + "nameLocation": "26033:12:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11701, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11698, + "mutability": "mutable", + "name": "pubKeyAddress", + "nameLocation": "26054:13:46", + "nodeType": "VariableDeclaration", + "scope": 11712, + "src": "26046:21:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11697, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "26046:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11700, + "mutability": "mutable", + "name": "data", + "nameLocation": "26082:4:46", + "nodeType": "VariableDeclaration", + "scope": 11712, + "src": "26069:17:46", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 11699, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "26069:5:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "26045:42:46" + }, + "returnParameters": { + "id": 11705, + "nodeType": "ParameterList", + "parameters": [], + "src": "26124:0:46" + }, + "scope": 11976, + "src": "26024:151:46", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 11725, + "nodeType": "Block", + "src": "26325:48:46", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 11722, + "name": "pubKeyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11715, + "src": "26352:13:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11721, + "name": "_removePublicKey", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17784, + "src": "26335:16:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 11723, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26335:31:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11724, + "nodeType": "ExpressionStatement", + "src": "26335:31:46" + } + ] + }, + "documentation": { + "id": 11713, + "nodeType": "StructuredDocumentation", + "src": "26181:55:46", + "text": " @notice Remove public key by address" + }, + "functionSelector": "e7bfce9a", + "id": 11726, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 11718, + "name": "SERVICE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10612, + "src": "26305:18:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 11719, + "kind": "modifierInvocation", + "modifierName": { + "id": 11717, + "name": "onlyRole", + "nameLocations": [ + "26296:8:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "26296:8:46" + }, + "nodeType": "ModifierInvocation", + "src": "26296:28:46" + } + ], + "name": "removePublicKey", + "nameLocation": "26250:15:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11716, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11715, + "mutability": "mutable", + "name": "pubKeyAddress", + "nameLocation": "26274:13:46", + "nodeType": "VariableDeclaration", + "scope": 11726, + "src": "26266:21:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11714, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "26266:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "26265:23:46" + }, + "returnParameters": { + "id": 11720, + "nodeType": "ParameterList", + "parameters": [], + "src": "26325:0:46" + }, + "scope": 11976, + "src": "26241:132:46", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 11768, + "nodeType": "Block", + "src": "26714:398:46", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 11738, + "name": "gasMoney", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11731, + "src": "26811:8:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11737, + "name": "_checkPrefundSpent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10993, + "src": "26792:18:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$__$", + "typeString": "function (uint256) view" + } + }, + "id": 11739, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26792:28:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11740, + "nodeType": "ExpressionStatement", + "src": "26792:28:46" + }, + { + "expression": { + "arguments": [ + { + "id": 11742, + "name": "CHEQUE_OPERATOR_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10588, + "src": "26872:20:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 11743, + "name": "bot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11729, + "src": "26894:3:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11741, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 545 + ], + "referencedDeclaration": 545, + "src": "26861:10:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 11744, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26861:37:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11745, + "nodeType": "ExpressionStatement", + "src": "26861:37:46" + }, + { + "expression": { + "arguments": [ + { + "id": 11747, + "name": "BOOKING_OPERATOR_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10606, + "src": "26919:21:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 11748, + "name": "bot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11729, + "src": "26942:3:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11746, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 545 + ], + "referencedDeclaration": 545, + "src": "26908:10:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 11749, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26908:38:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11750, + "nodeType": "ExpressionStatement", + "src": "26908:38:46" + }, + { + "expression": { + "arguments": [ + { + "id": 11752, + "name": "GAS_WITHDRAWER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10594, + "src": "26967:19:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 11753, + "name": "bot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11729, + "src": "26988:3:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11751, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 545 + ], + "referencedDeclaration": 545, + "src": "26956:10:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 11754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26956:36:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11755, + "nodeType": "ExpressionStatement", + "src": "26956:36:46" + }, + { + "eventCall": { + "arguments": [ + { + "id": 11757, + "name": "bot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11729, + "src": "27026:3:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11756, + "name": "MessengerBotAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10660, + "src": "27008:17:46", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 11758, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27008:22:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11759, + "nodeType": "EmitStatement", + "src": "27003:27:46" + }, + { + "expression": { + "arguments": [ + { + "id": 11765, + "name": "gasMoney", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11731, + "src": "27096:8:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 11762, + "name": "bot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11729, + "src": "27081:3:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11761, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "27073:8:46", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_payable_$", + "typeString": "type(address payable)" + }, + "typeName": { + "id": 11760, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27073:8:46", + "stateMutability": "payable", + "typeDescriptions": {} + } + }, + "id": 11763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27073:12:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 11764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "27086:9:46", + "memberName": "sendValue", + "nodeType": "MemberAccess", + "referencedDeclaration": 5279, + "src": "27073:22:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$attached_to$_t_address_payable_$", + "typeString": "function (address payable,uint256)" + } + }, + "id": 11766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27073:32:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11767, + "nodeType": "ExpressionStatement", + "src": "27073:32:46" + } + ] + }, + "documentation": { + "id": 11727, + "nodeType": "StructuredDocumentation", + "src": "26552:69:46", + "text": " @notice Adds messenger bot with initial gas money." + }, + "functionSelector": "51889d6b", + "id": 11769, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 11734, + "name": "BOT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10582, + "src": "26698:14:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 11735, + "kind": "modifierInvocation", + "modifierName": { + "id": 11733, + "name": "onlyRole", + "nameLocations": [ + "26689:8:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "26689:8:46" + }, + "nodeType": "ModifierInvocation", + "src": "26689:24:46" + } + ], + "name": "addMessengerBot", + "nameLocation": "26635:15:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11732, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11729, + "mutability": "mutable", + "name": "bot", + "nameLocation": "26659:3:46", + "nodeType": "VariableDeclaration", + "scope": 11769, + "src": "26651:11:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11728, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "26651:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11731, + "mutability": "mutable", + "name": "gasMoney", + "nameLocation": "26672:8:46", + "nodeType": "VariableDeclaration", + "scope": 11769, + "src": "26664:16:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11730, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26664:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "26650:31:46" + }, + "returnParameters": { + "id": 11736, + "nodeType": "ParameterList", + "parameters": [], + "src": "26714:0:46" + }, + "scope": 11976, + "src": "26626:486:46", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 11797, + "nodeType": "Block", + "src": "27267:191:46", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 11779, + "name": "CHEQUE_OPERATOR_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10588, + "src": "27289:20:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 11780, + "name": "bot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11772, + "src": "27311:3:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11778, + "name": "_revokeRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 585 + ], + "referencedDeclaration": 585, + "src": "27277:11:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 11781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27277:38:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11782, + "nodeType": "ExpressionStatement", + "src": "27277:38:46" + }, + { + "expression": { + "arguments": [ + { + "id": 11784, + "name": "BOOKING_OPERATOR_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10606, + "src": "27337:21:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 11785, + "name": "bot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11772, + "src": "27360:3:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11783, + "name": "_revokeRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 585 + ], + "referencedDeclaration": 585, + "src": "27325:11:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 11786, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27325:39:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11787, + "nodeType": "ExpressionStatement", + "src": "27325:39:46" + }, + { + "expression": { + "arguments": [ + { + "id": 11789, + "name": "GAS_WITHDRAWER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10594, + "src": "27386:19:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 11790, + "name": "bot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11772, + "src": "27407:3:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11788, + "name": "_revokeRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 585 + ], + "referencedDeclaration": 585, + "src": "27374:11:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 11791, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27374:37:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 11792, + "nodeType": "ExpressionStatement", + "src": "27374:37:46" + }, + { + "eventCall": { + "arguments": [ + { + "id": 11794, + "name": "bot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11772, + "src": "27447:3:46", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 11793, + "name": "MessengerBotRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10665, + "src": "27427:19:46", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 11795, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27427:24:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11796, + "nodeType": "EmitStatement", + "src": "27422:29:46" + } + ] + }, + "documentation": { + "id": 11770, + "nodeType": "StructuredDocumentation", + "src": "27118:71:46", + "text": " @notice Removes messenger bot by revoking the roles." + }, + "functionSelector": "c6640e68", + "id": 11798, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 11775, + "name": "BOT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10582, + "src": "27251:14:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 11776, + "kind": "modifierInvocation", + "modifierName": { + "id": 11774, + "name": "onlyRole", + "nameLocations": [ + "27242:8:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "27242:8:46" + }, + "nodeType": "ModifierInvocation", + "src": "27242:24:46" + } + ], + "name": "removeMessengerBot", + "nameLocation": "27203:18:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11773, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11772, + "mutability": "mutable", + "name": "bot", + "nameLocation": "27230:3:46", + "nodeType": "VariableDeclaration", + "scope": 11798, + "src": "27222:11:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11771, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27222:7:46", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "27221:13:46" + }, + "returnParameters": { + "id": 11777, + "nodeType": "ParameterList", + "parameters": [], + "src": "27267:0:46" + }, + "scope": 11976, + "src": "27194:264:46", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 11817, + "nodeType": "Block", + "src": "27881:78:46", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 11810, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11801, + "src": "27910:6:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11809, + "name": "_checkPrefundSpent", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10993, + "src": "27891:18:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$__$", + "typeString": "function (uint256) view" + } + }, + "id": 11811, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27891:26:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11812, + "nodeType": "ExpressionStatement", + "src": "27891:26:46" + }, + { + "expression": { + "arguments": [ + { + "id": 11814, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11801, + "src": "27945:6:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11813, + "name": "_withdrawGasMoney", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12835, + "src": "27927:17:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 11815, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27927:25:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11816, + "nodeType": "ExpressionStatement", + "src": "27927:25:46" + } + ] + }, + "documentation": { + "id": 11799, + "nodeType": "StructuredDocumentation", + "src": "27637:147:46", + "text": " @notice Withdraw gas money. Requires the `GAS_WITHDRAWER_ROLE`.\n @param amount The amount to withdraw in aCAM (wei)" + }, + "functionSelector": "5c988994", + "id": 11818, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 11804, + "kind": "modifierInvocation", + "modifierName": { + "id": 11803, + "name": "nonReentrant", + "nameLocations": [ + "27838:12:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3047, + "src": "27838:12:46" + }, + "nodeType": "ModifierInvocation", + "src": "27838:12:46" + }, + { + "arguments": [ + { + "id": 11806, + "name": "GAS_WITHDRAWER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10594, + "src": "27860:19:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 11807, + "kind": "modifierInvocation", + "modifierName": { + "id": 11805, + "name": "onlyRole", + "nameLocations": [ + "27851:8:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "27851:8:46" + }, + "nodeType": "ModifierInvocation", + "src": "27851:29:46" + } + ], + "name": "withdrawGasMoney", + "nameLocation": "27798:16:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11802, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11801, + "mutability": "mutable", + "name": "amount", + "nameLocation": "27823:6:46", + "nodeType": "VariableDeclaration", + "scope": 11818, + "src": "27815:14:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11800, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27815:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "27814:16:46" + }, + "returnParameters": { + "id": 11808, + "nodeType": "ParameterList", + "parameters": [], + "src": "27881:0:46" + }, + "scope": 11976, + "src": "27789:170:46", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 11834, + "nodeType": "Block", + "src": "28301:54:46", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 11830, + "name": "limit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11821, + "src": "28334:5:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 11831, + "name": "period", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11823, + "src": "28341:6:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 11829, + "name": "_setGasMoneyWithdrawal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12867, + "src": "28311:22:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256)" + } + }, + "id": 11832, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28311:37:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11833, + "nodeType": "ExpressionStatement", + "src": "28311:37:46" + } + ] + }, + "documentation": { + "id": 11819, + "nodeType": "StructuredDocumentation", + "src": "27965:237:46", + "text": " @notice Set gas money withdrawal parameters. Requires the `BOT_ADMIN_ROLE`.\n @param limit Amount of gas money to withdraw in wei per period\n @param period Duration of the withdrawal period in seconds" + }, + "functionSelector": "6fc22cd1", + "id": 11835, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 11826, + "name": "BOT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10582, + "src": "28285:14:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 11827, + "kind": "modifierInvocation", + "modifierName": { + "id": 11825, + "name": "onlyRole", + "nameLocations": [ + "28276:8:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "28276:8:46" + }, + "nodeType": "ModifierInvocation", + "src": "28276:24:46" + } + ], + "name": "setGasMoneyWithdrawal", + "nameLocation": "28216:21:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11824, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11821, + "mutability": "mutable", + "name": "limit", + "nameLocation": "28246:5:46", + "nodeType": "VariableDeclaration", + "scope": 11835, + "src": "28238:13:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11820, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28238:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11823, + "mutability": "mutable", + "name": "period", + "nameLocation": "28261:6:46", + "nodeType": "VariableDeclaration", + "scope": 11835, + "src": "28253:14:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11822, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28253:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "28237:31:46" + }, + "returnParameters": { + "id": 11828, + "nodeType": "ParameterList", + "parameters": [], + "src": "28301:0:46" + }, + "scope": 11976, + "src": "28207:148:46", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 11860, + "nodeType": "Block", + "src": "28743:224:46", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11852, + "name": "getBookingTokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10862, + "src": "28808:22:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 11853, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28808:24:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11854, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11837, + "src": "28846:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 11855, + "name": "refundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11839, + "src": "28867:12:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 11856, + "name": "cancellationReason", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11841, + "src": "28893:18:46", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "id": 11857, + "name": "cancellationReasonVersion", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11843, + "src": "28925:25:46", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "expression": { + "id": 11849, + "name": "BookingTokenOperator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15915, + "src": "28753:20:46", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BookingTokenOperator_$15915_$", + "typeString": "type(library BookingTokenOperator)" + } + }, + "id": 11851, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "28774:20:46", + "memberName": "initiateCancellation", + "nodeType": "MemberAccess", + "referencedDeclaration": 15755, + "src": "28753:41:46", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint16_$_t_uint16_$returns$__$", + "typeString": "function (address,uint256,uint256,uint16,uint16)" + } + }, + "id": 11858, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28753:207:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11859, + "nodeType": "ExpressionStatement", + "src": "28753:207:46" + } + ] + }, + "functionSelector": "f7e45f09", + "id": 11861, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 11846, + "name": "BOOKING_OPERATOR_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10606, + "src": "28720:21:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 11847, + "kind": "modifierInvocation", + "modifierName": { + "id": 11845, + "name": "onlyRole", + "nameLocations": [ + "28711:8:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "28711:8:46" + }, + "nodeType": "ModifierInvocation", + "src": "28711:31:46" + } + ], + "name": "initiateCancellation", + "nameLocation": "28543:20:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11844, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11837, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "28581:7:46", + "nodeType": "VariableDeclaration", + "scope": 11861, + "src": "28573:15:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11836, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28573:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11839, + "mutability": "mutable", + "name": "refundAmount", + "nameLocation": "28606:12:46", + "nodeType": "VariableDeclaration", + "scope": 11861, + "src": "28598:20:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11838, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28598:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11841, + "mutability": "mutable", + "name": "cancellationReason", + "nameLocation": "28635:18:46", + "nodeType": "VariableDeclaration", + "scope": 11861, + "src": "28628:25:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 11840, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "28628:6:46", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11843, + "mutability": "mutable", + "name": "cancellationReasonVersion", + "nameLocation": "28670:25:46", + "nodeType": "VariableDeclaration", + "scope": 11861, + "src": "28663:32:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 11842, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "28663:6:46", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "28563:138:46" + }, + "returnParameters": { + "id": 11848, + "nodeType": "ParameterList", + "parameters": [], + "src": "28743:0:46" + }, + "scope": 11976, + "src": "28534:433:46", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 11880, + "nodeType": "Block", + "src": "29081:105:46", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11874, + "name": "getBookingTokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10862, + "src": "29131:22:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 11875, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29131:24:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11876, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11863, + "src": "29157:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 11877, + "name": "refundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11865, + "src": "29166:12:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 11871, + "name": "BookingTokenOperator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15915, + "src": "29091:20:46", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BookingTokenOperator_$15915_$", + "typeString": "type(library BookingTokenOperator)" + } + }, + "id": 11873, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "29112:18:46", + "memberName": "acceptCancellation", + "nodeType": "MemberAccess", + "referencedDeclaration": 15774, + "src": "29091:39:46", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256)" + } + }, + "id": 11878, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29091:88:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11879, + "nodeType": "ExpressionStatement", + "src": "29091:88:46" + } + ] + }, + "functionSelector": "be667188", + "id": 11881, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 11868, + "name": "BOOKING_OPERATOR_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10606, + "src": "29058:21:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 11869, + "kind": "modifierInvocation", + "modifierName": { + "id": 11867, + "name": "onlyRole", + "nameLocations": [ + "29049:8:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "29049:8:46" + }, + "nodeType": "ModifierInvocation", + "src": "29049:31:46" + } + ], + "name": "acceptCancellation", + "nameLocation": "28982:18:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11866, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11863, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "29009:7:46", + "nodeType": "VariableDeclaration", + "scope": 11881, + "src": "29001:15:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11862, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "29001:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11865, + "mutability": "mutable", + "name": "refundAmount", + "nameLocation": "29026:12:46", + "nodeType": "VariableDeclaration", + "scope": 11881, + "src": "29018:20:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11864, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "29018:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "29000:39:46" + }, + "returnParameters": { + "id": 11870, + "nodeType": "ParameterList", + "parameters": [], + "src": "29081:0:46" + }, + "scope": 11976, + "src": "28973:213:46", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 11903, + "nodeType": "Block", + "src": "29363:190:46", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11896, + "name": "getBookingTokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10862, + "src": "29426:22:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 11897, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29426:24:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11898, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11883, + "src": "29464:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 11899, + "name": "rejectionReason", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11885, + "src": "29485:15:46", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "id": 11900, + "name": "rejectionReasonVersion", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11887, + "src": "29514:22:46", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "expression": { + "id": 11893, + "name": "BookingTokenOperator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15915, + "src": "29373:20:46", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BookingTokenOperator_$15915_$", + "typeString": "type(library BookingTokenOperator)" + } + }, + "id": 11895, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "29394:18:46", + "memberName": "rejectCancellation", + "nodeType": "MemberAccess", + "referencedDeclaration": 15843, + "src": "29373:39:46", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_nonpayable$_t_address_$_t_uint256_$_t_uint16_$_t_uint16_$returns$__$", + "typeString": "function (address,uint256,uint16,uint16)" + } + }, + "id": 11901, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29373:173:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11902, + "nodeType": "ExpressionStatement", + "src": "29373:173:46" + } + ] + }, + "functionSelector": "74fe60e9", + "id": 11904, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 11890, + "name": "BOOKING_OPERATOR_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10606, + "src": "29340:21:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 11891, + "kind": "modifierInvocation", + "modifierName": { + "id": 11889, + "name": "onlyRole", + "nameLocations": [ + "29331:8:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "29331:8:46" + }, + "nodeType": "ModifierInvocation", + "src": "29331:31:46" + } + ], + "name": "rejectCancellation", + "nameLocation": "29201:18:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11888, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11883, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "29237:7:46", + "nodeType": "VariableDeclaration", + "scope": 11904, + "src": "29229:15:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11882, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "29229:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11885, + "mutability": "mutable", + "name": "rejectionReason", + "nameLocation": "29261:15:46", + "nodeType": "VariableDeclaration", + "scope": 11904, + "src": "29254:22:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 11884, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "29254:6:46", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11887, + "mutability": "mutable", + "name": "rejectionReasonVersion", + "nameLocation": "29293:22:46", + "nodeType": "VariableDeclaration", + "scope": 11904, + "src": "29286:29:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 11886, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "29286:6:46", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "29219:102:46" + }, + "returnParameters": { + "id": 11892, + "nodeType": "ParameterList", + "parameters": [], + "src": "29363:0:46" + }, + "scope": 11976, + "src": "29192:361:46", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 11929, + "nodeType": "Block", + "src": "29757:213:46", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11921, + "name": "getBookingTokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10862, + "src": "29821:22:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 11922, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29821:24:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11923, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11906, + "src": "29859:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 11924, + "name": "refundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11908, + "src": "29880:12:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 11925, + "name": "counterReason", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11910, + "src": "29906:13:46", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "id": 11926, + "name": "counterReasonVersion", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11912, + "src": "29933:20:46", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "expression": { + "id": 11918, + "name": "BookingTokenOperator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15915, + "src": "29767:20:46", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BookingTokenOperator_$15915_$", + "typeString": "type(library BookingTokenOperator)" + } + }, + "id": 11920, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "29788:19:46", + "memberName": "counterCancellation", + "nodeType": "MemberAccess", + "referencedDeclaration": 15799, + "src": "29767:40:46", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint16_$_t_uint16_$returns$__$", + "typeString": "function (address,uint256,uint256,uint16,uint16)" + } + }, + "id": 11927, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29767:196:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11928, + "nodeType": "ExpressionStatement", + "src": "29767:196:46" + } + ] + }, + "functionSelector": "74aa2048", + "id": 11930, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 11915, + "name": "BOOKING_OPERATOR_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10606, + "src": "29734:21:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 11916, + "kind": "modifierInvocation", + "modifierName": { + "id": 11914, + "name": "onlyRole", + "nameLocations": [ + "29725:8:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "29725:8:46" + }, + "nodeType": "ModifierInvocation", + "src": "29725:31:46" + } + ], + "name": "counterCancellation", + "nameLocation": "29568:19:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11913, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11906, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "29605:7:46", + "nodeType": "VariableDeclaration", + "scope": 11930, + "src": "29597:15:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11905, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "29597:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11908, + "mutability": "mutable", + "name": "refundAmount", + "nameLocation": "29630:12:46", + "nodeType": "VariableDeclaration", + "scope": 11930, + "src": "29622:20:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11907, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "29622:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11910, + "mutability": "mutable", + "name": "counterReason", + "nameLocation": "29659:13:46", + "nodeType": "VariableDeclaration", + "scope": 11930, + "src": "29652:20:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 11909, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "29652:6:46", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11912, + "mutability": "mutable", + "name": "counterReasonVersion", + "nameLocation": "29689:20:46", + "nodeType": "VariableDeclaration", + "scope": 11930, + "src": "29682:27:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 11911, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "29682:6:46", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "29587:128:46" + }, + "returnParameters": { + "id": 11917, + "nodeType": "ParameterList", + "parameters": [], + "src": "29757:0:46" + }, + "scope": 11976, + "src": "29559:411:46", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 11953, + "nodeType": "Block", + "src": "30454:116:46", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11946, + "name": "getBookingTokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10862, + "src": "30506:22:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 11947, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "30506:24:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11948, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11933, + "src": "30532:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 11949, + "name": "reason", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11935, + "src": "30541:6:46", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "id": 11950, + "name": "reasonVersion", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11937, + "src": "30549:13:46", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "expression": { + "id": 11943, + "name": "BookingTokenOperator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15915, + "src": "30464:20:46", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BookingTokenOperator_$15915_$", + "typeString": "type(library BookingTokenOperator)" + } + }, + "id": 11945, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "30485:20:46", + "memberName": "withdrawCancellation", + "nodeType": "MemberAccess", + "referencedDeclaration": 15821, + "src": "30464:41:46", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_nonpayable$_t_address_$_t_uint256_$_t_uint16_$_t_uint16_$returns$__$", + "typeString": "function (address,uint256,uint16,uint16)" + } + }, + "id": 11951, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "30464:99:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11952, + "nodeType": "ExpressionStatement", + "src": "30464:99:46" + } + ] + }, + "documentation": { + "id": 11931, + "nodeType": "StructuredDocumentation", + "src": "29976:318:46", + "text": " @notice Withdraws an active cancellation proposal. Only the initiator can withdraw.\n @param tokenId The token id for which to withdraw the proposal\n @param reason The reason for withdrawing the proposal\n @param reasonVersion The version of the withdrawal reason from the CMP" + }, + "functionSelector": "2a119380", + "id": 11954, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 11940, + "name": "BOOKING_OPERATOR_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10606, + "src": "30431:21:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 11941, + "kind": "modifierInvocation", + "modifierName": { + "id": 11939, + "name": "onlyRole", + "nameLocations": [ + "30422:8:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "30422:8:46" + }, + "nodeType": "ModifierInvocation", + "src": "30422:31:46" + } + ], + "name": "withdrawCancellation", + "nameLocation": "30308:20:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11938, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11933, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "30346:7:46", + "nodeType": "VariableDeclaration", + "scope": 11954, + "src": "30338:15:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11932, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "30338:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11935, + "mutability": "mutable", + "name": "reason", + "nameLocation": "30370:6:46", + "nodeType": "VariableDeclaration", + "scope": 11954, + "src": "30363:13:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 11934, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "30363:6:46", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11937, + "mutability": "mutable", + "name": "reasonVersion", + "nameLocation": "30393:13:46", + "nodeType": "VariableDeclaration", + "scope": 11954, + "src": "30386:20:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 11936, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "30386:6:46", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "30328:84:46" + }, + "returnParameters": { + "id": 11942, + "nodeType": "ParameterList", + "parameters": [], + "src": "30454:0:46" + }, + "scope": 11976, + "src": "30299:271:46", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 11974, + "nodeType": "Block", + "src": "30970:107:46", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 11968, + "name": "getBookingTokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10862, + "src": "31022:22:46", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 11969, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31022:24:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 11970, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11957, + "src": "31048:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 11971, + "name": "refundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11959, + "src": "31057:12:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 11965, + "name": "BookingTokenOperator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15915, + "src": "30980:20:46", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_BookingTokenOperator_$15915_$", + "typeString": "type(library BookingTokenOperator)" + } + }, + "id": 11967, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "31001:20:46", + "memberName": "finalizeCancellation", + "nodeType": "MemberAccess", + "referencedDeclaration": 15914, + "src": "30980:41:46", + "typeDescriptions": { + "typeIdentifier": "t_function_delegatecall_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256)" + } + }, + "id": 11972, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "30980:90:46", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 11973, + "nodeType": "ExpressionStatement", + "src": "30980:90:46" + } + ] + }, + "documentation": { + "id": 11955, + "nodeType": "StructuredDocumentation", + "src": "30576:279:46", + "text": " @notice Finalizes a cancellation proposal. Only the supplier of the token can finalize.\n @param tokenId The token id for which to finalize the proposal\n @param refundAmount The refund amount to check, this is to prevent front-running attacks" + }, + "functionSelector": "1c54f0f7", + "id": 11975, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 11962, + "name": "BOOKING_OPERATOR_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10606, + "src": "30947:21:46", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 11963, + "kind": "modifierInvocation", + "modifierName": { + "id": 11961, + "name": "onlyRole", + "nameLocations": [ + "30938:8:46" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "30938:8:46" + }, + "nodeType": "ModifierInvocation", + "src": "30938:31:46" + } + ], + "name": "finalizeCancellation", + "nameLocation": "30869:20:46", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 11960, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11957, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "30898:7:46", + "nodeType": "VariableDeclaration", + "scope": 11975, + "src": "30890:15:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11956, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "30890:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 11959, + "mutability": "mutable", + "name": "refundAmount", + "nameLocation": "30915:12:46", + "nodeType": "VariableDeclaration", + "scope": 11975, + "src": "30907:20:46", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11958, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "30907:7:46", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "30889:39:46" + }, + "returnParameters": { + "id": 11964, + "nodeType": "ParameterList", + "parameters": [], + "src": "30970:0:46" + }, + "scope": 11976, + "src": "30860:217:46", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 11977, + "src": "2612:28467:46", + "usedErrors": [ + 603, + 606, + 867, + 872, + 3009, + 3157, + 3160, + 3600, + 3613, + 4553, + 5232, + 5521, + 5524, + 6040, + 6045, + 6050, + 10716, + 10723, + 10732, + 10735, + 12084, + 12089, + 12094, + 12101, + 12108, + 12113, + 12699, + 12705, + 17006, + 17010, + 17014, + 17018, + 17022, + 17026, + 17030, + 17034, + 17038 + ], + "usedEvents": [ + 611, + 3169, + 3178, + 3187, + 3350, + 10641, + 10648, + 10655, + 10660, + 10665, + 10669, + 10673, + 10677, + 10681, + 10687, + 10693, + 10697, + 10703, + 10709, + 12079, + 12686, + 12693, + 17042, + 17046, + 17050, + 17054, + 17058 + ] + } + ], + "src": "86:30994:46" + }, + "id": 46 + }, + "contracts/account/ChequeManager.sol": { + "ast": { + "absolutePath": "contracts/account/ChequeManager.sol", + "exportedSymbols": { + "Address": [ + 5481 + ], + "ChequeManager": [ + 12642 + ], + "ECDSA": [ + 6377 + ], + "ICMAccountManager": [ + 16920 + ], + "Initializable": [ + 840 + ], + "ReentrancyGuardUpgradeable": [ + 3107 + ] + }, + "id": 12643, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 11978, + "literals": [ + "solidity", + "0.8", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "78:23:47" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "id": 11980, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 12643, + "sourceUnit": 841, + "src": "103:98:47", + "symbolAliases": [ + { + "foreign": { + "id": 11979, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 840, + "src": "112:13:47", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol", + "file": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol", + "id": 11982, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 12643, + "sourceUnit": 6378, + "src": "202:77:47", + "symbolAliases": [ + { + "foreign": { + "id": 11981, + "name": "ECDSA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6377, + "src": "211:5:47", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/Address.sol", + "file": "@openzeppelin/contracts/utils/Address.sol", + "id": 11984, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 12643, + "sourceUnit": 5482, + "src": "280:68:47", + "symbolAliases": [ + { + "foreign": { + "id": 11983, + "name": "Address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5481, + "src": "289:7:47", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol", + "file": "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol", + "id": 11986, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 12643, + "sourceUnit": 3108, + "src": "349:118:47", + "symbolAliases": [ + { + "foreign": { + "id": 11985, + "name": "ReentrancyGuardUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3107, + "src": "358:26:47", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/manager/ICMAccountManager.sol", + "file": "../manager/ICMAccountManager.sol", + "id": 11988, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 12643, + "sourceUnit": 16921, + "src": "490:69:47", + "symbolAliases": [ + { + "foreign": { + "id": 11987, + "name": "ICMAccountManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16920, + "src": "499:17:47", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 11990, + "name": "Initializable", + "nameLocations": [ + "783:13:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 840, + "src": "783:13:47" + }, + "id": 11991, + "nodeType": "InheritanceSpecifier", + "src": "783:13:47" + }, + { + "baseName": { + "id": 11992, + "name": "ReentrancyGuardUpgradeable", + "nameLocations": [ + "798:26:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3107, + "src": "798:26:47" + }, + "id": 11993, + "nodeType": "InheritanceSpecifier", + "src": "798:26:47" + } + ], + "canonicalName": "ChequeManager", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 11989, + "nodeType": "StructuredDocumentation", + "src": "561:186:47", + "text": " @notice ChequeManager manages, verifies, and cashes in the messenger cheques.\n EIP712 Domain name & version:\n DOMAIN_NAME = \"CaminoMessenger\"\n DOMAIN_VERSION= \"1\"" + }, + "fullyImplemented": false, + "id": 12642, + "linearizedBaseContracts": [ + 12642, + 3107, + 840 + ], + "name": "ChequeManager", + "nameLocation": "766:13:47", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 11996, + "libraryName": { + "id": 11994, + "name": "ECDSA", + "nameLocations": [ + "837:5:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 6377, + "src": "837:5:47" + }, + "nodeType": "UsingForDirective", + "src": "831:24:47", + "typeName": { + "id": 11995, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "847:7:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + }, + { + "global": false, + "id": 11999, + "libraryName": { + "id": 11997, + "name": "Address", + "nameLocations": [ + "866:7:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5481, + "src": "866:7:47" + }, + "nodeType": "UsingForDirective", + "src": "860:34:47", + "typeName": { + "id": 11998, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "878:15:47", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + }, + { + "constant": true, + "documentation": { + "id": 12000, + "nodeType": "StructuredDocumentation", + "src": "1073:282:47", + "text": " @notice Pre-computed hash of the MessengerCheque type\n ```\n keccak256(\n \"MessengerCheque(address fromCMAccount,address toCMAccount,address toBot,uint256 counter,uint256 amount,uint256 createdAt,uint256 expiresAt)\"\n );\n ```" + }, + "functionSelector": "0ede80d6", + "id": 12003, + "mutability": "constant", + "name": "MESSENGER_CHEQUE_TYPEHASH", + "nameLocation": "1384:25:47", + "nodeType": "VariableDeclaration", + "scope": 12642, + "src": "1360:126:47", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 12001, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1360:7:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307838376233386631333133333431363561633262333631663038393636633966636666336139353366613764396439633238363162376630623530343435626362", + "id": 12002, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1420:66:47", + "typeDescriptions": { + "typeIdentifier": "t_rational_61379487647325231975175870851730257698711870354100583579540121922932849269707_by_1", + "typeString": "int_const 6137...(69 digits omitted)...9707" + }, + "value": "0x87b38f131334165ac2b361f08966c9fcff3a953fa7d9d9c2861b7f0b50445bcb" + }, + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 12004, + "nodeType": "StructuredDocumentation", + "src": "1493:176:47", + "text": " @notice Pre-computed hash of the EIP712Domain type\n ```\n keccak256(\"EIP712Domain(string name,string version,uint256 chainId)\");\n ```" + }, + "functionSelector": "20606b70", + "id": 12007, + "mutability": "constant", + "name": "DOMAIN_TYPEHASH", + "nameLocation": "1698:15:47", + "nodeType": "VariableDeclaration", + "scope": 12642, + "src": "1674:108:47", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 12005, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1674:7:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307863326638373837313736623861633662663732313562346164636331653036396266346162383264396162316466303561353761393164343235393335623665", + "id": 12006, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1716:66:47", + "typeDescriptions": { + "typeIdentifier": "t_rational_88187701965757127611417972872261012484978315436463057238817294743962586930030_by_1", + "typeString": "int_const 8818...(69 digits omitted)...0030" + }, + "value": "0xc2f8787176b8ac6bf7215b4adcc1e069bf4ab82d9ab1df05a57a91d425935b6e" + }, + "visibility": "public" + }, + { + "canonicalName": "ChequeManager.MessengerCheque", + "documentation": { + "id": 12008, + "nodeType": "StructuredDocumentation", + "src": "1962:66:47", + "text": " @notice Struct representing a Messenger Cheque." + }, + "id": 12023, + "members": [ + { + "constant": false, + "id": 12010, + "mutability": "mutable", + "name": "fromCMAccount", + "nameLocation": "2074:13:47", + "nodeType": "VariableDeclaration", + "scope": 12023, + "src": "2066:21:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12009, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2066:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12012, + "mutability": "mutable", + "name": "toCMAccount", + "nameLocation": "2144:11:47", + "nodeType": "VariableDeclaration", + "scope": 12023, + "src": "2136:19:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12011, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2136:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12014, + "mutability": "mutable", + "name": "toBot", + "nameLocation": "2216:5:47", + "nodeType": "VariableDeclaration", + "scope": 12023, + "src": "2208:13:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12013, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2208:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12016, + "mutability": "mutable", + "name": "counter", + "nameLocation": "2290:7:47", + "nodeType": "VariableDeclaration", + "scope": 12023, + "src": "2282:15:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12015, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2282:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12018, + "mutability": "mutable", + "name": "amount", + "nameLocation": "2361:6:47", + "nodeType": "VariableDeclaration", + "scope": 12023, + "src": "2353:14:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12017, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2353:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12020, + "mutability": "mutable", + "name": "createdAt", + "nameLocation": "2417:9:47", + "nodeType": "VariableDeclaration", + "scope": 12023, + "src": "2409:17:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12019, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2409:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12022, + "mutability": "mutable", + "name": "expiresAt", + "nameLocation": "2480:9:47", + "nodeType": "VariableDeclaration", + "scope": 12023, + "src": "2472:17:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12021, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2472:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "MessengerCheque", + "nameLocation": "2040:15:47", + "nodeType": "StructDefinition", + "scope": 12642, + "src": "2033:501:47", + "visibility": "public" + }, + { + "canonicalName": "ChequeManager.LastCashIn", + "documentation": { + "id": 12024, + "nodeType": "StructuredDocumentation", + "src": "2540:125:47", + "text": " @notice Struct for tracking the counter, amount and timestamps used for the last\n cash-in operation." + }, + "id": 12033, + "members": [ + { + "constant": false, + "id": 12026, + "mutability": "mutable", + "name": "counter", + "nameLocation": "2706:7:47", + "nodeType": "VariableDeclaration", + "scope": 12033, + "src": "2698:15:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12025, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2698:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12028, + "mutability": "mutable", + "name": "amount", + "nameLocation": "2731:6:47", + "nodeType": "VariableDeclaration", + "scope": 12033, + "src": "2723:14:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12027, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2723:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12030, + "mutability": "mutable", + "name": "createdAt", + "nameLocation": "2755:9:47", + "nodeType": "VariableDeclaration", + "scope": 12033, + "src": "2747:17:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12029, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2747:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12032, + "mutability": "mutable", + "name": "expiresAt", + "nameLocation": "2782:9:47", + "nodeType": "VariableDeclaration", + "scope": 12033, + "src": "2774:17:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12031, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2774:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "LastCashIn", + "nameLocation": "2677:10:47", + "nodeType": "StructDefinition", + "scope": 12642, + "src": "2670:128:47", + "visibility": "public" + }, + { + "canonicalName": "ChequeManager.ChequeManagerStorage", + "documentation": { + "id": 12034, + "nodeType": "StructuredDocumentation", + "src": "2977:75:47", + "text": "@custom:storage-location erc7201:camino.messenger.storage.ChequeManager" + }, + "id": 12049, + "members": [ + { + "constant": false, + "id": 12042, + "mutability": "mutable", + "name": "_lastCashIns", + "nameLocation": "3286:12:47", + "nodeType": "VariableDeclaration", + "scope": 12049, + "src": "3221:77:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_LastCashIn_$12033_storage_$_$", + "typeString": "mapping(address => mapping(address => struct ChequeManager.LastCashIn))" + }, + "typeName": { + "id": 12041, + "keyName": "fromBot", + "keyNameLocation": "3237:7:47", + "keyType": { + "id": 12036, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3229:7:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "3221:64:47", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_LastCashIn_$12033_storage_$_$", + "typeString": "mapping(address => mapping(address => struct ChequeManager.LastCashIn))" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 12040, + "keyName": "toBot", + "keyNameLocation": "3264:5:47", + "keyType": { + "id": 12037, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3256:7:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "3248:36:47", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_LastCashIn_$12033_storage_$", + "typeString": "mapping(address => struct ChequeManager.LastCashIn)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 12039, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12038, + "name": "LastCashIn", + "nameLocations": [ + "3273:10:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 12033, + "src": "3273:10:47" + }, + "referencedDeclaration": 12033, + "src": "3273:10:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$12033_storage_ptr", + "typeString": "struct ChequeManager.LastCashIn" + } + } + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12045, + "mutability": "mutable", + "name": "_totalChequePayments", + "nameLocation": "3409:20:47", + "nodeType": "VariableDeclaration", + "scope": 12049, + "src": "3401:28:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12044, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3401:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12048, + "mutability": "mutable", + "name": "_domainSeparator", + "nameLocation": "3627:16:47", + "nodeType": "VariableDeclaration", + "scope": 12049, + "src": "3619:24:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 12047, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3619:7:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "name": "ChequeManagerStorage", + "nameLocation": "3064:20:47", + "nodeType": "StructDefinition", + "scope": 12642, + "src": "3057:593:47", + "visibility": "public" + }, + { + "constant": true, + "id": 12052, + "mutability": "constant", + "name": "ChequeManagerStorageLocation", + "nameLocation": "3803:28:47", + "nodeType": "VariableDeclaration", + "scope": 12642, + "src": "3778:130:47", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 12050, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3778:7:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307831373566376534303064343261663434643965626432346539656665653861326334656437386464663436613833653531613439336165333832633837363030", + "id": 12051, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3842:66:47", + "typeDescriptions": { + "typeIdentifier": "t_rational_10571917335441848015806150972609186766746024588459916864546385697503913211392_by_1", + "typeString": "int_const 1057...(69 digits omitted)...1392" + }, + "value": "0x175f7e400d42af44d9ebd24e9efee8a2c4ed78ddf46a83e51a493ae382c87600" + }, + "visibility": "private" + }, + { + "body": { + "id": 12059, + "nodeType": "Block", + "src": "4005:87:47", + "statements": [ + { + "AST": { + "nativeSrc": "4024:62:47", + "nodeType": "YulBlock", + "src": "4024:62:47", + "statements": [ + { + "nativeSrc": "4038:38:47", + "nodeType": "YulAssignment", + "src": "4038:38:47", + "value": { + "name": "ChequeManagerStorageLocation", + "nativeSrc": "4048:28:47", + "nodeType": "YulIdentifier", + "src": "4048:28:47" + }, + "variableNames": [ + { + "name": "$.slot", + "nativeSrc": "4038:6:47", + "nodeType": "YulIdentifier", + "src": "4038:6:47" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 12056, + "isOffset": false, + "isSlot": true, + "src": "4038:6:47", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 12052, + "isOffset": false, + "isSlot": false, + "src": "4048:28:47", + "valueSize": 1 + } + ], + "id": 12058, + "nodeType": "InlineAssembly", + "src": "4015:71:47" + } + ] + }, + "id": 12060, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getChequeManagerStorage", + "nameLocation": "3924:24:47", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12053, + "nodeType": "ParameterList", + "parameters": [], + "src": "3948:2:47" + }, + "returnParameters": { + "id": 12057, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12056, + "mutability": "mutable", + "name": "$", + "nameLocation": "4002:1:47", + "nodeType": "VariableDeclaration", + "scope": 12060, + "src": "3973:30:47", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$12049_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + }, + "typeName": { + "id": 12055, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12054, + "name": "ChequeManagerStorage", + "nameLocations": [ + "3973:20:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 12049, + "src": "3973:20:47" + }, + "referencedDeclaration": 12049, + "src": "3973:20:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$12049_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + } + }, + "visibility": "internal" + } + ], + "src": "3972:32:47" + }, + "scope": 12642, + "src": "3915:177:47", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": { + "id": 12061, + "nodeType": "StructuredDocumentation", + "src": "4271:77:47", + "text": " @notice Cash-in event. Emitted when a cheque is cashed in." + }, + "eventSelector": "4ebd6343a4ae90ea9a2add4327d0439de765f4b8bbb691caaf0875ef36c54e81", + "id": 12079, + "name": "ChequeCashedIn", + "nameLocation": "4359:14:47", + "nodeType": "EventDefinition", + "parameters": { + "id": 12078, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12063, + "indexed": true, + "mutability": "mutable", + "name": "fromCMAccount", + "nameLocation": "4399:13:47", + "nodeType": "VariableDeclaration", + "scope": 12079, + "src": "4383:29:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12062, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4383:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12065, + "indexed": true, + "mutability": "mutable", + "name": "toCMAccount", + "nameLocation": "4438:11:47", + "nodeType": "VariableDeclaration", + "scope": 12079, + "src": "4422:27:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12064, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4422:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12067, + "indexed": false, + "mutability": "mutable", + "name": "fromBot", + "nameLocation": "4467:7:47", + "nodeType": "VariableDeclaration", + "scope": 12079, + "src": "4459:15:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12066, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4459:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12069, + "indexed": false, + "mutability": "mutable", + "name": "toBot", + "nameLocation": "4492:5:47", + "nodeType": "VariableDeclaration", + "scope": 12079, + "src": "4484:13:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12068, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4484:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12071, + "indexed": false, + "mutability": "mutable", + "name": "counter", + "nameLocation": "4515:7:47", + "nodeType": "VariableDeclaration", + "scope": 12079, + "src": "4507:15:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12070, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4507:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12073, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nameLocation": "4540:6:47", + "nodeType": "VariableDeclaration", + "scope": 12079, + "src": "4532:14:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12072, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4532:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12075, + "indexed": false, + "mutability": "mutable", + "name": "paidChequeAmount", + "nameLocation": "4564:16:47", + "nodeType": "VariableDeclaration", + "scope": 12079, + "src": "4556:24:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12074, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4556:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12077, + "indexed": false, + "mutability": "mutable", + "name": "paidDeveloperFee", + "nameLocation": "4598:16:47", + "nodeType": "VariableDeclaration", + "scope": 12079, + "src": "4590:24:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12076, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4590:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4373:247:47" + }, + "src": "4353:268:47" + }, + { + "documentation": { + "id": 12080, + "nodeType": "StructuredDocumentation", + "src": "4800:102:47", + "text": " @notice Invalid CM Account. Cheque's `fromCMAccount` has to be for `address(this)`." + }, + "errorSelector": "7b7d696f", + "id": 12084, + "name": "InvalidFromCMAccount", + "nameLocation": "4913:20:47", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 12083, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12082, + "mutability": "mutable", + "name": "fromCMAccount", + "nameLocation": "4942:13:47", + "nodeType": "VariableDeclaration", + "scope": 12084, + "src": "4934:21:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12081, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4934:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4933:23:47" + }, + "src": "4907:50:47" + }, + { + "documentation": { + "id": 12085, + "nodeType": "StructuredDocumentation", + "src": "4963:94:47", + "text": " @notice `toCMAccount` address is not a registered CMAccount on the manager." + }, + "errorSelector": "3f2c64af", + "id": 12089, + "name": "InvalidToCMAccount", + "nameLocation": "5068:18:47", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 12088, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12087, + "mutability": "mutable", + "name": "toCMAccount", + "nameLocation": "5095:11:47", + "nodeType": "VariableDeclaration", + "scope": 12089, + "src": "5087:19:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12086, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5087:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5086:21:47" + }, + "src": "5062:46:47" + }, + { + "documentation": { + "id": 12090, + "nodeType": "StructuredDocumentation", + "src": "5114:68:47", + "text": " @notice The signer is not allowed to sign cheques" + }, + "errorSelector": "491a203a", + "id": 12094, + "name": "NotAllowedToSignCheques", + "nameLocation": "5193:23:47", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 12093, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12092, + "mutability": "mutable", + "name": "signer", + "nameLocation": "5225:6:47", + "nodeType": "VariableDeclaration", + "scope": 12094, + "src": "5217:14:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12091, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5217:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5216:16:47" + }, + "src": "5187:46:47" + }, + { + "documentation": { + "id": 12095, + "nodeType": "StructuredDocumentation", + "src": "5239:138:47", + "text": " @notice Invalid counter for the cheque. The counter on the cheque is not greater then the last\n recorded counter." + }, + "errorSelector": "44ac9202", + "id": 12101, + "name": "InvalidCounter", + "nameLocation": "5388:14:47", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 12100, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12097, + "mutability": "mutable", + "name": "chequeCounter", + "nameLocation": "5411:13:47", + "nodeType": "VariableDeclaration", + "scope": 12101, + "src": "5403:21:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12096, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5403:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12099, + "mutability": "mutable", + "name": "lastCounter", + "nameLocation": "5434:11:47", + "nodeType": "VariableDeclaration", + "scope": 12101, + "src": "5426:19:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12098, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5426:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5402:44:47" + }, + "src": "5382:65:47" + }, + { + "documentation": { + "id": 12102, + "nodeType": "StructuredDocumentation", + "src": "5453:82:47", + "text": " @notice Last recorded amount is lower than the cheque's amount." + }, + "errorSelector": "7c83fcf0", + "id": 12108, + "name": "InvalidAmount", + "nameLocation": "5546:13:47", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 12107, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12104, + "mutability": "mutable", + "name": "chequeAmount", + "nameLocation": "5568:12:47", + "nodeType": "VariableDeclaration", + "scope": 12108, + "src": "5560:20:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12103, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5560:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12106, + "mutability": "mutable", + "name": "lastAmount", + "nameLocation": "5590:10:47", + "nodeType": "VariableDeclaration", + "scope": 12108, + "src": "5582:18:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12105, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5582:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5559:42:47" + }, + "src": "5540:62:47" + }, + { + "documentation": { + "id": 12109, + "nodeType": "StructuredDocumentation", + "src": "5608:72:47", + "text": " @notice The cheque is expired at the given timestamp." + }, + "errorSelector": "6453b2e5", + "id": 12113, + "name": "ChequeExpired", + "nameLocation": "5691:13:47", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 12112, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12111, + "mutability": "mutable", + "name": "expiresAt", + "nameLocation": "5713:9:47", + "nodeType": "VariableDeclaration", + "scope": 12113, + "src": "5705:17:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12110, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5705:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5704:19:47" + }, + "src": "5685:39:47" + }, + { + "body": { + "id": 12144, + "nodeType": "Block", + "src": "6210:229:47", + "statements": [ + { + "assignments": [ + 12121 + ], + "declarations": [ + { + "constant": false, + "id": 12121, + "mutability": "mutable", + "name": "$", + "nameLocation": "6249:1:47", + "nodeType": "VariableDeclaration", + "scope": 12144, + "src": "6220:30:47", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$12049_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + }, + "typeName": { + "id": 12120, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12119, + "name": "ChequeManagerStorage", + "nameLocations": [ + "6220:20:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 12049, + "src": "6220:20:47" + }, + "referencedDeclaration": 12049, + "src": "6220:20:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$12049_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 12124, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12122, + "name": "_getChequeManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12060, + "src": "6253:24:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ChequeManagerStorage_$12049_storage_ptr_$", + "typeString": "function () pure returns (struct ChequeManager.ChequeManagerStorage storage pointer)" + } + }, + "id": 12123, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6253:26:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$12049_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6220:59:47" + }, + { + "expression": { + "id": 12142, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 12125, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12121, + "src": "6290:1:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$12049_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage storage pointer" + } + }, + "id": 12127, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "6292:16:47", + "memberName": "_domainSeparator", + "nodeType": "MemberAccess", + "referencedDeclaration": 12048, + "src": "6290:18:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "arguments": [ + { + "id": 12131, + "name": "DOMAIN_TYPEHASH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12007, + "src": "6345:15:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "hexValue": "43616d696e6f4d657373656e676572", + "id": 12133, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6372:17:47", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_964f47ba1d5dc0d1184a60039dba40abb2d0eee53398392e97308cb5f4a12f94", + "typeString": "literal_string \"CaminoMessenger\"" + }, + "value": "CaminoMessenger" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_964f47ba1d5dc0d1184a60039dba40abb2d0eee53398392e97308cb5f4a12f94", + "typeString": "literal_string \"CaminoMessenger\"" + } + ], + "id": 12132, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "6362:9:47", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 12134, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6362:28:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "hexValue": "31", + "id": 12136, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6402:3:47", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6", + "typeString": "literal_string \"1\"" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6", + "typeString": "literal_string \"1\"" + } + ], + "id": 12135, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "6392:9:47", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 12137, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6392:14:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "expression": { + "id": 12138, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "6408:5:47", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 12139, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6414:7:47", + "memberName": "chainid", + "nodeType": "MemberAccess", + "src": "6408:13:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 12129, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "6334:3:47", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 12130, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "6338:6:47", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "6334:10:47", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 12140, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6334:88:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 12128, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "6311:9:47", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 12141, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6311:121:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "6290:142:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 12143, + "nodeType": "ExpressionStatement", + "src": "6290:142:47" + } + ] + }, + "documentation": { + "id": 12114, + "nodeType": "StructuredDocumentation", + "src": "5903:244:47", + "text": " @notice Initializes the contract, setting the domain separator with EIP712 domain type hash and\n the domain.\n EIP712Domain {\n string name;\n string version;\n uint256 chainid;\n }" + }, + "id": 12145, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 12117, + "kind": "modifierInvocation", + "modifierName": { + "id": 12116, + "name": "onlyInitializing", + "nameLocations": [ + "6193:16:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 749, + "src": "6193:16:47" + }, + "nodeType": "ModifierInvocation", + "src": "6193:16:47" + } + ], + "name": "__ChequeManager_init", + "nameLocation": "6161:20:47", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12115, + "nodeType": "ParameterList", + "parameters": [], + "src": "6181:2:47" + }, + "returnParameters": { + "id": 12118, + "nodeType": "ParameterList", + "parameters": [], + "src": "6210:0:47" + }, + "scope": 12642, + "src": "6152:287:47", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 12160, + "nodeType": "Block", + "src": "6566:111:47", + "statements": [ + { + "assignments": [ + 12153 + ], + "declarations": [ + { + "constant": false, + "id": 12153, + "mutability": "mutable", + "name": "$", + "nameLocation": "6605:1:47", + "nodeType": "VariableDeclaration", + "scope": 12160, + "src": "6576:30:47", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$12049_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + }, + "typeName": { + "id": 12152, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12151, + "name": "ChequeManagerStorage", + "nameLocations": [ + "6576:20:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 12049, + "src": "6576:20:47" + }, + "referencedDeclaration": 12049, + "src": "6576:20:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$12049_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 12156, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12154, + "name": "_getChequeManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12060, + "src": "6609:24:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ChequeManagerStorage_$12049_storage_ptr_$", + "typeString": "function () pure returns (struct ChequeManager.ChequeManagerStorage storage pointer)" + } + }, + "id": 12155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6609:26:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$12049_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6576:59:47" + }, + { + "expression": { + "expression": { + "id": 12157, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12153, + "src": "6652:1:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$12049_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage storage pointer" + } + }, + "id": 12158, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6654:16:47", + "memberName": "_domainSeparator", + "nodeType": "MemberAccess", + "referencedDeclaration": 12048, + "src": "6652:18:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 12150, + "id": 12159, + "nodeType": "Return", + "src": "6645:25:47" + } + ] + }, + "documentation": { + "id": 12146, + "nodeType": "StructuredDocumentation", + "src": "6445:56:47", + "text": " @notice Returns the domain separator." + }, + "functionSelector": "ed24911d", + "id": 12161, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getDomainSeparator", + "nameLocation": "6515:18:47", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12147, + "nodeType": "ParameterList", + "parameters": [], + "src": "6533:2:47" + }, + "returnParameters": { + "id": 12150, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12149, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 12161, + "src": "6557:7:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 12148, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6557:7:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "6556:9:47" + }, + "scope": 12642, + "src": "6506:171:47", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 12195, + "nodeType": "Block", + "src": "7056:366:47", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 12184, + "name": "MESSENGER_CHEQUE_TYPEHASH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12003, + "src": "7144:25:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 12185, + "name": "fromCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12164, + "src": "7191:13:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 12186, + "name": "toCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12166, + "src": "7226:11:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 12187, + "name": "toBot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12168, + "src": "7259:5:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 12188, + "name": "counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12170, + "src": "7286:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12189, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12172, + "src": "7315:6:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12190, + "name": "createdAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12174, + "src": "7343:9:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12191, + "name": "expiresAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12176, + "src": "7374:9:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 12182, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "7112:3:47", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 12183, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "7116:6:47", + "memberName": "encode", + "nodeType": "MemberAccess", + "src": "7112:10:47", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 12192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7112:289:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 12181, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "7085:9:47", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 12193, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7085:330:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 12180, + "id": 12194, + "nodeType": "Return", + "src": "7066:349:47" + } + ] + }, + "documentation": { + "id": 12162, + "nodeType": "StructuredDocumentation", + "src": "6683:117:47", + "text": " @notice Returns the hash of the `MessengerCheque` encoded with\n `MESSENGER_CHEQUE_TYPEHASH`." + }, + "functionSelector": "4781ae53", + "id": 12196, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "hashMessengerCheque", + "nameLocation": "6814:19:47", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12177, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12164, + "mutability": "mutable", + "name": "fromCMAccount", + "nameLocation": "6851:13:47", + "nodeType": "VariableDeclaration", + "scope": 12196, + "src": "6843:21:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12163, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6843:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12166, + "mutability": "mutable", + "name": "toCMAccount", + "nameLocation": "6882:11:47", + "nodeType": "VariableDeclaration", + "scope": 12196, + "src": "6874:19:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12165, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6874:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12168, + "mutability": "mutable", + "name": "toBot", + "nameLocation": "6911:5:47", + "nodeType": "VariableDeclaration", + "scope": 12196, + "src": "6903:13:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12167, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6903:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12170, + "mutability": "mutable", + "name": "counter", + "nameLocation": "6934:7:47", + "nodeType": "VariableDeclaration", + "scope": 12196, + "src": "6926:15:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12169, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6926:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12172, + "mutability": "mutable", + "name": "amount", + "nameLocation": "6959:6:47", + "nodeType": "VariableDeclaration", + "scope": 12196, + "src": "6951:14:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12171, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6951:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12174, + "mutability": "mutable", + "name": "createdAt", + "nameLocation": "6983:9:47", + "nodeType": "VariableDeclaration", + "scope": 12196, + "src": "6975:17:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12173, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6975:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12176, + "mutability": "mutable", + "name": "expiresAt", + "nameLocation": "7010:9:47", + "nodeType": "VariableDeclaration", + "scope": 12196, + "src": "7002:17:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12175, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7002:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6833:192:47" + }, + "returnParameters": { + "id": 12180, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12179, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 12196, + "src": "7047:7:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 12178, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7047:7:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "7046:9:47" + }, + "scope": 12642, + "src": "6805:617:47", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 12234, + "nodeType": "Block", + "src": "7791:300:47", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "hexValue": "1901", + "id": 12219, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7885:10:47", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541", + "typeString": "literal_string hex\"1901\"" + }, + "value": "\u0019\u0001" + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12220, + "name": "getDomainSeparator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12161, + "src": "7917:18:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_bytes32_$", + "typeString": "function () view returns (bytes32)" + } + }, + "id": 12221, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7917:20:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "id": 12223, + "name": "fromCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12199, + "src": "7979:13:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 12224, + "name": "toCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12201, + "src": "7994:11:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 12225, + "name": "toBot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12203, + "src": "8007:5:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 12226, + "name": "counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12205, + "src": "8014:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12227, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12207, + "src": "8023:6:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12228, + "name": "createdAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12209, + "src": "8031:9:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12229, + "name": "expiresAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12211, + "src": "8042:9:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 12222, + "name": "hashMessengerCheque", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12196, + "src": "7959:19:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,address,address,uint256,uint256,uint256,uint256) pure returns (bytes32)" + } + }, + "id": 12230, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7959:93:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541", + "typeString": "literal_string hex\"1901\"" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "id": 12217, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "7847:3:47", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 12218, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "7851:12:47", + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "7847:16:47", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 12231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7847:223:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 12216, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "7820:9:47", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 12232, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7820:264:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 12215, + "id": 12233, + "nodeType": "Return", + "src": "7801:283:47" + } + ] + }, + "documentation": { + "id": 12197, + "nodeType": "StructuredDocumentation", + "src": "7428:111:47", + "text": " @notice Returns the hash of the typed data (cheque) with prefix and domain\n separator." + }, + "functionSelector": "c7b5914f", + "id": 12235, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "hashTypedDataV4", + "nameLocation": "7553:15:47", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12212, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12199, + "mutability": "mutable", + "name": "fromCMAccount", + "nameLocation": "7586:13:47", + "nodeType": "VariableDeclaration", + "scope": 12235, + "src": "7578:21:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12198, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7578:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12201, + "mutability": "mutable", + "name": "toCMAccount", + "nameLocation": "7617:11:47", + "nodeType": "VariableDeclaration", + "scope": 12235, + "src": "7609:19:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12200, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7609:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12203, + "mutability": "mutable", + "name": "toBot", + "nameLocation": "7646:5:47", + "nodeType": "VariableDeclaration", + "scope": 12235, + "src": "7638:13:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12202, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7638:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12205, + "mutability": "mutable", + "name": "counter", + "nameLocation": "7669:7:47", + "nodeType": "VariableDeclaration", + "scope": 12235, + "src": "7661:15:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12204, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7661:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12207, + "mutability": "mutable", + "name": "amount", + "nameLocation": "7694:6:47", + "nodeType": "VariableDeclaration", + "scope": 12235, + "src": "7686:14:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12206, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7686:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12209, + "mutability": "mutable", + "name": "createdAt", + "nameLocation": "7718:9:47", + "nodeType": "VariableDeclaration", + "scope": 12235, + "src": "7710:17:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12208, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7710:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12211, + "mutability": "mutable", + "name": "expiresAt", + "nameLocation": "7745:9:47", + "nodeType": "VariableDeclaration", + "scope": 12235, + "src": "7737:17:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12210, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7737:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7568:192:47" + }, + "returnParameters": { + "id": 12215, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12214, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 12235, + "src": "7782:7:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 12213, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7782:7:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "7781:9:47" + }, + "scope": 12642, + "src": "7544:547:47", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 12278, + "nodeType": "Block", + "src": "8520:190:47", + "statements": [ + { + "assignments": [ + 12258 + ], + "declarations": [ + { + "constant": false, + "id": 12258, + "mutability": "mutable", + "name": "digest", + "nameLocation": "8538:6:47", + "nodeType": "VariableDeclaration", + "scope": 12278, + "src": "8530:14:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 12257, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8530:7:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 12268, + "initialValue": { + "arguments": [ + { + "id": 12260, + "name": "fromCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12238, + "src": "8563:13:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 12261, + "name": "toCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12240, + "src": "8578:11:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 12262, + "name": "toBot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12242, + "src": "8591:5:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 12263, + "name": "counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12244, + "src": "8598:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12264, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12246, + "src": "8607:6:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12265, + "name": "createdAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12248, + "src": "8615:9:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12266, + "name": "expiresAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12250, + "src": "8626:9:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 12259, + "name": "hashTypedDataV4", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12235, + "src": "8547:15:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,address,address,uint256,uint256,uint256,uint256) view returns (bytes32)" + } + }, + "id": 12267, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8547:89:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8530:106:47" + }, + { + "expression": { + "id": 12274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 12269, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12255, + "src": "8646:6:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 12272, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12252, + "src": "8670:9:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "id": 12270, + "name": "digest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12258, + "src": "8655:6:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 12271, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8662:7:47", + "memberName": "recover", + "nodeType": "MemberAccess", + "referencedDeclaration": 6133, + "src": "8655:14:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$attached_to$_t_bytes32_$", + "typeString": "function (bytes32,bytes memory) pure returns (address)" + } + }, + "id": 12273, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8655:25:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8646:34:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 12275, + "nodeType": "ExpressionStatement", + "src": "8646:34:47" + }, + { + "expression": { + "id": 12276, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12255, + "src": "8697:6:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 12256, + "id": 12277, + "nodeType": "Return", + "src": "8690:13:47" + } + ] + }, + "documentation": { + "id": 12236, + "nodeType": "StructuredDocumentation", + "src": "8097:132:47", + "text": " @notice Returns the signer for the given cheque and signature. Uses {ECDSA} library to\n recover the signer." + }, + "id": 12279, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "recoverSigner", + "nameLocation": "8243:13:47", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12253, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12238, + "mutability": "mutable", + "name": "fromCMAccount", + "nameLocation": "8274:13:47", + "nodeType": "VariableDeclaration", + "scope": 12279, + "src": "8266:21:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12237, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8266:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12240, + "mutability": "mutable", + "name": "toCMAccount", + "nameLocation": "8305:11:47", + "nodeType": "VariableDeclaration", + "scope": 12279, + "src": "8297:19:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12239, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8297:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12242, + "mutability": "mutable", + "name": "toBot", + "nameLocation": "8334:5:47", + "nodeType": "VariableDeclaration", + "scope": 12279, + "src": "8326:13:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12241, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8326:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12244, + "mutability": "mutable", + "name": "counter", + "nameLocation": "8357:7:47", + "nodeType": "VariableDeclaration", + "scope": 12279, + "src": "8349:15:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12243, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8349:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12246, + "mutability": "mutable", + "name": "amount", + "nameLocation": "8382:6:47", + "nodeType": "VariableDeclaration", + "scope": 12279, + "src": "8374:14:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12245, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8374:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12248, + "mutability": "mutable", + "name": "createdAt", + "nameLocation": "8406:9:47", + "nodeType": "VariableDeclaration", + "scope": 12279, + "src": "8398:17:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12247, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8398:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12250, + "mutability": "mutable", + "name": "expiresAt", + "nameLocation": "8433:9:47", + "nodeType": "VariableDeclaration", + "scope": 12279, + "src": "8425:17:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12249, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8425:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12252, + "mutability": "mutable", + "name": "signature", + "nameLocation": "8465:9:47", + "nodeType": "VariableDeclaration", + "scope": 12279, + "src": "8452:22:47", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12251, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8452:5:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "8256:224:47" + }, + "returnParameters": { + "id": 12256, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12255, + "mutability": "mutable", + "name": "signer", + "nameLocation": "8512:6:47", + "nodeType": "VariableDeclaration", + "scope": 12279, + "src": "8504:14:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12254, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8504:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "8503:16:47" + }, + "scope": 12642, + "src": "8234:476:47", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 12413, + "nodeType": "Block", + "src": "9488:1496:47", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 12308, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12303, + "name": "fromCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12282, + "src": "9555:13:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "id": 12306, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "9580:4:47", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ChequeManager_$12642", + "typeString": "contract ChequeManager" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ChequeManager_$12642", + "typeString": "contract ChequeManager" + } + ], + "id": 12305, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9572:7:47", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 12304, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9572:7:47", + "typeDescriptions": {} + } + }, + "id": 12307, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9572:13:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9555:30:47", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12314, + "nodeType": "IfStatement", + "src": "9551:103:47", + "trueBody": { + "id": 12313, + "nodeType": "Block", + "src": "9587:67:47", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 12310, + "name": "fromCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12282, + "src": "9629:13:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 12309, + "name": "InvalidFromCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12084, + "src": "9608:20:47", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 12311, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9608:35:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12312, + "nodeType": "RevertStatement", + "src": "9601:42:47" + } + ] + } + }, + { + "condition": { + "id": 12322, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "9722:64:47", + "subExpression": { + "arguments": [ + { + "id": 12320, + "name": "toCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12284, + "src": "9774:11:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12316, + "name": "getManagerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12641, + "src": "9741:17:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 12317, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9741:19:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 12315, + "name": "ICMAccountManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16920, + "src": "9723:17:47", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ICMAccountManager_$16920_$", + "typeString": "type(contract ICMAccountManager)" + } + }, + "id": 12318, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9723:38:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ICMAccountManager_$16920", + "typeString": "contract ICMAccountManager" + } + }, + "id": 12319, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9762:11:47", + "memberName": "isCMAccount", + "nodeType": "MemberAccess", + "referencedDeclaration": 16905, + "src": "9723:50:47", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view external returns (bool)" + } + }, + "id": 12321, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9723:63:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12328, + "nodeType": "IfStatement", + "src": "9718:133:47", + "trueBody": { + "id": 12327, + "nodeType": "Block", + "src": "9788:63:47", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 12324, + "name": "toCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12284, + "src": "9828:11:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 12323, + "name": "InvalidToCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12089, + "src": "9809:18:47", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 12325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9809:31:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12326, + "nodeType": "RevertStatement", + "src": "9802:38:47" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 12329, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "9908:5:47", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 12330, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9914:9:47", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "9908:15:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "id": 12331, + "name": "expiresAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12294, + "src": "9927:9:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9908:28:47", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12338, + "nodeType": "IfStatement", + "src": "9904:90:47", + "trueBody": { + "id": 12337, + "nodeType": "Block", + "src": "9938:56:47", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 12334, + "name": "expiresAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12294, + "src": "9973:9:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 12333, + "name": "ChequeExpired", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12113, + "src": "9959:13:47", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", + "typeString": "function (uint256) pure" + } + }, + "id": 12335, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9959:24:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12336, + "nodeType": "RevertStatement", + "src": "9952:31:47" + } + ] + } + }, + { + "expression": { + "id": 12350, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 12339, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12299, + "src": "10030:6:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 12341, + "name": "fromCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12282, + "src": "10053:13:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 12342, + "name": "toCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12284, + "src": "10068:11:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 12343, + "name": "toBot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12286, + "src": "10081:5:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 12344, + "name": "counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12288, + "src": "10088:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12345, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12290, + "src": "10097:6:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12346, + "name": "createdAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12292, + "src": "10105:9:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12347, + "name": "expiresAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12294, + "src": "10116:9:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12348, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12296, + "src": "10127:9:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 12340, + "name": "recoverSigner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12279, + "src": "10039:13:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_address_$", + "typeString": "function (address,address,address,uint256,uint256,uint256,uint256,bytes memory) view returns (address)" + } + }, + "id": 12349, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10039:98:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10030:107:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 12351, + "nodeType": "ExpressionStatement", + "src": "10030:107:47" + }, + { + "condition": { + "id": 12355, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "10202:21:47", + "subExpression": { + "arguments": [ + { + "id": 12353, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12299, + "src": "10216:6:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 12352, + "name": "isBotAllowed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12635, + "src": "10203:12:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 12354, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10203:20:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12361, + "nodeType": "IfStatement", + "src": "10198:90:47", + "trueBody": { + "id": 12360, + "nodeType": "Block", + "src": "10225:63:47", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 12357, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12299, + "src": "10270:6:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 12356, + "name": "NotAllowedToSignCheques", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12094, + "src": "10246:23:47", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 12358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10246:31:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12359, + "nodeType": "RevertStatement", + "src": "10239:38:47" + } + ] + } + }, + { + "assignments": [ + 12364 + ], + "declarations": [ + { + "constant": false, + "id": 12364, + "mutability": "mutable", + "name": "$", + "nameLocation": "10327:1:47", + "nodeType": "VariableDeclaration", + "scope": 12413, + "src": "10298:30:47", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$12049_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + }, + "typeName": { + "id": 12363, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12362, + "name": "ChequeManagerStorage", + "nameLocations": [ + "10298:20:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 12049, + "src": "10298:20:47" + }, + "referencedDeclaration": 12049, + "src": "10298:20:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$12049_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 12367, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12365, + "name": "_getChequeManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12060, + "src": "10331:24:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ChequeManagerStorage_$12049_storage_ptr_$", + "typeString": "function () pure returns (struct ChequeManager.ChequeManagerStorage storage pointer)" + } + }, + "id": 12366, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10331:26:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$12049_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10298:59:47" + }, + { + "assignments": [ + 12370 + ], + "declarations": [ + { + "constant": false, + "id": 12370, + "mutability": "mutable", + "name": "lastCashIn", + "nameLocation": "10386:10:47", + "nodeType": "VariableDeclaration", + "scope": 12413, + "src": "10367:29:47", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$12033_storage_ptr", + "typeString": "struct ChequeManager.LastCashIn" + }, + "typeName": { + "id": 12369, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12368, + "name": "LastCashIn", + "nameLocations": [ + "10367:10:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 12033, + "src": "10367:10:47" + }, + "referencedDeclaration": 12033, + "src": "10367:10:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$12033_storage_ptr", + "typeString": "struct ChequeManager.LastCashIn" + } + }, + "visibility": "internal" + } + ], + "id": 12377, + "initialValue": { + "baseExpression": { + "baseExpression": { + "expression": { + "id": 12371, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12364, + "src": "10399:1:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$12049_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage storage pointer" + } + }, + "id": 12372, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10401:12:47", + "memberName": "_lastCashIns", + "nodeType": "MemberAccess", + "referencedDeclaration": 12042, + "src": "10399:14:47", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_LastCashIn_$12033_storage_$_$", + "typeString": "mapping(address => mapping(address => struct ChequeManager.LastCashIn storage ref))" + } + }, + "id": 12374, + "indexExpression": { + "id": 12373, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12299, + "src": "10414:6:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10399:22:47", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_LastCashIn_$12033_storage_$", + "typeString": "mapping(address => struct ChequeManager.LastCashIn storage ref)" + } + }, + "id": 12376, + "indexExpression": { + "id": 12375, + "name": "toBot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12286, + "src": "10422:5:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10399:29:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$12033_storage", + "typeString": "struct ChequeManager.LastCashIn storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10367:61:47" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12381, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12378, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12290, + "src": "10521:6:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 12379, + "name": "lastCashIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12370, + "src": "10530:10:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$12033_storage_ptr", + "typeString": "struct ChequeManager.LastCashIn storage pointer" + } + }, + "id": 12380, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10541:6:47", + "memberName": "amount", + "nodeType": "MemberAccess", + "referencedDeclaration": 12028, + "src": "10530:17:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10521:26:47", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12389, + "nodeType": "IfStatement", + "src": "10517:104:47", + "trueBody": { + "id": 12388, + "nodeType": "Block", + "src": "10549:72:47", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 12383, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12290, + "src": "10584:6:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 12384, + "name": "lastCashIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12370, + "src": "10592:10:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$12033_storage_ptr", + "typeString": "struct ChequeManager.LastCashIn storage pointer" + } + }, + "id": 12385, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10603:6:47", + "memberName": "amount", + "nodeType": "MemberAccess", + "referencedDeclaration": 12028, + "src": "10592:17:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 12382, + "name": "InvalidAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12108, + "src": "10570:13:47", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 12386, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10570:40:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12387, + "nodeType": "RevertStatement", + "src": "10563:47:47" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12393, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12390, + "name": "counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12288, + "src": "10720:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "expression": { + "id": 12391, + "name": "lastCashIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12370, + "src": "10731:10:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$12033_storage_ptr", + "typeString": "struct ChequeManager.LastCashIn storage pointer" + } + }, + "id": 12392, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10742:7:47", + "memberName": "counter", + "nodeType": "MemberAccess", + "referencedDeclaration": 12026, + "src": "10731:18:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10720:29:47", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12401, + "nodeType": "IfStatement", + "src": "10716:110:47", + "trueBody": { + "id": 12400, + "nodeType": "Block", + "src": "10751:75:47", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 12395, + "name": "counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12288, + "src": "10787:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 12396, + "name": "lastCashIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12370, + "src": "10796:10:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$12033_storage_ptr", + "typeString": "struct ChequeManager.LastCashIn storage pointer" + } + }, + "id": 12397, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10807:7:47", + "memberName": "counter", + "nodeType": "MemberAccess", + "referencedDeclaration": 12026, + "src": "10796:18:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 12394, + "name": "InvalidCounter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12101, + "src": "10772:14:47", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 12398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10772:43:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12399, + "nodeType": "RevertStatement", + "src": "10765:50:47" + } + ] + } + }, + { + "expression": { + "id": 12407, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 12402, + "name": "paymentAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12301, + "src": "10894:13:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12406, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12403, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12290, + "src": "10910:6:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "expression": { + "id": 12404, + "name": "lastCashIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12370, + "src": "10919:10:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$12033_storage_ptr", + "typeString": "struct ChequeManager.LastCashIn storage pointer" + } + }, + "id": 12405, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10930:6:47", + "memberName": "amount", + "nodeType": "MemberAccess", + "referencedDeclaration": 12028, + "src": "10919:17:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10910:26:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10894:42:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12408, + "nodeType": "ExpressionStatement", + "src": "10894:42:47" + }, + { + "expression": { + "components": [ + { + "id": 12409, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12299, + "src": "10955:6:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 12410, + "name": "paymentAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12301, + "src": "10963:13:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 12411, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10954:23:47", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$", + "typeString": "tuple(address,uint256)" + } + }, + "functionReturnParameters": 12302, + "id": 12412, + "nodeType": "Return", + "src": "10947:30:47" + } + ] + }, + "documentation": { + "id": 12280, + "nodeType": "StructuredDocumentation", + "src": "8716:461:47", + "text": " @notice Returns signer and payment amount if the signature is valid for the\n given cheque, the signer is an allowed bot, cheque counter and amounts are\n valid according to last cash ins.\n Please be aware that `cheque.amount < paymentAmount` for a valid cheque as\n long as the last amount is lower than the cheque amount. Only the difference\n between the cheque amount and the last recorded amount is paid." + }, + "functionSelector": "21b9b929", + "id": 12414, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "verifyCheque", + "nameLocation": "9191:12:47", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12297, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12282, + "mutability": "mutable", + "name": "fromCMAccount", + "nameLocation": "9221:13:47", + "nodeType": "VariableDeclaration", + "scope": 12414, + "src": "9213:21:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12281, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9213:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12284, + "mutability": "mutable", + "name": "toCMAccount", + "nameLocation": "9252:11:47", + "nodeType": "VariableDeclaration", + "scope": 12414, + "src": "9244:19:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12283, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9244:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12286, + "mutability": "mutable", + "name": "toBot", + "nameLocation": "9281:5:47", + "nodeType": "VariableDeclaration", + "scope": 12414, + "src": "9273:13:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12285, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9273:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12288, + "mutability": "mutable", + "name": "counter", + "nameLocation": "9304:7:47", + "nodeType": "VariableDeclaration", + "scope": 12414, + "src": "9296:15:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12287, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9296:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12290, + "mutability": "mutable", + "name": "amount", + "nameLocation": "9329:6:47", + "nodeType": "VariableDeclaration", + "scope": 12414, + "src": "9321:14:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12289, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9321:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12292, + "mutability": "mutable", + "name": "createdAt", + "nameLocation": "9353:9:47", + "nodeType": "VariableDeclaration", + "scope": 12414, + "src": "9345:17:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12291, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9345:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12294, + "mutability": "mutable", + "name": "expiresAt", + "nameLocation": "9380:9:47", + "nodeType": "VariableDeclaration", + "scope": 12414, + "src": "9372:17:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12293, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9372:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12296, + "mutability": "mutable", + "name": "signature", + "nameLocation": "9412:9:47", + "nodeType": "VariableDeclaration", + "scope": 12414, + "src": "9399:22:47", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12295, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "9399:5:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "9203:224:47" + }, + "returnParameters": { + "id": 12302, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12299, + "mutability": "mutable", + "name": "signer", + "nameLocation": "9457:6:47", + "nodeType": "VariableDeclaration", + "scope": 12414, + "src": "9449:14:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12298, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9449:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12301, + "mutability": "mutable", + "name": "paymentAmount", + "nameLocation": "9473:13:47", + "nodeType": "VariableDeclaration", + "scope": 12414, + "src": "9465:21:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12300, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9465:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9448:39:47" + }, + "scope": 12642, + "src": "9182:1802:47", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 12529, + "nodeType": "Block", + "src": "12137:1813:47", + "statements": [ + { + "assignments": [ + 12437, + 12439 + ], + "declarations": [ + { + "constant": false, + "id": 12437, + "mutability": "mutable", + "name": "signer", + "nameLocation": "12223:6:47", + "nodeType": "VariableDeclaration", + "scope": 12529, + "src": "12215:14:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12436, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12215:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12439, + "mutability": "mutable", + "name": "paymentAmount", + "nameLocation": "12239:13:47", + "nodeType": "VariableDeclaration", + "scope": 12529, + "src": "12231:21:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12438, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12231:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 12450, + "initialValue": { + "arguments": [ + { + "id": 12441, + "name": "fromCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12417, + "src": "12282:13:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 12442, + "name": "toCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12419, + "src": "12309:11:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 12443, + "name": "toBot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12421, + "src": "12334:5:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 12444, + "name": "counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12423, + "src": "12353:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12445, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12425, + "src": "12374:6:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12446, + "name": "createdAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12427, + "src": "12394:9:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12447, + "name": "expiresAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12429, + "src": "12417:9:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12448, + "name": "signature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12431, + "src": "12440:9:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 12440, + "name": "verifyCheque", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12414, + "src": "12256:12:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_address_$_t_uint256_$", + "typeString": "function (address,address,address,uint256,uint256,uint256,uint256,bytes memory) view returns (address,uint256)" + } + }, + "id": 12449, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12256:203:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$", + "typeString": "tuple(address,uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12214:245:47" + }, + { + "expression": { + "arguments": [ + { + "id": 12452, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12437, + "src": "12600:6:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 12453, + "name": "toBot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12421, + "src": "12608:5:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 12454, + "name": "counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12423, + "src": "12615:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12455, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12425, + "src": "12624:6:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12456, + "name": "createdAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12427, + "src": "12632:9:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12457, + "name": "expiresAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12429, + "src": "12643:9:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 12451, + "name": "setLastCashIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12611, + "src": "12586:13:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256,uint256,uint256,uint256)" + } + }, + "id": 12458, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12586:67:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12459, + "nodeType": "ExpressionStatement", + "src": "12586:67:47" + }, + { + "assignments": [ + 12461 + ], + "declarations": [ + { + "constant": false, + "id": 12461, + "mutability": "mutable", + "name": "developerFee", + "nameLocation": "12782:12:47", + "nodeType": "VariableDeclaration", + "scope": 12529, + "src": "12774:20:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12460, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12774:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 12473, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12469, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12462, + "name": "paymentAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12439, + "src": "12798:13:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12464, + "name": "getManagerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12641, + "src": "12832:17:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 12465, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12832:19:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 12463, + "name": "ICMAccountManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16920, + "src": "12814:17:47", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ICMAccountManager_$16920_$", + "typeString": "type(contract ICMAccountManager)" + } + }, + "id": 12466, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12814:38:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ICMAccountManager_$16920", + "typeString": "contract ICMAccountManager" + } + }, + "id": 12467, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12853:17:47", + "memberName": "getDeveloperFeeBp", + "nodeType": "MemberAccess", + "referencedDeclaration": 16893, + "src": "12814:56:47", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", + "typeString": "function () view external returns (uint256)" + } + }, + "id": 12468, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12814:58:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12798:74:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 12470, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "12797:76:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "hexValue": "3130303030", + "id": 12471, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12876:5:47", + "typeDescriptions": { + "typeIdentifier": "t_rational_10000_by_1", + "typeString": "int_const 10000" + }, + "value": "10000" + }, + "src": "12797:84:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12774:107:47" + }, + { + "assignments": [ + 12475 + ], + "declarations": [ + { + "constant": false, + "id": 12475, + "mutability": "mutable", + "name": "chequePaymentAmount", + "nameLocation": "12954:19:47", + "nodeType": "VariableDeclaration", + "scope": 12529, + "src": "12946:27:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12474, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12946:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 12479, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12478, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12476, + "name": "paymentAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12439, + "src": "12976:13:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "id": 12477, + "name": "developerFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12461, + "src": "12992:12:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12976:28:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12946:58:47" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 12482, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12480, + "name": "fromCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12417, + "src": "13097:13:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 12481, + "name": "toCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12419, + "src": "13114:11:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "13097:28:47", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12496, + "nodeType": "IfStatement", + "src": "13093:171:47", + "trueBody": { + "id": 12495, + "nodeType": "Block", + "src": "13127:137:47", + "statements": [ + { + "assignments": [ + 12485 + ], + "declarations": [ + { + "constant": false, + "id": 12485, + "mutability": "mutable", + "name": "$", + "nameLocation": "13170:1:47", + "nodeType": "VariableDeclaration", + "scope": 12495, + "src": "13141:30:47", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$12049_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + }, + "typeName": { + "id": 12484, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12483, + "name": "ChequeManagerStorage", + "nameLocations": [ + "13141:20:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 12049, + "src": "13141:20:47" + }, + "referencedDeclaration": 12049, + "src": "13141:20:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$12049_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 12488, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12486, + "name": "_getChequeManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12060, + "src": "13174:24:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ChequeManagerStorage_$12049_storage_ptr_$", + "typeString": "function () pure returns (struct ChequeManager.ChequeManagerStorage storage pointer)" + } + }, + "id": 12487, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13174:26:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$12049_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13141:59:47" + }, + { + "expression": { + "id": 12493, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 12489, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12485, + "src": "13214:1:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$12049_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage storage pointer" + } + }, + "id": 12491, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "13216:20:47", + "memberName": "_totalChequePayments", + "nodeType": "MemberAccess", + "referencedDeclaration": 12045, + "src": "13214:22:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 12492, + "name": "paymentAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12439, + "src": "13240:13:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13214:39:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12494, + "nodeType": "ExpressionStatement", + "src": "13214:39:47" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "id": 12507, + "name": "developerFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12461, + "src": "13411:12:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12500, + "name": "getManagerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12641, + "src": "13358:17:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 12501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13358:19:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 12499, + "name": "ICMAccountManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16920, + "src": "13340:17:47", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ICMAccountManager_$16920_$", + "typeString": "type(contract ICMAccountManager)" + } + }, + "id": 12502, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13340:38:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ICMAccountManager_$16920", + "typeString": "contract ICMAccountManager" + } + }, + "id": 12503, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13379:18:47", + "memberName": "getDeveloperWallet", + "nodeType": "MemberAccess", + "referencedDeclaration": 16898, + "src": "13340:57:47", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", + "typeString": "function () view external returns (address)" + } + }, + "id": 12504, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13340:59:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 12498, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13332:8:47", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_payable_$", + "typeString": "type(address payable)" + }, + "typeName": { + "id": 12497, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13332:8:47", + "stateMutability": "payable", + "typeDescriptions": {} + } + }, + "id": 12505, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13332:68:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 12506, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13401:9:47", + "memberName": "sendValue", + "nodeType": "MemberAccess", + "referencedDeclaration": 5279, + "src": "13332:78:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$attached_to$_t_address_payable_$", + "typeString": "function (address payable,uint256)" + } + }, + "id": 12508, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13332:92:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12509, + "nodeType": "ExpressionStatement", + "src": "13332:92:47" + }, + { + "expression": { + "arguments": [ + { + "id": 12515, + "name": "chequePaymentAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12475, + "src": "13533:19:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 12512, + "name": "toCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12419, + "src": "13510:11:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 12511, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13502:8:47", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_payable_$", + "typeString": "type(address payable)" + }, + "typeName": { + "id": 12510, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13502:8:47", + "stateMutability": "payable", + "typeDescriptions": {} + } + }, + "id": 12513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13502:20:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 12514, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13523:9:47", + "memberName": "sendValue", + "nodeType": "MemberAccess", + "referencedDeclaration": 5279, + "src": "13502:30:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$attached_to$_t_address_payable_$", + "typeString": "function (address payable,uint256)" + } + }, + "id": 12516, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13502:51:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12517, + "nodeType": "ExpressionStatement", + "src": "13502:51:47" + }, + { + "eventCall": { + "arguments": [ + { + "id": 12519, + "name": "fromCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12417, + "src": "13627:13:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 12520, + "name": "toCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12419, + "src": "13654:11:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 12521, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12437, + "src": "13679:6:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 12522, + "name": "toBot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12421, + "src": "13710:5:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 12523, + "name": "counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12423, + "src": "13729:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12524, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12425, + "src": "13750:6:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12525, + "name": "chequePaymentAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12475, + "src": "13794:19:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12526, + "name": "developerFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12461, + "src": "13870:12:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 12518, + "name": "ChequeCashedIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12079, + "src": "13599:14:47", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,address,address,address,uint256,uint256,uint256,uint256)" + } + }, + "id": 12527, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13599:344:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12528, + "nodeType": "EmitStatement", + "src": "13594:349:47" + } + ] + }, + "documentation": { + "id": 12415, + "nodeType": "StructuredDocumentation", + "src": "10990:876:47", + "text": " @notice Cash in a cheque by verifying it and paying the difference between the\n cheque amount and the last recorded amount for the signer and `toBot` pair.\n A percentage of the amount is also paid to the developer wallet.\n @param fromCMAccount The CM Account that will pay the amount. This contract.\n @param toCMAccount The CM Account that will receive the amount.\n @param toBot The address of the bot that received the cheque.\n @param counter The counter of the cheque. Should be increased with every\n cheque.\n @param amount The amount on the cheque. Should be greater then or equal the\n last recorded amount.\n @param createdAt The creation timestamp of the cheque.\n @param expiresAt The expiration timestamp of the cheque.\n @param signature The signature of the cheque." + }, + "functionSelector": "647d8f6d", + "id": 12530, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 12434, + "kind": "modifierInvocation", + "modifierName": { + "id": 12433, + "name": "nonReentrant", + "nameLocations": [ + "12124:12:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3047, + "src": "12124:12:47" + }, + "nodeType": "ModifierInvocation", + "src": "12124:12:47" + } + ], + "name": "cashInCheque", + "nameLocation": "11880:12:47", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12432, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12417, + "mutability": "mutable", + "name": "fromCMAccount", + "nameLocation": "11910:13:47", + "nodeType": "VariableDeclaration", + "scope": 12530, + "src": "11902:21:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12416, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11902:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12419, + "mutability": "mutable", + "name": "toCMAccount", + "nameLocation": "11941:11:47", + "nodeType": "VariableDeclaration", + "scope": 12530, + "src": "11933:19:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12418, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11933:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12421, + "mutability": "mutable", + "name": "toBot", + "nameLocation": "11970:5:47", + "nodeType": "VariableDeclaration", + "scope": 12530, + "src": "11962:13:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12420, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11962:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12423, + "mutability": "mutable", + "name": "counter", + "nameLocation": "11993:7:47", + "nodeType": "VariableDeclaration", + "scope": 12530, + "src": "11985:15:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12422, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11985:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12425, + "mutability": "mutable", + "name": "amount", + "nameLocation": "12018:6:47", + "nodeType": "VariableDeclaration", + "scope": 12530, + "src": "12010:14:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12424, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12010:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12427, + "mutability": "mutable", + "name": "createdAt", + "nameLocation": "12042:9:47", + "nodeType": "VariableDeclaration", + "scope": 12530, + "src": "12034:17:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12426, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12034:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12429, + "mutability": "mutable", + "name": "expiresAt", + "nameLocation": "12069:9:47", + "nodeType": "VariableDeclaration", + "scope": 12530, + "src": "12061:17:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12428, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12061:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12431, + "mutability": "mutable", + "name": "signature", + "nameLocation": "12101:9:47", + "nodeType": "VariableDeclaration", + "scope": 12530, + "src": "12088:22:47", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 12430, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12088:5:47", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "11892:224:47" + }, + "returnParameters": { + "id": 12435, + "nodeType": "ParameterList", + "parameters": [], + "src": "12137:0:47" + }, + "scope": 12642, + "src": "11871:2079:47", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 12572, + "nodeType": "Block", + "src": "14727:248:47", + "statements": [ + { + "assignments": [ + 12548 + ], + "declarations": [ + { + "constant": false, + "id": 12548, + "mutability": "mutable", + "name": "$", + "nameLocation": "14766:1:47", + "nodeType": "VariableDeclaration", + "scope": 12572, + "src": "14737:30:47", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$12049_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + }, + "typeName": { + "id": 12547, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12546, + "name": "ChequeManagerStorage", + "nameLocations": [ + "14737:20:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 12049, + "src": "14737:20:47" + }, + "referencedDeclaration": 12049, + "src": "14737:20:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$12049_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 12551, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12549, + "name": "_getChequeManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12060, + "src": "14770:24:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ChequeManagerStorage_$12049_storage_ptr_$", + "typeString": "function () pure returns (struct ChequeManager.ChequeManagerStorage storage pointer)" + } + }, + "id": 12550, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14770:26:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$12049_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14737:59:47" + }, + { + "assignments": [ + 12554 + ], + "declarations": [ + { + "constant": false, + "id": 12554, + "mutability": "mutable", + "name": "lastCashIn", + "nameLocation": "14825:10:47", + "nodeType": "VariableDeclaration", + "scope": 12572, + "src": "14806:29:47", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$12033_storage_ptr", + "typeString": "struct ChequeManager.LastCashIn" + }, + "typeName": { + "id": 12553, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12552, + "name": "LastCashIn", + "nameLocations": [ + "14806:10:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 12033, + "src": "14806:10:47" + }, + "referencedDeclaration": 12033, + "src": "14806:10:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$12033_storage_ptr", + "typeString": "struct ChequeManager.LastCashIn" + } + }, + "visibility": "internal" + } + ], + "id": 12561, + "initialValue": { + "baseExpression": { + "baseExpression": { + "expression": { + "id": 12555, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12548, + "src": "14838:1:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$12049_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage storage pointer" + } + }, + "id": 12556, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14840:12:47", + "memberName": "_lastCashIns", + "nodeType": "MemberAccess", + "referencedDeclaration": 12042, + "src": "14838:14:47", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_LastCashIn_$12033_storage_$_$", + "typeString": "mapping(address => mapping(address => struct ChequeManager.LastCashIn storage ref))" + } + }, + "id": 12558, + "indexExpression": { + "id": 12557, + "name": "fromBot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12533, + "src": "14853:7:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14838:23:47", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_LastCashIn_$12033_storage_$", + "typeString": "mapping(address => struct ChequeManager.LastCashIn storage ref)" + } + }, + "id": 12560, + "indexExpression": { + "id": 12559, + "name": "toBot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12535, + "src": "14862:5:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14838:30:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$12033_storage", + "typeString": "struct ChequeManager.LastCashIn storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14806:62:47" + }, + { + "expression": { + "components": [ + { + "expression": { + "id": 12562, + "name": "lastCashIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12554, + "src": "14886:10:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$12033_storage_ptr", + "typeString": "struct ChequeManager.LastCashIn storage pointer" + } + }, + "id": 12563, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14897:7:47", + "memberName": "counter", + "nodeType": "MemberAccess", + "referencedDeclaration": 12026, + "src": "14886:18:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 12564, + "name": "lastCashIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12554, + "src": "14906:10:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$12033_storage_ptr", + "typeString": "struct ChequeManager.LastCashIn storage pointer" + } + }, + "id": 12565, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14917:6:47", + "memberName": "amount", + "nodeType": "MemberAccess", + "referencedDeclaration": 12028, + "src": "14906:17:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 12566, + "name": "lastCashIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12554, + "src": "14925:10:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$12033_storage_ptr", + "typeString": "struct ChequeManager.LastCashIn storage pointer" + } + }, + "id": 12567, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14936:9:47", + "memberName": "createdAt", + "nodeType": "MemberAccess", + "referencedDeclaration": 12030, + "src": "14925:20:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 12568, + "name": "lastCashIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12554, + "src": "14947:10:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$12033_storage_ptr", + "typeString": "struct ChequeManager.LastCashIn storage pointer" + } + }, + "id": 12569, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14958:9:47", + "memberName": "expiresAt", + "nodeType": "MemberAccess", + "referencedDeclaration": 12032, + "src": "14947:20:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 12570, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "14885:83:47", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256,uint256,uint256)" + } + }, + "functionReturnParameters": 12545, + "id": 12571, + "nodeType": "Return", + "src": "14878:90:47" + } + ] + }, + "documentation": { + "id": 12531, + "nodeType": "StructuredDocumentation", + "src": "13956:581:47", + "text": " @notice Returns last cash-in details for given `fromBot` & `toBot` pair.\n @param fromBot The address of the bot that sent the cheque.\n @param toBot The address of the bot that received the cheque.\n Returns (lastCounter, lastAmount, lastCreatedAt, lastExpiresAt)\n @return lastCounter The last counter of the cheque.\n @return lastAmount The last amount of the cheque.\n @return lastCreatedAt The last creation timestamp of the cheque.\n @return lastExpiresAt The last expiration timestamp of the cheque." + }, + "functionSelector": "930659eb", + "id": 12573, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getLastCashIn", + "nameLocation": "14551:13:47", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12536, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12533, + "mutability": "mutable", + "name": "fromBot", + "nameLocation": "14582:7:47", + "nodeType": "VariableDeclaration", + "scope": 12573, + "src": "14574:15:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12532, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14574:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12535, + "mutability": "mutable", + "name": "toBot", + "nameLocation": "14607:5:47", + "nodeType": "VariableDeclaration", + "scope": 12573, + "src": "14599:13:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12534, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14599:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "14564:54:47" + }, + "returnParameters": { + "id": 12545, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12538, + "mutability": "mutable", + "name": "lastCounter", + "nameLocation": "14648:11:47", + "nodeType": "VariableDeclaration", + "scope": 12573, + "src": "14640:19:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12537, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14640:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12540, + "mutability": "mutable", + "name": "lastAmount", + "nameLocation": "14669:10:47", + "nodeType": "VariableDeclaration", + "scope": 12573, + "src": "14661:18:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12539, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14661:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12542, + "mutability": "mutable", + "name": "lastCreatedAt", + "nameLocation": "14689:13:47", + "nodeType": "VariableDeclaration", + "scope": 12573, + "src": "14681:21:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12541, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14681:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12544, + "mutability": "mutable", + "name": "lastExpiresAt", + "nameLocation": "14712:13:47", + "nodeType": "VariableDeclaration", + "scope": 12573, + "src": "14704:21:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12543, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14704:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "14639:87:47" + }, + "scope": 12642, + "src": "14542:433:47", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 12610, + "nodeType": "Block", + "src": "15619:168:47", + "statements": [ + { + "assignments": [ + 12591 + ], + "declarations": [ + { + "constant": false, + "id": 12591, + "mutability": "mutable", + "name": "$", + "nameLocation": "15658:1:47", + "nodeType": "VariableDeclaration", + "scope": 12610, + "src": "15629:30:47", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$12049_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + }, + "typeName": { + "id": 12590, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12589, + "name": "ChequeManagerStorage", + "nameLocations": [ + "15629:20:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 12049, + "src": "15629:20:47" + }, + "referencedDeclaration": 12049, + "src": "15629:20:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$12049_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 12594, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12592, + "name": "_getChequeManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12060, + "src": "15662:24:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ChequeManagerStorage_$12049_storage_ptr_$", + "typeString": "function () pure returns (struct ChequeManager.ChequeManagerStorage storage pointer)" + } + }, + "id": 12593, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15662:26:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$12049_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15629:59:47" + }, + { + "expression": { + "id": 12608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "baseExpression": { + "expression": { + "id": 12595, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12591, + "src": "15698:1:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$12049_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage storage pointer" + } + }, + "id": 12599, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15700:12:47", + "memberName": "_lastCashIns", + "nodeType": "MemberAccess", + "referencedDeclaration": 12042, + "src": "15698:14:47", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_struct$_LastCashIn_$12033_storage_$_$", + "typeString": "mapping(address => mapping(address => struct ChequeManager.LastCashIn storage ref))" + } + }, + "id": 12600, + "indexExpression": { + "id": 12597, + "name": "fromBot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12576, + "src": "15713:7:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15698:23:47", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_LastCashIn_$12033_storage_$", + "typeString": "mapping(address => struct ChequeManager.LastCashIn storage ref)" + } + }, + "id": 12601, + "indexExpression": { + "id": 12598, + "name": "toBot", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12578, + "src": "15722:5:47", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "15698:30:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$12033_storage", + "typeString": "struct ChequeManager.LastCashIn storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 12603, + "name": "counter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12580, + "src": "15742:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12604, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12582, + "src": "15751:6:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12605, + "name": "createdAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12584, + "src": "15759:9:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12606, + "name": "expiresAt", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12586, + "src": "15770:9:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 12602, + "name": "LastCashIn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12033, + "src": "15731:10:47", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_LastCashIn_$12033_storage_ptr_$", + "typeString": "type(struct ChequeManager.LastCashIn storage pointer)" + } + }, + "id": 12607, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15731:49:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$12033_memory_ptr", + "typeString": "struct ChequeManager.LastCashIn memory" + } + }, + "src": "15698:82:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_LastCashIn_$12033_storage", + "typeString": "struct ChequeManager.LastCashIn storage ref" + } + }, + "id": 12609, + "nodeType": "ExpressionStatement", + "src": "15698:82:47" + } + ] + }, + "documentation": { + "id": 12574, + "nodeType": "StructuredDocumentation", + "src": "14981:444:47", + "text": " @notice Sets last cash-in for given `fromBot`, `toBot` pair.\n @param fromBot The address of the bot that sent the cheque.\n @param toBot The address of the bot that received the cheque.\n @param counter The counter of the cheque.\n @param amount The amount of the cheque.\n @param createdAt The creation timestamp of the cheque.\n @param expiresAt The expiration timestamp of the cheque." + }, + "id": 12611, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setLastCashIn", + "nameLocation": "15439:13:47", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12587, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12576, + "mutability": "mutable", + "name": "fromBot", + "nameLocation": "15470:7:47", + "nodeType": "VariableDeclaration", + "scope": 12611, + "src": "15462:15:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12575, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15462:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12578, + "mutability": "mutable", + "name": "toBot", + "nameLocation": "15495:5:47", + "nodeType": "VariableDeclaration", + "scope": 12611, + "src": "15487:13:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12577, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15487:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12580, + "mutability": "mutable", + "name": "counter", + "nameLocation": "15518:7:47", + "nodeType": "VariableDeclaration", + "scope": 12611, + "src": "15510:15:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12579, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15510:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12582, + "mutability": "mutable", + "name": "amount", + "nameLocation": "15543:6:47", + "nodeType": "VariableDeclaration", + "scope": 12611, + "src": "15535:14:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12581, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15535:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12584, + "mutability": "mutable", + "name": "createdAt", + "nameLocation": "15567:9:47", + "nodeType": "VariableDeclaration", + "scope": 12611, + "src": "15559:17:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12583, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15559:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12586, + "mutability": "mutable", + "name": "expiresAt", + "nameLocation": "15594:9:47", + "nodeType": "VariableDeclaration", + "scope": 12611, + "src": "15586:17:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12585, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15586:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "15452:157:47" + }, + "returnParameters": { + "id": 12588, + "nodeType": "ParameterList", + "parameters": [], + "src": "15619:0:47" + }, + "scope": 12642, + "src": "15430:357:47", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 12626, + "nodeType": "Block", + "src": "16035:115:47", + "statements": [ + { + "assignments": [ + 12619 + ], + "declarations": [ + { + "constant": false, + "id": 12619, + "mutability": "mutable", + "name": "$", + "nameLocation": "16074:1:47", + "nodeType": "VariableDeclaration", + "scope": 12626, + "src": "16045:30:47", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$12049_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + }, + "typeName": { + "id": 12618, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12617, + "name": "ChequeManagerStorage", + "nameLocations": [ + "16045:20:47" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 12049, + "src": "16045:20:47" + }, + "referencedDeclaration": 12049, + "src": "16045:20:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$12049_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 12622, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12620, + "name": "_getChequeManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12060, + "src": "16078:24:47", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ChequeManagerStorage_$12049_storage_ptr_$", + "typeString": "function () pure returns (struct ChequeManager.ChequeManagerStorage storage pointer)" + } + }, + "id": 12621, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16078:26:47", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$12049_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16045:59:47" + }, + { + "expression": { + "expression": { + "id": 12623, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12619, + "src": "16121:1:47", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ChequeManagerStorage_$12049_storage_ptr", + "typeString": "struct ChequeManager.ChequeManagerStorage storage pointer" + } + }, + "id": 12624, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16123:20:47", + "memberName": "_totalChequePayments", + "nodeType": "MemberAccess", + "referencedDeclaration": 12045, + "src": "16121:22:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 12616, + "id": 12625, + "nodeType": "Return", + "src": "16114:29:47" + } + ] + }, + "documentation": { + "id": 12612, + "nodeType": "StructuredDocumentation", + "src": "15793:173:47", + "text": " @notice Returns total cheque payments. This is the sum of all cashed in cheques.\n @return totalChequePayments The total cheque payments made." + }, + "functionSelector": "e96cf7ad", + "id": 12627, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getTotalChequePayments", + "nameLocation": "15980:22:47", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12613, + "nodeType": "ParameterList", + "parameters": [], + "src": "16002:2:47" + }, + "returnParameters": { + "id": 12616, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12615, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 12627, + "src": "16026:7:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12614, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16026:7:47", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "16025:9:47" + }, + "scope": 12642, + "src": "15971:179:47", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "documentation": { + "id": 12628, + "nodeType": "StructuredDocumentation", + "src": "16329:150:47", + "text": " @notice Abstract function to check if a bot is allowed to sign cheques. This\n must be implemented by the inheriting contract." + }, + "functionSelector": "e0b78add", + "id": 12635, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "isBotAllowed", + "nameLocation": "16493:12:47", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12631, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12630, + "mutability": "mutable", + "name": "bot", + "nameLocation": "16514:3:47", + "nodeType": "VariableDeclaration", + "scope": 12635, + "src": "16506:11:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12629, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16506:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "16505:13:47" + }, + "returnParameters": { + "id": 12634, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12633, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 12635, + "src": "16548:4:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 12632, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "16548:4:47", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "16547:6:47" + }, + "scope": 12642, + "src": "16484:70:47", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "documentation": { + "id": 12636, + "nodeType": "StructuredDocumentation", + "src": "16560:132:47", + "text": " @notice Abstract function to get the manager address. This must be implemented\n by the inheriting contract." + }, + "functionSelector": "c162d7da", + "id": 12641, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getManagerAddress", + "nameLocation": "16706:17:47", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12637, + "nodeType": "ParameterList", + "parameters": [], + "src": "16723:2:47" + }, + "returnParameters": { + "id": 12640, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12639, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 12641, + "src": "16755:7:47", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12638, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16755:7:47", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "16754:9:47" + }, + "scope": 12642, + "src": "16697:67:47", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + } + ], + "scope": 12643, + "src": "748:16018:47", + "usedErrors": [ + 603, + 606, + 3009, + 5521, + 5524, + 6040, + 6045, + 6050, + 12084, + 12089, + 12094, + 12101, + 12108, + 12113 + ], + "usedEvents": [ + 611, + 12079 + ] + } + ], + "src": "78:16689:47" + }, + "id": 47 + }, + "contracts/account/GasMoneyManager.sol": { + "ast": { + "absolutePath": "contracts/account/GasMoneyManager.sol", + "exportedSymbols": { + "Address": [ + 5481 + ], + "GasMoneyManager": [ + 12916 + ], + "Initializable": [ + 840 + ] + }, + "id": 12917, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 12644, + "literals": [ + "solidity", + "0.8", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "81:23:48" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "id": 12646, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 12917, + "sourceUnit": 841, + "src": "106:98:48", + "symbolAliases": [ + { + "foreign": { + "id": 12645, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 840, + "src": "115:13:48", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/Address.sol", + "file": "@openzeppelin/contracts/utils/Address.sol", + "id": 12648, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 12917, + "sourceUnit": 5482, + "src": "205:68:48", + "symbolAliases": [ + { + "foreign": { + "id": 12647, + "name": "Address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5481, + "src": "214:7:48", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 12650, + "name": "Initializable", + "nameLocations": [ + "499:13:48" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 840, + "src": "499:13:48" + }, + "id": 12651, + "nodeType": "InheritanceSpecifier", + "src": "499:13:48" + } + ], + "canonicalName": "GasMoneyManager", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 12649, + "nodeType": "StructuredDocumentation", + "src": "275:186:48", + "text": " @title GasMoneyManager\n @notice GasMoneyManager manages gas money withdrawals for a {CMAccount}.\n Gas money withdrawals are restricted to a withdrawal limit and period." + }, + "fullyImplemented": true, + "id": 12916, + "linearizedBaseContracts": [ + 12916, + 840 + ], + "name": "GasMoneyManager", + "nameLocation": "480:15:48", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 12654, + "libraryName": { + "id": 12652, + "name": "Address", + "nameLocations": [ + "525:7:48" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5481, + "src": "525:7:48" + }, + "nodeType": "UsingForDirective", + "src": "519:34:48", + "typeName": { + "id": 12653, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "537:15:48", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + }, + { + "canonicalName": "GasMoneyManager.GasMoneyStorage", + "documentation": { + "id": 12655, + "nodeType": "StructuredDocumentation", + "src": "732:77:48", + "text": "@custom:storage-location erc7201:camino.messenger.storage.GasMoneyManager" + }, + "id": 12668, + "members": [ + { + "constant": false, + "id": 12659, + "mutability": "mutable", + "name": "_withdrawalPeriodStart", + "nameLocation": "875:22:48", + "nodeType": "VariableDeclaration", + "scope": 12668, + "src": "847:50:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 12658, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 12656, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "855:7:48", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "847:27:48", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 12657, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "866:7:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12663, + "mutability": "mutable", + "name": "_withdrawnAmount", + "nameLocation": "935:16:48", + "nodeType": "VariableDeclaration", + "scope": 12668, + "src": "907:44:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 12662, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 12660, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "915:7:48", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "907:27:48", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 12661, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "926:7:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12665, + "mutability": "mutable", + "name": "_withdrawalLimit", + "nameLocation": "969:16:48", + "nodeType": "VariableDeclaration", + "scope": 12668, + "src": "961:24:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12664, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "961:7:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12667, + "mutability": "mutable", + "name": "_withdrawalPeriod", + "nameLocation": "1003:17:48", + "nodeType": "VariableDeclaration", + "scope": 12668, + "src": "995:25:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12666, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "995:7:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "name": "GasMoneyStorage", + "nameLocation": "821:15:48", + "nodeType": "StructDefinition", + "scope": 12916, + "src": "814:213:48", + "visibility": "public" + }, + { + "constant": true, + "id": 12671, + "mutability": "constant", + "name": "GasMoneyStorageLocation", + "nameLocation": "1182:23:48", + "nodeType": "VariableDeclaration", + "scope": 12916, + "src": "1157:125:48", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 12669, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1157:7:48", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307839396136353230363330383862366261646165623063376636383036373662616637323036353462346638366635303136373934343438396166363337643030", + "id": 12670, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1216:66:48", + "typeDescriptions": { + "typeIdentifier": "t_rational_69497728556064316839636333848025164220971012307620695743052787837524116733184_by_1", + "typeString": "int_const 6949...(69 digits omitted)...3184" + }, + "value": "0x99a652063088b6badaeb0c7f680676baf720654b4f86f50167944489af637d00" + }, + "visibility": "private" + }, + { + "body": { + "id": 12678, + "nodeType": "Block", + "src": "1369:82:48", + "statements": [ + { + "AST": { + "nativeSrc": "1388:57:48", + "nodeType": "YulBlock", + "src": "1388:57:48", + "statements": [ + { + "nativeSrc": "1402:33:48", + "nodeType": "YulAssignment", + "src": "1402:33:48", + "value": { + "name": "GasMoneyStorageLocation", + "nativeSrc": "1412:23:48", + "nodeType": "YulIdentifier", + "src": "1412:23:48" + }, + "variableNames": [ + { + "name": "$.slot", + "nativeSrc": "1402:6:48", + "nodeType": "YulIdentifier", + "src": "1402:6:48" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 12675, + "isOffset": false, + "isSlot": true, + "src": "1402:6:48", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 12671, + "isOffset": false, + "isSlot": false, + "src": "1412:23:48", + "valueSize": 1 + } + ], + "id": 12677, + "nodeType": "InlineAssembly", + "src": "1379:66:48" + } + ] + }, + "id": 12679, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getGasMoneyStorage", + "nameLocation": "1298:19:48", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12672, + "nodeType": "ParameterList", + "parameters": [], + "src": "1317:2:48" + }, + "returnParameters": { + "id": 12676, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12675, + "mutability": "mutable", + "name": "$", + "nameLocation": "1366:1:48", + "nodeType": "VariableDeclaration", + "scope": 12679, + "src": "1342:25:48", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$12668_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage" + }, + "typeName": { + "id": 12674, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12673, + "name": "GasMoneyStorage", + "nameLocations": [ + "1342:15:48" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 12668, + "src": "1342:15:48" + }, + "referencedDeclaration": 12668, + "src": "1342:15:48", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$12668_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage" + } + }, + "visibility": "internal" + } + ], + "src": "1341:27:48" + }, + "scope": 12916, + "src": "1289:162:48", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": { + "id": 12680, + "nodeType": "StructuredDocumentation", + "src": "1630:157:48", + "text": " @notice Gas money withdrawal event\n @param withdrawer the address of the withdrawer\n @param amount the amount withdrawn" + }, + "eventSelector": "b9ec638398bbdcd0844ca414d8ce760939fa88b9258b9764b3fc6c12ea2605c2", + "id": 12686, + "name": "GasMoneyWithdrawal", + "nameLocation": "1798:18:48", + "nodeType": "EventDefinition", + "parameters": { + "id": 12685, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12682, + "indexed": true, + "mutability": "mutable", + "name": "withdrawer", + "nameLocation": "1833:10:48", + "nodeType": "VariableDeclaration", + "scope": 12686, + "src": "1817:26:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12681, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1817:7:48", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12684, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nameLocation": "1853:6:48", + "nodeType": "VariableDeclaration", + "scope": 12686, + "src": "1845:14:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12683, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1845:7:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1816:44:48" + }, + "src": "1792:69:48" + }, + { + "anonymous": false, + "documentation": { + "id": 12687, + "nodeType": "StructuredDocumentation", + "src": "1867:195:48", + "text": " @notice Gas money withdrawal limit and period updated event\n @param limit the withdrawal limit for the period\n @param period the withdrawal period in seconds" + }, + "eventSelector": "8d4925b196ae6b935035a27ed36c6bd9c7a8fbddc7a3f55f493aa8e230be373e", + "id": 12693, + "name": "GasMoneyWithdrawalUpdated", + "nameLocation": "2073:25:48", + "nodeType": "EventDefinition", + "parameters": { + "id": 12692, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12689, + "indexed": false, + "mutability": "mutable", + "name": "limit", + "nameLocation": "2107:5:48", + "nodeType": "VariableDeclaration", + "scope": 12693, + "src": "2099:13:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12688, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2099:7:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12691, + "indexed": false, + "mutability": "mutable", + "name": "period", + "nameLocation": "2122:6:48", + "nodeType": "VariableDeclaration", + "scope": 12693, + "src": "2114:14:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12690, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2114:7:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2098:31:48" + }, + "src": "2067:63:48" + }, + { + "errorSelector": "b945e2d8", + "id": 12699, + "name": "WithdrawalLimitExceeded", + "nameLocation": "2315:23:48", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 12698, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12695, + "mutability": "mutable", + "name": "limit", + "nameLocation": "2347:5:48", + "nodeType": "VariableDeclaration", + "scope": 12699, + "src": "2339:13:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12694, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2339:7:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12697, + "mutability": "mutable", + "name": "amount", + "nameLocation": "2362:6:48", + "nodeType": "VariableDeclaration", + "scope": 12699, + "src": "2354:14:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12696, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2354:7:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2338:31:48" + }, + "src": "2309:61:48" + }, + { + "errorSelector": "d54b1887", + "id": 12705, + "name": "WithdrawalLimitExceededForPeriod", + "nameLocation": "2381:32:48", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 12704, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12701, + "mutability": "mutable", + "name": "limit", + "nameLocation": "2422:5:48", + "nodeType": "VariableDeclaration", + "scope": 12705, + "src": "2414:13:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12700, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2414:7:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12703, + "mutability": "mutable", + "name": "amount", + "nameLocation": "2437:6:48", + "nodeType": "VariableDeclaration", + "scope": 12705, + "src": "2429:14:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12702, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2429:7:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2413:31:48" + }, + "src": "2375:70:48" + }, + { + "body": { + "id": 12732, + "nodeType": "Block", + "src": "2733:160:48", + "statements": [ + { + "assignments": [ + 12716 + ], + "declarations": [ + { + "constant": false, + "id": 12716, + "mutability": "mutable", + "name": "$", + "nameLocation": "2767:1:48", + "nodeType": "VariableDeclaration", + "scope": 12732, + "src": "2743:25:48", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$12668_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage" + }, + "typeName": { + "id": 12715, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12714, + "name": "GasMoneyStorage", + "nameLocations": [ + "2743:15:48" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 12668, + "src": "2743:15:48" + }, + "referencedDeclaration": 12668, + "src": "2743:15:48", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$12668_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage" + } + }, + "visibility": "internal" + } + ], + "id": 12719, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12717, + "name": "_getGasMoneyStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12679, + "src": "2771:19:48", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_GasMoneyStorage_$12668_storage_ptr_$", + "typeString": "function () pure returns (struct GasMoneyManager.GasMoneyStorage storage pointer)" + } + }, + "id": 12718, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2771:21:48", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$12668_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2743:49:48" + }, + { + "expression": { + "id": 12724, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 12720, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12716, + "src": "2802:1:48", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$12668_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 12722, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "2804:16:48", + "memberName": "_withdrawalLimit", + "nodeType": "MemberAccess", + "referencedDeclaration": 12665, + "src": "2802:18:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 12723, + "name": "withdrawalLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12707, + "src": "2823:15:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2802:36:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12725, + "nodeType": "ExpressionStatement", + "src": "2802:36:48" + }, + { + "expression": { + "id": 12730, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 12726, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12716, + "src": "2848:1:48", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$12668_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 12728, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "2850:17:48", + "memberName": "_withdrawalPeriod", + "nodeType": "MemberAccess", + "referencedDeclaration": 12667, + "src": "2848:19:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 12729, + "name": "withdrawalPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12709, + "src": "2870:16:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2848:38:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12731, + "nodeType": "ExpressionStatement", + "src": "2848:38:48" + } + ] + }, + "id": 12733, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 12712, + "kind": "modifierInvocation", + "modifierName": { + "id": 12711, + "name": "onlyInitializing", + "nameLocations": [ + "2716:16:48" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 749, + "src": "2716:16:48" + }, + "nodeType": "ModifierInvocation", + "src": "2716:16:48" + } + ], + "name": "__GasMoneyManager_init", + "nameLocation": "2633:22:48", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12710, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12707, + "mutability": "mutable", + "name": "withdrawalLimit", + "nameLocation": "2664:15:48", + "nodeType": "VariableDeclaration", + "scope": 12733, + "src": "2656:23:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12706, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2656:7:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12709, + "mutability": "mutable", + "name": "withdrawalPeriod", + "nameLocation": "2689:16:48", + "nodeType": "VariableDeclaration", + "scope": 12733, + "src": "2681:24:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12708, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2681:7:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2655:51:48" + }, + "returnParameters": { + "id": 12713, + "nodeType": "ParameterList", + "parameters": [], + "src": "2733:0:48" + }, + "scope": 12916, + "src": "2624:269:48", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 12834, + "nodeType": "Block", + "src": "3355:1189:48", + "statements": [ + { + "assignments": [ + 12741 + ], + "declarations": [ + { + "constant": false, + "id": 12741, + "mutability": "mutable", + "name": "$", + "nameLocation": "3389:1:48", + "nodeType": "VariableDeclaration", + "scope": 12834, + "src": "3365:25:48", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$12668_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage" + }, + "typeName": { + "id": 12740, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12739, + "name": "GasMoneyStorage", + "nameLocations": [ + "3365:15:48" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 12668, + "src": "3365:15:48" + }, + "referencedDeclaration": 12668, + "src": "3365:15:48", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$12668_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage" + } + }, + "visibility": "internal" + } + ], + "id": 12744, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12742, + "name": "_getGasMoneyStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12679, + "src": "3393:19:48", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_GasMoneyStorage_$12668_storage_ptr_$", + "typeString": "function () pure returns (struct GasMoneyManager.GasMoneyStorage storage pointer)" + } + }, + "id": 12743, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3393:21:48", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$12668_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3365:49:48" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12748, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12745, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12736, + "src": "3496:6:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "id": 12746, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12741, + "src": "3505:1:48", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$12668_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 12747, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3507:16:48", + "memberName": "_withdrawalLimit", + "nodeType": "MemberAccess", + "referencedDeclaration": 12665, + "src": "3505:18:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3496:27:48", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12756, + "nodeType": "IfStatement", + "src": "3492:116:48", + "trueBody": { + "id": 12755, + "nodeType": "Block", + "src": "3525:83:48", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "expression": { + "id": 12750, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12741, + "src": "3570:1:48", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$12668_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 12751, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3572:16:48", + "memberName": "_withdrawalLimit", + "nodeType": "MemberAccess", + "referencedDeclaration": 12665, + "src": "3570:18:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12752, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12736, + "src": "3590:6:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 12749, + "name": "WithdrawalLimitExceeded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12699, + "src": "3546:23:48", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 12753, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3546:51:48", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12754, + "nodeType": "RevertStatement", + "src": "3539:58:48" + } + ] + } + }, + { + "assignments": [ + 12758 + ], + "declarations": [ + { + "constant": false, + "id": 12758, + "mutability": "mutable", + "name": "currentTime", + "nameLocation": "3652:11:48", + "nodeType": "VariableDeclaration", + "scope": 12834, + "src": "3644:19:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12757, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3644:7:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 12761, + "initialValue": { + "expression": { + "id": 12759, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "3666:5:48", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 12760, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3672:9:48", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "3666:15:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3644:37:48" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12771, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 12762, + "name": "currentTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12758, + "src": "3865:11:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12770, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "expression": { + "id": 12763, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12741, + "src": "3879:1:48", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$12668_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 12764, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3881:22:48", + "memberName": "_withdrawalPeriodStart", + "nodeType": "MemberAccess", + "referencedDeclaration": 12659, + "src": "3879:24:48", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 12767, + "indexExpression": { + "expression": { + "id": 12765, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "3904:3:48", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 12766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3908:6:48", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "3904:10:48", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3879:36:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "expression": { + "id": 12768, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12741, + "src": "3918:1:48", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$12668_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 12769, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3920:17:48", + "memberName": "_withdrawalPeriod", + "nodeType": "MemberAccess", + "referencedDeclaration": 12667, + "src": "3918:19:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3879:58:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3865:72:48", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12791, + "nodeType": "IfStatement", + "src": "3861:201:48", + "trueBody": { + "id": 12790, + "nodeType": "Block", + "src": "3939:123:48", + "statements": [ + { + "expression": { + "id": 12779, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 12772, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12741, + "src": "3953:1:48", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$12668_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 12776, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3955:16:48", + "memberName": "_withdrawnAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 12663, + "src": "3953:18:48", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 12777, + "indexExpression": { + "expression": { + "id": 12774, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "3972:3:48", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 12775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3976:6:48", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "3972:10:48", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3953:30:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 12778, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3986:1:48", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3953:34:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12780, + "nodeType": "ExpressionStatement", + "src": "3953:34:48" + }, + { + "expression": { + "id": 12788, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 12781, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12741, + "src": "4001:1:48", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$12668_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 12785, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4003:22:48", + "memberName": "_withdrawalPeriodStart", + "nodeType": "MemberAccess", + "referencedDeclaration": 12659, + "src": "4001:24:48", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 12786, + "indexExpression": { + "expression": { + "id": 12783, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4026:3:48", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 12784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4030:6:48", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "4026:10:48", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4001:36:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 12787, + "name": "currentTime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12758, + "src": "4040:11:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4001:50:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12789, + "nodeType": "ExpressionStatement", + "src": "4001:50:48" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12801, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 12798, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "expression": { + "id": 12792, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12741, + "src": "4158:1:48", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$12668_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 12793, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4160:16:48", + "memberName": "_withdrawnAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 12663, + "src": "4158:18:48", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 12796, + "indexExpression": { + "expression": { + "id": 12794, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4177:3:48", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 12795, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4181:6:48", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "4177:10:48", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4158:30:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 12797, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12736, + "src": "4191:6:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4158:39:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "id": 12799, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12741, + "src": "4200:1:48", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$12668_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 12800, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4202:16:48", + "memberName": "_withdrawalLimit", + "nodeType": "MemberAccess", + "referencedDeclaration": 12665, + "src": "4200:18:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4158:60:48", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 12809, + "nodeType": "IfStatement", + "src": "4154:158:48", + "trueBody": { + "id": 12808, + "nodeType": "Block", + "src": "4220:92:48", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "expression": { + "id": 12803, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12741, + "src": "4274:1:48", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$12668_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 12804, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4276:16:48", + "memberName": "_withdrawalLimit", + "nodeType": "MemberAccess", + "referencedDeclaration": 12665, + "src": "4274:18:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12805, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12736, + "src": "4294:6:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 12802, + "name": "WithdrawalLimitExceededForPeriod", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12705, + "src": "4241:32:48", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 12806, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4241:60:48", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12807, + "nodeType": "RevertStatement", + "src": "4234:67:48" + } + ] + } + }, + { + "expression": { + "id": 12817, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 12810, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12741, + "src": "4361:1:48", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$12668_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 12814, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4363:16:48", + "memberName": "_withdrawnAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 12663, + "src": "4361:18:48", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 12815, + "indexExpression": { + "expression": { + "id": 12812, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4380:3:48", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 12813, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4384:6:48", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "4380:10:48", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4361:30:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "id": 12816, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12736, + "src": "4395:6:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4361:40:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12818, + "nodeType": "ExpressionStatement", + "src": "4361:40:48" + }, + { + "expression": { + "arguments": [ + { + "id": 12825, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12736, + "src": "4476:6:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "expression": { + "id": 12821, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4454:3:48", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 12822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4458:6:48", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "4454:10:48", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 12820, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4446:8:48", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_payable_$", + "typeString": "type(address payable)" + }, + "typeName": { + "id": 12819, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4446:8:48", + "stateMutability": "payable", + "typeDescriptions": {} + } + }, + "id": 12823, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4446:19:48", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 12824, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4466:9:48", + "memberName": "sendValue", + "nodeType": "MemberAccess", + "referencedDeclaration": 5279, + "src": "4446:29:48", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$attached_to$_t_address_payable_$", + "typeString": "function (address payable,uint256)" + } + }, + "id": 12826, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4446:37:48", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12827, + "nodeType": "ExpressionStatement", + "src": "4446:37:48" + }, + { + "eventCall": { + "arguments": [ + { + "expression": { + "id": 12829, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4518:3:48", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 12830, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4522:6:48", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "4518:10:48", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 12831, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12736, + "src": "4530:6:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 12828, + "name": "GasMoneyWithdrawal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12686, + "src": "4499:18:48", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 12832, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4499:38:48", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12833, + "nodeType": "EmitStatement", + "src": "4494:43:48" + } + ] + }, + "documentation": { + "id": 12734, + "nodeType": "StructuredDocumentation", + "src": "3071:227:48", + "text": " @notice Withdraws gas money.\n This functions is intended to be called by the bot to withdraw gas money.\n Inheriting contract should restrict who can call this with a public\n function." + }, + "id": 12835, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_withdrawGasMoney", + "nameLocation": "3312:17:48", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12737, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12736, + "mutability": "mutable", + "name": "amount", + "nameLocation": "3338:6:48", + "nodeType": "VariableDeclaration", + "scope": 12835, + "src": "3330:14:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12735, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3330:7:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3329:16:48" + }, + "returnParameters": { + "id": 12738, + "nodeType": "ParameterList", + "parameters": [], + "src": "3355:0:48" + }, + "scope": 12916, + "src": "3303:1241:48", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 12866, + "nodeType": "Block", + "src": "4818:196:48", + "statements": [ + { + "assignments": [ + 12845 + ], + "declarations": [ + { + "constant": false, + "id": 12845, + "mutability": "mutable", + "name": "$", + "nameLocation": "4852:1:48", + "nodeType": "VariableDeclaration", + "scope": 12866, + "src": "4828:25:48", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$12668_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage" + }, + "typeName": { + "id": 12844, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12843, + "name": "GasMoneyStorage", + "nameLocations": [ + "4828:15:48" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 12668, + "src": "4828:15:48" + }, + "referencedDeclaration": 12668, + "src": "4828:15:48", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$12668_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage" + } + }, + "visibility": "internal" + } + ], + "id": 12848, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12846, + "name": "_getGasMoneyStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12679, + "src": "4856:19:48", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_GasMoneyStorage_$12668_storage_ptr_$", + "typeString": "function () pure returns (struct GasMoneyManager.GasMoneyStorage storage pointer)" + } + }, + "id": 12847, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4856:21:48", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$12668_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4828:49:48" + }, + { + "expression": { + "id": 12853, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 12849, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12845, + "src": "4887:1:48", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$12668_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 12851, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "4889:16:48", + "memberName": "_withdrawalLimit", + "nodeType": "MemberAccess", + "referencedDeclaration": 12665, + "src": "4887:18:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 12852, + "name": "limit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12838, + "src": "4908:5:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4887:26:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12854, + "nodeType": "ExpressionStatement", + "src": "4887:26:48" + }, + { + "expression": { + "id": 12859, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 12855, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12845, + "src": "4923:1:48", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$12668_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 12857, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "4925:17:48", + "memberName": "_withdrawalPeriod", + "nodeType": "MemberAccess", + "referencedDeclaration": 12667, + "src": "4923:19:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 12858, + "name": "period", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12840, + "src": "4945:6:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4923:28:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 12860, + "nodeType": "ExpressionStatement", + "src": "4923:28:48" + }, + { + "eventCall": { + "arguments": [ + { + "id": 12862, + "name": "limit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12838, + "src": "4993:5:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 12863, + "name": "period", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12840, + "src": "5000:6:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 12861, + "name": "GasMoneyWithdrawalUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12693, + "src": "4967:25:48", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256)" + } + }, + "id": 12864, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4967:40:48", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 12865, + "nodeType": "EmitStatement", + "src": "4962:45:48" + } + ] + }, + "documentation": { + "id": 12836, + "nodeType": "StructuredDocumentation", + "src": "4550:191:48", + "text": " @notice Sets the gas money withdrawal limit and period.\n @param limit the withdrawal limit for the period\n @param period the withdrawal period in seconds" + }, + "id": 12867, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setGasMoneyWithdrawal", + "nameLocation": "4755:22:48", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12841, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12838, + "mutability": "mutable", + "name": "limit", + "nameLocation": "4786:5:48", + "nodeType": "VariableDeclaration", + "scope": 12867, + "src": "4778:13:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12837, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4778:7:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12840, + "mutability": "mutable", + "name": "period", + "nameLocation": "4801:6:48", + "nodeType": "VariableDeclaration", + "scope": 12867, + "src": "4793:14:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12839, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4793:7:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4777:31:48" + }, + "returnParameters": { + "id": 12842, + "nodeType": "ParameterList", + "parameters": [], + "src": "4818:0:48" + }, + "scope": 12916, + "src": "4746:268:48", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 12887, + "nodeType": "Block", + "src": "5273:124:48", + "statements": [ + { + "assignments": [ + 12877 + ], + "declarations": [ + { + "constant": false, + "id": 12877, + "mutability": "mutable", + "name": "$", + "nameLocation": "5307:1:48", + "nodeType": "VariableDeclaration", + "scope": 12887, + "src": "5283:25:48", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$12668_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage" + }, + "typeName": { + "id": 12876, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12875, + "name": "GasMoneyStorage", + "nameLocations": [ + "5283:15:48" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 12668, + "src": "5283:15:48" + }, + "referencedDeclaration": 12668, + "src": "5283:15:48", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$12668_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage" + } + }, + "visibility": "internal" + } + ], + "id": 12880, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12878, + "name": "_getGasMoneyStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12679, + "src": "5311:19:48", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_GasMoneyStorage_$12668_storage_ptr_$", + "typeString": "function () pure returns (struct GasMoneyManager.GasMoneyStorage storage pointer)" + } + }, + "id": 12879, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5311:21:48", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$12668_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5283:49:48" + }, + { + "expression": { + "components": [ + { + "expression": { + "id": 12881, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12877, + "src": "5350:1:48", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$12668_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 12882, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5352:16:48", + "memberName": "_withdrawalLimit", + "nodeType": "MemberAccess", + "referencedDeclaration": 12665, + "src": "5350:18:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 12883, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12877, + "src": "5370:1:48", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$12668_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 12884, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5372:17:48", + "memberName": "_withdrawalPeriod", + "nodeType": "MemberAccess", + "referencedDeclaration": 12667, + "src": "5370:19:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 12885, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5349:41:48", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "functionReturnParameters": 12874, + "id": 12886, + "nodeType": "Return", + "src": "5342:48:48" + } + ] + }, + "documentation": { + "id": 12868, + "nodeType": "StructuredDocumentation", + "src": "5020:143:48", + "text": " @notice Returns the gas money withdrawal restrictions.\n @return withdrawalLimit\n @return withdrawalPeriod" + }, + "functionSelector": "658db0af", + "id": 12888, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getGasMoneyWithdrawal", + "nameLocation": "5177:21:48", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12869, + "nodeType": "ParameterList", + "parameters": [], + "src": "5198:2:48" + }, + "returnParameters": { + "id": 12874, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12871, + "mutability": "mutable", + "name": "withdrawalLimit", + "nameLocation": "5230:15:48", + "nodeType": "VariableDeclaration", + "scope": 12888, + "src": "5222:23:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12870, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5222:7:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12873, + "mutability": "mutable", + "name": "withdrawalPeriod", + "nameLocation": "5255:16:48", + "nodeType": "VariableDeclaration", + "scope": 12888, + "src": "5247:24:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12872, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5247:7:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5221:51:48" + }, + "scope": 12916, + "src": "5168:229:48", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 12914, + "nodeType": "Block", + "src": "5816:147:48", + "statements": [ + { + "assignments": [ + 12900 + ], + "declarations": [ + { + "constant": false, + "id": 12900, + "mutability": "mutable", + "name": "$", + "nameLocation": "5850:1:48", + "nodeType": "VariableDeclaration", + "scope": 12914, + "src": "5826:25:48", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$12668_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage" + }, + "typeName": { + "id": 12899, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12898, + "name": "GasMoneyStorage", + "nameLocations": [ + "5826:15:48" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 12668, + "src": "5826:15:48" + }, + "referencedDeclaration": 12668, + "src": "5826:15:48", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$12668_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage" + } + }, + "visibility": "internal" + } + ], + "id": 12903, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 12901, + "name": "_getGasMoneyStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12679, + "src": "5854:19:48", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_GasMoneyStorage_$12668_storage_ptr_$", + "typeString": "function () pure returns (struct GasMoneyManager.GasMoneyStorage storage pointer)" + } + }, + "id": 12902, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5854:21:48", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$12668_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5826:49:48" + }, + { + "expression": { + "components": [ + { + "baseExpression": { + "expression": { + "id": 12904, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12900, + "src": "5893:1:48", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$12668_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 12905, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5895:22:48", + "memberName": "_withdrawalPeriodStart", + "nodeType": "MemberAccess", + "referencedDeclaration": 12659, + "src": "5893:24:48", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 12907, + "indexExpression": { + "id": 12906, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12891, + "src": "5918:7:48", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5893:33:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "baseExpression": { + "expression": { + "id": 12908, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12900, + "src": "5928:1:48", + "typeDescriptions": { + "typeIdentifier": "t_struct$_GasMoneyStorage_$12668_storage_ptr", + "typeString": "struct GasMoneyManager.GasMoneyStorage storage pointer" + } + }, + "id": 12909, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5930:16:48", + "memberName": "_withdrawnAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 12663, + "src": "5928:18:48", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 12911, + "indexExpression": { + "id": 12910, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12891, + "src": "5947:7:48", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5928:27:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 12912, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5892:64:48", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$", + "typeString": "tuple(uint256,uint256)" + } + }, + "functionReturnParameters": 12897, + "id": 12913, + "nodeType": "Return", + "src": "5885:71:48" + } + ] + }, + "documentation": { + "id": 12889, + "nodeType": "StructuredDocumentation", + "src": "5403:269:48", + "text": " @notice Returns the gas money withdrawal details for an account.\n @param account address of the account\n @return periodStart timestamp of the withdrawal period start\n @return withdrawnAmount amount withdrawn within the period" + }, + "functionSelector": "ee3b641f", + "id": 12915, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getGasMoneyWithdrawalForAccount", + "nameLocation": "5686:31:48", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12892, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12891, + "mutability": "mutable", + "name": "account", + "nameLocation": "5735:7:48", + "nodeType": "VariableDeclaration", + "scope": 12915, + "src": "5727:15:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12890, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5727:7:48", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5717:31:48" + }, + "returnParameters": { + "id": 12897, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12894, + "mutability": "mutable", + "name": "periodStart", + "nameLocation": "5778:11:48", + "nodeType": "VariableDeclaration", + "scope": 12915, + "src": "5770:19:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12893, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5770:7:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12896, + "mutability": "mutable", + "name": "withdrawnAmount", + "nameLocation": "5799:15:48", + "nodeType": "VariableDeclaration", + "scope": 12915, + "src": "5791:23:48", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12895, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5791:7:48", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5769:46:48" + }, + "scope": 12916, + "src": "5677:286:48", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + } + ], + "scope": 12917, + "src": "462:5503:48", + "usedErrors": [ + 603, + 606, + 12699, + 12705 + ], + "usedEvents": [ + 611, + 12686, + 12693 + ] + } + ], + "src": "81:5885:48" + }, + "id": 48 + }, + "contracts/account/ICMAccount.sol": { + "ast": { + "absolutePath": "contracts/account/ICMAccount.sol", + "exportedSymbols": { + "ICMAccount": [ + 12932 + ] + }, + "id": 12933, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 12918, + "literals": [ + "solidity", + "0.8", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "40:23:49" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "ICMAccount", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 12932, + "linearizedBaseContracts": [ + 12932 + ], + "name": "ICMAccount", + "nameLocation": "75:10:49", + "nodeType": "ContractDefinition", + "nodes": [ + { + "functionSelector": "33e1a223", + "id": 12931, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "initialize", + "nameLocation": "101:10:49", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12929, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12920, + "mutability": "mutable", + "name": "manager", + "nameLocation": "129:7:49", + "nodeType": "VariableDeclaration", + "scope": 12931, + "src": "121:15:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12919, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "121:7:49", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12922, + "mutability": "mutable", + "name": "bookingToken", + "nameLocation": "154:12:49", + "nodeType": "VariableDeclaration", + "scope": 12931, + "src": "146:20:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12921, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "146:7:49", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12924, + "mutability": "mutable", + "name": "prefundAmount", + "nameLocation": "184:13:49", + "nodeType": "VariableDeclaration", + "scope": 12931, + "src": "176:21:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 12923, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "176:7:49", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12926, + "mutability": "mutable", + "name": "owner", + "nameLocation": "215:5:49", + "nodeType": "VariableDeclaration", + "scope": 12931, + "src": "207:13:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12925, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "207:7:49", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12928, + "mutability": "mutable", + "name": "upgrader", + "nameLocation": "238:8:49", + "nodeType": "VariableDeclaration", + "scope": 12931, + "src": "230:16:49", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 12927, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "230:7:49", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "111:141:49" + }, + "returnParameters": { + "id": 12930, + "nodeType": "ParameterList", + "parameters": [], + "src": "261:0:49" + }, + "scope": 12932, + "src": "92:170:49", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 12933, + "src": "65:199:49", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "40:225:49" + }, + "id": 49 + }, + "contracts/booking-token/BookingToken.sol": { + "ast": { + "absolutePath": "contracts/booking-token/BookingToken.sol", + "exportedSymbols": { + "AccessControlUpgradeable": [ + 362 + ], + "Address": [ + 5481 + ], + "BookingToken": [ + 14541 + ], + "BookingTokenCancellable": [ + 15532 + ], + "CancellationProposalStatus": [ + 14549 + ], + "ERC721EnumerableUpgradeable": [ + 2586 + ], + "ERC721URIStorageUpgradeable": [ + 2756 + ], + "ERC721Upgradeable": [ + 2102 + ], + "ICMAccountManager": [ + 16920 + ], + "IERC20": [ + 4513 + ], + "IERC721": [ + 5067 + ], + "Initializable": [ + 840 + ], + "ReentrancyGuardUpgradeable": [ + 3107 + ], + "SafeERC20": [ + 4950 + ], + "UUPSUpgradeable": [ + 1022 + ] + }, + "id": 14542, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 12934, + "literals": [ + "solidity", + "0.8", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "39:23:50" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "id": 12936, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 14542, + "sourceUnit": 841, + "src": "78:98:50", + "symbolAliases": [ + { + "foreign": { + "id": 12935, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 840, + "src": "87:13:50", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", + "file": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", + "id": 12938, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 14542, + "sourceUnit": 1023, + "src": "177:102:50", + "symbolAliases": [ + { + "foreign": { + "id": 12937, + "name": "UUPSUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1022, + "src": "186:15:50", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol", + "file": "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol", + "id": 12941, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 14542, + "sourceUnit": 2103, + "src": "291:116:50", + "symbolAliases": [ + { + "foreign": { + "id": 12939, + "name": "ERC721Upgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2102, + "src": "300:17:50", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 12940, + "name": "IERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5067, + "src": "319:7:50", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol", + "file": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol", + "id": 12943, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 14542, + "sourceUnit": 2757, + "src": "408:138:50", + "symbolAliases": [ + { + "foreign": { + "id": 12942, + "name": "ERC721URIStorageUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2756, + "src": "417:27:50", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol", + "file": "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol", + "id": 12945, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 14542, + "sourceUnit": 2587, + "src": "547:138:50", + "symbolAliases": [ + { + "foreign": { + "id": 12944, + "name": "ERC721EnumerableUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2586, + "src": "556:27:50", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol", + "file": "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol", + "id": 12947, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 14542, + "sourceUnit": 363, + "src": "697:115:50", + "symbolAliases": [ + { + "foreign": { + "id": 12946, + "name": "AccessControlUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 362, + "src": "706:24:50", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/manager/ICMAccountManager.sol", + "file": "../manager/ICMAccountManager.sol", + "id": 12949, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 14542, + "sourceUnit": 16921, + "src": "835:69:50", + "symbolAliases": [ + { + "foreign": { + "id": 12948, + "name": "ICMAccountManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16920, + "src": "844:17:50", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/Address.sol", + "file": "@openzeppelin/contracts/utils/Address.sol", + "id": 12951, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 14542, + "sourceUnit": 5482, + "src": "915:68:50", + "symbolAliases": [ + { + "foreign": { + "id": 12950, + "name": "Address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5481, + "src": "924:7:50", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", + "id": 12954, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 14542, + "sourceUnit": 4951, + "src": "984:92:50", + "symbolAliases": [ + { + "foreign": { + "id": 12952, + "name": "SafeERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4950, + "src": "993:9:50", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 12953, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4513, + "src": "1004:6:50", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol", + "file": "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol", + "id": 12956, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 14542, + "sourceUnit": 3108, + "src": "1078:118:50", + "symbolAliases": [ + { + "foreign": { + "id": 12955, + "name": "ReentrancyGuardUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3107, + "src": "1087:26:50", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/booking-token/BookingTokenCancellable.sol", + "file": "./BookingTokenCancellable.sol", + "id": 12959, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 14542, + "sourceUnit": 15533, + "src": "1213:100:50", + "symbolAliases": [ + { + "foreign": { + "id": 12957, + "name": "BookingTokenCancellable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15532, + "src": "1222:23:50", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 12958, + "name": "CancellationProposalStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14549, + "src": "1247:26:50", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 12961, + "name": "Initializable", + "nameLocations": [ + "1792:13:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 840, + "src": "1792:13:50" + }, + "id": 12962, + "nodeType": "InheritanceSpecifier", + "src": "1792:13:50" + }, + { + "baseName": { + "id": 12963, + "name": "ERC721Upgradeable", + "nameLocations": [ + "1811:17:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2102, + "src": "1811:17:50" + }, + "id": 12964, + "nodeType": "InheritanceSpecifier", + "src": "1811:17:50" + }, + { + "baseName": { + "id": 12965, + "name": "ERC721EnumerableUpgradeable", + "nameLocations": [ + "1834:27:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2586, + "src": "1834:27:50" + }, + "id": 12966, + "nodeType": "InheritanceSpecifier", + "src": "1834:27:50" + }, + { + "baseName": { + "id": 12967, + "name": "ERC721URIStorageUpgradeable", + "nameLocations": [ + "1867:27:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2756, + "src": "1867:27:50" + }, + "id": 12968, + "nodeType": "InheritanceSpecifier", + "src": "1867:27:50" + }, + { + "baseName": { + "id": 12969, + "name": "AccessControlUpgradeable", + "nameLocations": [ + "1900:24:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 362, + "src": "1900:24:50" + }, + "id": 12970, + "nodeType": "InheritanceSpecifier", + "src": "1900:24:50" + }, + { + "baseName": { + "id": 12971, + "name": "ReentrancyGuardUpgradeable", + "nameLocations": [ + "1930:26:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3107, + "src": "1930:26:50" + }, + "id": 12972, + "nodeType": "InheritanceSpecifier", + "src": "1930:26:50" + }, + { + "baseName": { + "id": 12973, + "name": "UUPSUpgradeable", + "nameLocations": [ + "1962:15:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1022, + "src": "1962:15:50" + }, + "id": 12974, + "nodeType": "InheritanceSpecifier", + "src": "1962:15:50" + }, + { + "baseName": { + "id": 12975, + "name": "BookingTokenCancellable", + "nameLocations": [ + "1983:23:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 15532, + "src": "1983:23:50" + }, + "id": 12976, + "nodeType": "InheritanceSpecifier", + "src": "1983:23:50" + } + ], + "canonicalName": "BookingToken", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 12960, + "nodeType": "StructuredDocumentation", + "src": "1315:447:50", + "text": " @title BookingToken\n @notice Booking Token contract represents a booking done on the Camino Messenger.\n Suppliers can mint Booking Tokens and reserve them for a distributor address to\n buy.\n Booking Tokens can have zero price, meaning that the payment will be done\n off-chain.\n When a token is minted with a reservation, it can not be transferred until the\n expiration timestamp is reached or the token is bought." + }, + "fullyImplemented": true, + "id": 14541, + "linearizedBaseContracts": [ + 14541, + 15532, + 1022, + 3405, + 3107, + 362, + 2756, + 2586, + 5117, + 2102, + 3495, + 5145, + 3391, + 5067, + 3147, + 6389, + 3230, + 2802, + 840 + ], + "name": "BookingToken", + "nameLocation": "1772:12:50", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 12979, + "libraryName": { + "id": 12977, + "name": "Address", + "nameLocations": [ + "2019:7:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5481, + "src": "2019:7:50" + }, + "nodeType": "UsingForDirective", + "src": "2013:34:50", + "typeName": { + "id": 12978, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2031:15:50", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + }, + { + "global": false, + "id": 12983, + "libraryName": { + "id": 12980, + "name": "SafeERC20", + "nameLocations": [ + "2058:9:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4950, + "src": "2058:9:50" + }, + "nodeType": "UsingForDirective", + "src": "2052:27:50", + "typeName": { + "id": 12982, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 12981, + "name": "IERC20", + "nameLocations": [ + "2072:6:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4513, + "src": "2072:6:50" + }, + "referencedDeclaration": 4513, + "src": "2072:6:50", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + } + }, + { + "constant": true, + "id": 12986, + "mutability": "constant", + "name": "VERSION_MAJOR", + "nameLocation": "2274:13:50", + "nodeType": "VariableDeclaration", + "scope": 14541, + "src": "2258:33:50", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 12984, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "2258:6:50", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "value": { + "hexValue": "31", + "id": 12985, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2290:1:50", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 12989, + "mutability": "constant", + "name": "VERSION_MINOR", + "nameLocation": "2313:13:50", + "nodeType": "VariableDeclaration", + "scope": 14541, + "src": "2297:33:50", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 12987, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "2297:6:50", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "value": { + "hexValue": "30", + "id": 12988, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2329:1:50", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 12992, + "mutability": "constant", + "name": "VERSION_PATCH", + "nameLocation": "2352:13:50", + "nodeType": "VariableDeclaration", + "scope": 14541, + "src": "2336:33:50", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 12990, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "2336:6:50", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "value": { + "hexValue": "30", + "id": 12991, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2368:1:50", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "visibility": "internal" + }, + { + "body": { + "id": 13007, + "nodeType": "Block", + "src": "2867:69:50", + "statements": [ + { + "expression": { + "components": [ + { + "id": 13002, + "name": "VERSION_MAJOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12986, + "src": "2885:13:50", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "id": 13003, + "name": "VERSION_MINOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12989, + "src": "2900:13:50", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "id": 13004, + "name": "VERSION_PATCH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12992, + "src": "2915:13:50", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "id": 13005, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2884:45:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint16_$_t_uint16_$_t_uint16_$", + "typeString": "tuple(uint16,uint16,uint16)" + } + }, + "functionReturnParameters": 13001, + "id": 13006, + "nodeType": "Return", + "src": "2877:52:50" + } + ] + }, + "documentation": { + "id": 12993, + "nodeType": "StructuredDocumentation", + "src": "2376:394:50", + "text": " @notice Returns the semantic version of the contract.\n - no version() func: Legacy version without Cancellation support\n - v1.0.0: Version with Cancellation support\n @return major Major version (breaking changes)\n @return minor Minor version (backwards-compatible features)\n @return patch Patch version (backwards-compatible fixes)" + }, + "functionSelector": "54fd4d50", + "id": 13008, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "version", + "nameLocation": "2784:7:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 12994, + "nodeType": "ParameterList", + "parameters": [], + "src": "2791:2:50" + }, + "returnParameters": { + "id": 13001, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12996, + "mutability": "mutable", + "name": "major", + "nameLocation": "2832:5:50", + "nodeType": "VariableDeclaration", + "scope": 13008, + "src": "2825:12:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 12995, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "2825:6:50", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12998, + "mutability": "mutable", + "name": "minor", + "nameLocation": "2846:5:50", + "nodeType": "VariableDeclaration", + "scope": 13008, + "src": "2839:12:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 12997, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "2839:6:50", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13000, + "mutability": "mutable", + "name": "patch", + "nameLocation": "2860:5:50", + "nodeType": "VariableDeclaration", + "scope": 13008, + "src": "2853:12:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 12999, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "2853:6:50", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "2824:42:50" + }, + "scope": 14541, + "src": "2775:161:50", + "stateMutability": "pure", + "virtual": true, + "visibility": "external" + }, + { + "constant": true, + "documentation": { + "id": 13009, + "nodeType": "StructuredDocumentation", + "src": "3115:90:50", + "text": " @notice Upgrader role can upgrade the contract to a new implementation." + }, + "functionSelector": "f72c0d8b", + "id": 13014, + "mutability": "constant", + "name": "UPGRADER_ROLE", + "nameLocation": "3234:13:50", + "nodeType": "VariableDeclaration", + "scope": 14541, + "src": "3210:66:50", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 13010, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3210:7:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "55504752414445525f524f4c45", + "id": 13012, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3260:15:50", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3", + "typeString": "literal_string \"UPGRADER_ROLE\"" + }, + "value": "UPGRADER_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3", + "typeString": "literal_string \"UPGRADER_ROLE\"" + } + ], + "id": 13011, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3250:9:50", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 13013, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3250:26:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 13015, + "nodeType": "StructuredDocumentation", + "src": "3283:97:50", + "text": " @notice This role can set the mininum allowed expiration timestamp difference." + }, + "functionSelector": "2edf5e2c", + "id": 13020, + "mutability": "constant", + "name": "MIN_EXPIRATION_ADMIN_ROLE", + "nameLocation": "3409:25:50", + "nodeType": "VariableDeclaration", + "scope": 14541, + "src": "3385:90:50", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 13016, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3385:7:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "4d494e5f45585049524154494f4e5f41444d494e5f524f4c45", + "id": 13018, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3447:27:50", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3ae8648b97d3fd425d26286fc6bb1d50724a93a6a5763921dd2b90405a83b4a4", + "typeString": "literal_string \"MIN_EXPIRATION_ADMIN_ROLE\"" + }, + "value": "MIN_EXPIRATION_ADMIN_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_3ae8648b97d3fd425d26286fc6bb1d50724a93a6a5763921dd2b90405a83b4a4", + "typeString": "literal_string \"MIN_EXPIRATION_ADMIN_ROLE\"" + } + ], + "id": 13017, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3437:9:50", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 13019, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3437:38:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 13021, + "nodeType": "StructuredDocumentation", + "src": "3482:125:50", + "text": " @dev Special address for native payments.\n @notice Tokens are directly transferred to the recipient." + }, + "functionSelector": "a0f07c74", + "id": 13027, + "mutability": "constant", + "name": "NATIVE_PAYMENT", + "nameLocation": "3636:14:50", + "nodeType": "VariableDeclaration", + "scope": 14541, + "src": "3612:51:50", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13022, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3612:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": { + "arguments": [ + { + "hexValue": "30", + "id": 13025, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3661:1:50", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 13024, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3653:7:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 13023, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3653:7:50", + "typeDescriptions": {} + } + }, + "id": 13026, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3653:10:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 13028, + "nodeType": "StructuredDocumentation", + "src": "3670:265:50", + "text": " @dev Special address for offchain payments. The enum for this\n is defined in the Camino Messenger Protocol's\n cmp.types..IsoCurrency enum (currency.proto file).\n @notice A third-party service is used to handle payments." + }, + "functionSelector": "bfb26c06", + "id": 13034, + "mutability": "constant", + "name": "OFFCHAIN_PAYMENT", + "nameLocation": "3964:16:50", + "nodeType": "VariableDeclaration", + "scope": 14541, + "src": "3940:53:50", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13029, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3940:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": { + "arguments": [ + { + "hexValue": "31", + "id": 13032, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3991:1:50", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "id": 13031, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3983:7:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 13030, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3983:7:50", + "typeDescriptions": {} + } + }, + "id": 13033, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3983:10:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "canonicalName": "BookingToken.BookingStatus", + "id": 13040, + "members": [ + { + "id": 13035, + "name": "UNSPECIFIED", + "nameLocation": "4202:11:50", + "nodeType": "EnumValue", + "src": "4202:11:50" + }, + { + "id": 13036, + "name": "RESERVED", + "nameLocation": "4243:8:50", + "nodeType": "EnumValue", + "src": "4243:8:50" + }, + { + "id": 13037, + "name": "RESERVATION_EXPIRED", + "nameLocation": "4266:19:50", + "nodeType": "EnumValue", + "src": "4266:19:50" + }, + { + "id": 13038, + "name": "BOUGHT", + "nameLocation": "4300:6:50", + "nodeType": "EnumValue", + "src": "4300:6:50" + }, + { + "id": 13039, + "name": "CANCELLED", + "nameLocation": "4321:9:50", + "nodeType": "EnumValue", + "src": "4321:9:50" + } + ], + "name": "BookingStatus", + "nameLocation": "4178:13:50", + "nodeType": "EnumDefinition", + "src": "4173:168:50" + }, + { + "canonicalName": "BookingToken.TokenReservation", + "id": 13056, + "members": [ + { + "constant": false, + "id": 13042, + "mutability": "mutable", + "name": "reservedFor", + "nameLocation": "4416:11:50", + "nodeType": "VariableDeclaration", + "scope": 13056, + "src": "4408:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13041, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4408:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13044, + "mutability": "mutable", + "name": "supplier", + "nameLocation": "4490:8:50", + "nodeType": "VariableDeclaration", + "scope": 13056, + "src": "4482:16:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13043, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4482:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13046, + "mutability": "mutable", + "name": "expirationTimestamp", + "nameLocation": "4588:19:50", + "nodeType": "VariableDeclaration", + "scope": 13056, + "src": "4580:27:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13045, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4580:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13048, + "mutability": "mutable", + "name": "price", + "nameLocation": "4667:5:50", + "nodeType": "VariableDeclaration", + "scope": 13056, + "src": "4659:13:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13047, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4659:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13051, + "mutability": "mutable", + "name": "paymentToken", + "nameLocation": "4732:12:50", + "nodeType": "VariableDeclaration", + "scope": 13056, + "src": "4725:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 13050, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 13049, + "name": "IERC20", + "nameLocations": [ + "4725:6:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4513, + "src": "4725:6:50" + }, + "referencedDeclaration": 4513, + "src": "4725:6:50", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13053, + "mutability": "mutable", + "name": "offchainPaymentCurrency", + "nameLocation": "4806:23:50", + "nodeType": "VariableDeclaration", + "scope": 13056, + "src": "4798:31:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13052, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4798:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13055, + "mutability": "mutable", + "name": "cancellable", + "nameLocation": "4873:11:50", + "nodeType": "VariableDeclaration", + "scope": 13056, + "src": "4868:16:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 13054, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4868:4:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "name": "TokenReservation", + "nameLocation": "4381:16:50", + "nodeType": "StructDefinition", + "scope": 14541, + "src": "4374:555:50", + "visibility": "public" + }, + { + "canonicalName": "BookingToken.BookingTokenStorage", + "documentation": { + "id": 13057, + "nodeType": "StructuredDocumentation", + "src": "4935:74:50", + "text": "@custom:storage-location erc7201:camino.messenger.storage.BookingToken" + }, + "id": 13074, + "members": [ + { + "constant": false, + "id": 13059, + "mutability": "mutable", + "name": "_manager", + "nameLocation": "5095:8:50", + "nodeType": "VariableDeclaration", + "scope": 13074, + "src": "5087:16:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13058, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5087:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13061, + "mutability": "mutable", + "name": "_nextTokenId", + "nameLocation": "5172:12:50", + "nodeType": "VariableDeclaration", + "scope": 13074, + "src": "5164:20:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13060, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5164:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13063, + "mutability": "mutable", + "name": "_minExpirationTimestampDiff", + "nameLocation": "5261:27:50", + "nodeType": "VariableDeclaration", + "scope": 13074, + "src": "5253:35:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13062, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5253:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13068, + "mutability": "mutable", + "name": "_reservations", + "nameLocation": "5406:13:50", + "nodeType": "VariableDeclaration", + "scope": 13074, + "src": "5344:75:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenReservation_$13056_storage_$", + "typeString": "mapping(uint256 => struct BookingToken.TokenReservation)" + }, + "typeName": { + "id": 13067, + "keyName": "tokenId", + "keyNameLocation": "5360:7:50", + "keyType": { + "id": 13064, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5352:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "5344:61:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenReservation_$13056_storage_$", + "typeString": "mapping(uint256 => struct BookingToken.TokenReservation)" + }, + "valueName": "tokenReservation", + "valueNameLocation": "5388:16:50", + "valueType": { + "id": 13066, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 13065, + "name": "TokenReservation", + "nameLocations": [ + "5371:16:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13056, + "src": "5371:16:50" + }, + "referencedDeclaration": 13056, + "src": "5371:16:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$13056_storage_ptr", + "typeString": "struct BookingToken.TokenReservation" + } + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13073, + "mutability": "mutable", + "name": "_bookingStatus", + "nameLocation": "5517:14:50", + "nodeType": "VariableDeclaration", + "scope": 13074, + "src": "5468:63:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_enum$_BookingStatus_$13040_$", + "typeString": "mapping(uint256 => enum BookingToken.BookingStatus)" + }, + "typeName": { + "id": 13072, + "keyName": "tokenId", + "keyNameLocation": "5484:7:50", + "keyType": { + "id": 13069, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5476:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "5468:48:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_enum$_BookingStatus_$13040_$", + "typeString": "mapping(uint256 => enum BookingToken.BookingStatus)" + }, + "valueName": "status", + "valueNameLocation": "5509:6:50", + "valueType": { + "id": 13071, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 13070, + "name": "BookingStatus", + "nameLocations": [ + "5495:13:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13040, + "src": "5495:13:50" + }, + "referencedDeclaration": 13040, + "src": "5495:13:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + } + }, + "visibility": "internal" + } + ], + "name": "BookingTokenStorage", + "nameLocation": "5021:19:50", + "nodeType": "StructDefinition", + "scope": 14541, + "src": "5014:524:50", + "visibility": "public" + }, + { + "constant": true, + "id": 13077, + "mutability": "constant", + "name": "BookingTokenStorageLocation", + "nameLocation": "5690:27:50", + "nodeType": "VariableDeclaration", + "scope": 14541, + "src": "5665:129:50", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 13075, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5665:7:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307839646239643430356266313536383363653833353630376231663062343233646331343834643434626239643561663634613438336661346166643832393030", + "id": 13076, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5728:66:50", + "typeDescriptions": { + "typeIdentifier": "t_rational_71341447259705531122357740315267326075613245902197256147529333680381172918528_by_1", + "typeString": "int_const 7134...(69 digits omitted)...8528" + }, + "value": "0x9db9d405bf15683ce835607b1f0b423dc1484d44bb9d5af64a483fa4afd82900" + }, + "visibility": "private" + }, + { + "body": { + "id": 13084, + "nodeType": "Block", + "src": "5890:86:50", + "statements": [ + { + "AST": { + "nativeSrc": "5909:61:50", + "nodeType": "YulBlock", + "src": "5909:61:50", + "statements": [ + { + "nativeSrc": "5923:37:50", + "nodeType": "YulAssignment", + "src": "5923:37:50", + "value": { + "name": "BookingTokenStorageLocation", + "nativeSrc": "5933:27:50", + "nodeType": "YulIdentifier", + "src": "5933:27:50" + }, + "variableNames": [ + { + "name": "$.slot", + "nativeSrc": "5923:6:50", + "nodeType": "YulIdentifier", + "src": "5923:6:50" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 13081, + "isOffset": false, + "isSlot": true, + "src": "5923:6:50", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 13077, + "isOffset": false, + "isSlot": false, + "src": "5933:27:50", + "valueSize": 1 + } + ], + "id": 13083, + "nodeType": "InlineAssembly", + "src": "5900:70:50" + } + ] + }, + "id": 13085, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getBookingTokenStorage", + "nameLocation": "5810:23:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 13078, + "nodeType": "ParameterList", + "parameters": [], + "src": "5833:2:50" + }, + "returnParameters": { + "id": 13082, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13081, + "mutability": "mutable", + "name": "$", + "nameLocation": "5887:1:50", + "nodeType": "VariableDeclaration", + "scope": 13085, + "src": "5859:29:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + }, + "typeName": { + "id": 13080, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 13079, + "name": "BookingTokenStorage", + "nameLocations": [ + "5859:19:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13074, + "src": "5859:19:50" + }, + "referencedDeclaration": 13074, + "src": "5859:19:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + } + }, + "visibility": "internal" + } + ], + "src": "5858:31:50" + }, + "scope": 14541, + "src": "5801:175:50", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "anonymous": false, + "documentation": { + "id": 13086, + "nodeType": "StructuredDocumentation", + "src": "6155:334:50", + "text": " @notice Event emitted when a token is reserved.\n @param tokenId token id\n @param reservedFor reserved for address\n @param supplier supplier address\n @param expirationTimestamp expiration timestamp\n @param price price of the token\n @param paymentToken payment token address" + }, + "eventSelector": "1424af4f4cb40d8a1a2d00b2324cb122ba73eac426f98b62c33ff31ca045f067", + "id": 13105, + "name": "TokenReserved", + "nameLocation": "6500:13:50", + "nodeType": "EventDefinition", + "parameters": { + "id": 13104, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13088, + "indexed": true, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "6539:7:50", + "nodeType": "VariableDeclaration", + "scope": 13105, + "src": "6523:23:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13087, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6523:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13090, + "indexed": true, + "mutability": "mutable", + "name": "reservedFor", + "nameLocation": "6572:11:50", + "nodeType": "VariableDeclaration", + "scope": 13105, + "src": "6556:27:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13089, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6556:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13092, + "indexed": true, + "mutability": "mutable", + "name": "supplier", + "nameLocation": "6609:8:50", + "nodeType": "VariableDeclaration", + "scope": 13105, + "src": "6593:24:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13091, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6593:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13094, + "indexed": false, + "mutability": "mutable", + "name": "expirationTimestamp", + "nameLocation": "6635:19:50", + "nodeType": "VariableDeclaration", + "scope": 13105, + "src": "6627:27:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13093, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6627:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13096, + "indexed": false, + "mutability": "mutable", + "name": "price", + "nameLocation": "6672:5:50", + "nodeType": "VariableDeclaration", + "scope": 13105, + "src": "6664:13:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13095, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6664:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13099, + "indexed": false, + "mutability": "mutable", + "name": "paymentToken", + "nameLocation": "6694:12:50", + "nodeType": "VariableDeclaration", + "scope": 13105, + "src": "6687:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 13098, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 13097, + "name": "IERC20", + "nameLocations": [ + "6687:6:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4513, + "src": "6687:6:50" + }, + "referencedDeclaration": 4513, + "src": "6687:6:50", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13101, + "indexed": false, + "mutability": "mutable", + "name": "offchainPaymentCurrency", + "nameLocation": "6724:23:50", + "nodeType": "VariableDeclaration", + "scope": 13105, + "src": "6716:31:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13100, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6716:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13103, + "indexed": false, + "mutability": "mutable", + "name": "cancellable", + "nameLocation": "6762:11:50", + "nodeType": "VariableDeclaration", + "scope": 13105, + "src": "6757:16:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 13102, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6757:4:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "6513:266:50" + }, + "src": "6494:286:50" + }, + { + "anonymous": false, + "documentation": { + "id": 13106, + "nodeType": "StructuredDocumentation", + "src": "6786:136:50", + "text": " @notice Event emitted when a token is bought.\n @param tokenId token id\n @param buyer buyer address" + }, + "eventSelector": "a751fb02c318279a22135a408663ae08ea45eafa950a4351c14ae543cbb95040", + "id": 13112, + "name": "TokenBought", + "nameLocation": "6933:11:50", + "nodeType": "EventDefinition", + "parameters": { + "id": 13111, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13108, + "indexed": true, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "6961:7:50", + "nodeType": "VariableDeclaration", + "scope": 13112, + "src": "6945:23:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13107, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6945:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13110, + "indexed": true, + "mutability": "mutable", + "name": "buyer", + "nameLocation": "6986:5:50", + "nodeType": "VariableDeclaration", + "scope": 13112, + "src": "6970:21:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13109, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6970:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6944:48:50" + }, + "src": "6927:66:50" + }, + { + "anonymous": false, + "documentation": { + "id": 13113, + "nodeType": "StructuredDocumentation", + "src": "6999:103:50", + "text": " @notice Event emitted when a token is expired.\n @param tokenId token id" + }, + "eventSelector": "c47ab59d5c41a0220b594ece6f7e87863b07f8b33579130f3a59b31d8f7b6eed", + "id": 13117, + "name": "TokenReservationExpired", + "nameLocation": "7113:23:50", + "nodeType": "EventDefinition", + "parameters": { + "id": 13116, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13115, + "indexed": true, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "7153:7:50", + "nodeType": "VariableDeclaration", + "scope": 13117, + "src": "7137:23:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13114, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7137:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7136:25:50" + }, + "src": "7107:55:50" + }, + { + "documentation": { + "id": 13118, + "nodeType": "StructuredDocumentation", + "src": "7341:147:50", + "text": " @notice Error for expiration timestamp too soon. It must be at least\n `_minExpirationTimestampDiff` seconds in the future." + }, + "errorSelector": "999f7d70", + "id": 13124, + "name": "ExpirationTimestampTooSoon", + "nameLocation": "7499:26:50", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 13123, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13120, + "mutability": "mutable", + "name": "expirationTimestamp", + "nameLocation": "7534:19:50", + "nodeType": "VariableDeclaration", + "scope": 13124, + "src": "7526:27:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13119, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7526:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13122, + "mutability": "mutable", + "name": "minExpirationTimestampDiff", + "nameLocation": "7563:26:50", + "nodeType": "VariableDeclaration", + "scope": 13124, + "src": "7555:34:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13121, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7555:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7525:65:50" + }, + "src": "7493:98:50" + }, + { + "documentation": { + "id": 13125, + "nodeType": "StructuredDocumentation", + "src": "7597:100:50", + "text": " @notice Address is not a CM Account.\n @param account account address" + }, + "errorSelector": "80145753", + "id": 13129, + "name": "NotCMAccount", + "nameLocation": "7708:12:50", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 13128, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13127, + "mutability": "mutable", + "name": "account", + "nameLocation": "7729:7:50", + "nodeType": "VariableDeclaration", + "scope": 13129, + "src": "7721:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13126, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7721:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "7720:17:50" + }, + "src": "7702:36:50" + }, + { + "documentation": { + "id": 13130, + "nodeType": "StructuredDocumentation", + "src": "7744:146:50", + "text": " @notice ReservedFor and buyer mismatch.\n @param reservedFor reserved for address\n @param buyer buyer address" + }, + "errorSelector": "4cc7538a", + "id": 13136, + "name": "ReservationMismatch", + "nameLocation": "7901:19:50", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 13135, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13132, + "mutability": "mutable", + "name": "reservedFor", + "nameLocation": "7929:11:50", + "nodeType": "VariableDeclaration", + "scope": 13136, + "src": "7921:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13131, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7921:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13134, + "mutability": "mutable", + "name": "buyer", + "nameLocation": "7950:5:50", + "nodeType": "VariableDeclaration", + "scope": 13136, + "src": "7942:13:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13133, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7942:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "7920:36:50" + }, + "src": "7895:62:50" + }, + { + "documentation": { + "id": 13137, + "nodeType": "StructuredDocumentation", + "src": "7963:140:50", + "text": " @notice Reservation expired.\n @param tokenId token id\n @param expirationTimestamp expiration timestamp" + }, + "errorSelector": "527ae76e", + "id": 13143, + "name": "ReservationExpired", + "nameLocation": "8114:18:50", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 13142, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13139, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "8141:7:50", + "nodeType": "VariableDeclaration", + "scope": 13143, + "src": "8133:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13138, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8133:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13141, + "mutability": "mutable", + "name": "expirationTimestamp", + "nameLocation": "8158:19:50", + "nodeType": "VariableDeclaration", + "scope": 13143, + "src": "8150:27:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13140, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8150:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8132:46:50" + }, + "src": "8108:71:50" + }, + { + "documentation": { + "id": 13144, + "nodeType": "StructuredDocumentation", + "src": "8185:138:50", + "text": " @notice Incorrect price.\n @param price price of the token\n @param reservationPrice reservation price" + }, + "errorSelector": "05158454", + "id": 13150, + "name": "IncorrectPrice", + "nameLocation": "8334:14:50", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 13149, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13146, + "mutability": "mutable", + "name": "price", + "nameLocation": "8357:5:50", + "nodeType": "VariableDeclaration", + "scope": 13150, + "src": "8349:13:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13145, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8349:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13148, + "mutability": "mutable", + "name": "reservationPrice", + "nameLocation": "8372:16:50", + "nodeType": "VariableDeclaration", + "scope": 13150, + "src": "8364:24:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13147, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8364:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8348:41:50" + }, + "src": "8328:62:50" + }, + { + "documentation": { + "id": 13151, + "nodeType": "StructuredDocumentation", + "src": "8396:131:50", + "text": " @notice Supplier is not the owner.\n @param tokenId token id\n @param supplier supplier address" + }, + "errorSelector": "81e8a2c8", + "id": 13157, + "name": "SupplierIsNotOwner", + "nameLocation": "8538:18:50", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 13156, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13153, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "8565:7:50", + "nodeType": "VariableDeclaration", + "scope": 13157, + "src": "8557:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13152, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8557:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13155, + "mutability": "mutable", + "name": "supplier", + "nameLocation": "8582:8:50", + "nodeType": "VariableDeclaration", + "scope": 13157, + "src": "8574:16:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13154, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8574:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "8556:35:50" + }, + "src": "8532:60:50" + }, + { + "documentation": { + "id": 13158, + "nodeType": "StructuredDocumentation", + "src": "8598:157:50", + "text": " @notice Token is reserved and can not be transferred.\n @param tokenId token id\n @param reservedFor reserved for address" + }, + "errorSelector": "d4cde2af", + "id": 13164, + "name": "TokenIsReserved", + "nameLocation": "8766:15:50", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 13163, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13160, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "8790:7:50", + "nodeType": "VariableDeclaration", + "scope": 13164, + "src": "8782:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13159, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8782:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13162, + "mutability": "mutable", + "name": "reservedFor", + "nameLocation": "8807:11:50", + "nodeType": "VariableDeclaration", + "scope": 13164, + "src": "8799:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13161, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8799:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "8781:38:50" + }, + "src": "8760:60:50" + }, + { + "documentation": { + "id": 13165, + "nodeType": "StructuredDocumentation", + "src": "8826:262:50", + "text": " @notice Insufficient allowance to transfer the ERC20 token to the supplier.\n @param sender msg.sender\n @param paymentToken payment token address\n @param price price of the token\n @param allowance allowance amount" + }, + "errorSelector": "91beda24", + "id": 13176, + "name": "InsufficientAllowance", + "nameLocation": "9099:21:50", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 13175, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13167, + "mutability": "mutable", + "name": "sender", + "nameLocation": "9129:6:50", + "nodeType": "VariableDeclaration", + "scope": 13176, + "src": "9121:14:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13166, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9121:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13170, + "mutability": "mutable", + "name": "paymentToken", + "nameLocation": "9144:12:50", + "nodeType": "VariableDeclaration", + "scope": 13176, + "src": "9137:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 13169, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 13168, + "name": "IERC20", + "nameLocations": [ + "9137:6:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4513, + "src": "9137:6:50" + }, + "referencedDeclaration": 4513, + "src": "9137:6:50", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13172, + "mutability": "mutable", + "name": "price", + "nameLocation": "9166:5:50", + "nodeType": "VariableDeclaration", + "scope": 13176, + "src": "9158:13:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13171, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9158:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13174, + "mutability": "mutable", + "name": "allowance", + "nameLocation": "9181:9:50", + "nodeType": "VariableDeclaration", + "scope": 13176, + "src": "9173:17:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13173, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9173:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9120:71:50" + }, + "src": "9093:99:50" + }, + { + "documentation": { + "id": 13177, + "nodeType": "StructuredDocumentation", + "src": "9198:114:50", + "text": " @notice Invalid token status.\n @param tokenId token id\n @param status status" + }, + "errorSelector": "e4e3b53b", + "id": 13184, + "name": "InvalidTokenStatus", + "nameLocation": "9323:18:50", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 13183, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13179, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "9350:7:50", + "nodeType": "VariableDeclaration", + "scope": 13184, + "src": "9342:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13178, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9342:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13182, + "mutability": "mutable", + "name": "status", + "nameLocation": "9373:6:50", + "nodeType": "VariableDeclaration", + "scope": 13184, + "src": "9359:20:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + }, + "typeName": { + "id": 13181, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 13180, + "name": "BookingStatus", + "nameLocations": [ + "9359:13:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13040, + "src": "9359:13:50" + }, + "referencedDeclaration": 13040, + "src": "9359:13:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "visibility": "internal" + } + ], + "src": "9341:39:50" + }, + "src": "9317:64:50" + }, + { + "documentation": { + "id": 13185, + "nodeType": "StructuredDocumentation", + "src": "9387:229:50", + "text": " @notice Unexpected offchain payment currency. Thrown when offchain payment currency is provided\n but payment token is not address(1).\n @param offchainPaymentCurrency offchain payment currency" + }, + "errorSelector": "8fe757e7", + "id": 13189, + "name": "UnexpectedOffchainPaymentCurrency", + "nameLocation": "9627:33:50", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 13188, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13187, + "mutability": "mutable", + "name": "offchainPaymentCurrency", + "nameLocation": "9669:23:50", + "nodeType": "VariableDeclaration", + "scope": 13189, + "src": "9661:31:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13186, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9661:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9660:33:50" + }, + "src": "9621:73:50" + }, + { + "documentation": { + "id": 13190, + "nodeType": "StructuredDocumentation", + "src": "9700:127:50", + "text": " @notice Error for when there is unexpected native payment.\n @param amount The unexpected amount" + }, + "errorSelector": "47d67299", + "id": 13194, + "name": "UnexpectedNativePayment", + "nameLocation": "9838:23:50", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 13193, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13192, + "mutability": "mutable", + "name": "amount", + "nameLocation": "9870:6:50", + "nodeType": "VariableDeclaration", + "scope": 13194, + "src": "9862:14:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13191, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9862:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9861:16:50" + }, + "src": "9832:46:50" + }, + { + "body": { + "id": 13204, + "nodeType": "Block", + "src": "10153:53:50", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 13200, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13197, + "src": "10180:7:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 13199, + "name": "requireCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13985, + "src": "10163:16:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$", + "typeString": "function (address) view" + } + }, + "id": 13201, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10163:25:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13202, + "nodeType": "ExpressionStatement", + "src": "10163:25:50" + }, + { + "id": 13203, + "nodeType": "PlaceholderStatement", + "src": "10198:1:50" + } + ] + }, + "documentation": { + "id": 13195, + "nodeType": "StructuredDocumentation", + "src": "10057:51:50", + "text": " @notice Only CMAccount modifier." + }, + "id": 13205, + "name": "onlyCMAccount", + "nameLocation": "10122:13:50", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 13198, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13197, + "mutability": "mutable", + "name": "account", + "nameLocation": "10144:7:50", + "nodeType": "VariableDeclaration", + "scope": 13205, + "src": "10136:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13196, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10136:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "10135:17:50" + }, + "src": "10113:93:50", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 13261, + "nodeType": "Block", + "src": "10481:433:50", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "426f6f6b696e67546f6b656e", + "id": 13217, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10505:14:50", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c82f203b9a6936c0927df3e5d1e1d79cc03993f5b9d036531645e367a8731e54", + "typeString": "literal_string \"BookingToken\"" + }, + "value": "BookingToken" + }, + { + "hexValue": "54524950", + "id": 13218, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10521:6:50", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a4c10d022e772c8807f91f4997696f912c6a7b9dd3379bfe54427774ef808e9f", + "typeString": "literal_string \"TRIP\"" + }, + "value": "TRIP" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c82f203b9a6936c0927df3e5d1e1d79cc03993f5b9d036531645e367a8731e54", + "typeString": "literal_string \"BookingToken\"" + }, + { + "typeIdentifier": "t_stringliteral_a4c10d022e772c8807f91f4997696f912c6a7b9dd3379bfe54427774ef808e9f", + "typeString": "literal_string \"TRIP\"" + } + ], + "id": 13216, + "name": "__ERC721_init", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1109, + "src": "10491:13:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory,string memory)" + } + }, + "id": 13219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10491:37:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13220, + "nodeType": "ExpressionStatement", + "src": "10491:37:50" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 13221, + "name": "__ERC721Enumerable_init", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2165, + "src": "10538:23:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 13222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10538:25:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13223, + "nodeType": "ExpressionStatement", + "src": "10538:25:50" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 13224, + "name": "__ERC721URIStorage_init", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2637, + "src": "10573:23:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 13225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10573:25:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13226, + "nodeType": "ExpressionStatement", + "src": "10573:25:50" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 13227, + "name": "__AccessControl_init", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 63, + "src": "10608:20:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 13228, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10608:22:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13229, + "nodeType": "ExpressionStatement", + "src": "10608:22:50" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 13230, + "name": "__UUPSUpgradeable_init", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 894, + "src": "10640:22:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 13231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10640:24:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13232, + "nodeType": "ExpressionStatement", + "src": "10640:24:50" + }, + { + "expression": { + "arguments": [ + { + "id": 13234, + "name": "DEFAULT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28, + "src": "10686:18:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 13235, + "name": "defaultAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13209, + "src": "10706:12:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 13233, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 315, + "src": "10675:10:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 13236, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10675:44:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 13237, + "nodeType": "ExpressionStatement", + "src": "10675:44:50" + }, + { + "expression": { + "arguments": [ + { + "id": 13239, + "name": "UPGRADER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13014, + "src": "10740:13:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 13240, + "name": "upgrader", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13211, + "src": "10755:8:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 13238, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 315, + "src": "10729:10:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 13241, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10729:35:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 13242, + "nodeType": "ExpressionStatement", + "src": "10729:35:50" + }, + { + "assignments": [ + 13245 + ], + "declarations": [ + { + "constant": false, + "id": 13245, + "mutability": "mutable", + "name": "$", + "nameLocation": "10803:1:50", + "nodeType": "VariableDeclaration", + "scope": 13261, + "src": "10775:29:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + }, + "typeName": { + "id": 13244, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 13243, + "name": "BookingTokenStorage", + "nameLocations": [ + "10775:19:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13074, + "src": "10775:19:50" + }, + "referencedDeclaration": 13074, + "src": "10775:19:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + } + }, + "visibility": "internal" + } + ], + "id": 13248, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 13246, + "name": "_getBookingTokenStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13085, + "src": "10807:23:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_BookingTokenStorage_$13074_storage_ptr_$", + "typeString": "function () pure returns (struct BookingToken.BookingTokenStorage storage pointer)" + } + }, + "id": 13247, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10807:25:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10775:57:50" + }, + { + "expression": { + "id": 13253, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 13249, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13245, + "src": "10843:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 13251, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "10845:8:50", + "memberName": "_manager", + "nodeType": "MemberAccess", + "referencedDeclaration": 13059, + "src": "10843:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 13252, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13207, + "src": "10856:7:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10843:20:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 13254, + "nodeType": "ExpressionStatement", + "src": "10843:20:50" + }, + { + "expression": { + "id": 13259, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 13255, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13245, + "src": "10873:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 13257, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "10875:27:50", + "memberName": "_minExpirationTimestampDiff", + "nodeType": "MemberAccess", + "referencedDeclaration": 13063, + "src": "10873:29:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "3630", + "id": 13258, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10905:2:50", + "typeDescriptions": { + "typeIdentifier": "t_rational_60_by_1", + "typeString": "int_const 60" + }, + "value": "60" + }, + "src": "10873:34:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 13260, + "nodeType": "ExpressionStatement", + "src": "10873:34:50" + } + ] + }, + "functionSelector": "c0c53b8b", + "id": 13262, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 13214, + "kind": "modifierInvocation", + "modifierName": { + "id": 13213, + "name": "initializer", + "nameLocations": [ + "10469:11:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 694, + "src": "10469:11:50" + }, + "nodeType": "ModifierInvocation", + "src": "10469:11:50" + } + ], + "name": "initialize", + "nameLocation": "10394:10:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 13212, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13207, + "mutability": "mutable", + "name": "manager", + "nameLocation": "10413:7:50", + "nodeType": "VariableDeclaration", + "scope": 13262, + "src": "10405:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13206, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10405:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13209, + "mutability": "mutable", + "name": "defaultAdmin", + "nameLocation": "10430:12:50", + "nodeType": "VariableDeclaration", + "scope": 13262, + "src": "10422:20:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13208, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10422:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13211, + "mutability": "mutable", + "name": "upgrader", + "nameLocation": "10452:8:50", + "nodeType": "VariableDeclaration", + "scope": 13262, + "src": "10444:16:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13210, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10444:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "10404:57:50" + }, + "returnParameters": { + "id": 13215, + "nodeType": "ParameterList", + "parameters": [], + "src": "10481:0:50" + }, + "scope": 14541, + "src": "10385:529:50", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 13281, + "nodeType": "Block", + "src": "11476:50:50", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 13277, + "name": "newName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13265, + "src": "11500:7:50", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "id": 13278, + "name": "newSymbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13267, + "src": "11509:9:50", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 13276, + "name": "__ERC721_init", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1109, + "src": "11486:13:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory,string memory)" + } + }, + "id": 13279, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11486:33:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13280, + "nodeType": "ExpressionStatement", + "src": "11486:33:50" + } + ] + }, + "documentation": { + "id": 13263, + "nodeType": "StructuredDocumentation", + "src": "11093:231:50", + "text": " @notice This function allows reinitializing the contract to update the name and symbol\n @dev Only callable by DEFAULT_ADMIN_ROLE\n @param newName New token name\n @param newSymbol New token symbol" + }, + "functionSelector": "91da124c", + "id": 13282, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "hexValue": "32", + "id": 13270, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11444:1:50", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + } + ], + "id": 13271, + "kind": "modifierInvocation", + "modifierName": { + "id": 13269, + "name": "reinitializer", + "nameLocations": [ + "11430:13:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 741, + "src": "11430:13:50" + }, + "nodeType": "ModifierInvocation", + "src": "11430:16:50" + }, + { + "arguments": [ + { + "id": 13273, + "name": "DEFAULT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28, + "src": "11456:18:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 13274, + "kind": "modifierInvocation", + "modifierName": { + "id": 13272, + "name": "onlyRole", + "nameLocations": [ + "11447:8:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "11447:8:50" + }, + "nodeType": "ModifierInvocation", + "src": "11447:28:50" + } + ], + "name": "reinitializeV2", + "nameLocation": "11338:14:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 13268, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13265, + "mutability": "mutable", + "name": "newName", + "nameLocation": "11376:7:50", + "nodeType": "VariableDeclaration", + "scope": 13282, + "src": "11362:21:50", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 13264, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "11362:6:50", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13267, + "mutability": "mutable", + "name": "newSymbol", + "nameLocation": "11407:9:50", + "nodeType": "VariableDeclaration", + "scope": 13282, + "src": "11393:23:50", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 13266, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "11393:6:50", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "11352:70:50" + }, + "returnParameters": { + "id": 13275, + "nodeType": "ParameterList", + "parameters": [], + "src": "11476:0:50" + }, + "scope": 14541, + "src": "11329:197:50", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 976 + ], + "body": { + "id": 13292, + "nodeType": "Block", + "src": "11889:2:50", + "statements": [] + }, + "documentation": { + "id": 13283, + "nodeType": "StructuredDocumentation", + "src": "11705:75:50", + "text": " @notice Function to authorize an upgrade for UUPS proxy." + }, + "id": 13293, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 13289, + "name": "UPGRADER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13014, + "src": "11874:13:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 13290, + "kind": "modifierInvocation", + "modifierName": { + "id": 13288, + "name": "onlyRole", + "nameLocations": [ + "11865:8:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "11865:8:50" + }, + "nodeType": "ModifierInvocation", + "src": "11865:23:50" + } + ], + "name": "_authorizeUpgrade", + "nameLocation": "11794:17:50", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 13287, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "11856:8:50" + }, + "parameters": { + "id": 13286, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13285, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "11820:17:50", + "nodeType": "VariableDeclaration", + "scope": 13293, + "src": "11812:25:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13284, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11812:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "11811:27:50" + }, + "returnParameters": { + "id": 13291, + "nodeType": "ParameterList", + "parameters": [], + "src": "11889:0:50" + }, + "scope": 14541, + "src": "11785:106:50", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 13413, + "nodeType": "Block", + "src": "12752:1646:50", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 13317, + "name": "reservedFor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13296, + "src": "12829:11:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 13316, + "name": "requireCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13985, + "src": "12812:16:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$__$", + "typeString": "function (address) view" + } + }, + "id": 13318, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12812:29:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13319, + "nodeType": "ExpressionStatement", + "src": "12812:29:50" + }, + { + "assignments": [ + 13322 + ], + "declarations": [ + { + "constant": false, + "id": 13322, + "mutability": "mutable", + "name": "$", + "nameLocation": "12880:1:50", + "nodeType": "VariableDeclaration", + "scope": 13413, + "src": "12852:29:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + }, + "typeName": { + "id": 13321, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 13320, + "name": "BookingTokenStorage", + "nameLocations": [ + "12852:19:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13074, + "src": "12852:19:50" + }, + "referencedDeclaration": 13074, + "src": "12852:19:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + } + }, + "visibility": "internal" + } + ], + "id": 13325, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 13323, + "name": "_getBookingTokenStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13085, + "src": "12884:23:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_BookingTokenStorage_$13074_storage_ptr_$", + "typeString": "function () pure returns (struct BookingToken.BookingTokenStorage storage pointer)" + } + }, + "id": 13324, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12884:25:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12852:57:50" + }, + { + "assignments": [ + 13327 + ], + "declarations": [ + { + "constant": false, + "id": 13327, + "mutability": "mutable", + "name": "minExpirationTimestampDiff", + "nameLocation": "13042:26:50", + "nodeType": "VariableDeclaration", + "scope": 13413, + "src": "13034:34:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13326, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13034:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 13330, + "initialValue": { + "expression": { + "id": 13328, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13322, + "src": "13071:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 13329, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13073:27:50", + "memberName": "_minExpirationTimestampDiff", + "nodeType": "MemberAccess", + "referencedDeclaration": 13063, + "src": "13071:29:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13034:66:50" + }, + { + "condition": { + "id": 13339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "13114:71:50", + "subExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 13337, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 13331, + "name": "expirationTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13300, + "src": "13116:19:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 13335, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 13332, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "13139:5:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 13333, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13145:9:50", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "13139:15:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 13334, + "name": "minExpirationTimestampDiff", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13327, + "src": "13157:26:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13139:44:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 13336, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "13138:46:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "13116:68:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 13338, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "13115:70:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 13346, + "nodeType": "IfStatement", + "src": "13110:184:50", + "trueBody": { + "id": 13345, + "nodeType": "Block", + "src": "13187:107:50", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 13341, + "name": "expirationTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13300, + "src": "13235:19:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 13342, + "name": "minExpirationTimestampDiff", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13327, + "src": "13256:26:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 13340, + "name": "ExpirationTimestampTooSoon", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13124, + "src": "13208:26:50", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 13343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13208:75:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13344, + "nodeType": "RevertStatement", + "src": "13201:82:50" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 13356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 13349, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 13347, + "name": "offchainPaymentCurrency", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13307, + "src": "13408:23:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 13348, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13434:1:50", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "13408:27:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 13355, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 13352, + "name": "paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13305, + "src": "13447:12:50", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + ], + "id": 13351, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13439:7:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 13350, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13439:7:50", + "typeDescriptions": {} + } + }, + "id": 13353, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13439:21:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 13354, + "name": "OFFCHAIN_PAYMENT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13034, + "src": "13464:16:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "13439:41:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "13408:72:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 13362, + "nodeType": "IfStatement", + "src": "13404:168:50", + "trueBody": { + "id": 13361, + "nodeType": "Block", + "src": "13482:90:50", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 13358, + "name": "offchainPaymentCurrency", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13307, + "src": "13537:23:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 13357, + "name": "UnexpectedOffchainPaymentCurrency", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13189, + "src": "13503:33:50", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", + "typeString": "function (uint256) pure" + } + }, + "id": 13359, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13503:58:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13360, + "nodeType": "RevertStatement", + "src": "13496:65:50" + } + ] + } + }, + { + "assignments": [ + 13364 + ], + "declarations": [ + { + "constant": false, + "id": 13364, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "13624:7:50", + "nodeType": "VariableDeclaration", + "scope": 13413, + "src": "13616:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13363, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13616:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 13368, + "initialValue": { + "id": 13367, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "13634:16:50", + "subExpression": { + "expression": { + "id": 13365, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13322, + "src": "13634:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 13366, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "13636:12:50", + "memberName": "_nextTokenId", + "nodeType": "MemberAccess", + "referencedDeclaration": 13061, + "src": "13634:14:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13616:34:50" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 13370, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "13727:3:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 13371, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13731:6:50", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "13727:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 13372, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13364, + "src": "13739:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 13369, + "name": "_safeMint", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1764, + 1794 + ], + "referencedDeclaration": 1764, + "src": "13717:9:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 13373, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13717:30:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13374, + "nodeType": "ExpressionStatement", + "src": "13717:30:50" + }, + { + "expression": { + "arguments": [ + { + "id": 13376, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13364, + "src": "13770:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 13377, + "name": "uri", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13298, + "src": "13779:3:50", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 13375, + "name": "_setTokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2755, + "src": "13757:12:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (uint256,string memory)" + } + }, + "id": 13378, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13757:26:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13379, + "nodeType": "ExpressionStatement", + "src": "13757:26:50" + }, + { + "expression": { + "arguments": [ + { + "id": 13381, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13364, + "src": "13849:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 13382, + "name": "reservedFor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13296, + "src": "13870:11:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 13383, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "13895:3:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 13384, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13899:6:50", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "13895:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 13385, + "name": "expirationTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13300, + "src": "13919:19:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 13386, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13302, + "src": "13952:5:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 13387, + "name": "paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13305, + "src": "13971:12:50", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + { + "id": 13388, + "name": "offchainPaymentCurrency", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13307, + "src": "13997:23:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 13389, + "name": "cancellable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13309, + "src": "14034:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 13380, + "name": "_reserve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13458, + "src": "13827:8:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_contract$_IERC20_$4513_$_t_uint256_$_t_bool_$returns$__$", + "typeString": "function (uint256,address,address,uint256,uint256,contract IERC20,uint256,bool)" + } + }, + "id": 13390, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13827:228:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13391, + "nodeType": "ExpressionStatement", + "src": "13827:228:50" + }, + { + "expression": { + "id": 13399, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 13392, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13322, + "src": "14092:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 13395, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14094:14:50", + "memberName": "_bookingStatus", + "nodeType": "MemberAccess", + "referencedDeclaration": 13073, + "src": "14092:16:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_enum$_BookingStatus_$13040_$", + "typeString": "mapping(uint256 => enum BookingToken.BookingStatus)" + } + }, + "id": 13396, + "indexExpression": { + "id": 13394, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13364, + "src": "14109:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "14092:25:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 13397, + "name": "BookingStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13040, + "src": "14120:13:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_BookingStatus_$13040_$", + "typeString": "type(enum BookingToken.BookingStatus)" + } + }, + "id": 13398, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "14134:8:50", + "memberName": "RESERVED", + "nodeType": "MemberAccess", + "referencedDeclaration": 13036, + "src": "14120:22:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "src": "14092:50:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "id": 13400, + "nodeType": "ExpressionStatement", + "src": "14092:50:50" + }, + { + "eventCall": { + "arguments": [ + { + "id": 13402, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13364, + "src": "14185:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 13403, + "name": "reservedFor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13296, + "src": "14206:11:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 13404, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "14231:3:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 13405, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14235:6:50", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "14231:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 13406, + "name": "expirationTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13300, + "src": "14255:19:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 13407, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13302, + "src": "14288:5:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 13408, + "name": "paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13305, + "src": "14307:12:50", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + { + "id": 13409, + "name": "offchainPaymentCurrency", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13307, + "src": "14333:23:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 13410, + "name": "cancellable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13309, + "src": "14370:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 13401, + "name": "TokenReserved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13105, + "src": "14158:13:50", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_contract$_IERC20_$4513_$_t_uint256_$_t_bool_$returns$__$", + "typeString": "function (uint256,address,address,uint256,uint256,contract IERC20,uint256,bool)" + } + }, + "id": 13411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14158:233:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13412, + "nodeType": "EmitStatement", + "src": "14153:238:50" + } + ] + }, + "documentation": { + "id": 13294, + "nodeType": "StructuredDocumentation", + "src": "11897:558:50", + "text": " @notice Mints a new token with a reservation for a specific address.\n @param reservedFor The CM Account address that can buy the token\n @param uri The URI of the token\n @param expirationTimestamp The expiration timestamp\n @param price The price of the token\n @param paymentToken The token used to pay for the reservation. If address(0) then native.\n @param offchainPaymentCurrency The offchain payment currency\n @param cancellable The flag that represents whether the booking is cancellable" + }, + "functionSelector": "db2b2682", + "id": 13414, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "expression": { + "id": 13312, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "12740:3:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 13313, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12744:6:50", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "12740:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 13314, + "kind": "modifierInvocation", + "modifierName": { + "id": 13311, + "name": "onlyCMAccount", + "nameLocations": [ + "12726:13:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13205, + "src": "12726:13:50" + }, + "nodeType": "ModifierInvocation", + "src": "12726:25:50" + } + ], + "name": "safeMintWithReservation", + "nameLocation": "12469:23:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 13310, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13296, + "mutability": "mutable", + "name": "reservedFor", + "nameLocation": "12510:11:50", + "nodeType": "VariableDeclaration", + "scope": 13414, + "src": "12502:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13295, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12502:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13298, + "mutability": "mutable", + "name": "uri", + "nameLocation": "12545:3:50", + "nodeType": "VariableDeclaration", + "scope": 13414, + "src": "12531:17:50", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 13297, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "12531:6:50", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13300, + "mutability": "mutable", + "name": "expirationTimestamp", + "nameLocation": "12566:19:50", + "nodeType": "VariableDeclaration", + "scope": 13414, + "src": "12558:27:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13299, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12558:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13302, + "mutability": "mutable", + "name": "price", + "nameLocation": "12603:5:50", + "nodeType": "VariableDeclaration", + "scope": 13414, + "src": "12595:13:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13301, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12595:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13305, + "mutability": "mutable", + "name": "paymentToken", + "nameLocation": "12625:12:50", + "nodeType": "VariableDeclaration", + "scope": 13414, + "src": "12618:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 13304, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 13303, + "name": "IERC20", + "nameLocations": [ + "12618:6:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4513, + "src": "12618:6:50" + }, + "referencedDeclaration": 4513, + "src": "12618:6:50", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13307, + "mutability": "mutable", + "name": "offchainPaymentCurrency", + "nameLocation": "12655:23:50", + "nodeType": "VariableDeclaration", + "scope": 13414, + "src": "12647:31:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13306, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12647:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13309, + "mutability": "mutable", + "name": "cancellable", + "nameLocation": "12693:11:50", + "nodeType": "VariableDeclaration", + "scope": 13414, + "src": "12688:16:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 13308, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "12688:4:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "12492:218:50" + }, + "returnParameters": { + "id": 13315, + "nodeType": "ParameterList", + "parameters": [], + "src": "12752:0:50" + }, + "scope": 14541, + "src": "12460:1938:50", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 13457, + "nodeType": "Block", + "src": "14780:325:50", + "statements": [ + { + "assignments": [ + 13437 + ], + "declarations": [ + { + "constant": false, + "id": 13437, + "mutability": "mutable", + "name": "$", + "nameLocation": "14818:1:50", + "nodeType": "VariableDeclaration", + "scope": 13457, + "src": "14790:29:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + }, + "typeName": { + "id": 13436, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 13435, + "name": "BookingTokenStorage", + "nameLocations": [ + "14790:19:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13074, + "src": "14790:19:50" + }, + "referencedDeclaration": 13074, + "src": "14790:19:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + } + }, + "visibility": "internal" + } + ], + "id": 13440, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 13438, + "name": "_getBookingTokenStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13085, + "src": "14822:23:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_BookingTokenStorage_$13074_storage_ptr_$", + "typeString": "function () pure returns (struct BookingToken.BookingTokenStorage storage pointer)" + } + }, + "id": 13439, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14822:25:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14790:57:50" + }, + { + "expression": { + "id": 13455, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 13441, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13437, + "src": "14858:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 13444, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14860:13:50", + "memberName": "_reservations", + "nodeType": "MemberAccess", + "referencedDeclaration": 13068, + "src": "14858:15:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenReservation_$13056_storage_$", + "typeString": "mapping(uint256 => struct BookingToken.TokenReservation storage ref)" + } + }, + "id": 13445, + "indexExpression": { + "id": 13443, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13417, + "src": "14874:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "14858:24:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$13056_storage", + "typeString": "struct BookingToken.TokenReservation storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 13447, + "name": "reservedFor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13419, + "src": "14915:11:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 13448, + "name": "supplier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13421, + "src": "14940:8:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 13449, + "name": "expirationTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13423, + "src": "14962:19:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 13450, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13425, + "src": "14995:5:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 13451, + "name": "paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13428, + "src": "15014:12:50", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + { + "id": 13452, + "name": "offchainPaymentCurrency", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13430, + "src": "15040:23:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 13453, + "name": "cancellable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13432, + "src": "15077:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 13446, + "name": "TokenReservation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13056, + "src": "14885:16:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_TokenReservation_$13056_storage_ptr_$", + "typeString": "type(struct BookingToken.TokenReservation storage pointer)" + } + }, + "id": 13454, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14885:213:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$13056_memory_ptr", + "typeString": "struct BookingToken.TokenReservation memory" + } + }, + "src": "14858:240:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$13056_storage", + "typeString": "struct BookingToken.TokenReservation storage ref" + } + }, + "id": 13456, + "nodeType": "ExpressionStatement", + "src": "14858:240:50" + } + ] + }, + "documentation": { + "id": 13415, + "nodeType": "StructuredDocumentation", + "src": "14404:94:50", + "text": " @notice Reserve a token for a specific address with an expiration timestamp" + }, + "id": 13458, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_reserve", + "nameLocation": "14512:8:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 13433, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13417, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "14538:7:50", + "nodeType": "VariableDeclaration", + "scope": 13458, + "src": "14530:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13416, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14530:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13419, + "mutability": "mutable", + "name": "reservedFor", + "nameLocation": "14563:11:50", + "nodeType": "VariableDeclaration", + "scope": 13458, + "src": "14555:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13418, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14555:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13421, + "mutability": "mutable", + "name": "supplier", + "nameLocation": "14592:8:50", + "nodeType": "VariableDeclaration", + "scope": 13458, + "src": "14584:16:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13420, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14584:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13423, + "mutability": "mutable", + "name": "expirationTimestamp", + "nameLocation": "14618:19:50", + "nodeType": "VariableDeclaration", + "scope": 13458, + "src": "14610:27:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13422, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14610:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13425, + "mutability": "mutable", + "name": "price", + "nameLocation": "14655:5:50", + "nodeType": "VariableDeclaration", + "scope": 13458, + "src": "14647:13:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13424, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14647:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13428, + "mutability": "mutable", + "name": "paymentToken", + "nameLocation": "14677:12:50", + "nodeType": "VariableDeclaration", + "scope": 13458, + "src": "14670:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 13427, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 13426, + "name": "IERC20", + "nameLocations": [ + "14670:6:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4513, + "src": "14670:6:50" + }, + "referencedDeclaration": 4513, + "src": "14670:6:50", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13430, + "mutability": "mutable", + "name": "offchainPaymentCurrency", + "nameLocation": "14707:23:50", + "nodeType": "VariableDeclaration", + "scope": 13458, + "src": "14699:31:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13429, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14699:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13432, + "mutability": "mutable", + "name": "cancellable", + "nameLocation": "14745:11:50", + "nodeType": "VariableDeclaration", + "scope": 13458, + "src": "14740:16:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 13431, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "14740:4:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "14520:242:50" + }, + "returnParameters": { + "id": 13434, + "nodeType": "ParameterList", + "parameters": [], + "src": "14780:0:50" + }, + "scope": 14541, + "src": "14503:602:50", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 13561, + "nodeType": "Block", + "src": "15658:1370:50", + "statements": [ + { + "assignments": [ + 13472 + ], + "declarations": [ + { + "constant": false, + "id": 13472, + "mutability": "mutable", + "name": "$", + "nameLocation": "15696:1:50", + "nodeType": "VariableDeclaration", + "scope": 13561, + "src": "15668:29:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + }, + "typeName": { + "id": 13471, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 13470, + "name": "BookingTokenStorage", + "nameLocations": [ + "15668:19:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13074, + "src": "15668:19:50" + }, + "referencedDeclaration": 13074, + "src": "15668:19:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + } + }, + "visibility": "internal" + } + ], + "id": 13475, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 13473, + "name": "_getBookingTokenStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13085, + "src": "15700:23:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_BookingTokenStorage_$13074_storage_ptr_$", + "typeString": "function () pure returns (struct BookingToken.BookingTokenStorage storage pointer)" + } + }, + "id": 13474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15700:25:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15668:57:50" + }, + { + "assignments": [ + 13478 + ], + "declarations": [ + { + "constant": false, + "id": 13478, + "mutability": "mutable", + "name": "reservation", + "nameLocation": "15805:11:50", + "nodeType": "VariableDeclaration", + "scope": 13561, + "src": "15781:35:50", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$13056_memory_ptr", + "typeString": "struct BookingToken.TokenReservation" + }, + "typeName": { + "id": 13477, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 13476, + "name": "TokenReservation", + "nameLocations": [ + "15781:16:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13056, + "src": "15781:16:50" + }, + "referencedDeclaration": 13056, + "src": "15781:16:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$13056_storage_ptr", + "typeString": "struct BookingToken.TokenReservation" + } + }, + "visibility": "internal" + } + ], + "id": 13483, + "initialValue": { + "baseExpression": { + "expression": { + "id": 13479, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13472, + "src": "15819:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 13480, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15821:13:50", + "memberName": "_reservations", + "nodeType": "MemberAccess", + "referencedDeclaration": 13068, + "src": "15819:15:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenReservation_$13056_storage_$", + "typeString": "mapping(uint256 => struct BookingToken.TokenReservation storage ref)" + } + }, + "id": 13482, + "indexExpression": { + "id": 13481, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13461, + "src": "15835:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15819:24:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$13056_storage", + "typeString": "struct BookingToken.TokenReservation storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15781:62:50" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 13488, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 13484, + "name": "reservation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13478, + "src": "15915:11:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$13056_memory_ptr", + "typeString": "struct BookingToken.TokenReservation memory" + } + }, + "id": 13485, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15927:11:50", + "memberName": "reservedFor", + "nodeType": "MemberAccess", + "referencedDeclaration": 13042, + "src": "15915:23:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "id": 13486, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "15942:3:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 13487, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15946:6:50", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "15942:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "15915:37:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 13497, + "nodeType": "IfStatement", + "src": "15911:131:50", + "trueBody": { + "id": 13496, + "nodeType": "Block", + "src": "15954:88:50", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "expression": { + "id": 13490, + "name": "reservation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13478, + "src": "15995:11:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$13056_memory_ptr", + "typeString": "struct BookingToken.TokenReservation memory" + } + }, + "id": 13491, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16007:11:50", + "memberName": "reservedFor", + "nodeType": "MemberAccess", + "referencedDeclaration": 13042, + "src": "15995:23:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 13492, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "16020:3:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 13493, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16024:6:50", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "16020:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 13489, + "name": "ReservationMismatch", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13136, + "src": "15975:19:50", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address) pure" + } + }, + "id": 13494, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15975:56:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13495, + "nodeType": "RevertStatement", + "src": "15968:63:50" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 13502, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 13498, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "16094:5:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 13499, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16100:9:50", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "16094:15:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "id": 13500, + "name": "reservation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13478, + "src": "16112:11:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$13056_memory_ptr", + "typeString": "struct BookingToken.TokenReservation memory" + } + }, + "id": 13501, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16124:19:50", + "memberName": "expirationTimestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 13046, + "src": "16112:31:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16094:49:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 13510, + "nodeType": "IfStatement", + "src": "16090:147:50", + "trueBody": { + "id": 13509, + "nodeType": "Block", + "src": "16145:92:50", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 13504, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13461, + "src": "16185:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 13505, + "name": "reservation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13478, + "src": "16194:11:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$13056_memory_ptr", + "typeString": "struct BookingToken.TokenReservation memory" + } + }, + "id": 13506, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16206:19:50", + "memberName": "expirationTimestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 13046, + "src": "16194:31:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 13503, + "name": "ReservationExpired", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13143, + "src": "16166:18:50", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 13507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16166:60:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13508, + "nodeType": "RevertStatement", + "src": "16159:67:50" + } + ] + } + }, + { + "assignments": [ + 13512 + ], + "declarations": [ + { + "constant": false, + "id": 13512, + "mutability": "mutable", + "name": "owner", + "nameLocation": "16303:5:50", + "nodeType": "VariableDeclaration", + "scope": 13561, + "src": "16295:13:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13511, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16295:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 13516, + "initialValue": { + "arguments": [ + { + "id": 13514, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13461, + "src": "16319:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 13513, + "name": "ownerOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1216, + "src": "16311:7:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 13515, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16311:16:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16295:32:50" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 13520, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 13517, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13512, + "src": "16341:5:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "id": 13518, + "name": "reservation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13478, + "src": "16350:11:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$13056_memory_ptr", + "typeString": "struct BookingToken.TokenReservation memory" + } + }, + "id": 13519, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16362:8:50", + "memberName": "supplier", + "nodeType": "MemberAccess", + "referencedDeclaration": 13044, + "src": "16350:20:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "16341:29:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 13528, + "nodeType": "IfStatement", + "src": "16337:116:50", + "trueBody": { + "id": 13527, + "nodeType": "Block", + "src": "16372:81:50", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 13522, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13461, + "src": "16412:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 13523, + "name": "reservation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13478, + "src": "16421:11:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$13056_memory_ptr", + "typeString": "struct BookingToken.TokenReservation memory" + } + }, + "id": 13524, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16433:8:50", + "memberName": "supplier", + "nodeType": "MemberAccess", + "referencedDeclaration": 13044, + "src": "16421:20:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 13521, + "name": "SupplierIsNotOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13157, + "src": "16393:18:50", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_address_$returns$__$", + "typeString": "function (uint256,address) pure" + } + }, + "id": 13525, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16393:49:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13526, + "nodeType": "RevertStatement", + "src": "16386:56:50" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 13530, + "name": "reservation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13478, + "src": "16695:11:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$13056_memory_ptr", + "typeString": "struct BookingToken.TokenReservation memory" + } + }, + "id": 13531, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16707:8:50", + "memberName": "supplier", + "nodeType": "MemberAccess", + "referencedDeclaration": 13044, + "src": "16695:20:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 13532, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "16717:3:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 13533, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16721:6:50", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "16717:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 13534, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13461, + "src": "16729:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 13529, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1887, + "src": "16685:9:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 13535, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16685:52:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13536, + "nodeType": "ExpressionStatement", + "src": "16685:52:50" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 13538, + "name": "reservation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13478, + "src": "16800:11:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$13056_memory_ptr", + "typeString": "struct BookingToken.TokenReservation memory" + } + }, + "id": 13539, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16812:12:50", + "memberName": "paymentToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 13051, + "src": "16800:24:50", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + { + "expression": { + "id": 13540, + "name": "reservation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13478, + "src": "16826:11:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$13056_memory_ptr", + "typeString": "struct BookingToken.TokenReservation memory" + } + }, + "id": 13541, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16838:5:50", + "memberName": "price", + "nodeType": "MemberAccess", + "referencedDeclaration": 13048, + "src": "16826:17:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 13542, + "name": "reservation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13478, + "src": "16845:11:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$13056_memory_ptr", + "typeString": "struct BookingToken.TokenReservation memory" + } + }, + "id": 13543, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16857:8:50", + "memberName": "supplier", + "nodeType": "MemberAccess", + "referencedDeclaration": 13044, + "src": "16845:20:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 13537, + "name": "processPayment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13643, + "src": "16785:14:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4513_$_t_uint256_$_t_address_$returns$__$", + "typeString": "function (contract IERC20,uint256,address)" + } + }, + "id": 13544, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16785:81:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13545, + "nodeType": "ExpressionStatement", + "src": "16785:81:50" + }, + { + "expression": { + "id": 13553, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 13546, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13472, + "src": "16903:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 13549, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16905:14:50", + "memberName": "_bookingStatus", + "nodeType": "MemberAccess", + "referencedDeclaration": 13073, + "src": "16903:16:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_enum$_BookingStatus_$13040_$", + "typeString": "mapping(uint256 => enum BookingToken.BookingStatus)" + } + }, + "id": 13550, + "indexExpression": { + "id": 13548, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13461, + "src": "16920:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "16903:25:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 13551, + "name": "BookingStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13040, + "src": "16931:13:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_BookingStatus_$13040_$", + "typeString": "type(enum BookingToken.BookingStatus)" + } + }, + "id": 13552, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "16945:6:50", + "memberName": "BOUGHT", + "nodeType": "MemberAccess", + "referencedDeclaration": 13038, + "src": "16931:20:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "src": "16903:48:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "id": 13554, + "nodeType": "ExpressionStatement", + "src": "16903:48:50" + }, + { + "eventCall": { + "arguments": [ + { + "id": 13556, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13461, + "src": "17001:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 13557, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "17010:3:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 13558, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17014:6:50", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "17010:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 13555, + "name": "TokenBought", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13112, + "src": "16989:11:50", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$", + "typeString": "function (uint256,address)" + } + }, + "id": 13559, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16989:32:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13560, + "nodeType": "EmitStatement", + "src": "16984:37:50" + } + ] + }, + "documentation": { + "id": 13459, + "nodeType": "StructuredDocumentation", + "src": "15111:437:50", + "text": " @notice Buys a reserved token. The reservation must be for the message sender.\n Also the message sender should set allowance for the payment token to this\n contract to at least the reservation price. (only for ERC20 tokens)\n For native coin, the message sender should send the exact amount.\n Only CM Accounts can call this function\n @param tokenId The token id" + }, + "functionSelector": "96591edd", + "id": 13562, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 13464, + "kind": "modifierInvocation", + "modifierName": { + "id": 13463, + "name": "nonReentrant", + "nameLocations": [ + "15619:12:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3047, + "src": "15619:12:50" + }, + "nodeType": "ModifierInvocation", + "src": "15619:12:50" + }, + { + "arguments": [ + { + "expression": { + "id": 13466, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "15646:3:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 13467, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15650:6:50", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "15646:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 13468, + "kind": "modifierInvocation", + "modifierName": { + "id": 13465, + "name": "onlyCMAccount", + "nameLocations": [ + "15632:13:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13205, + "src": "15632:13:50" + }, + "nodeType": "ModifierInvocation", + "src": "15632:25:50" + } + ], + "name": "buyReservedToken", + "nameLocation": "15562:16:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 13462, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13461, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "15587:7:50", + "nodeType": "VariableDeclaration", + "scope": 13562, + "src": "15579:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13460, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15579:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "15578:17:50" + }, + "returnParameters": { + "id": 13469, + "nodeType": "ParameterList", + "parameters": [], + "src": "15658:0:50" + }, + "scope": 14541, + "src": "15553:1475:50", + "stateMutability": "payable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 13642, + "nodeType": "Block", + "src": "17138:1053:50", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 13577, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 13574, + "name": "paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13565, + "src": "17212:12:50", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + ], + "id": 13573, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "17204:7:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 13572, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17204:7:50", + "typeDescriptions": {} + } + }, + "id": 13575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17204:21:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 13576, + "name": "NATIVE_PAYMENT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13027, + "src": "17229:14:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "17204:39:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 13605, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 13602, + "name": "paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13565, + "src": "17552:12:50", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + ], + "id": 13601, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "17544:7:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 13600, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17544:7:50", + "typeDescriptions": {} + } + }, + "id": 13603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17544:21:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 13604, + "name": "OFFCHAIN_PAYMENT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13034, + "src": "17569:16:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "17544:41:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 13639, + "nodeType": "Block", + "src": "17823:362:50", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 13621, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 13618, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "17926:3:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 13619, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17930:5:50", + "memberName": "value", + "nodeType": "MemberAccess", + "src": "17926:9:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 13620, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17938:1:50", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "17926:13:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 13628, + "nodeType": "IfStatement", + "src": "17922:93:50", + "trueBody": { + "id": 13627, + "nodeType": "Block", + "src": "17941:74:50", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "expression": { + "id": 13623, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "17990:3:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 13624, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17994:5:50", + "memberName": "value", + "nodeType": "MemberAccess", + "src": "17990:9:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 13622, + "name": "UnexpectedNativePayment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13194, + "src": "17966:23:50", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", + "typeString": "function (uint256) pure" + } + }, + "id": 13625, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17966:34:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13626, + "nodeType": "RevertStatement", + "src": "17959:41:50" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 13633, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "18137:3:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 13634, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18141:6:50", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "18137:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 13635, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13569, + "src": "18149:9:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 13636, + "name": "paymentAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13567, + "src": "18160:13:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 13630, + "name": "paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13565, + "src": "18106:12:50", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + ], + "id": 13629, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4513, + "src": "18099:6:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$4513_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 13631, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18099:20:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + "id": 13632, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18120:16:50", + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 4613, + "src": "18099:37:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4513_$_t_address_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$4513_$", + "typeString": "function (contract IERC20,address,address,uint256)" + } + }, + "id": 13637, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18099:75:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13638, + "nodeType": "ExpressionStatement", + "src": "18099:75:50" + } + ] + }, + "id": 13640, + "nodeType": "IfStatement", + "src": "17540:645:50", + "trueBody": { + "id": 13617, + "nodeType": "Block", + "src": "17587:230:50", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 13609, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 13606, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "17718:3:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 13607, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17722:5:50", + "memberName": "value", + "nodeType": "MemberAccess", + "src": "17718:9:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 13608, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17730:1:50", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "17718:13:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 13616, + "nodeType": "IfStatement", + "src": "17714:93:50", + "trueBody": { + "id": 13615, + "nodeType": "Block", + "src": "17733:74:50", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "expression": { + "id": 13611, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "17782:3:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 13612, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17786:5:50", + "memberName": "value", + "nodeType": "MemberAccess", + "src": "17782:9:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 13610, + "name": "UnexpectedNativePayment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13194, + "src": "17758:23:50", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", + "typeString": "function (uint256) pure" + } + }, + "id": 13613, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17758:34:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13614, + "nodeType": "RevertStatement", + "src": "17751:41:50" + } + ] + } + } + ] + } + }, + "id": 13641, + "nodeType": "IfStatement", + "src": "17200:985:50", + "trueBody": { + "id": 13599, + "nodeType": "Block", + "src": "17245:289:50", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 13581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 13578, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "17314:3:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 13579, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17318:5:50", + "memberName": "value", + "nodeType": "MemberAccess", + "src": "17314:9:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 13580, + "name": "paymentAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13567, + "src": "17327:13:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "17314:26:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 13589, + "nodeType": "IfStatement", + "src": "17310:112:50", + "trueBody": { + "id": 13588, + "nodeType": "Block", + "src": "17342:80:50", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "expression": { + "id": 13583, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "17382:3:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 13584, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17386:5:50", + "memberName": "value", + "nodeType": "MemberAccess", + "src": "17382:9:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 13585, + "name": "paymentAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13567, + "src": "17393:13:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 13582, + "name": "IncorrectPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13150, + "src": "17367:14:50", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 13586, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17367:40:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13587, + "nodeType": "RevertStatement", + "src": "17360:47:50" + } + ] + } + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 13595, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "17513:3:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 13596, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17517:5:50", + "memberName": "value", + "nodeType": "MemberAccess", + "src": "17513:9:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 13592, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13569, + "src": "17492:9:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 13591, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "17484:8:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_payable_$", + "typeString": "type(address payable)" + }, + "typeName": { + "id": 13590, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17484:8:50", + "stateMutability": "payable", + "typeDescriptions": {} + } + }, + "id": 13593, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17484:18:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 13594, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17503:9:50", + "memberName": "sendValue", + "nodeType": "MemberAccess", + "referencedDeclaration": 5279, + "src": "17484:28:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$attached_to$_t_address_payable_$", + "typeString": "function (address payable,uint256)" + } + }, + "id": 13597, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17484:39:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13598, + "nodeType": "ExpressionStatement", + "src": "17484:39:50" + } + ] + } + } + ] + }, + "id": 13643, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "processPayment", + "nameLocation": "17043:14:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 13570, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13565, + "mutability": "mutable", + "name": "paymentToken", + "nameLocation": "17065:12:50", + "nodeType": "VariableDeclaration", + "scope": 13643, + "src": "17058:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 13564, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 13563, + "name": "IERC20", + "nameLocations": [ + "17058:6:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4513, + "src": "17058:6:50" + }, + "referencedDeclaration": 4513, + "src": "17058:6:50", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13567, + "mutability": "mutable", + "name": "paymentAmount", + "nameLocation": "17087:13:50", + "nodeType": "VariableDeclaration", + "scope": 13643, + "src": "17079:21:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13566, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17079:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13569, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "17110:9:50", + "nodeType": "VariableDeclaration", + "scope": 13643, + "src": "17102:17:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13568, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17102:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "17057:63:50" + }, + "returnParameters": { + "id": 13571, + "nodeType": "ParameterList", + "parameters": [], + "src": "17138:0:50" + }, + "scope": 14541, + "src": "17034:1157:50", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 13663, + "nodeType": "Block", + "src": "18586:116:50", + "statements": [ + { + "assignments": [ + 13654 + ], + "declarations": [ + { + "constant": false, + "id": 13654, + "mutability": "mutable", + "name": "$", + "nameLocation": "18624:1:50", + "nodeType": "VariableDeclaration", + "scope": 13663, + "src": "18596:29:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + }, + "typeName": { + "id": 13653, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 13652, + "name": "BookingTokenStorage", + "nameLocations": [ + "18596:19:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13074, + "src": "18596:19:50" + }, + "referencedDeclaration": 13074, + "src": "18596:19:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + } + }, + "visibility": "internal" + } + ], + "id": 13657, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 13655, + "name": "_getBookingTokenStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13085, + "src": "18628:23:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_BookingTokenStorage_$13074_storage_ptr_$", + "typeString": "function () pure returns (struct BookingToken.BookingTokenStorage storage pointer)" + } + }, + "id": 13656, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18628:25:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "18596:57:50" + }, + { + "expression": { + "baseExpression": { + "expression": { + "id": 13658, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13654, + "src": "18670:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 13659, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18672:14:50", + "memberName": "_bookingStatus", + "nodeType": "MemberAccess", + "referencedDeclaration": 13073, + "src": "18670:16:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_enum$_BookingStatus_$13040_$", + "typeString": "mapping(uint256 => enum BookingToken.BookingStatus)" + } + }, + "id": 13661, + "indexExpression": { + "id": 13660, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13646, + "src": "18687:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "18670:25:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "functionReturnParameters": 13651, + "id": 13662, + "nodeType": "Return", + "src": "18663:32:50" + } + ] + }, + "documentation": { + "id": 13644, + "nodeType": "StructuredDocumentation", + "src": "18370:124:50", + "text": " @notice Return booking status\n @param tokenId The token id\n @return The booking status" + }, + "functionSelector": "3c15b31c", + "id": 13664, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getBookingStatus", + "nameLocation": "18508:16:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 13647, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13646, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "18533:7:50", + "nodeType": "VariableDeclaration", + "scope": 13664, + "src": "18525:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13645, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18525:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "18524:17:50" + }, + "returnParameters": { + "id": 13651, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13650, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 13664, + "src": "18571:13:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + }, + "typeName": { + "id": 13649, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 13648, + "name": "BookingStatus", + "nameLocations": [ + "18571:13:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13040, + "src": "18571:13:50" + }, + "referencedDeclaration": 13040, + "src": "18571:13:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "visibility": "internal" + } + ], + "src": "18570:15:50" + }, + "scope": 14541, + "src": "18499:203:50", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 13693, + "nodeType": "Block", + "src": "18950:162:50", + "statements": [ + { + "assignments": [ + 13677 + ], + "declarations": [ + { + "constant": false, + "id": 13677, + "mutability": "mutable", + "name": "$", + "nameLocation": "18988:1:50", + "nodeType": "VariableDeclaration", + "scope": 13693, + "src": "18960:29:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + }, + "typeName": { + "id": 13676, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 13675, + "name": "BookingTokenStorage", + "nameLocations": [ + "18960:19:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13074, + "src": "18960:19:50" + }, + "referencedDeclaration": 13074, + "src": "18960:19:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + } + }, + "visibility": "internal" + } + ], + "id": 13680, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 13678, + "name": "_getBookingTokenStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13085, + "src": "18992:23:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_BookingTokenStorage_$13074_storage_ptr_$", + "typeString": "function () pure returns (struct BookingToken.BookingTokenStorage storage pointer)" + } + }, + "id": 13679, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18992:25:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "18960:57:50" + }, + { + "expression": { + "components": [ + { + "expression": { + "baseExpression": { + "expression": { + "id": 13681, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13677, + "src": "19035:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 13682, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "19037:13:50", + "memberName": "_reservations", + "nodeType": "MemberAccess", + "referencedDeclaration": 13068, + "src": "19035:15:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenReservation_$13056_storage_$", + "typeString": "mapping(uint256 => struct BookingToken.TokenReservation storage ref)" + } + }, + "id": 13684, + "indexExpression": { + "id": 13683, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13667, + "src": "19051:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19035:24:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$13056_storage", + "typeString": "struct BookingToken.TokenReservation storage ref" + } + }, + "id": 13685, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "19060:5:50", + "memberName": "price", + "nodeType": "MemberAccess", + "referencedDeclaration": 13048, + "src": "19035:30:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "baseExpression": { + "expression": { + "id": 13686, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13677, + "src": "19067:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 13687, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "19069:13:50", + "memberName": "_reservations", + "nodeType": "MemberAccess", + "referencedDeclaration": 13068, + "src": "19067:15:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenReservation_$13056_storage_$", + "typeString": "mapping(uint256 => struct BookingToken.TokenReservation storage ref)" + } + }, + "id": 13689, + "indexExpression": { + "id": 13688, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13667, + "src": "19083:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19067:24:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$13056_storage", + "typeString": "struct BookingToken.TokenReservation storage ref" + } + }, + "id": 13690, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "19092:12:50", + "memberName": "paymentToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 13051, + "src": "19067:37:50", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + } + ], + "id": 13691, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "19034:71:50", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_contract$_IERC20_$4513_$", + "typeString": "tuple(uint256,contract IERC20)" + } + }, + "functionReturnParameters": 13674, + "id": 13692, + "nodeType": "Return", + "src": "19027:78:50" + } + ] + }, + "documentation": { + "id": 13665, + "nodeType": "StructuredDocumentation", + "src": "18708:126:50", + "text": " @notice Returns the token reservation price for a specific token.\n @param tokenId The token id" + }, + "functionSelector": "004fdd3c", + "id": 13694, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getReservationPrice", + "nameLocation": "18848:19:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 13668, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13667, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "18876:7:50", + "nodeType": "VariableDeclaration", + "scope": 13694, + "src": "18868:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13666, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18868:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "18867:17:50" + }, + "returnParameters": { + "id": 13674, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13670, + "mutability": "mutable", + "name": "price", + "nameLocation": "18922:5:50", + "nodeType": "VariableDeclaration", + "scope": 13694, + "src": "18914:13:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13669, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18914:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13673, + "mutability": "mutable", + "name": "paymentToken", + "nameLocation": "18936:12:50", + "nodeType": "VariableDeclaration", + "scope": 13694, + "src": "18929:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 13672, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 13671, + "name": "IERC20", + "nameLocations": [ + "18929:6:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4513, + "src": "18929:6:50" + }, + "referencedDeclaration": 4513, + "src": "18929:6:50", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "18913:36:50" + }, + "scope": 14541, + "src": "18839:273:50", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 13715, + "nodeType": "Block", + "src": "19415:128:50", + "statements": [ + { + "assignments": [ + 13705 + ], + "declarations": [ + { + "constant": false, + "id": 13705, + "mutability": "mutable", + "name": "$", + "nameLocation": "19453:1:50", + "nodeType": "VariableDeclaration", + "scope": 13715, + "src": "19425:29:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + }, + "typeName": { + "id": 13704, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 13703, + "name": "BookingTokenStorage", + "nameLocations": [ + "19425:19:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13074, + "src": "19425:19:50" + }, + "referencedDeclaration": 13074, + "src": "19425:19:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + } + }, + "visibility": "internal" + } + ], + "id": 13708, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 13706, + "name": "_getBookingTokenStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13085, + "src": "19457:23:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_BookingTokenStorage_$13074_storage_ptr_$", + "typeString": "function () pure returns (struct BookingToken.BookingTokenStorage storage pointer)" + } + }, + "id": 13707, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19457:25:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "19425:57:50" + }, + { + "expression": { + "expression": { + "baseExpression": { + "expression": { + "id": 13709, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13705, + "src": "19499:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 13710, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "19501:13:50", + "memberName": "_reservations", + "nodeType": "MemberAccess", + "referencedDeclaration": 13068, + "src": "19499:15:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenReservation_$13056_storage_$", + "typeString": "mapping(uint256 => struct BookingToken.TokenReservation storage ref)" + } + }, + "id": 13712, + "indexExpression": { + "id": 13711, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13697, + "src": "19515:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19499:24:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$13056_storage", + "typeString": "struct BookingToken.TokenReservation storage ref" + } + }, + "id": 13713, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "19524:12:50", + "memberName": "paymentToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 13051, + "src": "19499:37:50", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + "functionReturnParameters": 13702, + "id": 13714, + "nodeType": "Return", + "src": "19492:44:50" + } + ] + }, + "documentation": { + "id": 13695, + "nodeType": "StructuredDocumentation", + "src": "19118:195:50", + "text": " @notice Retrieves the payment token for a given token.\n @param tokenId The token id to retrieve the payment token for\n @return paymentToken The payment token" + }, + "functionSelector": "b191d092", + "id": 13716, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getReservationPaymentToken", + "nameLocation": "19327:26:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 13698, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13697, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "19362:7:50", + "nodeType": "VariableDeclaration", + "scope": 13716, + "src": "19354:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13696, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19354:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "19353:17:50" + }, + "returnParameters": { + "id": 13702, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13701, + "mutability": "mutable", + "name": "paymentToken", + "nameLocation": "19401:12:50", + "nodeType": "VariableDeclaration", + "scope": 13716, + "src": "19394:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 13700, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 13699, + "name": "IERC20", + "nameLocations": [ + "19394:6:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4513, + "src": "19394:6:50" + }, + "referencedDeclaration": 4513, + "src": "19394:6:50", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "19393:21:50" + }, + "scope": 14541, + "src": "19318:225:50", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 13736, + "nodeType": "Block", + "src": "19733:127:50", + "statements": [ + { + "assignments": [ + 13726 + ], + "declarations": [ + { + "constant": false, + "id": 13726, + "mutability": "mutable", + "name": "$", + "nameLocation": "19771:1:50", + "nodeType": "VariableDeclaration", + "scope": 13736, + "src": "19743:29:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + }, + "typeName": { + "id": 13725, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 13724, + "name": "BookingTokenStorage", + "nameLocations": [ + "19743:19:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13074, + "src": "19743:19:50" + }, + "referencedDeclaration": 13074, + "src": "19743:19:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + } + }, + "visibility": "internal" + } + ], + "id": 13729, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 13727, + "name": "_getBookingTokenStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13085, + "src": "19775:23:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_BookingTokenStorage_$13074_storage_ptr_$", + "typeString": "function () pure returns (struct BookingToken.BookingTokenStorage storage pointer)" + } + }, + "id": 13728, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19775:25:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "19743:57:50" + }, + { + "expression": { + "expression": { + "baseExpression": { + "expression": { + "id": 13730, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13726, + "src": "19817:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 13731, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "19819:13:50", + "memberName": "_reservations", + "nodeType": "MemberAccess", + "referencedDeclaration": 13068, + "src": "19817:15:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenReservation_$13056_storage_$", + "typeString": "mapping(uint256 => struct BookingToken.TokenReservation storage ref)" + } + }, + "id": 13733, + "indexExpression": { + "id": 13732, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13719, + "src": "19833:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "19817:24:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$13056_storage", + "typeString": "struct BookingToken.TokenReservation storage ref" + } + }, + "id": 13734, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "19842:11:50", + "memberName": "cancellable", + "nodeType": "MemberAccess", + "referencedDeclaration": 13055, + "src": "19817:36:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 13723, + "id": 13735, + "nodeType": "Return", + "src": "19810:43:50" + } + ] + }, + "documentation": { + "id": 13717, + "nodeType": "StructuredDocumentation", + "src": "19549:104:50", + "text": " @notice Returns if the token is cancellable\n @param tokenId The token id" + }, + "functionSelector": "2d3a6329", + "id": 13737, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isCancellable", + "nameLocation": "19667:13:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 13720, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13719, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "19689:7:50", + "nodeType": "VariableDeclaration", + "scope": 13737, + "src": "19681:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13718, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19681:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "19680:17:50" + }, + "returnParameters": { + "id": 13723, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13722, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 13737, + "src": "19727:4:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 13721, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "19727:4:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "19726:6:50" + }, + "scope": 14541, + "src": "19658:202:50", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 13873, + "nodeType": "Block", + "src": "20166:2325:50", + "statements": [ + { + "assignments": [ + 13745 + ], + "declarations": [ + { + "constant": false, + "id": 13745, + "mutability": "mutable", + "name": "$", + "nameLocation": "20204:1:50", + "nodeType": "VariableDeclaration", + "scope": 13873, + "src": "20176:29:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + }, + "typeName": { + "id": 13744, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 13743, + "name": "BookingTokenStorage", + "nameLocations": [ + "20176:19:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13074, + "src": "20176:19:50" + }, + "referencedDeclaration": 13074, + "src": "20176:19:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + } + }, + "visibility": "internal" + } + ], + "id": 13748, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 13746, + "name": "_getBookingTokenStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13085, + "src": "20208:23:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_BookingTokenStorage_$13074_storage_ptr_$", + "typeString": "function () pure returns (struct BookingToken.BookingTokenStorage storage pointer)" + } + }, + "id": 13747, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20208:25:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "20176:57:50" + }, + { + "assignments": [ + 13751 + ], + "declarations": [ + { + "constant": false, + "id": 13751, + "mutability": "mutable", + "name": "status", + "nameLocation": "20257:6:50", + "nodeType": "VariableDeclaration", + "scope": 13873, + "src": "20243:20:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + }, + "typeName": { + "id": 13750, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 13749, + "name": "BookingStatus", + "nameLocations": [ + "20243:13:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13040, + "src": "20243:13:50" + }, + "referencedDeclaration": 13040, + "src": "20243:13:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "visibility": "internal" + } + ], + "id": 13756, + "initialValue": { + "baseExpression": { + "expression": { + "id": 13752, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13745, + "src": "20266:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 13753, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "20268:14:50", + "memberName": "_bookingStatus", + "nodeType": "MemberAccess", + "referencedDeclaration": 13073, + "src": "20266:16:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_enum$_BookingStatus_$13040_$", + "typeString": "mapping(uint256 => enum BookingToken.BookingStatus)" + } + }, + "id": 13755, + "indexExpression": { + "id": 13754, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13740, + "src": "20283:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20266:25:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "20243:48:50" + }, + { + "assignments": [ + 13759, + 13761 + ], + "declarations": [ + { + "constant": false, + "id": 13759, + "mutability": "mutable", + "name": "cancellationStatus", + "nameLocation": "20437:18:50", + "nodeType": "VariableDeclaration", + "scope": 13873, + "src": "20410:45:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + }, + "typeName": { + "id": 13758, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 13757, + "name": "CancellationProposalStatus", + "nameLocations": [ + "20410:26:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 14549, + "src": "20410:26:50" + }, + "referencedDeclaration": 14549, + "src": "20410:26:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 13761, + "mutability": "mutable", + "name": "currentProposer", + "nameLocation": "20477:15:50", + "nodeType": "VariableDeclaration", + "scope": 13873, + "src": "20469:23:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13760, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "20469:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 13765, + "initialValue": { + "arguments": [ + { + "id": 13763, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13740, + "src": "20554:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 13762, + "name": "_getCancellationProposalStatusAndCurrentProposer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14757, + "src": "20505:48:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_enum$_CancellationProposalStatus_$14549_$_t_address_$", + "typeString": "function (uint256) view returns (enum CancellationProposalStatus,address)" + } + }, + "id": 13764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20505:57:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_enum$_CancellationProposalStatus_$14549_$_t_address_$", + "typeString": "tuple(enum CancellationProposalStatus,address)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "20396:166:50" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + }, + "id": 13769, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 13766, + "name": "cancellationStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13759, + "src": "20701:18:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 13767, + "name": "CancellationProposalStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14549, + "src": "20723:26:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_CancellationProposalStatus_$14549_$", + "typeString": "type(enum CancellationProposalStatus)" + } + }, + "id": 13768, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "20750:7:50", + "memberName": "PENDING", + "nodeType": "MemberAccess", + "referencedDeclaration": 14545, + "src": "20723:34:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + }, + "src": "20701:56:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 13808, + "nodeType": "IfStatement", + "src": "20697:616:50", + "trueBody": { + "id": 13807, + "nodeType": "Block", + "src": "20759:554:50", + "statements": [ + { + "assignments": [ + 13771 + ], + "declarations": [ + { + "constant": false, + "id": 13771, + "mutability": "mutable", + "name": "owner", + "nameLocation": "20781:5:50", + "nodeType": "VariableDeclaration", + "scope": 13807, + "src": "20773:13:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13770, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "20773:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 13775, + "initialValue": { + "arguments": [ + { + "id": 13773, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13740, + "src": "20803:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 13772, + "name": "_requireOwned", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2101, + "src": "20789:13:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 13774, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20789:22:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "20773:38:50" + }, + { + "assignments": [ + 13777 + ], + "declarations": [ + { + "constant": false, + "id": 13777, + "mutability": "mutable", + "name": "supplier", + "nameLocation": "20833:8:50", + "nodeType": "VariableDeclaration", + "scope": 13807, + "src": "20825:16:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13776, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "20825:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 13783, + "initialValue": { + "expression": { + "baseExpression": { + "expression": { + "id": 13778, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13745, + "src": "20844:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 13779, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "20846:13:50", + "memberName": "_reservations", + "nodeType": "MemberAccess", + "referencedDeclaration": 13068, + "src": "20844:15:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenReservation_$13056_storage_$", + "typeString": "mapping(uint256 => struct BookingToken.TokenReservation storage ref)" + } + }, + "id": 13781, + "indexExpression": { + "id": 13780, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13740, + "src": "20860:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "20844:24:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$13056_storage", + "typeString": "struct BookingToken.TokenReservation storage ref" + } + }, + "id": 13782, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "20869:8:50", + "memberName": "supplier", + "nodeType": "MemberAccess", + "referencedDeclaration": 13044, + "src": "20844:33:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "20825:52:50" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 13787, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 13784, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "20954:3:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 13785, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "20958:6:50", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "20954:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 13786, + "name": "currentProposer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13761, + "src": "20968:15:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "20954:29:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 13805, + "nodeType": "Block", + "src": "21146:157:50", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 13798, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13771, + "src": "21256:5:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 13799, + "name": "supplier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13777, + "src": "21263:8:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 13800, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13740, + "src": "21273:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "3939", + "id": 13801, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21282:2:50", + "typeDescriptions": { + "typeIdentifier": "t_rational_99_by_1", + "typeString": "int_const 99" + }, + "value": "99" + }, + { + "hexValue": "31", + "id": 13802, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21286:1:50", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_rational_99_by_1", + "typeString": "int_const 99" + }, + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "id": 13797, + "name": "_withdrawCancellation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15359, + "src": "21234:21:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint16_$_t_uint16_$returns$__$", + "typeString": "function (address,address,uint256,uint16,uint16)" + } + }, + "id": 13803, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21234:54:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13804, + "nodeType": "ExpressionStatement", + "src": "21234:54:50" + } + ] + }, + "id": 13806, + "nodeType": "IfStatement", + "src": "20950:353:50", + "trueBody": { + "id": 13796, + "nodeType": "Block", + "src": "20985:155:50", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 13789, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13771, + "src": "21093:5:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 13790, + "name": "supplier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13777, + "src": "21100:8:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 13791, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13740, + "src": "21110:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "hexValue": "3939", + "id": 13792, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21119:2:50", + "typeDescriptions": { + "typeIdentifier": "t_rational_99_by_1", + "typeString": "int_const 99" + }, + "value": "99" + }, + { + "hexValue": "31", + "id": 13793, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "21123:1:50", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_rational_99_by_1", + "typeString": "int_const 99" + }, + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "id": 13788, + "name": "_rejectCancellation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15440, + "src": "21073:19:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint16_$_t_uint16_$returns$__$", + "typeString": "function (address,address,uint256,uint16,uint16)" + } + }, + "id": 13794, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21073:52:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13795, + "nodeType": "ExpressionStatement", + "src": "21073:52:50" + } + ] + } + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 13822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 13817, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + }, + "id": 13812, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 13809, + "name": "status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13751, + "src": "21433:6:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 13810, + "name": "BookingStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13040, + "src": "21443:13:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_BookingStatus_$13040_$", + "typeString": "type(enum BookingToken.BookingStatus)" + } + }, + "id": 13811, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "21457:6:50", + "memberName": "BOUGHT", + "nodeType": "MemberAccess", + "referencedDeclaration": 13038, + "src": "21443:20:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "src": "21433:30:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + }, + "id": 13816, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 13813, + "name": "status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13751, + "src": "21479:6:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 13814, + "name": "BookingStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13040, + "src": "21489:13:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_BookingStatus_$13040_$", + "typeString": "type(enum BookingToken.BookingStatus)" + } + }, + "id": 13815, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "21503:19:50", + "memberName": "RESERVATION_EXPIRED", + "nodeType": "MemberAccess", + "referencedDeclaration": 13037, + "src": "21489:33:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "src": "21479:43:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "21433:89:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + }, + "id": 13821, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 13818, + "name": "status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13751, + "src": "21538:6:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 13819, + "name": "BookingStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13040, + "src": "21548:13:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_BookingStatus_$13040_$", + "typeString": "type(enum BookingToken.BookingStatus)" + } + }, + "id": 13820, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "21562:11:50", + "memberName": "UNSPECIFIED", + "nodeType": "MemberAccess", + "referencedDeclaration": 13035, + "src": "21548:25:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "src": "21538:35:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "21433:140:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 13825, + "nodeType": "IfStatement", + "src": "21416:199:50", + "trueBody": { + "id": 13824, + "nodeType": "Block", + "src": "21584:31:50", + "statements": [ + { + "functionReturnParameters": 13742, + "id": 13823, + "nodeType": "Return", + "src": "21598:7:50" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + }, + "id": 13829, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 13826, + "name": "status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13751, + "src": "21678:6:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 13827, + "name": "BookingStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13040, + "src": "21688:13:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_BookingStatus_$13040_$", + "typeString": "type(enum BookingToken.BookingStatus)" + } + }, + "id": 13828, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "21702:9:50", + "memberName": "CANCELLED", + "nodeType": "MemberAccess", + "referencedDeclaration": 13039, + "src": "21688:23:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "src": "21678:33:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 13836, + "nodeType": "IfStatement", + "src": "21674:106:50", + "trueBody": { + "id": 13835, + "nodeType": "Block", + "src": "21713:67:50", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 13831, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13740, + "src": "21753:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 13832, + "name": "status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13751, + "src": "21762:6:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + ], + "id": 13830, + "name": "InvalidTokenStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13184, + "src": "21734:18:50", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_enum$_BookingStatus_$13040_$returns$__$", + "typeString": "function (uint256,enum BookingToken.BookingStatus) pure" + } + }, + "id": 13833, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "21734:35:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13834, + "nodeType": "RevertStatement", + "src": "21727:42:50" + } + ] + } + }, + { + "assignments": [ + 13839 + ], + "declarations": [ + { + "constant": false, + "id": 13839, + "mutability": "mutable", + "name": "reservation", + "nameLocation": "22002:11:50", + "nodeType": "VariableDeclaration", + "scope": 13873, + "src": "21977:36:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$13056_storage_ptr", + "typeString": "struct BookingToken.TokenReservation" + }, + "typeName": { + "id": 13838, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 13837, + "name": "TokenReservation", + "nameLocations": [ + "21977:16:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13056, + "src": "21977:16:50" + }, + "referencedDeclaration": 13056, + "src": "21977:16:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$13056_storage_ptr", + "typeString": "struct BookingToken.TokenReservation" + } + }, + "visibility": "internal" + } + ], + "id": 13844, + "initialValue": { + "baseExpression": { + "expression": { + "id": 13840, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13745, + "src": "22016:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 13841, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "22018:13:50", + "memberName": "_reservations", + "nodeType": "MemberAccess", + "referencedDeclaration": 13068, + "src": "22016:15:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenReservation_$13056_storage_$", + "typeString": "mapping(uint256 => struct BookingToken.TokenReservation storage ref)" + } + }, + "id": 13843, + "indexExpression": { + "id": 13842, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13740, + "src": "22032:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22016:24:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$13056_storage", + "typeString": "struct BookingToken.TokenReservation storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "21977:63:50" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 13849, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 13845, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "22055:5:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 13846, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "22061:9:50", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "22055:15:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "id": 13847, + "name": "reservation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13839, + "src": "22073:11:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$13056_storage_ptr", + "typeString": "struct BookingToken.TokenReservation storage pointer" + } + }, + "id": 13848, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "22085:19:50", + "memberName": "expirationTimestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 13046, + "src": "22073:31:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "22055:49:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 13871, + "nodeType": "Block", + "src": "22351:134:50", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 13866, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13740, + "src": "22441:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 13867, + "name": "reservation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13839, + "src": "22450:11:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$13056_storage_ptr", + "typeString": "struct BookingToken.TokenReservation storage pointer" + } + }, + "id": 13868, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "22462:11:50", + "memberName": "reservedFor", + "nodeType": "MemberAccess", + "referencedDeclaration": 13042, + "src": "22450:23:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 13865, + "name": "TokenIsReserved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13164, + "src": "22425:15:50", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_address_$returns$__$", + "typeString": "function (uint256,address) pure" + } + }, + "id": 13869, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22425:49:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13870, + "nodeType": "RevertStatement", + "src": "22418:56:50" + } + ] + }, + "id": 13872, + "nodeType": "IfStatement", + "src": "22051:434:50", + "trueBody": { + "id": 13864, + "nodeType": "Block", + "src": "22106:239:50", + "statements": [ + { + "expression": { + "id": 13857, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 13850, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13745, + "src": "22175:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 13853, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "22177:14:50", + "memberName": "_bookingStatus", + "nodeType": "MemberAccess", + "referencedDeclaration": 13073, + "src": "22175:16:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_enum$_BookingStatus_$13040_$", + "typeString": "mapping(uint256 => enum BookingToken.BookingStatus)" + } + }, + "id": 13854, + "indexExpression": { + "id": 13852, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13740, + "src": "22192:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "22175:25:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 13855, + "name": "BookingStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13040, + "src": "22203:13:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_BookingStatus_$13040_$", + "typeString": "type(enum BookingToken.BookingStatus)" + } + }, + "id": 13856, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "22217:19:50", + "memberName": "RESERVATION_EXPIRED", + "nodeType": "MemberAccess", + "referencedDeclaration": 13037, + "src": "22203:33:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "src": "22175:61:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "id": 13858, + "nodeType": "ExpressionStatement", + "src": "22175:61:50" + }, + { + "eventCall": { + "arguments": [ + { + "id": 13860, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13740, + "src": "22306:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 13859, + "name": "TokenReservationExpired", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13117, + "src": "22282:23:50", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 13861, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22282:32:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13862, + "nodeType": "EmitStatement", + "src": "22277:37:50" + }, + { + "functionReturnParameters": 13742, + "id": 13863, + "nodeType": "Return", + "src": "22328:7:50" + } + ] + } + } + ] + }, + "documentation": { + "id": 13738, + "nodeType": "StructuredDocumentation", + "src": "20039:61:50", + "text": " @notice Check if the token is transferable" + }, + "id": 13874, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "checkTransferable", + "nameLocation": "20114:17:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 13741, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13740, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "20140:7:50", + "nodeType": "VariableDeclaration", + "scope": 13874, + "src": "20132:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13739, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20132:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "20131:17:50" + }, + "returnParameters": { + "id": 13742, + "nodeType": "ParameterList", + "parameters": [], + "src": "20166:0:50" + }, + "scope": 14541, + "src": "20105:2386:50", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 13950, + "nodeType": "Block", + "src": "22677:967:50", + "statements": [ + { + "assignments": [ + 13882 + ], + "declarations": [ + { + "constant": false, + "id": 13882, + "mutability": "mutable", + "name": "$", + "nameLocation": "22715:1:50", + "nodeType": "VariableDeclaration", + "scope": 13950, + "src": "22687:29:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + }, + "typeName": { + "id": 13881, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 13880, + "name": "BookingTokenStorage", + "nameLocations": [ + "22687:19:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13074, + "src": "22687:19:50" + }, + "referencedDeclaration": 13074, + "src": "22687:19:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + } + }, + "visibility": "internal" + } + ], + "id": 13885, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 13883, + "name": "_getBookingTokenStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13085, + "src": "22719:23:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_BookingTokenStorage_$13074_storage_ptr_$", + "typeString": "function () pure returns (struct BookingToken.BookingTokenStorage storage pointer)" + } + }, + "id": 13884, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "22719:25:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "22687:57:50" + }, + { + "assignments": [ + 13888 + ], + "declarations": [ + { + "constant": false, + "id": 13888, + "mutability": "mutable", + "name": "reservation", + "nameLocation": "22779:11:50", + "nodeType": "VariableDeclaration", + "scope": 13950, + "src": "22754:36:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$13056_storage_ptr", + "typeString": "struct BookingToken.TokenReservation" + }, + "typeName": { + "id": 13887, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 13886, + "name": "TokenReservation", + "nameLocations": [ + "22754:16:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13056, + "src": "22754:16:50" + }, + "referencedDeclaration": 13056, + "src": "22754:16:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$13056_storage_ptr", + "typeString": "struct BookingToken.TokenReservation" + } + }, + "visibility": "internal" + } + ], + "id": 13893, + "initialValue": { + "baseExpression": { + "expression": { + "id": 13889, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13882, + "src": "22793:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 13890, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "22795:13:50", + "memberName": "_reservations", + "nodeType": "MemberAccess", + "referencedDeclaration": 13068, + "src": "22793:15:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenReservation_$13056_storage_$", + "typeString": "mapping(uint256 => struct BookingToken.TokenReservation storage ref)" + } + }, + "id": 13892, + "indexExpression": { + "id": 13891, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13877, + "src": "22809:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22793:24:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$13056_storage", + "typeString": "struct BookingToken.TokenReservation storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "22754:63:50" + }, + { + "assignments": [ + 13896 + ], + "declarations": [ + { + "constant": false, + "id": 13896, + "mutability": "mutable", + "name": "status", + "nameLocation": "22841:6:50", + "nodeType": "VariableDeclaration", + "scope": 13950, + "src": "22827:20:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + }, + "typeName": { + "id": 13895, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 13894, + "name": "BookingStatus", + "nameLocations": [ + "22827:13:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13040, + "src": "22827:13:50" + }, + "referencedDeclaration": 13040, + "src": "22827:13:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "visibility": "internal" + } + ], + "id": 13901, + "initialValue": { + "baseExpression": { + "expression": { + "id": 13897, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13882, + "src": "22850:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 13898, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "22852:14:50", + "memberName": "_bookingStatus", + "nodeType": "MemberAccess", + "referencedDeclaration": 13073, + "src": "22850:16:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_enum$_BookingStatus_$13040_$", + "typeString": "mapping(uint256 => enum BookingToken.BookingStatus)" + } + }, + "id": 13900, + "indexExpression": { + "id": 13899, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13877, + "src": "22867:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "22850:25:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "22827:48:50" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 13915, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 13910, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + }, + "id": 13905, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 13902, + "name": "status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13896, + "src": "22979:6:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 13903, + "name": "BookingStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13040, + "src": "22989:13:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_BookingStatus_$13040_$", + "typeString": "type(enum BookingToken.BookingStatus)" + } + }, + "id": 13904, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "23003:19:50", + "memberName": "RESERVATION_EXPIRED", + "nodeType": "MemberAccess", + "referencedDeclaration": 13037, + "src": "22989:33:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "src": "22979:43:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + }, + "id": 13909, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 13906, + "name": "status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13896, + "src": "23038:6:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 13907, + "name": "BookingStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13040, + "src": "23048:13:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_BookingStatus_$13040_$", + "typeString": "type(enum BookingToken.BookingStatus)" + } + }, + "id": 13908, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "23062:6:50", + "memberName": "BOUGHT", + "nodeType": "MemberAccess", + "referencedDeclaration": 13038, + "src": "23048:20:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "src": "23038:30:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "22979:89:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + }, + "id": 13914, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 13911, + "name": "status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13896, + "src": "23084:6:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 13912, + "name": "BookingStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13040, + "src": "23094:13:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_BookingStatus_$13040_$", + "typeString": "type(enum BookingToken.BookingStatus)" + } + }, + "id": 13913, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "23108:9:50", + "memberName": "CANCELLED", + "nodeType": "MemberAccess", + "referencedDeclaration": 13039, + "src": "23094:23:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "src": "23084:33:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "22979:138:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 13922, + "nodeType": "IfStatement", + "src": "22962:233:50", + "trueBody": { + "id": 13921, + "nodeType": "Block", + "src": "23128:67:50", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 13917, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13877, + "src": "23168:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 13918, + "name": "status", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13896, + "src": "23177:6:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + ], + "id": 13916, + "name": "InvalidTokenStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13184, + "src": "23149:18:50", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_enum$_BookingStatus_$13040_$returns$__$", + "typeString": "function (uint256,enum BookingToken.BookingStatus) pure" + } + }, + "id": 13919, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23149:35:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13920, + "nodeType": "RevertStatement", + "src": "23142:42:50" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 13927, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 13923, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "23277:5:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 13924, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "23283:9:50", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "23277:15:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "expression": { + "id": 13925, + "name": "reservation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13888, + "src": "23295:11:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$13056_storage_ptr", + "typeString": "struct BookingToken.TokenReservation storage pointer" + } + }, + "id": 13926, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "23307:19:50", + "memberName": "expirationTimestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": 13046, + "src": "23295:31:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "23277:49:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 13948, + "nodeType": "Block", + "src": "23498:140:50", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 13943, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13877, + "src": "23594:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 13944, + "name": "reservation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13888, + "src": "23603:11:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$13056_storage_ptr", + "typeString": "struct BookingToken.TokenReservation storage pointer" + } + }, + "id": 13945, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "23615:11:50", + "memberName": "reservedFor", + "nodeType": "MemberAccess", + "referencedDeclaration": 13042, + "src": "23603:23:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 13942, + "name": "TokenIsReserved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13164, + "src": "23578:15:50", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_address_$returns$__$", + "typeString": "function (uint256,address) pure" + } + }, + "id": 13946, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23578:49:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13947, + "nodeType": "RevertStatement", + "src": "23571:56:50" + } + ] + }, + "id": 13949, + "nodeType": "IfStatement", + "src": "23273:365:50", + "trueBody": { + "id": 13941, + "nodeType": "Block", + "src": "23328:164:50", + "statements": [ + { + "expression": { + "id": 13935, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 13928, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13882, + "src": "23342:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 13931, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "23344:14:50", + "memberName": "_bookingStatus", + "nodeType": "MemberAccess", + "referencedDeclaration": 13073, + "src": "23342:16:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_enum$_BookingStatus_$13040_$", + "typeString": "mapping(uint256 => enum BookingToken.BookingStatus)" + } + }, + "id": 13932, + "indexExpression": { + "id": 13930, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13877, + "src": "23359:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "23342:25:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 13933, + "name": "BookingStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13040, + "src": "23370:13:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_BookingStatus_$13040_$", + "typeString": "type(enum BookingToken.BookingStatus)" + } + }, + "id": 13934, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "23384:19:50", + "memberName": "RESERVATION_EXPIRED", + "nodeType": "MemberAccess", + "referencedDeclaration": 13037, + "src": "23370:33:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "src": "23342:61:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "id": 13936, + "nodeType": "ExpressionStatement", + "src": "23342:61:50" + }, + { + "eventCall": { + "arguments": [ + { + "id": 13938, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13877, + "src": "23473:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 13937, + "name": "TokenReservationExpired", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13117, + "src": "23449:23:50", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 13939, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23449:32:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13940, + "nodeType": "EmitStatement", + "src": "23444:37:50" + } + ] + } + } + ] + }, + "documentation": { + "id": 13875, + "nodeType": "StructuredDocumentation", + "src": "22497:117:50", + "text": " @notice Record expiration status if the token is expired\n @param tokenId The token id" + }, + "functionSelector": "e5a6725c", + "id": 13951, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "recordExpiration", + "nameLocation": "22628:16:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 13878, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13877, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "22653:7:50", + "nodeType": "VariableDeclaration", + "scope": 13951, + "src": "22645:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13876, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "22645:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "22644:17:50" + }, + "returnParameters": { + "id": 13879, + "nodeType": "ParameterList", + "parameters": [], + "src": "22677:0:50" + }, + "scope": 14541, + "src": "22619:1025:50", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 13967, + "nodeType": "Block", + "src": "23893:83:50", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 13964, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13954, + "src": "23961:7:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "arguments": [ + { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 13960, + "name": "getManagerAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14023, + "src": "23928:17:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 13961, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23928:19:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 13959, + "name": "ICMAccountManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16920, + "src": "23910:17:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ICMAccountManager_$16920_$", + "typeString": "type(contract ICMAccountManager)" + } + }, + "id": 13962, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23910:38:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ICMAccountManager_$16920", + "typeString": "contract ICMAccountManager" + } + }, + "id": 13963, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "23949:11:50", + "memberName": "isCMAccount", + "nodeType": "MemberAccess", + "referencedDeclaration": 16905, + "src": "23910:50:50", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view external returns (bool)" + } + }, + "id": 13965, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "23910:59:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 13958, + "id": 13966, + "nodeType": "Return", + "src": "23903:66:50" + } + ] + }, + "documentation": { + "id": 13952, + "nodeType": "StructuredDocumentation", + "src": "23650:165:50", + "text": " @notice Checks if an address is a CM Account.\n @param account The address to check\n @return true if the address is a CM Account" + }, + "functionSelector": "12b357b5", + "id": 13968, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isCMAccount", + "nameLocation": "23829:11:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 13955, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13954, + "mutability": "mutable", + "name": "account", + "nameLocation": "23849:7:50", + "nodeType": "VariableDeclaration", + "scope": 13968, + "src": "23841:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13953, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "23841:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "23840:17:50" + }, + "returnParameters": { + "id": 13958, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13957, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 13968, + "src": "23887:4:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 13956, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "23887:4:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "23886:6:50" + }, + "scope": 14541, + "src": "23820:156:50", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 13984, + "nodeType": "Block", + "src": "24186:96:50", + "statements": [ + { + "condition": { + "id": 13977, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "24200:21:50", + "subExpression": { + "arguments": [ + { + "id": 13975, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13971, + "src": "24213:7:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 13974, + "name": "isCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13968, + "src": "24201:11:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 13976, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24201:20:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 13983, + "nodeType": "IfStatement", + "src": "24196:80:50", + "trueBody": { + "id": 13982, + "nodeType": "Block", + "src": "24223:53:50", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 13979, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13971, + "src": "24257:7:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 13978, + "name": "NotCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13129, + "src": "24244:12:50", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 13980, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24244:21:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 13981, + "nodeType": "RevertStatement", + "src": "24237:28:50" + } + ] + } + } + ] + }, + "documentation": { + "id": 13969, + "nodeType": "StructuredDocumentation", + "src": "23982:134:50", + "text": " @notice Checks if the address is a CM Account and reverts if not.\n @param account The address to check" + }, + "id": 13985, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "requireCMAccount", + "nameLocation": "24130:16:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 13972, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13971, + "mutability": "mutable", + "name": "account", + "nameLocation": "24155:7:50", + "nodeType": "VariableDeclaration", + "scope": 13985, + "src": "24147:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13970, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24147:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "24146:17:50" + }, + "returnParameters": { + "id": 13973, + "nodeType": "ParameterList", + "parameters": [], + "src": "24186:0:50" + }, + "scope": 14541, + "src": "24121:161:50", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 14006, + "nodeType": "Block", + "src": "24493:104:50", + "statements": [ + { + "assignments": [ + 13996 + ], + "declarations": [ + { + "constant": false, + "id": 13996, + "mutability": "mutable", + "name": "$", + "nameLocation": "24531:1:50", + "nodeType": "VariableDeclaration", + "scope": 14006, + "src": "24503:29:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + }, + "typeName": { + "id": 13995, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 13994, + "name": "BookingTokenStorage", + "nameLocations": [ + "24503:19:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13074, + "src": "24503:19:50" + }, + "referencedDeclaration": 13074, + "src": "24503:19:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + } + }, + "visibility": "internal" + } + ], + "id": 13999, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 13997, + "name": "_getBookingTokenStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13085, + "src": "24535:23:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_BookingTokenStorage_$13074_storage_ptr_$", + "typeString": "function () pure returns (struct BookingToken.BookingTokenStorage storage pointer)" + } + }, + "id": 13998, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24535:25:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "24503:57:50" + }, + { + "expression": { + "id": 14004, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 14000, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13996, + "src": "24570:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 14002, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "24572:8:50", + "memberName": "_manager", + "nodeType": "MemberAccess", + "referencedDeclaration": 13059, + "src": "24570:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 14003, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13988, + "src": "24583:7:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "24570:20:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 14005, + "nodeType": "ExpressionStatement", + "src": "24570:20:50" + } + ] + }, + "documentation": { + "id": 13986, + "nodeType": "StructuredDocumentation", + "src": "24288:112:50", + "text": " @notice Sets for the manager address.\n @param manager The address of the manager" + }, + "functionSelector": "41431908", + "id": 14007, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 13991, + "name": "DEFAULT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28, + "src": "24473:18:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 13992, + "kind": "modifierInvocation", + "modifierName": { + "id": 13990, + "name": "onlyRole", + "nameLocations": [ + "24464:8:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "24464:8:50" + }, + "nodeType": "ModifierInvocation", + "src": "24464:28:50" + } + ], + "name": "setManagerAddress", + "nameLocation": "24414:17:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 13989, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 13988, + "mutability": "mutable", + "name": "manager", + "nameLocation": "24440:7:50", + "nodeType": "VariableDeclaration", + "scope": 14007, + "src": "24432:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13987, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24432:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "24431:17:50" + }, + "returnParameters": { + "id": 13993, + "nodeType": "ParameterList", + "parameters": [], + "src": "24493:0:50" + }, + "scope": 14541, + "src": "24405:192:50", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 14022, + "nodeType": "Block", + "src": "24734:101:50", + "statements": [ + { + "assignments": [ + 14015 + ], + "declarations": [ + { + "constant": false, + "id": 14015, + "mutability": "mutable", + "name": "$", + "nameLocation": "24772:1:50", + "nodeType": "VariableDeclaration", + "scope": 14022, + "src": "24744:29:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + }, + "typeName": { + "id": 14014, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 14013, + "name": "BookingTokenStorage", + "nameLocations": [ + "24744:19:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13074, + "src": "24744:19:50" + }, + "referencedDeclaration": 13074, + "src": "24744:19:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + } + }, + "visibility": "internal" + } + ], + "id": 14018, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 14016, + "name": "_getBookingTokenStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13085, + "src": "24776:23:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_BookingTokenStorage_$13074_storage_ptr_$", + "typeString": "function () pure returns (struct BookingToken.BookingTokenStorage storage pointer)" + } + }, + "id": 14017, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "24776:25:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "24744:57:50" + }, + { + "expression": { + "expression": { + "id": 14019, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14015, + "src": "24818:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 14020, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "24820:8:50", + "memberName": "_manager", + "nodeType": "MemberAccess", + "referencedDeclaration": 13059, + "src": "24818:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 14012, + "id": 14021, + "nodeType": "Return", + "src": "24811:17:50" + } + ] + }, + "documentation": { + "id": 14008, + "nodeType": "StructuredDocumentation", + "src": "24603:59:50", + "text": " @notice Returns for the manager address." + }, + "functionSelector": "c162d7da", + "id": 14023, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getManagerAddress", + "nameLocation": "24676:17:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 14009, + "nodeType": "ParameterList", + "parameters": [], + "src": "24693:2:50" + }, + "returnParameters": { + "id": 14012, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14011, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 14023, + "src": "24725:7:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 14010, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "24725:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "24724:9:50" + }, + "scope": 14541, + "src": "24667:168:50", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 14044, + "nodeType": "Block", + "src": "25168:142:50", + "statements": [ + { + "assignments": [ + 14034 + ], + "declarations": [ + { + "constant": false, + "id": 14034, + "mutability": "mutable", + "name": "$", + "nameLocation": "25206:1:50", + "nodeType": "VariableDeclaration", + "scope": 14044, + "src": "25178:29:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + }, + "typeName": { + "id": 14033, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 14032, + "name": "BookingTokenStorage", + "nameLocations": [ + "25178:19:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13074, + "src": "25178:19:50" + }, + "referencedDeclaration": 13074, + "src": "25178:19:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + } + }, + "visibility": "internal" + } + ], + "id": 14037, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 14035, + "name": "_getBookingTokenStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13085, + "src": "25210:23:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_BookingTokenStorage_$13074_storage_ptr_$", + "typeString": "function () pure returns (struct BookingToken.BookingTokenStorage storage pointer)" + } + }, + "id": 14036, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25210:25:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "25178:57:50" + }, + { + "expression": { + "id": 14042, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 14038, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14034, + "src": "25245:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 14040, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "25247:27:50", + "memberName": "_minExpirationTimestampDiff", + "nodeType": "MemberAccess", + "referencedDeclaration": 13063, + "src": "25245:29:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 14041, + "name": "minExpirationTimestampDiff", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14026, + "src": "25277:26:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "25245:58:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 14043, + "nodeType": "ExpressionStatement", + "src": "25245:58:50" + } + ] + }, + "documentation": { + "id": 14024, + "nodeType": "StructuredDocumentation", + "src": "24841:182:50", + "text": " @notice Sets minimum expiration timestamp difference in seconds.\n @param minExpirationTimestampDiff Minimum expiration timestamp difference in seconds" + }, + "functionSelector": "516a82b8", + "id": 14045, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 14029, + "name": "MIN_EXPIRATION_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13020, + "src": "25141:25:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 14030, + "kind": "modifierInvocation", + "modifierName": { + "id": 14028, + "name": "onlyRole", + "nameLocations": [ + "25132:8:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "25132:8:50" + }, + "nodeType": "ModifierInvocation", + "src": "25132:35:50" + } + ], + "name": "setMinExpirationTimestampDiff", + "nameLocation": "25037:29:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 14027, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14026, + "mutability": "mutable", + "name": "minExpirationTimestampDiff", + "nameLocation": "25084:26:50", + "nodeType": "VariableDeclaration", + "scope": 14045, + "src": "25076:34:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14025, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "25076:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "25066:50:50" + }, + "returnParameters": { + "id": 14031, + "nodeType": "ParameterList", + "parameters": [], + "src": "25168:0:50" + }, + "scope": 14541, + "src": "25028:282:50", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 14060, + "nodeType": "Block", + "src": "25486:120:50", + "statements": [ + { + "assignments": [ + 14053 + ], + "declarations": [ + { + "constant": false, + "id": 14053, + "mutability": "mutable", + "name": "$", + "nameLocation": "25524:1:50", + "nodeType": "VariableDeclaration", + "scope": 14060, + "src": "25496:29:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + }, + "typeName": { + "id": 14052, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 14051, + "name": "BookingTokenStorage", + "nameLocations": [ + "25496:19:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13074, + "src": "25496:19:50" + }, + "referencedDeclaration": 13074, + "src": "25496:19:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + } + }, + "visibility": "internal" + } + ], + "id": 14056, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 14054, + "name": "_getBookingTokenStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13085, + "src": "25528:23:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_BookingTokenStorage_$13074_storage_ptr_$", + "typeString": "function () pure returns (struct BookingToken.BookingTokenStorage storage pointer)" + } + }, + "id": 14055, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "25528:25:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "25496:57:50" + }, + { + "expression": { + "expression": { + "id": 14057, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14053, + "src": "25570:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 14058, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "25572:27:50", + "memberName": "_minExpirationTimestampDiff", + "nodeType": "MemberAccess", + "referencedDeclaration": 13063, + "src": "25570:29:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 14050, + "id": 14059, + "nodeType": "Return", + "src": "25563:36:50" + } + ] + }, + "documentation": { + "id": 14046, + "nodeType": "StructuredDocumentation", + "src": "25316:86:50", + "text": " @notice Returns minimum expiration timestamp difference in seconds." + }, + "functionSelector": "0e75c1a8", + "id": 14061, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getMinExpirationTimestampDiff", + "nameLocation": "25416:29:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 14047, + "nodeType": "ParameterList", + "parameters": [], + "src": "25445:2:50" + }, + "returnParameters": { + "id": 14050, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14049, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 14061, + "src": "25477:7:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14048, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "25477:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "25476:9:50" + }, + "scope": 14541, + "src": "25407:199:50", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 14122, + "nodeType": "Block", + "src": "25996:562:50", + "statements": [ + { + "assignments": [ + 14077 + ], + "declarations": [ + { + "constant": false, + "id": 14077, + "mutability": "mutable", + "name": "owner", + "nameLocation": "26056:5:50", + "nodeType": "VariableDeclaration", + "scope": 14122, + "src": "26048:13:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 14076, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "26048:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 14081, + "initialValue": { + "arguments": [ + { + "id": 14079, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14063, + "src": "26078:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 14078, + "name": "_requireOwned", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2101, + "src": "26064:13:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 14080, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26064:22:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "26048:38:50" + }, + { + "assignments": [ + 14084 + ], + "declarations": [ + { + "constant": false, + "id": 14084, + "mutability": "mutable", + "name": "$", + "nameLocation": "26148:1:50", + "nodeType": "VariableDeclaration", + "scope": 14122, + "src": "26120:29:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + }, + "typeName": { + "id": 14083, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 14082, + "name": "BookingTokenStorage", + "nameLocations": [ + "26120:19:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13074, + "src": "26120:19:50" + }, + "referencedDeclaration": 13074, + "src": "26120:19:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + } + }, + "visibility": "internal" + } + ], + "id": 14087, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 14085, + "name": "_getBookingTokenStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13085, + "src": "26152:23:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_BookingTokenStorage_$13074_storage_ptr_$", + "typeString": "function () pure returns (struct BookingToken.BookingTokenStorage storage pointer)" + } + }, + "id": 14086, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26152:25:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "26120:57:50" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + }, + "id": 14094, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "expression": { + "id": 14088, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14084, + "src": "26233:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 14089, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "26235:14:50", + "memberName": "_bookingStatus", + "nodeType": "MemberAccess", + "referencedDeclaration": 13073, + "src": "26233:16:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_enum$_BookingStatus_$13040_$", + "typeString": "mapping(uint256 => enum BookingToken.BookingStatus)" + } + }, + "id": 14091, + "indexExpression": { + "id": 14090, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14063, + "src": "26250:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "26233:25:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "id": 14092, + "name": "BookingStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13040, + "src": "26262:13:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_BookingStatus_$13040_$", + "typeString": "type(enum BookingToken.BookingStatus)" + } + }, + "id": 14093, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "26276:6:50", + "memberName": "BOUGHT", + "nodeType": "MemberAccess", + "referencedDeclaration": 13038, + "src": "26262:20:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "src": "26233:49:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 14104, + "nodeType": "IfStatement", + "src": "26229:141:50", + "trueBody": { + "id": 14103, + "nodeType": "Block", + "src": "26284:86:50", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 14096, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14063, + "src": "26324:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "baseExpression": { + "expression": { + "id": 14097, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14084, + "src": "26333:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 14098, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "26335:14:50", + "memberName": "_bookingStatus", + "nodeType": "MemberAccess", + "referencedDeclaration": 13073, + "src": "26333:16:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_enum$_BookingStatus_$13040_$", + "typeString": "mapping(uint256 => enum BookingToken.BookingStatus)" + } + }, + "id": 14100, + "indexExpression": { + "id": 14099, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14063, + "src": "26350:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "26333:25:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + ], + "id": 14095, + "name": "InvalidTokenStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13184, + "src": "26305:18:50", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_enum$_BookingStatus_$13040_$returns$__$", + "typeString": "function (uint256,enum BookingToken.BookingStatus) pure" + } + }, + "id": 14101, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26305:54:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 14102, + "nodeType": "RevertStatement", + "src": "26298:61:50" + } + ] + } + }, + { + "assignments": [ + 14106 + ], + "declarations": [ + { + "constant": false, + "id": 14106, + "mutability": "mutable", + "name": "supplier", + "nameLocation": "26388:8:50", + "nodeType": "VariableDeclaration", + "scope": 14122, + "src": "26380:16:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 14105, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "26380:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 14112, + "initialValue": { + "expression": { + "baseExpression": { + "expression": { + "id": 14107, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14084, + "src": "26399:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 14108, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "26401:13:50", + "memberName": "_reservations", + "nodeType": "MemberAccess", + "referencedDeclaration": 13068, + "src": "26399:15:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenReservation_$13056_storage_$", + "typeString": "mapping(uint256 => struct BookingToken.TokenReservation storage ref)" + } + }, + "id": 14110, + "indexExpression": { + "id": 14109, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14063, + "src": "26415:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "26399:24:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$13056_storage", + "typeString": "struct BookingToken.TokenReservation storage ref" + } + }, + "id": 14111, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "26424:8:50", + "memberName": "supplier", + "nodeType": "MemberAccess", + "referencedDeclaration": 13044, + "src": "26399:33:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "26380:52:50" + }, + { + "expression": { + "arguments": [ + { + "id": 14114, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14077, + "src": "26465:5:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 14115, + "name": "supplier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14106, + "src": "26472:8:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 14116, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14063, + "src": "26482:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 14117, + "name": "refundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14065, + "src": "26491:12:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 14118, + "name": "cancellationReason", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14067, + "src": "26505:18:50", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "id": 14119, + "name": "cancellationReasonVersion", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14069, + "src": "26525:25:50", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "id": 14113, + "name": "_initiateCancellation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15044, + "src": "26443:21:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint16_$_t_uint16_$returns$__$", + "typeString": "function (address,address,uint256,uint256,uint16,uint16)" + } + }, + "id": 14120, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26443:108:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 14121, + "nodeType": "ExpressionStatement", + "src": "26443:108:50" + } + ] + }, + "functionSelector": "f7e45f09", + "id": 14123, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "expression": { + "id": 14072, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "25984:3:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 14073, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "25988:6:50", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "25984:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 14074, + "kind": "modifierInvocation", + "modifierName": { + "id": 14071, + "name": "onlyCMAccount", + "nameLocations": [ + "25970:13:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13205, + "src": "25970:13:50" + }, + "nodeType": "ModifierInvocation", + "src": "25970:25:50" + } + ], + "name": "initiateCancellation", + "nameLocation": "25794:20:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 14070, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14063, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "25832:7:50", + "nodeType": "VariableDeclaration", + "scope": 14123, + "src": "25824:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14062, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "25824:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14065, + "mutability": "mutable", + "name": "refundAmount", + "nameLocation": "25857:12:50", + "nodeType": "VariableDeclaration", + "scope": 14123, + "src": "25849:20:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14064, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "25849:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14067, + "mutability": "mutable", + "name": "cancellationReason", + "nameLocation": "25886:18:50", + "nodeType": "VariableDeclaration", + "scope": 14123, + "src": "25879:25:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 14066, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "25879:6:50", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14069, + "mutability": "mutable", + "name": "cancellationReasonVersion", + "nameLocation": "25921:25:50", + "nodeType": "VariableDeclaration", + "scope": 14123, + "src": "25914:32:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 14068, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "25914:6:50", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "25814:138:50" + }, + "returnParameters": { + "id": 14075, + "nodeType": "ParameterList", + "parameters": [], + "src": "25996:0:50" + }, + "scope": 14541, + "src": "25785:773:50", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 14178, + "nodeType": "Block", + "src": "26674:513:50", + "statements": [ + { + "assignments": [ + 14135 + ], + "declarations": [ + { + "constant": false, + "id": 14135, + "mutability": "mutable", + "name": "owner", + "nameLocation": "26734:5:50", + "nodeType": "VariableDeclaration", + "scope": 14178, + "src": "26726:13:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 14134, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "26726:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 14139, + "initialValue": { + "arguments": [ + { + "id": 14137, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14125, + "src": "26756:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 14136, + "name": "_requireOwned", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2101, + "src": "26742:13:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 14138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26742:22:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "26726:38:50" + }, + { + "assignments": [ + 14142 + ], + "declarations": [ + { + "constant": false, + "id": 14142, + "mutability": "mutable", + "name": "$", + "nameLocation": "26826:1:50", + "nodeType": "VariableDeclaration", + "scope": 14178, + "src": "26798:29:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + }, + "typeName": { + "id": 14141, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 14140, + "name": "BookingTokenStorage", + "nameLocations": [ + "26798:19:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13074, + "src": "26798:19:50" + }, + "referencedDeclaration": 13074, + "src": "26798:19:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + } + }, + "visibility": "internal" + } + ], + "id": 14145, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 14143, + "name": "_getBookingTokenStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13085, + "src": "26830:23:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_BookingTokenStorage_$13074_storage_ptr_$", + "typeString": "function () pure returns (struct BookingToken.BookingTokenStorage storage pointer)" + } + }, + "id": 14144, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26830:25:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "26798:57:50" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + }, + "id": 14152, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "expression": { + "id": 14146, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14142, + "src": "26911:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 14147, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "26913:14:50", + "memberName": "_bookingStatus", + "nodeType": "MemberAccess", + "referencedDeclaration": 13073, + "src": "26911:16:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_enum$_BookingStatus_$13040_$", + "typeString": "mapping(uint256 => enum BookingToken.BookingStatus)" + } + }, + "id": 14149, + "indexExpression": { + "id": 14148, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14125, + "src": "26928:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "26911:25:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "id": 14150, + "name": "BookingStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13040, + "src": "26940:13:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_BookingStatus_$13040_$", + "typeString": "type(enum BookingToken.BookingStatus)" + } + }, + "id": 14151, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "26954:6:50", + "memberName": "BOUGHT", + "nodeType": "MemberAccess", + "referencedDeclaration": 13038, + "src": "26940:20:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "src": "26911:49:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 14162, + "nodeType": "IfStatement", + "src": "26907:141:50", + "trueBody": { + "id": 14161, + "nodeType": "Block", + "src": "26962:86:50", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 14154, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14125, + "src": "27002:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "baseExpression": { + "expression": { + "id": 14155, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14142, + "src": "27011:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 14156, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "27013:14:50", + "memberName": "_bookingStatus", + "nodeType": "MemberAccess", + "referencedDeclaration": 13073, + "src": "27011:16:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_enum$_BookingStatus_$13040_$", + "typeString": "mapping(uint256 => enum BookingToken.BookingStatus)" + } + }, + "id": 14158, + "indexExpression": { + "id": 14157, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14125, + "src": "27028:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "27011:25:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + ], + "id": 14153, + "name": "InvalidTokenStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13184, + "src": "26983:18:50", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_enum$_BookingStatus_$13040_$returns$__$", + "typeString": "function (uint256,enum BookingToken.BookingStatus) pure" + } + }, + "id": 14159, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "26983:54:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 14160, + "nodeType": "RevertStatement", + "src": "26976:61:50" + } + ] + } + }, + { + "assignments": [ + 14164 + ], + "declarations": [ + { + "constant": false, + "id": 14164, + "mutability": "mutable", + "name": "supplier", + "nameLocation": "27066:8:50", + "nodeType": "VariableDeclaration", + "scope": 14178, + "src": "27058:16:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 14163, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27058:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 14170, + "initialValue": { + "expression": { + "baseExpression": { + "expression": { + "id": 14165, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14142, + "src": "27077:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 14166, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "27079:13:50", + "memberName": "_reservations", + "nodeType": "MemberAccess", + "referencedDeclaration": 13068, + "src": "27077:15:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenReservation_$13056_storage_$", + "typeString": "mapping(uint256 => struct BookingToken.TokenReservation storage ref)" + } + }, + "id": 14168, + "indexExpression": { + "id": 14167, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14125, + "src": "27093:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "27077:24:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$13056_storage", + "typeString": "struct BookingToken.TokenReservation storage ref" + } + }, + "id": 14169, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "27102:8:50", + "memberName": "supplier", + "nodeType": "MemberAccess", + "referencedDeclaration": 13044, + "src": "27077:33:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "27058:52:50" + }, + { + "expression": { + "arguments": [ + { + "id": 14172, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14135, + "src": "27141:5:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 14173, + "name": "supplier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14164, + "src": "27148:8:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 14174, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14125, + "src": "27158:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 14175, + "name": "refundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14127, + "src": "27167:12:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 14171, + "name": "_acceptCancellation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15153, + "src": "27121:19:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256,uint256)" + } + }, + "id": 14176, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27121:59:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 14177, + "nodeType": "ExpressionStatement", + "src": "27121:59:50" + } + ] + }, + "functionSelector": "be667188", + "id": 14179, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "expression": { + "id": 14130, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "26662:3:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 14131, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "26666:6:50", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "26662:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 14132, + "kind": "modifierInvocation", + "modifierName": { + "id": 14129, + "name": "onlyCMAccount", + "nameLocations": [ + "26648:13:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13205, + "src": "26648:13:50" + }, + "nodeType": "ModifierInvocation", + "src": "26648:25:50" + } + ], + "name": "acceptCancellation", + "nameLocation": "26573:18:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 14128, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14125, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "26600:7:50", + "nodeType": "VariableDeclaration", + "scope": 14179, + "src": "26592:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14124, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26592:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14127, + "mutability": "mutable", + "name": "refundAmount", + "nameLocation": "26617:12:50", + "nodeType": "VariableDeclaration", + "scope": 14179, + "src": "26609:20:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14126, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "26609:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "26591:39:50" + }, + "returnParameters": { + "id": 14133, + "nodeType": "ParameterList", + "parameters": [], + "src": "26674:0:50" + }, + "scope": 14541, + "src": "26564:623:50", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 14240, + "nodeType": "Block", + "src": "27393:551:50", + "statements": [ + { + "assignments": [ + 14195 + ], + "declarations": [ + { + "constant": false, + "id": 14195, + "mutability": "mutable", + "name": "owner", + "nameLocation": "27453:5:50", + "nodeType": "VariableDeclaration", + "scope": 14240, + "src": "27445:13:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 14194, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27445:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 14199, + "initialValue": { + "arguments": [ + { + "id": 14197, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14181, + "src": "27475:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 14196, + "name": "_requireOwned", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2101, + "src": "27461:13:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 14198, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27461:22:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "27445:38:50" + }, + { + "assignments": [ + 14202 + ], + "declarations": [ + { + "constant": false, + "id": 14202, + "mutability": "mutable", + "name": "$", + "nameLocation": "27545:1:50", + "nodeType": "VariableDeclaration", + "scope": 14240, + "src": "27517:29:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + }, + "typeName": { + "id": 14201, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 14200, + "name": "BookingTokenStorage", + "nameLocations": [ + "27517:19:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13074, + "src": "27517:19:50" + }, + "referencedDeclaration": 13074, + "src": "27517:19:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + } + }, + "visibility": "internal" + } + ], + "id": 14205, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 14203, + "name": "_getBookingTokenStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13085, + "src": "27549:23:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_BookingTokenStorage_$13074_storage_ptr_$", + "typeString": "function () pure returns (struct BookingToken.BookingTokenStorage storage pointer)" + } + }, + "id": 14204, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27549:25:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "27517:57:50" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + }, + "id": 14212, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "expression": { + "id": 14206, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14202, + "src": "27630:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 14207, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "27632:14:50", + "memberName": "_bookingStatus", + "nodeType": "MemberAccess", + "referencedDeclaration": 13073, + "src": "27630:16:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_enum$_BookingStatus_$13040_$", + "typeString": "mapping(uint256 => enum BookingToken.BookingStatus)" + } + }, + "id": 14209, + "indexExpression": { + "id": 14208, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14181, + "src": "27647:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "27630:25:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "id": 14210, + "name": "BookingStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13040, + "src": "27659:13:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_BookingStatus_$13040_$", + "typeString": "type(enum BookingToken.BookingStatus)" + } + }, + "id": 14211, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "27673:6:50", + "memberName": "BOUGHT", + "nodeType": "MemberAccess", + "referencedDeclaration": 13038, + "src": "27659:20:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "src": "27630:49:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 14222, + "nodeType": "IfStatement", + "src": "27626:141:50", + "trueBody": { + "id": 14221, + "nodeType": "Block", + "src": "27681:86:50", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 14214, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14181, + "src": "27721:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "baseExpression": { + "expression": { + "id": 14215, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14202, + "src": "27730:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 14216, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "27732:14:50", + "memberName": "_bookingStatus", + "nodeType": "MemberAccess", + "referencedDeclaration": 13073, + "src": "27730:16:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_enum$_BookingStatus_$13040_$", + "typeString": "mapping(uint256 => enum BookingToken.BookingStatus)" + } + }, + "id": 14218, + "indexExpression": { + "id": 14217, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14181, + "src": "27747:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "27730:25:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + ], + "id": 14213, + "name": "InvalidTokenStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13184, + "src": "27702:18:50", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_enum$_BookingStatus_$13040_$returns$__$", + "typeString": "function (uint256,enum BookingToken.BookingStatus) pure" + } + }, + "id": 14219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27702:54:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 14220, + "nodeType": "RevertStatement", + "src": "27695:61:50" + } + ] + } + }, + { + "assignments": [ + 14224 + ], + "declarations": [ + { + "constant": false, + "id": 14224, + "mutability": "mutable", + "name": "supplier", + "nameLocation": "27785:8:50", + "nodeType": "VariableDeclaration", + "scope": 14240, + "src": "27777:16:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 14223, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "27777:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 14230, + "initialValue": { + "expression": { + "baseExpression": { + "expression": { + "id": 14225, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14202, + "src": "27796:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 14226, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "27798:13:50", + "memberName": "_reservations", + "nodeType": "MemberAccess", + "referencedDeclaration": 13068, + "src": "27796:15:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenReservation_$13056_storage_$", + "typeString": "mapping(uint256 => struct BookingToken.TokenReservation storage ref)" + } + }, + "id": 14228, + "indexExpression": { + "id": 14227, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14181, + "src": "27812:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "27796:24:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$13056_storage", + "typeString": "struct BookingToken.TokenReservation storage ref" + } + }, + "id": 14229, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "27821:8:50", + "memberName": "supplier", + "nodeType": "MemberAccess", + "referencedDeclaration": 13044, + "src": "27796:33:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "27777:52:50" + }, + { + "expression": { + "arguments": [ + { + "id": 14232, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14195, + "src": "27861:5:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 14233, + "name": "supplier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14224, + "src": "27868:8:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 14234, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14181, + "src": "27878:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 14235, + "name": "refundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14183, + "src": "27887:12:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 14236, + "name": "counterReason", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14185, + "src": "27901:13:50", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "id": 14237, + "name": "counterReasonVersion", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14187, + "src": "27916:20:50", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "id": 14231, + "name": "_counterCancellation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15283, + "src": "27840:20:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint16_$_t_uint16_$returns$__$", + "typeString": "function (address,address,uint256,uint256,uint16,uint16)" + } + }, + "id": 14238, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "27840:97:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 14239, + "nodeType": "ExpressionStatement", + "src": "27840:97:50" + } + ] + }, + "functionSelector": "74aa2048", + "id": 14241, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "expression": { + "id": 14190, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "27381:3:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 14191, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "27385:6:50", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "27381:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 14192, + "kind": "modifierInvocation", + "modifierName": { + "id": 14189, + "name": "onlyCMAccount", + "nameLocations": [ + "27367:13:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13205, + "src": "27367:13:50" + }, + "nodeType": "ModifierInvocation", + "src": "27367:25:50" + } + ], + "name": "counterCancellation", + "nameLocation": "27202:19:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 14188, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14181, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "27239:7:50", + "nodeType": "VariableDeclaration", + "scope": 14241, + "src": "27231:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14180, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27231:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14183, + "mutability": "mutable", + "name": "refundAmount", + "nameLocation": "27264:12:50", + "nodeType": "VariableDeclaration", + "scope": 14241, + "src": "27256:20:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14182, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27256:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14185, + "mutability": "mutable", + "name": "counterReason", + "nameLocation": "27293:13:50", + "nodeType": "VariableDeclaration", + "scope": 14241, + "src": "27286:20:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 14184, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "27286:6:50", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14187, + "mutability": "mutable", + "name": "counterReasonVersion", + "nameLocation": "27323:20:50", + "nodeType": "VariableDeclaration", + "scope": 14241, + "src": "27316:27:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 14186, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "27316:6:50", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "27221:128:50" + }, + "returnParameters": { + "id": 14193, + "nodeType": "ParameterList", + "parameters": [], + "src": "27393:0:50" + }, + "scope": 14541, + "src": "27193:751:50", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 14299, + "nodeType": "Block", + "src": "28127:544:50", + "statements": [ + { + "assignments": [ + 14255 + ], + "declarations": [ + { + "constant": false, + "id": 14255, + "mutability": "mutable", + "name": "owner", + "nameLocation": "28187:5:50", + "nodeType": "VariableDeclaration", + "scope": 14299, + "src": "28179:13:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 14254, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "28179:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 14259, + "initialValue": { + "arguments": [ + { + "id": 14257, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14243, + "src": "28209:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 14256, + "name": "_requireOwned", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2101, + "src": "28195:13:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 14258, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28195:22:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "28179:38:50" + }, + { + "assignments": [ + 14262 + ], + "declarations": [ + { + "constant": false, + "id": 14262, + "mutability": "mutable", + "name": "$", + "nameLocation": "28279:1:50", + "nodeType": "VariableDeclaration", + "scope": 14299, + "src": "28251:29:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + }, + "typeName": { + "id": 14261, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 14260, + "name": "BookingTokenStorage", + "nameLocations": [ + "28251:19:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13074, + "src": "28251:19:50" + }, + "referencedDeclaration": 13074, + "src": "28251:19:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + } + }, + "visibility": "internal" + } + ], + "id": 14265, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 14263, + "name": "_getBookingTokenStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13085, + "src": "28283:23:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_BookingTokenStorage_$13074_storage_ptr_$", + "typeString": "function () pure returns (struct BookingToken.BookingTokenStorage storage pointer)" + } + }, + "id": 14264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28283:25:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "28251:57:50" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + }, + "id": 14272, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "expression": { + "id": 14266, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14262, + "src": "28364:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 14267, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "28366:14:50", + "memberName": "_bookingStatus", + "nodeType": "MemberAccess", + "referencedDeclaration": 13073, + "src": "28364:16:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_enum$_BookingStatus_$13040_$", + "typeString": "mapping(uint256 => enum BookingToken.BookingStatus)" + } + }, + "id": 14269, + "indexExpression": { + "id": 14268, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14243, + "src": "28381:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "28364:25:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "id": 14270, + "name": "BookingStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13040, + "src": "28393:13:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_BookingStatus_$13040_$", + "typeString": "type(enum BookingToken.BookingStatus)" + } + }, + "id": 14271, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "28407:6:50", + "memberName": "BOUGHT", + "nodeType": "MemberAccess", + "referencedDeclaration": 13038, + "src": "28393:20:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "src": "28364:49:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 14282, + "nodeType": "IfStatement", + "src": "28360:141:50", + "trueBody": { + "id": 14281, + "nodeType": "Block", + "src": "28415:86:50", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 14274, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14243, + "src": "28455:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "baseExpression": { + "expression": { + "id": 14275, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14262, + "src": "28464:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 14276, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "28466:14:50", + "memberName": "_bookingStatus", + "nodeType": "MemberAccess", + "referencedDeclaration": 13073, + "src": "28464:16:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_enum$_BookingStatus_$13040_$", + "typeString": "mapping(uint256 => enum BookingToken.BookingStatus)" + } + }, + "id": 14278, + "indexExpression": { + "id": 14277, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14243, + "src": "28481:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "28464:25:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + ], + "id": 14273, + "name": "InvalidTokenStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13184, + "src": "28436:18:50", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_enum$_BookingStatus_$13040_$returns$__$", + "typeString": "function (uint256,enum BookingToken.BookingStatus) pure" + } + }, + "id": 14279, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28436:54:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 14280, + "nodeType": "RevertStatement", + "src": "28429:61:50" + } + ] + } + }, + { + "assignments": [ + 14284 + ], + "declarations": [ + { + "constant": false, + "id": 14284, + "mutability": "mutable", + "name": "supplier", + "nameLocation": "28519:8:50", + "nodeType": "VariableDeclaration", + "scope": 14299, + "src": "28511:16:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 14283, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "28511:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 14290, + "initialValue": { + "expression": { + "baseExpression": { + "expression": { + "id": 14285, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14262, + "src": "28530:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 14286, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "28532:13:50", + "memberName": "_reservations", + "nodeType": "MemberAccess", + "referencedDeclaration": 13068, + "src": "28530:15:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenReservation_$13056_storage_$", + "typeString": "mapping(uint256 => struct BookingToken.TokenReservation storage ref)" + } + }, + "id": 14288, + "indexExpression": { + "id": 14287, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14243, + "src": "28546:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "28530:24:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$13056_storage", + "typeString": "struct BookingToken.TokenReservation storage ref" + } + }, + "id": 14289, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "28555:8:50", + "memberName": "supplier", + "nodeType": "MemberAccess", + "referencedDeclaration": 13044, + "src": "28530:33:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "28511:52:50" + }, + { + "expression": { + "arguments": [ + { + "id": 14292, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14255, + "src": "28596:5:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 14293, + "name": "supplier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14284, + "src": "28603:8:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 14294, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14243, + "src": "28613:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 14295, + "name": "withdrawalReason", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14245, + "src": "28622:16:50", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "id": 14296, + "name": "withdrawalReasonVersion", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14247, + "src": "28640:23:50", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "id": 14291, + "name": "_withdrawCancellation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15359, + "src": "28574:21:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint16_$_t_uint16_$returns$__$", + "typeString": "function (address,address,uint256,uint16,uint16)" + } + }, + "id": 14297, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28574:90:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 14298, + "nodeType": "ExpressionStatement", + "src": "28574:90:50" + } + ] + }, + "functionSelector": "2a119380", + "id": 14300, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "expression": { + "id": 14250, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "28115:3:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 14251, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "28119:6:50", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "28115:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 14252, + "kind": "modifierInvocation", + "modifierName": { + "id": 14249, + "name": "onlyCMAccount", + "nameLocations": [ + "28101:13:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13205, + "src": "28101:13:50" + }, + "nodeType": "ModifierInvocation", + "src": "28101:25:50" + } + ], + "name": "withdrawCancellation", + "nameLocation": "27959:20:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 14248, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14243, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "27997:7:50", + "nodeType": "VariableDeclaration", + "scope": 14300, + "src": "27989:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14242, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "27989:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14245, + "mutability": "mutable", + "name": "withdrawalReason", + "nameLocation": "28021:16:50", + "nodeType": "VariableDeclaration", + "scope": 14300, + "src": "28014:23:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 14244, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "28014:6:50", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14247, + "mutability": "mutable", + "name": "withdrawalReasonVersion", + "nameLocation": "28054:23:50", + "nodeType": "VariableDeclaration", + "scope": 14300, + "src": "28047:30:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 14246, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "28047:6:50", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "27979:104:50" + }, + "returnParameters": { + "id": 14253, + "nodeType": "ParameterList", + "parameters": [], + "src": "28127:0:50" + }, + "scope": 14541, + "src": "27950:721:50", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 14358, + "nodeType": "Block", + "src": "28850:540:50", + "statements": [ + { + "assignments": [ + 14314 + ], + "declarations": [ + { + "constant": false, + "id": 14314, + "mutability": "mutable", + "name": "owner", + "nameLocation": "28910:5:50", + "nodeType": "VariableDeclaration", + "scope": 14358, + "src": "28902:13:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 14313, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "28902:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 14318, + "initialValue": { + "arguments": [ + { + "id": 14316, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14302, + "src": "28932:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 14315, + "name": "_requireOwned", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2101, + "src": "28918:13:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 14317, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "28918:22:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "28902:38:50" + }, + { + "assignments": [ + 14321 + ], + "declarations": [ + { + "constant": false, + "id": 14321, + "mutability": "mutable", + "name": "$", + "nameLocation": "29002:1:50", + "nodeType": "VariableDeclaration", + "scope": 14358, + "src": "28974:29:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + }, + "typeName": { + "id": 14320, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 14319, + "name": "BookingTokenStorage", + "nameLocations": [ + "28974:19:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13074, + "src": "28974:19:50" + }, + "referencedDeclaration": 13074, + "src": "28974:19:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + } + }, + "visibility": "internal" + } + ], + "id": 14324, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 14322, + "name": "_getBookingTokenStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13085, + "src": "29006:23:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_BookingTokenStorage_$13074_storage_ptr_$", + "typeString": "function () pure returns (struct BookingToken.BookingTokenStorage storage pointer)" + } + }, + "id": 14323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29006:25:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "28974:57:50" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + }, + "id": 14331, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "expression": { + "id": 14325, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14321, + "src": "29087:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 14326, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "29089:14:50", + "memberName": "_bookingStatus", + "nodeType": "MemberAccess", + "referencedDeclaration": 13073, + "src": "29087:16:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_enum$_BookingStatus_$13040_$", + "typeString": "mapping(uint256 => enum BookingToken.BookingStatus)" + } + }, + "id": 14328, + "indexExpression": { + "id": 14327, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14302, + "src": "29104:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "29087:25:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "id": 14329, + "name": "BookingStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13040, + "src": "29116:13:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_BookingStatus_$13040_$", + "typeString": "type(enum BookingToken.BookingStatus)" + } + }, + "id": 14330, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "29130:6:50", + "memberName": "BOUGHT", + "nodeType": "MemberAccess", + "referencedDeclaration": 13038, + "src": "29116:20:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "src": "29087:49:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 14341, + "nodeType": "IfStatement", + "src": "29083:141:50", + "trueBody": { + "id": 14340, + "nodeType": "Block", + "src": "29138:86:50", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 14333, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14302, + "src": "29178:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "baseExpression": { + "expression": { + "id": 14334, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14321, + "src": "29187:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 14335, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "29189:14:50", + "memberName": "_bookingStatus", + "nodeType": "MemberAccess", + "referencedDeclaration": 13073, + "src": "29187:16:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_enum$_BookingStatus_$13040_$", + "typeString": "mapping(uint256 => enum BookingToken.BookingStatus)" + } + }, + "id": 14337, + "indexExpression": { + "id": 14336, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14302, + "src": "29204:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "29187:25:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + ], + "id": 14332, + "name": "InvalidTokenStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13184, + "src": "29159:18:50", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_enum$_BookingStatus_$13040_$returns$__$", + "typeString": "function (uint256,enum BookingToken.BookingStatus) pure" + } + }, + "id": 14338, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29159:54:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 14339, + "nodeType": "RevertStatement", + "src": "29152:61:50" + } + ] + } + }, + { + "assignments": [ + 14343 + ], + "declarations": [ + { + "constant": false, + "id": 14343, + "mutability": "mutable", + "name": "supplier", + "nameLocation": "29242:8:50", + "nodeType": "VariableDeclaration", + "scope": 14358, + "src": "29234:16:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 14342, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "29234:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 14349, + "initialValue": { + "expression": { + "baseExpression": { + "expression": { + "id": 14344, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14321, + "src": "29253:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 14345, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "29255:13:50", + "memberName": "_reservations", + "nodeType": "MemberAccess", + "referencedDeclaration": 13068, + "src": "29253:15:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenReservation_$13056_storage_$", + "typeString": "mapping(uint256 => struct BookingToken.TokenReservation storage ref)" + } + }, + "id": 14347, + "indexExpression": { + "id": 14346, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14302, + "src": "29269:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "29253:24:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$13056_storage", + "typeString": "struct BookingToken.TokenReservation storage ref" + } + }, + "id": 14348, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "29278:8:50", + "memberName": "supplier", + "nodeType": "MemberAccess", + "referencedDeclaration": 13044, + "src": "29253:33:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "29234:52:50" + }, + { + "expression": { + "arguments": [ + { + "id": 14351, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14314, + "src": "29317:5:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 14352, + "name": "supplier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14343, + "src": "29324:8:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 14353, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14302, + "src": "29334:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 14354, + "name": "rejectionReason", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14304, + "src": "29343:15:50", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "id": 14355, + "name": "rejectionReasonVersion", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14306, + "src": "29360:22:50", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "id": 14350, + "name": "_rejectCancellation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15440, + "src": "29297:19:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint16_$_t_uint16_$returns$__$", + "typeString": "function (address,address,uint256,uint16,uint16)" + } + }, + "id": 14356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29297:86:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 14357, + "nodeType": "ExpressionStatement", + "src": "29297:86:50" + } + ] + }, + "functionSelector": "74fe60e9", + "id": 14359, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "expression": { + "id": 14309, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "28838:3:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 14310, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "28842:6:50", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "28838:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 14311, + "kind": "modifierInvocation", + "modifierName": { + "id": 14308, + "name": "onlyCMAccount", + "nameLocations": [ + "28824:13:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13205, + "src": "28824:13:50" + }, + "nodeType": "ModifierInvocation", + "src": "28824:25:50" + } + ], + "name": "rejectCancellation", + "nameLocation": "28686:18:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 14307, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14302, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "28722:7:50", + "nodeType": "VariableDeclaration", + "scope": 14359, + "src": "28714:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14301, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "28714:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14304, + "mutability": "mutable", + "name": "rejectionReason", + "nameLocation": "28746:15:50", + "nodeType": "VariableDeclaration", + "scope": 14359, + "src": "28739:22:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 14303, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "28739:6:50", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14306, + "mutability": "mutable", + "name": "rejectionReasonVersion", + "nameLocation": "28778:22:50", + "nodeType": "VariableDeclaration", + "scope": 14359, + "src": "28771:29:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 14305, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "28771:6:50", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "28704:102:50" + }, + "returnParameters": { + "id": 14312, + "nodeType": "ParameterList", + "parameters": [], + "src": "28850:0:50" + }, + "scope": 14541, + "src": "28677:713:50", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "external" + }, + { + "body": { + "id": 14439, + "nodeType": "Block", + "src": "29543:793:50", + "statements": [ + { + "assignments": [ + 14371 + ], + "declarations": [ + { + "constant": false, + "id": 14371, + "mutability": "mutable", + "name": "owner", + "nameLocation": "29603:5:50", + "nodeType": "VariableDeclaration", + "scope": 14439, + "src": "29595:13:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 14370, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "29595:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 14375, + "initialValue": { + "arguments": [ + { + "id": 14373, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14361, + "src": "29625:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 14372, + "name": "_requireOwned", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2101, + "src": "29611:13:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 14374, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29611:22:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "29595:38:50" + }, + { + "assignments": [ + 14378 + ], + "declarations": [ + { + "constant": false, + "id": 14378, + "mutability": "mutable", + "name": "$", + "nameLocation": "29695:1:50", + "nodeType": "VariableDeclaration", + "scope": 14439, + "src": "29667:29:50", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + }, + "typeName": { + "id": 14377, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 14376, + "name": "BookingTokenStorage", + "nameLocations": [ + "29667:19:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13074, + "src": "29667:19:50" + }, + "referencedDeclaration": 13074, + "src": "29667:19:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage" + } + }, + "visibility": "internal" + } + ], + "id": 14381, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 14379, + "name": "_getBookingTokenStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13085, + "src": "29699:23:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_BookingTokenStorage_$13074_storage_ptr_$", + "typeString": "function () pure returns (struct BookingToken.BookingTokenStorage storage pointer)" + } + }, + "id": 14380, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29699:25:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "29667:57:50" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + }, + "id": 14388, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "expression": { + "id": 14382, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14378, + "src": "29780:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 14383, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "29782:14:50", + "memberName": "_bookingStatus", + "nodeType": "MemberAccess", + "referencedDeclaration": 13073, + "src": "29780:16:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_enum$_BookingStatus_$13040_$", + "typeString": "mapping(uint256 => enum BookingToken.BookingStatus)" + } + }, + "id": 14385, + "indexExpression": { + "id": 14384, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14361, + "src": "29797:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "29780:25:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "id": 14386, + "name": "BookingStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13040, + "src": "29809:13:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_BookingStatus_$13040_$", + "typeString": "type(enum BookingToken.BookingStatus)" + } + }, + "id": 14387, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "29823:6:50", + "memberName": "BOUGHT", + "nodeType": "MemberAccess", + "referencedDeclaration": 13038, + "src": "29809:20:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "src": "29780:49:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 14398, + "nodeType": "IfStatement", + "src": "29776:141:50", + "trueBody": { + "id": 14397, + "nodeType": "Block", + "src": "29831:86:50", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 14390, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14361, + "src": "29871:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "baseExpression": { + "expression": { + "id": 14391, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14378, + "src": "29880:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 14392, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "29882:14:50", + "memberName": "_bookingStatus", + "nodeType": "MemberAccess", + "referencedDeclaration": 13073, + "src": "29880:16:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_enum$_BookingStatus_$13040_$", + "typeString": "mapping(uint256 => enum BookingToken.BookingStatus)" + } + }, + "id": 14394, + "indexExpression": { + "id": 14393, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14361, + "src": "29897:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "29880:25:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + ], + "id": 14389, + "name": "InvalidTokenStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13184, + "src": "29852:18:50", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_enum$_BookingStatus_$13040_$returns$__$", + "typeString": "function (uint256,enum BookingToken.BookingStatus) pure" + } + }, + "id": 14395, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "29852:54:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 14396, + "nodeType": "RevertStatement", + "src": "29845:61:50" + } + ] + } + }, + { + "assignments": [ + 14400 + ], + "declarations": [ + { + "constant": false, + "id": 14400, + "mutability": "mutable", + "name": "supplier", + "nameLocation": "29935:8:50", + "nodeType": "VariableDeclaration", + "scope": 14439, + "src": "29927:16:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 14399, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "29927:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 14406, + "initialValue": { + "expression": { + "baseExpression": { + "expression": { + "id": 14401, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14378, + "src": "29946:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 14402, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "29948:13:50", + "memberName": "_reservations", + "nodeType": "MemberAccess", + "referencedDeclaration": 13068, + "src": "29946:15:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenReservation_$13056_storage_$", + "typeString": "mapping(uint256 => struct BookingToken.TokenReservation storage ref)" + } + }, + "id": 14404, + "indexExpression": { + "id": 14403, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14361, + "src": "29962:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "29946:24:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$13056_storage", + "typeString": "struct BookingToken.TokenReservation storage ref" + } + }, + "id": 14405, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "29971:8:50", + "memberName": "supplier", + "nodeType": "MemberAccess", + "referencedDeclaration": 13044, + "src": "29946:33:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "29927:52:50" + }, + { + "assignments": [ + 14408 + ], + "declarations": [ + { + "constant": false, + "id": 14408, + "mutability": "mutable", + "name": "refundAmount", + "nameLocation": "29998:12:50", + "nodeType": "VariableDeclaration", + "scope": 14439, + "src": "29990:20:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14407, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "29990:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 14414, + "initialValue": { + "arguments": [ + { + "id": 14410, + "name": "supplier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14400, + "src": "30035:8:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 14411, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14361, + "src": "30045:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 14412, + "name": "checkRefundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14363, + "src": "30054:17:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 14409, + "name": "_finalizeCancellation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15531, + "src": "30013:21:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (address,uint256,uint256) returns (uint256)" + } + }, + "id": 14413, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "30013:59:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "29990:82:50" + }, + { + "assignments": [ + 14417 + ], + "declarations": [ + { + "constant": false, + "id": 14417, + "mutability": "mutable", + "name": "paymentToken", + "nameLocation": "30090:12:50", + "nodeType": "VariableDeclaration", + "scope": 14439, + "src": "30083:19:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 14416, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 14415, + "name": "IERC20", + "nameLocations": [ + "30083:6:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4513, + "src": "30083:6:50" + }, + "referencedDeclaration": 4513, + "src": "30083:6:50", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "id": 14423, + "initialValue": { + "expression": { + "baseExpression": { + "expression": { + "id": 14418, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14378, + "src": "30105:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 14419, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "30107:13:50", + "memberName": "_reservations", + "nodeType": "MemberAccess", + "referencedDeclaration": 13068, + "src": "30105:15:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_TokenReservation_$13056_storage_$", + "typeString": "mapping(uint256 => struct BookingToken.TokenReservation storage ref)" + } + }, + "id": 14421, + "indexExpression": { + "id": 14420, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14361, + "src": "30121:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "30105:24:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_TokenReservation_$13056_storage", + "typeString": "struct BookingToken.TokenReservation storage ref" + } + }, + "id": 14422, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "30130:12:50", + "memberName": "paymentToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 13051, + "src": "30105:37:50", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "30083:59:50" + }, + { + "expression": { + "id": 14431, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 14424, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14378, + "src": "30191:1:50", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenStorage_$13074_storage_ptr", + "typeString": "struct BookingToken.BookingTokenStorage storage pointer" + } + }, + "id": 14427, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "30193:14:50", + "memberName": "_bookingStatus", + "nodeType": "MemberAccess", + "referencedDeclaration": 13073, + "src": "30191:16:50", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_enum$_BookingStatus_$13040_$", + "typeString": "mapping(uint256 => enum BookingToken.BookingStatus)" + } + }, + "id": 14428, + "indexExpression": { + "id": 14426, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14361, + "src": "30208:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "30191:25:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 14429, + "name": "BookingStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13040, + "src": "30219:13:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_BookingStatus_$13040_$", + "typeString": "type(enum BookingToken.BookingStatus)" + } + }, + "id": 14430, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "30233:9:50", + "memberName": "CANCELLED", + "nodeType": "MemberAccess", + "referencedDeclaration": 13039, + "src": "30219:23:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "src": "30191:51:50", + "typeDescriptions": { + "typeIdentifier": "t_enum$_BookingStatus_$13040", + "typeString": "enum BookingToken.BookingStatus" + } + }, + "id": 14432, + "nodeType": "ExpressionStatement", + "src": "30191:51:50" + }, + { + "expression": { + "arguments": [ + { + "id": 14434, + "name": "paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14417, + "src": "30295:12:50", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + { + "id": 14435, + "name": "refundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14408, + "src": "30309:12:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 14436, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14371, + "src": "30323:5:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 14433, + "name": "processPayment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13643, + "src": "30280:14:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4513_$_t_uint256_$_t_address_$returns$__$", + "typeString": "function (contract IERC20,uint256,address)" + } + }, + "id": 14437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "30280:49:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 14438, + "nodeType": "ExpressionStatement", + "src": "30280:49:50" + } + ] + }, + "functionSelector": "1c54f0f7", + "id": 14440, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "expression": { + "id": 14366, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "29531:3:50", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 14367, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "29535:6:50", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "29531:10:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 14368, + "kind": "modifierInvocation", + "modifierName": { + "id": 14365, + "name": "onlyCMAccount", + "nameLocations": [ + "29517:13:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 13205, + "src": "29517:13:50" + }, + "nodeType": "ModifierInvocation", + "src": "29517:25:50" + } + ], + "name": "finalizeCancellation", + "nameLocation": "29405:20:50", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 14364, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14361, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "29443:7:50", + "nodeType": "VariableDeclaration", + "scope": 14440, + "src": "29435:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14360, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "29435:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14363, + "mutability": "mutable", + "name": "checkRefundAmount", + "nameLocation": "29468:17:50", + "nodeType": "VariableDeclaration", + "scope": 14440, + "src": "29460:25:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14362, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "29460:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "29425:66:50" + }, + "returnParameters": { + "id": 14369, + "nodeType": "ParameterList", + "parameters": [], + "src": "29543:0:50" + }, + "scope": 14541, + "src": "29396:940:50", + "stateMutability": "payable", + "virtual": true, + "visibility": "external" + }, + { + "baseFunctions": [ + 1412, + 5032 + ], + "body": { + "id": 14465, + "nodeType": "Block", + "src": "30790:159:50", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 14454, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14447, + "src": "30887:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 14453, + "name": "checkTransferable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13874, + "src": "30869:17:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 14455, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "30869:26:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 14456, + "nodeType": "ExpressionStatement", + "src": "30869:26:50" + }, + { + "expression": { + "arguments": [ + { + "id": 14460, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14443, + "src": "30924:4:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 14461, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14445, + "src": "30930:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 14462, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14447, + "src": "30934:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 14457, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "30905:5:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_BookingToken_$14541_$", + "typeString": "type(contract super BookingToken)" + } + }, + "id": 14459, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "30911:12:50", + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 1412, + "src": "30905:18:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 14463, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "30905:37:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 14464, + "nodeType": "ExpressionStatement", + "src": "30905:37:50" + } + ] + }, + "documentation": { + "id": 14441, + "nodeType": "StructuredDocumentation", + "src": "30515:123:50", + "text": " @notice Override transferFrom to check if token is reserved. It reverts if\n the token is reserved." + }, + "functionSelector": "23b872dd", + "id": 14466, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nameLocation": "30652:12:50", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 14451, + "nodeType": "OverrideSpecifier", + "overrides": [ + { + "id": 14449, + "name": "ERC721Upgradeable", + "nameLocations": [ + "30762:17:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2102, + "src": "30762:17:50" + }, + { + "id": 14450, + "name": "IERC721", + "nameLocations": [ + "30781:7:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5067, + "src": "30781:7:50" + } + ], + "src": "30753:36:50" + }, + "parameters": { + "id": 14448, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14443, + "mutability": "mutable", + "name": "from", + "nameLocation": "30682:4:50", + "nodeType": "VariableDeclaration", + "scope": 14466, + "src": "30674:12:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 14442, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "30674:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14445, + "mutability": "mutable", + "name": "to", + "nameLocation": "30704:2:50", + "nodeType": "VariableDeclaration", + "scope": 14466, + "src": "30696:10:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 14444, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "30696:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14447, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "30724:7:50", + "nodeType": "VariableDeclaration", + "scope": 14466, + "src": "30716:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14446, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "30716:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "30664:73:50" + }, + "returnParameters": { + "id": 14452, + "nodeType": "ParameterList", + "parameters": [], + "src": "30790:0:50" + }, + "scope": 14541, + "src": "30643:306:50", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 1699, + 2351 + ], + "body": { + "id": 14487, + "nodeType": "Block", + "src": "31342:56:50", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 14482, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14468, + "src": "31373:2:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 14483, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14470, + "src": "31377:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 14484, + "name": "auth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14472, + "src": "31386:4:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "id": 14480, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "31359:5:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_BookingToken_$14541_$", + "typeString": "type(contract super BookingToken)" + } + }, + "id": 14481, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "31365:7:50", + "memberName": "_update", + "nodeType": "MemberAccess", + "referencedDeclaration": 2351, + "src": "31359:13:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_address_$", + "typeString": "function (address,uint256,address) returns (address)" + } + }, + "id": 14485, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31359:32:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 14479, + "id": 14486, + "nodeType": "Return", + "src": "31352:39:50" + } + ] + }, + "id": 14488, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_update", + "nameLocation": "31177:7:50", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 14476, + "nodeType": "OverrideSpecifier", + "overrides": [ + { + "id": 14474, + "name": "ERC721Upgradeable", + "nameLocations": [ + "31276:17:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2102, + "src": "31276:17:50" + }, + { + "id": 14475, + "name": "ERC721EnumerableUpgradeable", + "nameLocations": [ + "31295:27:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2586, + "src": "31295:27:50" + } + ], + "src": "31267:56:50" + }, + "parameters": { + "id": 14473, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14468, + "mutability": "mutable", + "name": "to", + "nameLocation": "31202:2:50", + "nodeType": "VariableDeclaration", + "scope": 14488, + "src": "31194:10:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 14467, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "31194:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14470, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "31222:7:50", + "nodeType": "VariableDeclaration", + "scope": 14488, + "src": "31214:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14469, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "31214:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14472, + "mutability": "mutable", + "name": "auth", + "nameLocation": "31247:4:50", + "nodeType": "VariableDeclaration", + "scope": 14488, + "src": "31239:12:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 14471, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "31239:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "31184:73:50" + }, + "returnParameters": { + "id": 14479, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14478, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 14488, + "src": "31333:7:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 14477, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "31333:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "31332:9:50" + }, + "scope": 14541, + "src": "31168:230:50", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 1597, + 2585 + ], + "body": { + "id": 14505, + "nodeType": "Block", + "src": "31550:55:50", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 14501, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14490, + "src": "31583:7:50", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 14502, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14492, + "src": "31592:5:50", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + ], + "expression": { + "id": 14498, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "31560:5:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_BookingToken_$14541_$", + "typeString": "type(contract super BookingToken)" + } + }, + "id": 14500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "31566:16:50", + "memberName": "_increaseBalance", + "nodeType": "MemberAccess", + "referencedDeclaration": 2585, + "src": "31560:22:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint128_$returns$__$", + "typeString": "function (address,uint128)" + } + }, + "id": 14503, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31560:38:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 14504, + "nodeType": "ExpressionStatement", + "src": "31560:38:50" + } + ] + }, + "id": 14506, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_increaseBalance", + "nameLocation": "31413:16:50", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 14496, + "nodeType": "OverrideSpecifier", + "overrides": [ + { + "id": 14494, + "name": "ERC721Upgradeable", + "nameLocations": [ + "31502:17:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2102, + "src": "31502:17:50" + }, + { + "id": 14495, + "name": "ERC721EnumerableUpgradeable", + "nameLocations": [ + "31521:27:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2586, + "src": "31521:27:50" + } + ], + "src": "31493:56:50" + }, + "parameters": { + "id": 14493, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14490, + "mutability": "mutable", + "name": "account", + "nameLocation": "31447:7:50", + "nodeType": "VariableDeclaration", + "scope": 14506, + "src": "31439:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 14489, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "31439:7:50", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14492, + "mutability": "mutable", + "name": "value", + "nameLocation": "31472:5:50", + "nodeType": "VariableDeclaration", + "scope": 14506, + "src": "31464:13:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 14491, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "31464:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "visibility": "internal" + } + ], + "src": "31429:54:50" + }, + "returnParameters": { + "id": 14497, + "nodeType": "ParameterList", + "parameters": [], + "src": "31550:0:50" + }, + "scope": 14541, + "src": "31404:201:50", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 1284, + 2728 + ], + "body": { + "id": 14521, + "nodeType": "Block", + "src": "31753:47:50", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 14518, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14508, + "src": "31785:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 14516, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "31770:5:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_BookingToken_$14541_$", + "typeString": "type(contract super BookingToken)" + } + }, + "id": 14517, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "31776:8:50", + "memberName": "tokenURI", + "nodeType": "MemberAccess", + "referencedDeclaration": 2728, + "src": "31770:14:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_string_memory_ptr_$", + "typeString": "function (uint256) view returns (string memory)" + } + }, + "id": 14519, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "31770:23:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 14515, + "id": 14520, + "nodeType": "Return", + "src": "31763:30:50" + } + ] + }, + "functionSelector": "c87b56dd", + "id": 14522, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tokenURI", + "nameLocation": "31620:8:50", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 14512, + "nodeType": "OverrideSpecifier", + "overrides": [ + { + "id": 14510, + "name": "ERC721Upgradeable", + "nameLocations": [ + "31681:17:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2102, + "src": "31681:17:50" + }, + { + "id": 14511, + "name": "ERC721URIStorageUpgradeable", + "nameLocations": [ + "31700:27:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2756, + "src": "31700:27:50" + } + ], + "src": "31672:56:50" + }, + "parameters": { + "id": 14509, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14508, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "31646:7:50", + "nodeType": "VariableDeclaration", + "scope": 14522, + "src": "31638:15:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14507, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "31638:7:50", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "31628:31:50" + }, + "returnParameters": { + "id": 14515, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14514, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 14522, + "src": "31738:13:50", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 14513, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "31738:6:50", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "31737:15:50" + }, + "scope": 14541, + "src": "31611:189:50", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 91, + 1168, + 2195, + 2664 + ], + "body": { + "id": 14539, + "nodeType": "Block", + "src": "32042:60:50", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 14536, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14524, + "src": "32083:11:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "expression": { + "id": 14534, + "name": "super", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -25, + "src": "32059:5:50", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_super$_BookingToken_$14541_$", + "typeString": "type(contract super BookingToken)" + } + }, + "id": 14535, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "32065:17:50", + "memberName": "supportsInterface", + "nodeType": "MemberAccess", + "referencedDeclaration": 91, + "src": "32059:23:50", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes4_$returns$_t_bool_$", + "typeString": "function (bytes4) view returns (bool)" + } + }, + "id": 14537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "32059:36:50", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 14533, + "id": 14538, + "nodeType": "Return", + "src": "32052:43:50" + } + ] + }, + "functionSelector": "01ffc9a7", + "id": 14540, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nameLocation": "31815:17:50", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 14530, + "nodeType": "OverrideSpecifier", + "overrides": [ + { + "id": 14526, + "name": "ERC721Upgradeable", + "nameLocations": [ + "31912:17:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2102, + "src": "31912:17:50" + }, + { + "id": 14527, + "name": "ERC721EnumerableUpgradeable", + "nameLocations": [ + "31931:27:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2586, + "src": "31931:27:50" + }, + { + "id": 14528, + "name": "ERC721URIStorageUpgradeable", + "nameLocations": [ + "31960:27:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2756, + "src": "31960:27:50" + }, + { + "id": 14529, + "name": "AccessControlUpgradeable", + "nameLocations": [ + "31989:24:50" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 362, + "src": "31989:24:50" + } + ], + "src": "31903:111:50" + }, + "parameters": { + "id": 14525, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14524, + "mutability": "mutable", + "name": "interfaceId", + "nameLocation": "31849:11:50", + "nodeType": "VariableDeclaration", + "scope": 14540, + "src": "31842:18:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 14523, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "31842:6:50", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "31832:34:50" + }, + "returnParameters": { + "id": 14533, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14532, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 14540, + "src": "32032:4:50", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 14531, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "32032:4:50", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "32031:6:50" + }, + "scope": 14541, + "src": "31806:296:50", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + } + ], + "scope": 14542, + "src": "1763:30341:50", + "usedErrors": [ + 603, + 606, + 867, + 872, + 2156, + 2159, + 3009, + 3157, + 3160, + 3453, + 3458, + 3467, + 3472, + 3477, + 3484, + 3489, + 3494, + 3600, + 3613, + 4553, + 5232, + 5521, + 5524, + 13124, + 13129, + 13136, + 13143, + 13150, + 13157, + 13164, + 13176, + 13184, + 13189, + 13194, + 14662, + 14666, + 14674, + 14681, + 14685, + 14689, + 14693, + 14697 + ], + "usedEvents": [ + 611, + 3169, + 3178, + 3187, + 3350, + 3383, + 3390, + 4966, + 4975, + 4984, + 13105, + 13112, + 13117, + 14620, + 14640, + 14648, + 14656, + 14660 + ] + } + ], + "src": "39:32066:50" + }, + "id": 50 + }, + "contracts/booking-token/BookingTokenCancellable.sol": { + "ast": { + "absolutePath": "contracts/booking-token/BookingTokenCancellable.sol", + "exportedSymbols": { + "BookingTokenCancellable": [ + 15532 + ], + "CancellationProposalStatus": [ + 14549 + ] + }, + "id": 15533, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 14543, + "literals": [ + "solidity", + "0.8", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "39:23:51" + }, + { + "canonicalName": "CancellationProposalStatus", + "id": 14549, + "members": [ + { + "id": 14544, + "name": "NO_PROPOSAL", + "nameLocation": "102:11:51", + "nodeType": "EnumValue", + "src": "102:11:51" + }, + { + "id": 14545, + "name": "PENDING", + "nameLocation": "133:7:51", + "nodeType": "EnumValue", + "src": "133:7:51" + }, + { + "id": 14546, + "name": "REJECTED", + "nameLocation": "151:8:51", + "nodeType": "EnumValue", + "src": "151:8:51" + }, + { + "id": 14547, + "name": "WITHDRAWN", + "nameLocation": "170:9:51", + "nodeType": "EnumValue", + "src": "170:9:51" + }, + { + "id": 14548, + "name": "FINALIZED", + "nameLocation": "190:9:51", + "nodeType": "EnumValue", + "src": "190:9:51" + } + ], + "name": "CancellationProposalStatus", + "nameLocation": "69:26:51", + "nodeType": "EnumDefinition", + "src": "64:142:51" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "BookingTokenCancellable", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 15532, + "linearizedBaseContracts": [ + 15532 + ], + "name": "BookingTokenCancellable", + "nameLocation": "217:23:51", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "BookingTokenCancellable.Proposal", + "id": 14583, + "members": [ + { + "constant": false, + "id": 14551, + "mutability": "mutable", + "name": "refundAmount", + "nameLocation": "281:12:51", + "nodeType": "VariableDeclaration", + "scope": 14583, + "src": "273:20:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14550, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "273:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14553, + "mutability": "mutable", + "name": "initialProposer", + "nameLocation": "321:15:51", + "nodeType": "VariableDeclaration", + "scope": 14583, + "src": "313:23:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 14552, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "313:7:51", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14555, + "mutability": "mutable", + "name": "timesCountered", + "nameLocation": "375:14:51", + "nodeType": "VariableDeclaration", + "scope": 14583, + "src": "368:21:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 14554, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "368:6:51", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14557, + "mutability": "mutable", + "name": "ownerAccepted", + "nameLocation": "428:13:51", + "nodeType": "VariableDeclaration", + "scope": 14583, + "src": "423:18:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 14556, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "423:4:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14559, + "mutability": "mutable", + "name": "supplierAccepted", + "nameLocation": "480:16:51", + "nodeType": "VariableDeclaration", + "scope": 14583, + "src": "475:21:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 14558, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "475:4:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14561, + "mutability": "mutable", + "name": "currentProposer", + "nameLocation": "557:15:51", + "nodeType": "VariableDeclaration", + "scope": 14583, + "src": "549:23:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 14560, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "549:7:51", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14563, + "mutability": "mutable", + "name": "timesRejected", + "nameLocation": "611:13:51", + "nodeType": "VariableDeclaration", + "scope": 14583, + "src": "604:20:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 14562, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "604:6:51", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14566, + "mutability": "mutable", + "name": "status", + "nameLocation": "686:6:51", + "nodeType": "VariableDeclaration", + "scope": 14583, + "src": "659:33:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + }, + "typeName": { + "id": 14565, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 14564, + "name": "CancellationProposalStatus", + "nameLocations": [ + "659:26:51" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 14549, + "src": "659:26:51" + }, + "referencedDeclaration": 14549, + "src": "659:26:51", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14568, + "mutability": "mutable", + "name": "cancellationReason", + "nameLocation": "752:18:51", + "nodeType": "VariableDeclaration", + "scope": 14583, + "src": "745:25:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 14567, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "745:6:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14570, + "mutability": "mutable", + "name": "cancellationVersion", + "nameLocation": "808:19:51", + "nodeType": "VariableDeclaration", + "scope": 14583, + "src": "801:26:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 14569, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "801:6:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14572, + "mutability": "mutable", + "name": "rejectionReason", + "nameLocation": "869:15:51", + "nodeType": "VariableDeclaration", + "scope": 14583, + "src": "862:22:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 14571, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "862:6:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14574, + "mutability": "mutable", + "name": "rejectionVersion", + "nameLocation": "926:16:51", + "nodeType": "VariableDeclaration", + "scope": 14583, + "src": "919:23:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 14573, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "919:6:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14576, + "mutability": "mutable", + "name": "counterReason", + "nameLocation": "984:13:51", + "nodeType": "VariableDeclaration", + "scope": 14583, + "src": "977:20:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 14575, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "977:6:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14578, + "mutability": "mutable", + "name": "counterVersion", + "nameLocation": "1039:14:51", + "nodeType": "VariableDeclaration", + "scope": 14583, + "src": "1032:21:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 14577, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "1032:6:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14580, + "mutability": "mutable", + "name": "withdrawalReason", + "nameLocation": "1095:16:51", + "nodeType": "VariableDeclaration", + "scope": 14583, + "src": "1088:23:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 14579, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "1088:6:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14582, + "mutability": "mutable", + "name": "withdrawalVersion", + "nameLocation": "1153:17:51", + "nodeType": "VariableDeclaration", + "scope": 14583, + "src": "1146:24:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 14581, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "1146:6:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "name": "Proposal", + "nameLocation": "254:8:51", + "nodeType": "StructDefinition", + "scope": 15532, + "src": "247:974:51", + "visibility": "public" + }, + { + "canonicalName": "BookingTokenCancellable.BookingTokenCancellableStorage", + "documentation": { + "id": 14584, + "nodeType": "StructuredDocumentation", + "src": "1400:85:51", + "text": "@custom:storage-location erc7201:camino.messenger.storage.BookingTokenCancellable" + }, + "id": 14590, + "members": [ + { + "constant": false, + "id": 14589, + "mutability": "mutable", + "name": "_proposals", + "nameLocation": "1662:10:51", + "nodeType": "VariableDeclaration", + "scope": 14590, + "src": "1616:56:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$14583_storage_$", + "typeString": "mapping(uint256 => struct BookingTokenCancellable.Proposal)" + }, + "typeName": { + "id": 14588, + "keyName": "tokenId", + "keyNameLocation": "1632:7:51", + "keyType": { + "id": 14585, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1624:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "1616:45:51", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$14583_storage_$", + "typeString": "mapping(uint256 => struct BookingTokenCancellable.Proposal)" + }, + "valueName": "proposal", + "valueNameLocation": "1652:8:51", + "valueType": { + "id": 14587, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 14586, + "name": "Proposal", + "nameLocations": [ + "1643:8:51" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 14583, + "src": "1643:8:51" + }, + "referencedDeclaration": 14583, + "src": "1643:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal" + } + } + }, + "visibility": "internal" + } + ], + "name": "BookingTokenCancellableStorage", + "nameLocation": "1497:30:51", + "nodeType": "StructDefinition", + "scope": 15532, + "src": "1490:189:51", + "visibility": "public" + }, + { + "constant": true, + "id": 14593, + "mutability": "constant", + "name": "BookingTokenCancellableStorageLocation", + "nameLocation": "1844:38:51", + "nodeType": "VariableDeclaration", + "scope": 15532, + "src": "1819:140:51", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 14591, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1819:7:51", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307830623866623332666663373034336664613965306565326263623432333661636639356162343438373532633733656666366363376632363430666638353030", + "id": 14592, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1893:66:51", + "typeDescriptions": { + "typeIdentifier": "t_rational_5229337170977688983437519688031946599207232569147827897463641284800564659456_by_1", + "typeString": "int_const 5229...(68 digits omitted)...9456" + }, + "value": "0x0b8fb32ffc7043fda9e0ee2bcb4236acf95ab448752c73eff6cc7f2640ff8500" + }, + "visibility": "private" + }, + { + "body": { + "id": 14601, + "nodeType": "Block", + "src": "2247:97:51", + "statements": [ + { + "AST": { + "nativeSrc": "2266:72:51", + "nodeType": "YulBlock", + "src": "2266:72:51", + "statements": [ + { + "nativeSrc": "2280:48:51", + "nodeType": "YulAssignment", + "src": "2280:48:51", + "value": { + "name": "BookingTokenCancellableStorageLocation", + "nativeSrc": "2290:38:51", + "nodeType": "YulIdentifier", + "src": "2290:38:51" + }, + "variableNames": [ + { + "name": "$.slot", + "nativeSrc": "2280:6:51", + "nodeType": "YulIdentifier", + "src": "2280:6:51" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 14598, + "isOffset": false, + "isSlot": true, + "src": "2280:6:51", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 14593, + "isOffset": false, + "isSlot": false, + "src": "2290:38:51", + "valueSize": 1 + } + ], + "id": 14600, + "nodeType": "InlineAssembly", + "src": "2257:81:51" + } + ] + }, + "documentation": { + "id": 14594, + "nodeType": "StructuredDocumentation", + "src": "1966:166:51", + "text": " @notice Retrieves the BookingTokenCancellable storage struct from the designated storage slot.\n @return $ The storage struct reference" + }, + "id": 14602, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getBookingTokenCancellableStorage", + "nameLocation": "2146:34:51", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 14595, + "nodeType": "ParameterList", + "parameters": [], + "src": "2180:2:51" + }, + "returnParameters": { + "id": 14599, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14598, + "mutability": "mutable", + "name": "$", + "nameLocation": "2244:1:51", + "nodeType": "VariableDeclaration", + "scope": 14602, + "src": "2205:40:51", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenCancellableStorage_$14590_storage_ptr", + "typeString": "struct BookingTokenCancellable.BookingTokenCancellableStorage" + }, + "typeName": { + "id": 14597, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 14596, + "name": "BookingTokenCancellableStorage", + "nameLocations": [ + "2205:30:51" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 14590, + "src": "2205:30:51" + }, + "referencedDeclaration": 14590, + "src": "2205:30:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenCancellableStorage_$14590_storage_ptr", + "typeString": "struct BookingTokenCancellable.BookingTokenCancellableStorage" + } + }, + "visibility": "internal" + } + ], + "src": "2204:42:51" + }, + "scope": 15532, + "src": "2137:207:51", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "anonymous": false, + "eventSelector": "6aafaf6639750382d6dc665bc6a3c73d54e2076a8739a69c860a2314032eb981", + "id": 14620, + "name": "CancellationPending", + "nameLocation": "2529:19:51", + "nodeType": "EventDefinition", + "parameters": { + "id": 14619, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14604, + "indexed": true, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "2574:7:51", + "nodeType": "VariableDeclaration", + "scope": 14620, + "src": "2558:23:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14603, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2558:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14606, + "indexed": true, + "mutability": "mutable", + "name": "initialProposer", + "nameLocation": "2607:15:51", + "nodeType": "VariableDeclaration", + "scope": 14620, + "src": "2591:31:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 14605, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2591:7:51", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14608, + "indexed": true, + "mutability": "mutable", + "name": "currentProposer", + "nameLocation": "2648:15:51", + "nodeType": "VariableDeclaration", + "scope": 14620, + "src": "2632:31:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 14607, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2632:7:51", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14610, + "indexed": false, + "mutability": "mutable", + "name": "refundAmount", + "nameLocation": "2681:12:51", + "nodeType": "VariableDeclaration", + "scope": 14620, + "src": "2673:20:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14609, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2673:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14612, + "indexed": false, + "mutability": "mutable", + "name": "ownerAccepted", + "nameLocation": "2708:13:51", + "nodeType": "VariableDeclaration", + "scope": 14620, + "src": "2703:18:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 14611, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2703:4:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14614, + "indexed": false, + "mutability": "mutable", + "name": "supplierAccepted", + "nameLocation": "2736:16:51", + "nodeType": "VariableDeclaration", + "scope": 14620, + "src": "2731:21:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 14613, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2731:4:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14616, + "indexed": false, + "mutability": "mutable", + "name": "timesCountered", + "nameLocation": "2769:14:51", + "nodeType": "VariableDeclaration", + "scope": 14620, + "src": "2762:21:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 14615, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "2762:6:51", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14618, + "indexed": false, + "mutability": "mutable", + "name": "timesRejected", + "nameLocation": "2800:13:51", + "nodeType": "VariableDeclaration", + "scope": 14620, + "src": "2793:20:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 14617, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "2793:6:51", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + } + ], + "src": "2548:271:51" + }, + "src": "2523:297:51" + }, + { + "anonymous": false, + "eventSelector": "ade2ce8b39037f5140109f53fef47c0491427b8b785ab83d35aa2931295cb790", + "id": 14640, + "name": "CancellationReasons", + "nameLocation": "2832:19:51", + "nodeType": "EventDefinition", + "parameters": { + "id": 14639, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14622, + "indexed": true, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "2877:7:51", + "nodeType": "VariableDeclaration", + "scope": 14640, + "src": "2861:23:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14621, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2861:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14624, + "indexed": false, + "mutability": "mutable", + "name": "cancellationReason", + "nameLocation": "2901:18:51", + "nodeType": "VariableDeclaration", + "scope": 14640, + "src": "2894:25:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 14623, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "2894:6:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14626, + "indexed": false, + "mutability": "mutable", + "name": "cancellationReasonVersion", + "nameLocation": "2936:25:51", + "nodeType": "VariableDeclaration", + "scope": 14640, + "src": "2929:32:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 14625, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "2929:6:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14628, + "indexed": false, + "mutability": "mutable", + "name": "rejectionReason", + "nameLocation": "2978:15:51", + "nodeType": "VariableDeclaration", + "scope": 14640, + "src": "2971:22:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 14627, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "2971:6:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14630, + "indexed": false, + "mutability": "mutable", + "name": "rejectionVersion", + "nameLocation": "3010:16:51", + "nodeType": "VariableDeclaration", + "scope": 14640, + "src": "3003:23:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 14629, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "3003:6:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14632, + "indexed": false, + "mutability": "mutable", + "name": "counterReason", + "nameLocation": "3043:13:51", + "nodeType": "VariableDeclaration", + "scope": 14640, + "src": "3036:20:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 14631, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "3036:6:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14634, + "indexed": false, + "mutability": "mutable", + "name": "counterVersion", + "nameLocation": "3073:14:51", + "nodeType": "VariableDeclaration", + "scope": 14640, + "src": "3066:21:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 14633, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "3066:6:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14636, + "indexed": false, + "mutability": "mutable", + "name": "withdrawalReason", + "nameLocation": "3104:16:51", + "nodeType": "VariableDeclaration", + "scope": 14640, + "src": "3097:23:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 14635, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "3097:6:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14638, + "indexed": false, + "mutability": "mutable", + "name": "withdrawalVersion", + "nameLocation": "3137:17:51", + "nodeType": "VariableDeclaration", + "scope": 14640, + "src": "3130:24:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 14637, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "3130:6:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "2851:309:51" + }, + "src": "2826:335:51" + }, + { + "anonymous": false, + "eventSelector": "48e256ce3da490e3bbba80f056bb54ec3d7264f8ad7d152b77bf8c2eca3db5a5", + "id": 14648, + "name": "CancellationWithdrawn", + "nameLocation": "3173:21:51", + "nodeType": "EventDefinition", + "parameters": { + "id": 14647, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14642, + "indexed": true, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "3211:7:51", + "nodeType": "VariableDeclaration", + "scope": 14648, + "src": "3195:23:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14641, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3195:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14644, + "indexed": false, + "mutability": "mutable", + "name": "withdrawalReason", + "nameLocation": "3227:16:51", + "nodeType": "VariableDeclaration", + "scope": 14648, + "src": "3220:23:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 14643, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "3220:6:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14646, + "indexed": false, + "mutability": "mutable", + "name": "withdrawalVersion", + "nameLocation": "3252:17:51", + "nodeType": "VariableDeclaration", + "scope": 14648, + "src": "3245:24:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 14645, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "3245:6:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "3194:76:51" + }, + "src": "3167:104:51" + }, + { + "anonymous": false, + "eventSelector": "ab78ba855f2fdb28beb212a9b3f41a33cda034729848cd452f0cc96528c23a80", + "id": 14656, + "name": "CancellationRejected", + "nameLocation": "3283:20:51", + "nodeType": "EventDefinition", + "parameters": { + "id": 14655, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14650, + "indexed": true, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "3320:7:51", + "nodeType": "VariableDeclaration", + "scope": 14656, + "src": "3304:23:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14649, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3304:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14652, + "indexed": false, + "mutability": "mutable", + "name": "rejectionReason", + "nameLocation": "3336:15:51", + "nodeType": "VariableDeclaration", + "scope": 14656, + "src": "3329:22:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 14651, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "3329:6:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14654, + "indexed": false, + "mutability": "mutable", + "name": "rejectionVersion", + "nameLocation": "3360:16:51", + "nodeType": "VariableDeclaration", + "scope": 14656, + "src": "3353:23:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 14653, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "3353:6:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "3303:74:51" + }, + "src": "3277:101:51" + }, + { + "anonymous": false, + "eventSelector": "17c3690813e5ff9135b87fd91848109978b23db8e471498d18886560da7f2867", + "id": 14660, + "name": "CancellationFinalized", + "nameLocation": "3390:21:51", + "nodeType": "EventDefinition", + "parameters": { + "id": 14659, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14658, + "indexed": true, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "3428:7:51", + "nodeType": "VariableDeclaration", + "scope": 14660, + "src": "3412:23:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14657, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3412:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3411:25:51" + }, + "src": "3384:53:51" + }, + { + "errorSelector": "4793d281", + "id": 14662, + "name": "NotOwnerOrSupplier", + "nameLocation": "3622:18:51", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 14661, + "nodeType": "ParameterList", + "parameters": [], + "src": "3640:2:51" + }, + "src": "3616:27:51" + }, + { + "errorSelector": "97655cae", + "id": 14666, + "name": "CancellationProposalExists", + "nameLocation": "3655:26:51", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 14665, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14664, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "3690:7:51", + "nodeType": "VariableDeclaration", + "scope": 14666, + "src": "3682:15:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14663, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3682:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3681:17:51" + }, + "src": "3649:50:51" + }, + { + "errorSelector": "cc452837", + "id": 14674, + "name": "IncorrectRefundAmount", + "nameLocation": "3711:21:51", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 14673, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14668, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "3741:7:51", + "nodeType": "VariableDeclaration", + "scope": 14674, + "src": "3733:15:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14667, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3733:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14670, + "mutability": "mutable", + "name": "existing", + "nameLocation": "3758:8:51", + "nodeType": "VariableDeclaration", + "scope": 14674, + "src": "3750:16:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14669, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3750:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14672, + "mutability": "mutable", + "name": "checked", + "nameLocation": "3776:7:51", + "nodeType": "VariableDeclaration", + "scope": 14674, + "src": "3768:15:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14671, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3768:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3732:52:51" + }, + "src": "3705:80:51" + }, + { + "errorSelector": "d5d8eacb", + "id": 14681, + "name": "InvalidCancellationProposalStatus", + "nameLocation": "3797:33:51", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 14680, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14676, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "3839:7:51", + "nodeType": "VariableDeclaration", + "scope": 14681, + "src": "3831:15:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14675, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3831:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14679, + "mutability": "mutable", + "name": "status", + "nameLocation": "3875:6:51", + "nodeType": "VariableDeclaration", + "scope": 14681, + "src": "3848:33:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + }, + "typeName": { + "id": 14678, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 14677, + "name": "CancellationProposalStatus", + "nameLocations": [ + "3848:26:51" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 14549, + "src": "3848:26:51" + }, + "referencedDeclaration": 14549, + "src": "3848:26:51", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + }, + "visibility": "internal" + } + ], + "src": "3830:52:51" + }, + "src": "3791:92:51" + }, + { + "errorSelector": "6c83fb1b", + "id": 14685, + "name": "OnlySupplierCanFinalizeCancellation", + "nameLocation": "3895:35:51", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 14684, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14683, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "3939:7:51", + "nodeType": "VariableDeclaration", + "scope": 14685, + "src": "3931:15:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14682, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3931:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3930:17:51" + }, + "src": "3889:59:51" + }, + { + "errorSelector": "c84052f9", + "id": 14689, + "name": "OwnerNotAcceptedCancellation", + "nameLocation": "3960:28:51", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 14688, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14687, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "3997:7:51", + "nodeType": "VariableDeclaration", + "scope": 14689, + "src": "3989:15:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14686, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3989:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3988:17:51" + }, + "src": "3954:52:51" + }, + { + "errorSelector": "c18363dc", + "id": 14693, + "name": "ProposerCanNotRejectCancellation", + "nameLocation": "4018:32:51", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 14692, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14691, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "4059:7:51", + "nodeType": "VariableDeclaration", + "scope": 14693, + "src": "4051:15:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14690, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4051:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4050:17:51" + }, + "src": "4012:56:51" + }, + { + "errorSelector": "8c37ede8", + "id": 14697, + "name": "OnlyCurrentProposerCanWithdrawCancellation", + "nameLocation": "4080:42:51", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 14696, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14695, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "4131:7:51", + "nodeType": "VariableDeclaration", + "scope": 14697, + "src": "4123:15:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14694, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4123:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4122:17:51" + }, + "src": "4074:66:51" + }, + { + "body": { + "id": 14718, + "nodeType": "Block", + "src": "4398:119:51", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 14712, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 14707, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 14704, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4412:3:51", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 14705, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4416:6:51", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "4412:10:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 14706, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14699, + "src": "4426:5:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4412:19:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 14711, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 14708, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4435:3:51", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 14709, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4439:6:51", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "4435:10:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 14710, + "name": "supplier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14701, + "src": "4449:8:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4435:22:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4412:45:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 14717, + "nodeType": "IfStatement", + "src": "4408:103:51", + "trueBody": { + "id": 14716, + "nodeType": "Block", + "src": "4459:52:51", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 14713, + "name": "NotOwnerOrSupplier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14662, + "src": "4480:18:51", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 14714, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4480:20:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 14715, + "nodeType": "RevertStatement", + "src": "4473:27:51" + } + ] + } + } + ] + }, + "id": 14719, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "requireOwnerOrSupplier", + "nameLocation": "4328:22:51", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 14702, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14699, + "mutability": "mutable", + "name": "owner", + "nameLocation": "4359:5:51", + "nodeType": "VariableDeclaration", + "scope": 14719, + "src": "4351:13:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 14698, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4351:7:51", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14701, + "mutability": "mutable", + "name": "supplier", + "nameLocation": "4374:8:51", + "nodeType": "VariableDeclaration", + "scope": 14719, + "src": "4366:16:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 14700, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4366:7:51", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4350:33:51" + }, + "returnParameters": { + "id": 14703, + "nodeType": "ParameterList", + "parameters": [], + "src": "4398:0:51" + }, + "scope": 15532, + "src": "4319:198:51", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 14731, + "nodeType": "Block", + "src": "4585:67:51", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 14726, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14721, + "src": "4618:5:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 14727, + "name": "supplier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14723, + "src": "4625:8:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 14725, + "name": "requireOwnerOrSupplier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14719, + "src": "4595:22:51", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address) view" + } + }, + "id": 14728, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4595:39:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 14729, + "nodeType": "ExpressionStatement", + "src": "4595:39:51" + }, + { + "id": 14730, + "nodeType": "PlaceholderStatement", + "src": "4644:1:51" + } + ] + }, + "id": 14732, + "name": "onlyOwnerOrSupplier", + "nameLocation": "4532:19:51", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 14724, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14721, + "mutability": "mutable", + "name": "owner", + "nameLocation": "4560:5:51", + "nodeType": "VariableDeclaration", + "scope": 14732, + "src": "4552:13:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 14720, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4552:7:51", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14723, + "mutability": "mutable", + "name": "supplier", + "nameLocation": "4575:8:51", + "nodeType": "VariableDeclaration", + "scope": 14732, + "src": "4567:16:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 14722, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4567:7:51", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4551:33:51" + }, + "src": "4523:129:51", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 14756, + "nodeType": "Block", + "src": "4830:197:51", + "statements": [ + { + "expression": { + "components": [ + { + "expression": { + "baseExpression": { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 14742, + "name": "_getBookingTokenCancellableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14602, + "src": "4861:34:51", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_BookingTokenCancellableStorage_$14590_storage_ptr_$", + "typeString": "function () pure returns (struct BookingTokenCancellable.BookingTokenCancellableStorage storage pointer)" + } + }, + "id": 14743, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4861:36:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenCancellableStorage_$14590_storage_ptr", + "typeString": "struct BookingTokenCancellable.BookingTokenCancellableStorage storage pointer" + } + }, + "id": 14744, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4898:10:51", + "memberName": "_proposals", + "nodeType": "MemberAccess", + "referencedDeclaration": 14589, + "src": "4861:47:51", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$14583_storage_$", + "typeString": "mapping(uint256 => struct BookingTokenCancellable.Proposal storage ref)" + } + }, + "id": 14746, + "indexExpression": { + "id": 14745, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14734, + "src": "4909:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4861:56:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage", + "typeString": "struct BookingTokenCancellable.Proposal storage ref" + } + }, + "id": 14747, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4918:6:51", + "memberName": "status", + "nodeType": "MemberAccess", + "referencedDeclaration": 14566, + "src": "4861:63:51", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + }, + { + "expression": { + "baseExpression": { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 14748, + "name": "_getBookingTokenCancellableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14602, + "src": "4938:34:51", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_BookingTokenCancellableStorage_$14590_storage_ptr_$", + "typeString": "function () pure returns (struct BookingTokenCancellable.BookingTokenCancellableStorage storage pointer)" + } + }, + "id": 14749, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4938:36:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenCancellableStorage_$14590_storage_ptr", + "typeString": "struct BookingTokenCancellable.BookingTokenCancellableStorage storage pointer" + } + }, + "id": 14750, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4975:10:51", + "memberName": "_proposals", + "nodeType": "MemberAccess", + "referencedDeclaration": 14589, + "src": "4938:47:51", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$14583_storage_$", + "typeString": "mapping(uint256 => struct BookingTokenCancellable.Proposal storage ref)" + } + }, + "id": 14752, + "indexExpression": { + "id": 14751, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14734, + "src": "4986:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4938:56:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage", + "typeString": "struct BookingTokenCancellable.Proposal storage ref" + } + }, + "id": 14753, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4995:15:51", + "memberName": "currentProposer", + "nodeType": "MemberAccess", + "referencedDeclaration": 14561, + "src": "4938:72:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 14754, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4847:173:51", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_enum$_CancellationProposalStatus_$14549_$_t_address_$", + "typeString": "tuple(enum CancellationProposalStatus,address)" + } + }, + "functionReturnParameters": 14741, + "id": 14755, + "nodeType": "Return", + "src": "4840:180:51" + } + ] + }, + "id": 14757, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getCancellationProposalStatusAndCurrentProposer", + "nameLocation": "4667:48:51", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 14735, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14734, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "4733:7:51", + "nodeType": "VariableDeclaration", + "scope": 14757, + "src": "4725:15:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14733, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4725:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4715:31:51" + }, + "returnParameters": { + "id": 14741, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14738, + "mutability": "mutable", + "name": "status", + "nameLocation": "4797:6:51", + "nodeType": "VariableDeclaration", + "scope": 14757, + "src": "4770:33:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + }, + "typeName": { + "id": 14737, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 14736, + "name": "CancellationProposalStatus", + "nameLocations": [ + "4770:26:51" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 14549, + "src": "4770:26:51" + }, + "referencedDeclaration": 14549, + "src": "4770:26:51", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14740, + "mutability": "mutable", + "name": "currentProposer", + "nameLocation": "4813:15:51", + "nodeType": "VariableDeclaration", + "scope": 14757, + "src": "4805:23:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 14739, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4805:7:51", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "4769:60:51" + }, + "scope": 15532, + "src": "4658:369:51", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 14806, + "nodeType": "Block", + "src": "5442:417:51", + "statements": [ + { + "assignments": [ + 14781 + ], + "declarations": [ + { + "constant": false, + "id": 14781, + "mutability": "mutable", + "name": "proposal", + "nameLocation": "5469:8:51", + "nodeType": "VariableDeclaration", + "scope": 14806, + "src": "5452:25:51", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal" + }, + "typeName": { + "id": 14780, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 14779, + "name": "Proposal", + "nameLocations": [ + "5452:8:51" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 14583, + "src": "5452:8:51" + }, + "referencedDeclaration": 14583, + "src": "5452:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal" + } + }, + "visibility": "internal" + } + ], + "id": 14787, + "initialValue": { + "baseExpression": { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 14782, + "name": "_getBookingTokenCancellableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14602, + "src": "5480:34:51", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_BookingTokenCancellableStorage_$14590_storage_ptr_$", + "typeString": "function () pure returns (struct BookingTokenCancellable.BookingTokenCancellableStorage storage pointer)" + } + }, + "id": 14783, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5480:36:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenCancellableStorage_$14590_storage_ptr", + "typeString": "struct BookingTokenCancellable.BookingTokenCancellableStorage storage pointer" + } + }, + "id": 14784, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5517:10:51", + "memberName": "_proposals", + "nodeType": "MemberAccess", + "referencedDeclaration": 14589, + "src": "5480:47:51", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$14583_storage_$", + "typeString": "mapping(uint256 => struct BookingTokenCancellable.Proposal storage ref)" + } + }, + "id": 14786, + "indexExpression": { + "id": 14785, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14759, + "src": "5528:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5480:56:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage", + "typeString": "struct BookingTokenCancellable.Proposal storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5452:84:51" + }, + { + "expression": { + "components": [ + { + "expression": { + "id": 14788, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14781, + "src": "5568:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 14789, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5577:6:51", + "memberName": "status", + "nodeType": "MemberAccess", + "referencedDeclaration": 14566, + "src": "5568:15:51", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + }, + { + "expression": { + "id": 14790, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14781, + "src": "5597:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 14791, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5606:12:51", + "memberName": "refundAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 14551, + "src": "5597:21:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 14792, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14781, + "src": "5632:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 14793, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5641:15:51", + "memberName": "initialProposer", + "nodeType": "MemberAccess", + "referencedDeclaration": 14553, + "src": "5632:24:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 14794, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14781, + "src": "5670:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 14795, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5679:15:51", + "memberName": "currentProposer", + "nodeType": "MemberAccess", + "referencedDeclaration": 14561, + "src": "5670:24:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 14796, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14781, + "src": "5708:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 14797, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5717:13:51", + "memberName": "ownerAccepted", + "nodeType": "MemberAccess", + "referencedDeclaration": 14557, + "src": "5708:22:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "expression": { + "id": 14798, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14781, + "src": "5744:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 14799, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5753:16:51", + "memberName": "supplierAccepted", + "nodeType": "MemberAccess", + "referencedDeclaration": 14559, + "src": "5744:25:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "expression": { + "id": 14800, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14781, + "src": "5783:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 14801, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5792:14:51", + "memberName": "timesCountered", + "nodeType": "MemberAccess", + "referencedDeclaration": 14555, + "src": "5783:23:51", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + { + "expression": { + "id": 14802, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14781, + "src": "5820:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 14803, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5829:13:51", + "memberName": "timesRejected", + "nodeType": "MemberAccess", + "referencedDeclaration": 14563, + "src": "5820:22:51", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "id": 14804, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5554:298:51", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_enum$_CancellationProposalStatus_$14549_$_t_uint256_$_t_address_$_t_address_$_t_bool_$_t_bool_$_t_uint32_$_t_uint32_$", + "typeString": "tuple(enum CancellationProposalStatus,uint256,address,address,bool,bool,uint32,uint32)" + } + }, + "functionReturnParameters": 14778, + "id": 14805, + "nodeType": "Return", + "src": "5547:305:51" + } + ] + }, + "functionSelector": "bb520b47", + "id": 14807, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getCancellationProposal", + "nameLocation": "5042:23:51", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 14760, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14759, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "5083:7:51", + "nodeType": "VariableDeclaration", + "scope": 14807, + "src": "5075:15:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14758, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5075:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5065:31:51" + }, + "returnParameters": { + "id": 14778, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14763, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 14807, + "src": "5157:26:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + }, + "typeName": { + "id": 14762, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 14761, + "name": "CancellationProposalStatus", + "nameLocations": [ + "5157:26:51" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 14549, + "src": "5157:26:51" + }, + "referencedDeclaration": 14549, + "src": "5157:26:51", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14765, + "mutability": "mutable", + "name": "refundAmount", + "nameLocation": "5205:12:51", + "nodeType": "VariableDeclaration", + "scope": 14807, + "src": "5197:20:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14764, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5197:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14767, + "mutability": "mutable", + "name": "initialProposer", + "nameLocation": "5239:15:51", + "nodeType": "VariableDeclaration", + "scope": 14807, + "src": "5231:23:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 14766, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5231:7:51", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14769, + "mutability": "mutable", + "name": "currentProposer", + "nameLocation": "5276:15:51", + "nodeType": "VariableDeclaration", + "scope": 14807, + "src": "5268:23:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 14768, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5268:7:51", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14771, + "mutability": "mutable", + "name": "ownerAccepted", + "nameLocation": "5310:13:51", + "nodeType": "VariableDeclaration", + "scope": 14807, + "src": "5305:18:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 14770, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5305:4:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14773, + "mutability": "mutable", + "name": "supplierAccepted", + "nameLocation": "5342:16:51", + "nodeType": "VariableDeclaration", + "scope": 14807, + "src": "5337:21:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 14772, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5337:4:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14775, + "mutability": "mutable", + "name": "timesCountered", + "nameLocation": "5379:14:51", + "nodeType": "VariableDeclaration", + "scope": 14807, + "src": "5372:21:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 14774, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "5372:6:51", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14777, + "mutability": "mutable", + "name": "timesRejected", + "nameLocation": "5414:13:51", + "nodeType": "VariableDeclaration", + "scope": 14807, + "src": "5407:20:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + "typeName": { + "id": 14776, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "5407:6:51", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "visibility": "internal" + } + ], + "src": "5143:294:51" + }, + "scope": 15532, + "src": "5033:826:51", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 14855, + "nodeType": "Block", + "src": "6285:441:51", + "statements": [ + { + "assignments": [ + 14830 + ], + "declarations": [ + { + "constant": false, + "id": 14830, + "mutability": "mutable", + "name": "proposal", + "nameLocation": "6312:8:51", + "nodeType": "VariableDeclaration", + "scope": 14855, + "src": "6295:25:51", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal" + }, + "typeName": { + "id": 14829, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 14828, + "name": "Proposal", + "nameLocations": [ + "6295:8:51" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 14583, + "src": "6295:8:51" + }, + "referencedDeclaration": 14583, + "src": "6295:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal" + } + }, + "visibility": "internal" + } + ], + "id": 14836, + "initialValue": { + "baseExpression": { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 14831, + "name": "_getBookingTokenCancellableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14602, + "src": "6323:34:51", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_BookingTokenCancellableStorage_$14590_storage_ptr_$", + "typeString": "function () pure returns (struct BookingTokenCancellable.BookingTokenCancellableStorage storage pointer)" + } + }, + "id": 14832, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6323:36:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenCancellableStorage_$14590_storage_ptr", + "typeString": "struct BookingTokenCancellable.BookingTokenCancellableStorage storage pointer" + } + }, + "id": 14833, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6360:10:51", + "memberName": "_proposals", + "nodeType": "MemberAccess", + "referencedDeclaration": 14589, + "src": "6323:47:51", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$14583_storage_$", + "typeString": "mapping(uint256 => struct BookingTokenCancellable.Proposal storage ref)" + } + }, + "id": 14835, + "indexExpression": { + "id": 14834, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14809, + "src": "6371:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6323:56:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage", + "typeString": "struct BookingTokenCancellable.Proposal storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6295:84:51" + }, + { + "expression": { + "components": [ + { + "expression": { + "id": 14837, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14830, + "src": "6411:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 14838, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6420:18:51", + "memberName": "cancellationReason", + "nodeType": "MemberAccess", + "referencedDeclaration": 14568, + "src": "6411:27:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "expression": { + "id": 14839, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14830, + "src": "6452:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 14840, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6461:19:51", + "memberName": "cancellationVersion", + "nodeType": "MemberAccess", + "referencedDeclaration": 14570, + "src": "6452:28:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "expression": { + "id": 14841, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14830, + "src": "6494:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 14842, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6503:15:51", + "memberName": "rejectionReason", + "nodeType": "MemberAccess", + "referencedDeclaration": 14572, + "src": "6494:24:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "expression": { + "id": 14843, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14830, + "src": "6532:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 14844, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6541:16:51", + "memberName": "rejectionVersion", + "nodeType": "MemberAccess", + "referencedDeclaration": 14574, + "src": "6532:25:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "expression": { + "id": 14845, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14830, + "src": "6571:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 14846, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6580:13:51", + "memberName": "counterReason", + "nodeType": "MemberAccess", + "referencedDeclaration": 14576, + "src": "6571:22:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "expression": { + "id": 14847, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14830, + "src": "6607:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 14848, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6616:14:51", + "memberName": "counterVersion", + "nodeType": "MemberAccess", + "referencedDeclaration": 14578, + "src": "6607:23:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "expression": { + "id": 14849, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14830, + "src": "6644:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 14850, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6653:16:51", + "memberName": "withdrawalReason", + "nodeType": "MemberAccess", + "referencedDeclaration": 14580, + "src": "6644:25:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "expression": { + "id": 14851, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14830, + "src": "6683:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 14852, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6692:17:51", + "memberName": "withdrawalVersion", + "nodeType": "MemberAccess", + "referencedDeclaration": 14582, + "src": "6683:26:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "id": 14853, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "6397:322:51", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint16_$", + "typeString": "tuple(uint16,uint16,uint16,uint16,uint16,uint16,uint16,uint16)" + } + }, + "functionReturnParameters": 14827, + "id": 14854, + "nodeType": "Return", + "src": "6390:329:51" + } + ] + }, + "functionSelector": "a9bc55a2", + "id": 14856, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getCancellationReasons", + "nameLocation": "5874:22:51", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 14810, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14809, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "5914:7:51", + "nodeType": "VariableDeclaration", + "scope": 14856, + "src": "5906:15:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14808, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5906:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5896:31:51" + }, + "returnParameters": { + "id": 14827, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14812, + "mutability": "mutable", + "name": "cancellationReason", + "nameLocation": "5995:18:51", + "nodeType": "VariableDeclaration", + "scope": 14856, + "src": "5988:25:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 14811, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5988:6:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14814, + "mutability": "mutable", + "name": "cancellationVersion", + "nameLocation": "6034:19:51", + "nodeType": "VariableDeclaration", + "scope": 14856, + "src": "6027:26:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 14813, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "6027:6:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14816, + "mutability": "mutable", + "name": "rejectionReason", + "nameLocation": "6074:15:51", + "nodeType": "VariableDeclaration", + "scope": 14856, + "src": "6067:22:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 14815, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "6067:6:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14818, + "mutability": "mutable", + "name": "rejectionVersion", + "nameLocation": "6110:16:51", + "nodeType": "VariableDeclaration", + "scope": 14856, + "src": "6103:23:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 14817, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "6103:6:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14820, + "mutability": "mutable", + "name": "counterReason", + "nameLocation": "6147:13:51", + "nodeType": "VariableDeclaration", + "scope": 14856, + "src": "6140:20:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 14819, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "6140:6:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14822, + "mutability": "mutable", + "name": "counterVersion", + "nameLocation": "6181:14:51", + "nodeType": "VariableDeclaration", + "scope": 14856, + "src": "6174:21:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 14821, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "6174:6:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14824, + "mutability": "mutable", + "name": "withdrawalReason", + "nameLocation": "6216:16:51", + "nodeType": "VariableDeclaration", + "scope": 14856, + "src": "6209:23:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 14823, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "6209:6:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14826, + "mutability": "mutable", + "name": "withdrawalVersion", + "nameLocation": "6253:17:51", + "nodeType": "VariableDeclaration", + "scope": 14856, + "src": "6246:24:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 14825, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "6246:6:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "5974:306:51" + }, + "scope": 15532, + "src": "5865:861:51", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 15043, + "nodeType": "Block", + "src": "7004:2231:51", + "statements": [ + { + "assignments": [ + 14877 + ], + "declarations": [ + { + "constant": false, + "id": 14877, + "mutability": "mutable", + "name": "proposal", + "nameLocation": "7031:8:51", + "nodeType": "VariableDeclaration", + "scope": 15043, + "src": "7014:25:51", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal" + }, + "typeName": { + "id": 14876, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 14875, + "name": "Proposal", + "nameLocations": [ + "7014:8:51" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 14583, + "src": "7014:8:51" + }, + "referencedDeclaration": 14583, + "src": "7014:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal" + } + }, + "visibility": "internal" + } + ], + "id": 14883, + "initialValue": { + "baseExpression": { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 14878, + "name": "_getBookingTokenCancellableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14602, + "src": "7042:34:51", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_BookingTokenCancellableStorage_$14590_storage_ptr_$", + "typeString": "function () pure returns (struct BookingTokenCancellable.BookingTokenCancellableStorage storage pointer)" + } + }, + "id": 14879, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7042:36:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenCancellableStorage_$14590_storage_ptr", + "typeString": "struct BookingTokenCancellable.BookingTokenCancellableStorage storage pointer" + } + }, + "id": 14880, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7079:10:51", + "memberName": "_proposals", + "nodeType": "MemberAccess", + "referencedDeclaration": 14589, + "src": "7042:47:51", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$14583_storage_$", + "typeString": "mapping(uint256 => struct BookingTokenCancellable.Proposal storage ref)" + } + }, + "id": 14882, + "indexExpression": { + "id": 14881, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14862, + "src": "7090:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7042:56:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage", + "typeString": "struct BookingTokenCancellable.Proposal storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7014:84:51" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 14894, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + }, + "id": 14888, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 14884, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14877, + "src": "7180:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 14885, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7189:6:51", + "memberName": "status", + "nodeType": "MemberAccess", + "referencedDeclaration": 14566, + "src": "7180:15:51", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 14886, + "name": "CancellationProposalStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14549, + "src": "7199:26:51", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_CancellationProposalStatus_$14549_$", + "typeString": "type(enum CancellationProposalStatus)" + } + }, + "id": 14887, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "7226:9:51", + "memberName": "FINALIZED", + "nodeType": "MemberAccess", + "referencedDeclaration": 14548, + "src": "7199:36:51", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + }, + "src": "7180:55:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + }, + "id": 14893, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 14889, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14877, + "src": "7251:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 14890, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7260:6:51", + "memberName": "status", + "nodeType": "MemberAccess", + "referencedDeclaration": 14566, + "src": "7251:15:51", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 14891, + "name": "CancellationProposalStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14549, + "src": "7270:26:51", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_CancellationProposalStatus_$14549_$", + "typeString": "type(enum CancellationProposalStatus)" + } + }, + "id": 14892, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "7297:7:51", + "memberName": "PENDING", + "nodeType": "MemberAccess", + "referencedDeclaration": 14545, + "src": "7270:34:51", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + }, + "src": "7251:53:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "7180:124:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 14902, + "nodeType": "IfStatement", + "src": "7163:243:51", + "trueBody": { + "id": 14901, + "nodeType": "Block", + "src": "7315:91:51", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 14896, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14862, + "src": "7370:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 14897, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14877, + "src": "7379:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 14898, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7388:6:51", + "memberName": "status", + "nodeType": "MemberAccess", + "referencedDeclaration": 14566, + "src": "7379:15:51", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + ], + "id": 14895, + "name": "InvalidCancellationProposalStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14681, + "src": "7336:33:51", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_enum$_CancellationProposalStatus_$14549_$returns$__$", + "typeString": "function (uint256,enum CancellationProposalStatus) pure" + } + }, + "id": 14899, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7336:59:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 14900, + "nodeType": "RevertStatement", + "src": "7329:66:51" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + }, + "id": 14907, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 14903, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14877, + "src": "7479:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 14904, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7488:6:51", + "memberName": "status", + "nodeType": "MemberAccess", + "referencedDeclaration": 14566, + "src": "7479:15:51", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 14905, + "name": "CancellationProposalStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14549, + "src": "7498:26:51", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_CancellationProposalStatus_$14549_$", + "typeString": "type(enum CancellationProposalStatus)" + } + }, + "id": 14906, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "7525:11:51", + "memberName": "NO_PROPOSAL", + "nodeType": "MemberAccess", + "referencedDeclaration": 14544, + "src": "7498:38:51", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + }, + "src": "7479:57:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 14916, + "nodeType": "IfStatement", + "src": "7475:125:51", + "trueBody": { + "id": 14915, + "nodeType": "Block", + "src": "7538:62:51", + "statements": [ + { + "expression": { + "id": 14913, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 14908, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14877, + "src": "7552:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 14910, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "7561:15:51", + "memberName": "initialProposer", + "nodeType": "MemberAccess", + "referencedDeclaration": 14553, + "src": "7552:24:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 14911, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "7579:3:51", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 14912, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7583:6:51", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "7579:10:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "7552:37:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 14914, + "nodeType": "ExpressionStatement", + "src": "7552:37:51" + } + ] + } + }, + { + "expression": { + "id": 14922, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 14917, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14877, + "src": "7690:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 14919, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "7699:15:51", + "memberName": "currentProposer", + "nodeType": "MemberAccess", + "referencedDeclaration": 14561, + "src": "7690:24:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 14920, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "7717:3:51", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 14921, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7721:6:51", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "7717:10:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "7690:37:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 14923, + "nodeType": "ExpressionStatement", + "src": "7690:37:51" + }, + { + "expression": { + "id": 14928, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 14924, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14877, + "src": "7767:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 14926, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "7776:12:51", + "memberName": "refundAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 14551, + "src": "7767:21:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 14927, + "name": "refundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14864, + "src": "7791:12:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7767:36:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 14929, + "nodeType": "ExpressionStatement", + "src": "7767:36:51" + }, + { + "expression": { + "id": 14938, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 14930, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14877, + "src": "7844:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 14932, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "7853:13:51", + "memberName": "ownerAccepted", + "nodeType": "MemberAccess", + "referencedDeclaration": 14557, + "src": "7844:22:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 14936, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 14933, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "7870:3:51", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 14934, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7874:6:51", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "7870:10:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 14935, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14858, + "src": "7884:5:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "7870:19:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 14937, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7869:21:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "7844:46:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 14939, + "nodeType": "ExpressionStatement", + "src": "7844:46:51" + }, + { + "expression": { + "id": 14948, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 14940, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14877, + "src": "7900:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 14942, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "7909:16:51", + "memberName": "supplierAccepted", + "nodeType": "MemberAccess", + "referencedDeclaration": 14559, + "src": "7900:25:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 14946, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 14943, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "7929:3:51", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 14944, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7933:6:51", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "7929:10:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 14945, + "name": "supplier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14860, + "src": "7943:8:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "7929:22:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 14947, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "7928:24:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "7900:52:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 14949, + "nodeType": "ExpressionStatement", + "src": "7900:52:51" + }, + { + "expression": { + "id": 14954, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 14950, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14877, + "src": "8002:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 14952, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "8011:18:51", + "memberName": "cancellationReason", + "nodeType": "MemberAccess", + "referencedDeclaration": 14568, + "src": "8002:27:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 14953, + "name": "cancellationReason", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14866, + "src": "8032:18:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "8002:48:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 14955, + "nodeType": "ExpressionStatement", + "src": "8002:48:51" + }, + { + "expression": { + "id": 14960, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 14956, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14877, + "src": "8060:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 14958, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "8069:19:51", + "memberName": "cancellationVersion", + "nodeType": "MemberAccess", + "referencedDeclaration": 14570, + "src": "8060:28:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 14959, + "name": "cancellationReasonVersion", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14868, + "src": "8091:25:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "8060:56:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 14961, + "nodeType": "ExpressionStatement", + "src": "8060:56:51" + }, + { + "expression": { + "id": 14966, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 14962, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14877, + "src": "8158:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 14964, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "8167:15:51", + "memberName": "rejectionReason", + "nodeType": "MemberAccess", + "referencedDeclaration": 14572, + "src": "8158:24:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 14965, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8185:1:51", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8158:28:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 14967, + "nodeType": "ExpressionStatement", + "src": "8158:28:51" + }, + { + "expression": { + "id": 14972, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 14968, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14877, + "src": "8196:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 14970, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "8205:16:51", + "memberName": "rejectionVersion", + "nodeType": "MemberAccess", + "referencedDeclaration": 14574, + "src": "8196:25:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 14971, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8224:1:51", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8196:29:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 14973, + "nodeType": "ExpressionStatement", + "src": "8196:29:51" + }, + { + "expression": { + "id": 14978, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 14974, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14877, + "src": "8235:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 14976, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "8244:13:51", + "memberName": "counterReason", + "nodeType": "MemberAccess", + "referencedDeclaration": 14576, + "src": "8235:22:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 14977, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8260:1:51", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8235:26:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 14979, + "nodeType": "ExpressionStatement", + "src": "8235:26:51" + }, + { + "expression": { + "id": 14984, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 14980, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14877, + "src": "8271:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 14982, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "8280:14:51", + "memberName": "counterVersion", + "nodeType": "MemberAccess", + "referencedDeclaration": 14578, + "src": "8271:23:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 14983, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8297:1:51", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8271:27:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 14985, + "nodeType": "ExpressionStatement", + "src": "8271:27:51" + }, + { + "expression": { + "id": 14990, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 14986, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14877, + "src": "8308:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 14988, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "8317:16:51", + "memberName": "withdrawalReason", + "nodeType": "MemberAccess", + "referencedDeclaration": 14580, + "src": "8308:25:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 14989, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8336:1:51", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8308:29:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 14991, + "nodeType": "ExpressionStatement", + "src": "8308:29:51" + }, + { + "expression": { + "id": 14996, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 14992, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14877, + "src": "8347:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 14994, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "8356:17:51", + "memberName": "withdrawalVersion", + "nodeType": "MemberAccess", + "referencedDeclaration": 14582, + "src": "8347:26:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "30", + "id": 14995, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8376:1:51", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "8347:30:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 14997, + "nodeType": "ExpressionStatement", + "src": "8347:30:51" + }, + { + "expression": { + "id": 15003, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 14998, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14877, + "src": "8421:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15000, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "8430:6:51", + "memberName": "status", + "nodeType": "MemberAccess", + "referencedDeclaration": 14566, + "src": "8421:15:51", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 15001, + "name": "CancellationProposalStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14549, + "src": "8439:26:51", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_CancellationProposalStatus_$14549_$", + "typeString": "type(enum CancellationProposalStatus)" + } + }, + "id": 15002, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "8466:7:51", + "memberName": "PENDING", + "nodeType": "MemberAccess", + "referencedDeclaration": 14545, + "src": "8439:34:51", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + }, + "src": "8421:52:51", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + }, + "id": 15004, + "nodeType": "ExpressionStatement", + "src": "8421:52:51" + }, + { + "eventCall": { + "arguments": [ + { + "id": 15006, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14862, + "src": "8544:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 15007, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14877, + "src": "8565:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15008, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8574:15:51", + "memberName": "initialProposer", + "nodeType": "MemberAccess", + "referencedDeclaration": 14553, + "src": "8565:24:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 15009, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14877, + "src": "8603:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15010, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8612:15:51", + "memberName": "currentProposer", + "nodeType": "MemberAccess", + "referencedDeclaration": 14561, + "src": "8603:24:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 15011, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14877, + "src": "8641:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15012, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8650:12:51", + "memberName": "refundAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 14551, + "src": "8641:21:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 15013, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14877, + "src": "8676:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15014, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8685:13:51", + "memberName": "ownerAccepted", + "nodeType": "MemberAccess", + "referencedDeclaration": 14557, + "src": "8676:22:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "expression": { + "id": 15015, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14877, + "src": "8712:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15016, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8721:16:51", + "memberName": "supplierAccepted", + "nodeType": "MemberAccess", + "referencedDeclaration": 14559, + "src": "8712:25:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "expression": { + "id": 15017, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14877, + "src": "8751:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15018, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8760:14:51", + "memberName": "timesCountered", + "nodeType": "MemberAccess", + "referencedDeclaration": 14555, + "src": "8751:23:51", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + { + "expression": { + "id": 15019, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14877, + "src": "8788:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15020, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8797:13:51", + "memberName": "timesRejected", + "nodeType": "MemberAccess", + "referencedDeclaration": 14563, + "src": "8788:22:51", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + ], + "id": 15005, + "name": "CancellationPending", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14620, + "src": "8511:19:51", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_bool_$_t_bool_$_t_uint32_$_t_uint32_$returns$__$", + "typeString": "function (uint256,address,address,uint256,bool,bool,uint32,uint32)" + } + }, + "id": 15021, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8511:309:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 15022, + "nodeType": "EmitStatement", + "src": "8506:314:51" + }, + { + "eventCall": { + "arguments": [ + { + "id": 15024, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14862, + "src": "8899:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 15025, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14877, + "src": "8920:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15026, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8929:18:51", + "memberName": "cancellationReason", + "nodeType": "MemberAccess", + "referencedDeclaration": 14568, + "src": "8920:27:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "expression": { + "id": 15027, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14877, + "src": "8961:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15028, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8970:19:51", + "memberName": "cancellationVersion", + "nodeType": "MemberAccess", + "referencedDeclaration": 14570, + "src": "8961:28:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "expression": { + "id": 15029, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14877, + "src": "9003:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15030, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9012:15:51", + "memberName": "rejectionReason", + "nodeType": "MemberAccess", + "referencedDeclaration": 14572, + "src": "9003:24:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "expression": { + "id": 15031, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14877, + "src": "9041:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15032, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9050:16:51", + "memberName": "rejectionVersion", + "nodeType": "MemberAccess", + "referencedDeclaration": 14574, + "src": "9041:25:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "expression": { + "id": 15033, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14877, + "src": "9080:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15034, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9089:13:51", + "memberName": "counterReason", + "nodeType": "MemberAccess", + "referencedDeclaration": 14576, + "src": "9080:22:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "expression": { + "id": 15035, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14877, + "src": "9116:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15036, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9125:14:51", + "memberName": "counterVersion", + "nodeType": "MemberAccess", + "referencedDeclaration": 14578, + "src": "9116:23:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "expression": { + "id": 15037, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14877, + "src": "9153:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15038, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9162:16:51", + "memberName": "withdrawalReason", + "nodeType": "MemberAccess", + "referencedDeclaration": 14580, + "src": "9153:25:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "expression": { + "id": 15039, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14877, + "src": "9192:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15040, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9201:17:51", + "memberName": "withdrawalVersion", + "nodeType": "MemberAccess", + "referencedDeclaration": 14582, + "src": "9192:26:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "id": 15023, + "name": "CancellationReasons", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14640, + "src": "8866:19:51", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint16_$returns$__$", + "typeString": "function (uint256,uint16,uint16,uint16,uint16,uint16,uint16,uint16,uint16)" + } + }, + "id": 15041, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8866:362:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 15042, + "nodeType": "EmitStatement", + "src": "8861:367:51" + } + ] + }, + "id": 15044, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 14871, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14858, + "src": "6987:5:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 14872, + "name": "supplier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14860, + "src": "6994:8:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 14873, + "kind": "modifierInvocation", + "modifierName": { + "id": 14870, + "name": "onlyOwnerOrSupplier", + "nameLocations": [ + "6967:19:51" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 14732, + "src": "6967:19:51" + }, + "nodeType": "ModifierInvocation", + "src": "6967:36:51" + } + ], + "name": "_initiateCancellation", + "nameLocation": "6741:21:51", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 14869, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14858, + "mutability": "mutable", + "name": "owner", + "nameLocation": "6780:5:51", + "nodeType": "VariableDeclaration", + "scope": 15044, + "src": "6772:13:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 14857, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6772:7:51", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14860, + "mutability": "mutable", + "name": "supplier", + "nameLocation": "6803:8:51", + "nodeType": "VariableDeclaration", + "scope": 15044, + "src": "6795:16:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 14859, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6795:7:51", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14862, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "6829:7:51", + "nodeType": "VariableDeclaration", + "scope": 15044, + "src": "6821:15:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14861, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6821:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14864, + "mutability": "mutable", + "name": "refundAmount", + "nameLocation": "6854:12:51", + "nodeType": "VariableDeclaration", + "scope": 15044, + "src": "6846:20:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 14863, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6846:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14866, + "mutability": "mutable", + "name": "cancellationReason", + "nameLocation": "6883:18:51", + "nodeType": "VariableDeclaration", + "scope": 15044, + "src": "6876:25:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 14865, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "6876:6:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14868, + "mutability": "mutable", + "name": "cancellationReasonVersion", + "nameLocation": "6918:25:51", + "nodeType": "VariableDeclaration", + "scope": 15044, + "src": "6911:32:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 14867, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "6911:6:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "6762:187:51" + }, + "returnParameters": { + "id": 14874, + "nodeType": "ParameterList", + "parameters": [], + "src": "7004:0:51" + }, + "scope": 15532, + "src": "6732:2503:51", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 15152, + "nodeType": "Block", + "src": "9802:1457:51", + "statements": [ + { + "assignments": [ + 15062 + ], + "declarations": [ + { + "constant": false, + "id": 15062, + "mutability": "mutable", + "name": "proposal", + "nameLocation": "9829:8:51", + "nodeType": "VariableDeclaration", + "scope": 15152, + "src": "9812:25:51", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal" + }, + "typeName": { + "id": 15061, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 15060, + "name": "Proposal", + "nameLocations": [ + "9812:8:51" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 14583, + "src": "9812:8:51" + }, + "referencedDeclaration": 14583, + "src": "9812:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal" + } + }, + "visibility": "internal" + } + ], + "id": 15068, + "initialValue": { + "baseExpression": { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 15063, + "name": "_getBookingTokenCancellableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14602, + "src": "9840:34:51", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_BookingTokenCancellableStorage_$14590_storage_ptr_$", + "typeString": "function () pure returns (struct BookingTokenCancellable.BookingTokenCancellableStorage storage pointer)" + } + }, + "id": 15064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9840:36:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenCancellableStorage_$14590_storage_ptr", + "typeString": "struct BookingTokenCancellable.BookingTokenCancellableStorage storage pointer" + } + }, + "id": 15065, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9877:10:51", + "memberName": "_proposals", + "nodeType": "MemberAccess", + "referencedDeclaration": 14589, + "src": "9840:47:51", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$14583_storage_$", + "typeString": "mapping(uint256 => struct BookingTokenCancellable.Proposal storage ref)" + } + }, + "id": 15067, + "indexExpression": { + "id": 15066, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15051, + "src": "9888:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9840:56:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage", + "typeString": "struct BookingTokenCancellable.Proposal storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9812:84:51" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + }, + "id": 15073, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 15069, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15062, + "src": "9953:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15070, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9962:6:51", + "memberName": "status", + "nodeType": "MemberAccess", + "referencedDeclaration": 14566, + "src": "9953:15:51", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "id": 15071, + "name": "CancellationProposalStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14549, + "src": "9972:26:51", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_CancellationProposalStatus_$14549_$", + "typeString": "type(enum CancellationProposalStatus)" + } + }, + "id": 15072, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "9999:7:51", + "memberName": "PENDING", + "nodeType": "MemberAccess", + "referencedDeclaration": 14545, + "src": "9972:34:51", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + }, + "src": "9953:53:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 15081, + "nodeType": "IfStatement", + "src": "9949:150:51", + "trueBody": { + "id": 15080, + "nodeType": "Block", + "src": "10008:91:51", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 15075, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15051, + "src": "10063:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 15076, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15062, + "src": "10072:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15077, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10081:6:51", + "memberName": "status", + "nodeType": "MemberAccess", + "referencedDeclaration": 14566, + "src": "10072:15:51", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + ], + "id": 15074, + "name": "InvalidCancellationProposalStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14681, + "src": "10029:33:51", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_enum$_CancellationProposalStatus_$14549_$returns$__$", + "typeString": "function (uint256,enum CancellationProposalStatus) pure" + } + }, + "id": 15078, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10029:59:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 15079, + "nodeType": "RevertStatement", + "src": "10022:66:51" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 15085, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 15082, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15062, + "src": "10163:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15083, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10172:12:51", + "memberName": "refundAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 14551, + "src": "10163:21:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 15084, + "name": "checkRefundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15053, + "src": "10188:17:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10163:42:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 15094, + "nodeType": "IfStatement", + "src": "10159:152:51", + "trueBody": { + "id": 15093, + "nodeType": "Block", + "src": "10207:104:51", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 15087, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15051, + "src": "10250:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 15088, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15062, + "src": "10259:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15089, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10268:12:51", + "memberName": "refundAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 14551, + "src": "10259:21:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 15090, + "name": "checkRefundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15053, + "src": "10282:17:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 15086, + "name": "IncorrectRefundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14674, + "src": "10228:21:51", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256,uint256) pure" + } + }, + "id": 15091, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10228:72:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 15092, + "nodeType": "RevertStatement", + "src": "10221:79:51" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 15098, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 15095, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "10360:3:51", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 15096, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10364:6:51", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "10360:10:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 15097, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15047, + "src": "10374:5:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10360:19:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 15112, + "nodeType": "Block", + "src": "10441:57:51", + "statements": [ + { + "expression": { + "id": 15110, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 15106, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15062, + "src": "10455:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15108, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "10464:16:51", + "memberName": "supplierAccepted", + "nodeType": "MemberAccess", + "referencedDeclaration": 14559, + "src": "10455:25:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 15109, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10483:4:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "10455:32:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 15111, + "nodeType": "ExpressionStatement", + "src": "10455:32:51" + } + ] + }, + "id": 15113, + "nodeType": "IfStatement", + "src": "10356:142:51", + "trueBody": { + "id": 15105, + "nodeType": "Block", + "src": "10381:54:51", + "statements": [ + { + "expression": { + "id": 15103, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 15099, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15062, + "src": "10395:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15101, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "10404:13:51", + "memberName": "ownerAccepted", + "nodeType": "MemberAccess", + "referencedDeclaration": 14557, + "src": "10395:22:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 15102, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10420:4:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "10395:29:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 15104, + "nodeType": "ExpressionStatement", + "src": "10395:29:51" + } + ] + } + }, + { + "eventCall": { + "arguments": [ + { + "id": 15115, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15051, + "src": "10568:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 15116, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15062, + "src": "10589:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15117, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10598:15:51", + "memberName": "initialProposer", + "nodeType": "MemberAccess", + "referencedDeclaration": 14553, + "src": "10589:24:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 15118, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15062, + "src": "10627:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15119, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10636:15:51", + "memberName": "currentProposer", + "nodeType": "MemberAccess", + "referencedDeclaration": 14561, + "src": "10627:24:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 15120, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15062, + "src": "10665:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15121, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10674:12:51", + "memberName": "refundAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 14551, + "src": "10665:21:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 15122, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15062, + "src": "10700:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15123, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10709:13:51", + "memberName": "ownerAccepted", + "nodeType": "MemberAccess", + "referencedDeclaration": 14557, + "src": "10700:22:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "expression": { + "id": 15124, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15062, + "src": "10736:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15125, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10745:16:51", + "memberName": "supplierAccepted", + "nodeType": "MemberAccess", + "referencedDeclaration": 14559, + "src": "10736:25:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "expression": { + "id": 15126, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15062, + "src": "10775:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15127, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10784:14:51", + "memberName": "timesCountered", + "nodeType": "MemberAccess", + "referencedDeclaration": 14555, + "src": "10775:23:51", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + { + "expression": { + "id": 15128, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15062, + "src": "10812:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15129, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10821:13:51", + "memberName": "timesRejected", + "nodeType": "MemberAccess", + "referencedDeclaration": 14563, + "src": "10812:22:51", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + ], + "id": 15114, + "name": "CancellationPending", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14620, + "src": "10535:19:51", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_bool_$_t_bool_$_t_uint32_$_t_uint32_$returns$__$", + "typeString": "function (uint256,address,address,uint256,bool,bool,uint32,uint32)" + } + }, + "id": 15130, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10535:309:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 15131, + "nodeType": "EmitStatement", + "src": "10530:314:51" + }, + { + "eventCall": { + "arguments": [ + { + "id": 15133, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15051, + "src": "10923:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 15134, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15062, + "src": "10944:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15135, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10953:18:51", + "memberName": "cancellationReason", + "nodeType": "MemberAccess", + "referencedDeclaration": 14568, + "src": "10944:27:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "expression": { + "id": 15136, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15062, + "src": "10985:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15137, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10994:19:51", + "memberName": "cancellationVersion", + "nodeType": "MemberAccess", + "referencedDeclaration": 14570, + "src": "10985:28:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "expression": { + "id": 15138, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15062, + "src": "11027:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15139, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11036:15:51", + "memberName": "rejectionReason", + "nodeType": "MemberAccess", + "referencedDeclaration": 14572, + "src": "11027:24:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "expression": { + "id": 15140, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15062, + "src": "11065:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15141, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11074:16:51", + "memberName": "rejectionVersion", + "nodeType": "MemberAccess", + "referencedDeclaration": 14574, + "src": "11065:25:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "expression": { + "id": 15142, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15062, + "src": "11104:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15143, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11113:13:51", + "memberName": "counterReason", + "nodeType": "MemberAccess", + "referencedDeclaration": 14576, + "src": "11104:22:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "expression": { + "id": 15144, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15062, + "src": "11140:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15145, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11149:14:51", + "memberName": "counterVersion", + "nodeType": "MemberAccess", + "referencedDeclaration": 14578, + "src": "11140:23:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "expression": { + "id": 15146, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15062, + "src": "11177:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15147, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11186:16:51", + "memberName": "withdrawalReason", + "nodeType": "MemberAccess", + "referencedDeclaration": 14580, + "src": "11177:25:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "expression": { + "id": 15148, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15062, + "src": "11216:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15149, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11225:17:51", + "memberName": "withdrawalVersion", + "nodeType": "MemberAccess", + "referencedDeclaration": 14582, + "src": "11216:26:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "id": 15132, + "name": "CancellationReasons", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14640, + "src": "10890:19:51", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint16_$returns$__$", + "typeString": "function (uint256,uint16,uint16,uint16,uint16,uint16,uint16,uint16,uint16)" + } + }, + "id": 15150, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10890:362:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 15151, + "nodeType": "EmitStatement", + "src": "10885:367:51" + } + ] + }, + "documentation": { + "id": 15045, + "nodeType": "StructuredDocumentation", + "src": "9241:358:51", + "text": " @notice Used by the owner or supplier to accept a cancellation proposal that\n is initiated or countered by the other party\n @param owner Owner of the token\n @param supplier Supplier of the token\n @param tokenId Token ID\n @param checkRefundAmount Refund amount to check against, to prevent front-running" + }, + "id": 15153, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 15056, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15047, + "src": "9785:5:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 15057, + "name": "supplier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15049, + "src": "9792:8:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 15058, + "kind": "modifierInvocation", + "modifierName": { + "id": 15055, + "name": "onlyOwnerOrSupplier", + "nameLocations": [ + "9765:19:51" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 14732, + "src": "9765:19:51" + }, + "nodeType": "ModifierInvocation", + "src": "9765:36:51" + } + ], + "name": "_acceptCancellation", + "nameLocation": "9613:19:51", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 15054, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 15047, + "mutability": "mutable", + "name": "owner", + "nameLocation": "9650:5:51", + "nodeType": "VariableDeclaration", + "scope": 15153, + "src": "9642:13:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 15046, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9642:7:51", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15049, + "mutability": "mutable", + "name": "supplier", + "nameLocation": "9673:8:51", + "nodeType": "VariableDeclaration", + "scope": 15153, + "src": "9665:16:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 15048, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9665:7:51", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15051, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "9699:7:51", + "nodeType": "VariableDeclaration", + "scope": 15153, + "src": "9691:15:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15050, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9691:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15053, + "mutability": "mutable", + "name": "checkRefundAmount", + "nameLocation": "9724:17:51", + "nodeType": "VariableDeclaration", + "scope": 15153, + "src": "9716:25:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15052, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9716:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9632:115:51" + }, + "returnParameters": { + "id": 15059, + "nodeType": "ParameterList", + "parameters": [], + "src": "9802:0:51" + }, + "scope": 15532, + "src": "9604:1655:51", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 15282, + "nodeType": "Block", + "src": "11520:1601:51", + "statements": [ + { + "assignments": [ + 15174 + ], + "declarations": [ + { + "constant": false, + "id": 15174, + "mutability": "mutable", + "name": "proposal", + "nameLocation": "11547:8:51", + "nodeType": "VariableDeclaration", + "scope": 15282, + "src": "11530:25:51", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal" + }, + "typeName": { + "id": 15173, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 15172, + "name": "Proposal", + "nameLocations": [ + "11530:8:51" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 14583, + "src": "11530:8:51" + }, + "referencedDeclaration": 14583, + "src": "11530:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal" + } + }, + "visibility": "internal" + } + ], + "id": 15180, + "initialValue": { + "baseExpression": { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 15175, + "name": "_getBookingTokenCancellableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14602, + "src": "11558:34:51", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_BookingTokenCancellableStorage_$14590_storage_ptr_$", + "typeString": "function () pure returns (struct BookingTokenCancellable.BookingTokenCancellableStorage storage pointer)" + } + }, + "id": 15176, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11558:36:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenCancellableStorage_$14590_storage_ptr", + "typeString": "struct BookingTokenCancellable.BookingTokenCancellableStorage storage pointer" + } + }, + "id": 15177, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11595:10:51", + "memberName": "_proposals", + "nodeType": "MemberAccess", + "referencedDeclaration": 14589, + "src": "11558:47:51", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$14583_storage_$", + "typeString": "mapping(uint256 => struct BookingTokenCancellable.Proposal storage ref)" + } + }, + "id": 15179, + "indexExpression": { + "id": 15178, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15159, + "src": "11606:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11558:56:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage", + "typeString": "struct BookingTokenCancellable.Proposal storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11530:84:51" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + }, + "id": 15185, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 15181, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15174, + "src": "11671:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15182, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11680:6:51", + "memberName": "status", + "nodeType": "MemberAccess", + "referencedDeclaration": 14566, + "src": "11671:15:51", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "id": 15183, + "name": "CancellationProposalStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14549, + "src": "11690:26:51", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_CancellationProposalStatus_$14549_$", + "typeString": "type(enum CancellationProposalStatus)" + } + }, + "id": 15184, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "11717:7:51", + "memberName": "PENDING", + "nodeType": "MemberAccess", + "referencedDeclaration": 14545, + "src": "11690:34:51", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + }, + "src": "11671:53:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 15193, + "nodeType": "IfStatement", + "src": "11667:150:51", + "trueBody": { + "id": 15192, + "nodeType": "Block", + "src": "11726:91:51", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 15187, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15159, + "src": "11781:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 15188, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15174, + "src": "11790:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15189, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11799:6:51", + "memberName": "status", + "nodeType": "MemberAccess", + "referencedDeclaration": 14566, + "src": "11790:15:51", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + ], + "id": 15186, + "name": "InvalidCancellationProposalStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14681, + "src": "11747:33:51", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_enum$_CancellationProposalStatus_$14549_$returns$__$", + "typeString": "function (uint256,enum CancellationProposalStatus) pure" + } + }, + "id": 15190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11747:59:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 15191, + "nodeType": "RevertStatement", + "src": "11740:66:51" + } + ] + } + }, + { + "expression": { + "id": 15198, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 15194, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15174, + "src": "11860:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15196, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "11869:12:51", + "memberName": "refundAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 14551, + "src": "11860:21:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 15197, + "name": "refundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15161, + "src": "11884:12:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11860:36:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 15199, + "nodeType": "ExpressionStatement", + "src": "11860:36:51" + }, + { + "expression": { + "id": 15205, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 15200, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15174, + "src": "11967:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15202, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "11976:15:51", + "memberName": "currentProposer", + "nodeType": "MemberAccess", + "referencedDeclaration": 14561, + "src": "11967:24:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 15203, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "11994:3:51", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 15204, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11998:6:51", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "11994:10:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "11967:37:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 15206, + "nodeType": "ExpressionStatement", + "src": "11967:37:51" + }, + { + "expression": { + "id": 15215, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 15207, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15174, + "src": "12045:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15209, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "12054:13:51", + "memberName": "ownerAccepted", + "nodeType": "MemberAccess", + "referencedDeclaration": 14557, + "src": "12045:22:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 15213, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 15210, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "12071:3:51", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 15211, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12075:6:51", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "12071:10:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 15212, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15155, + "src": "12085:5:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "12071:19:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 15214, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "12070:21:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "12045:46:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 15216, + "nodeType": "ExpressionStatement", + "src": "12045:46:51" + }, + { + "expression": { + "id": 15225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 15217, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15174, + "src": "12101:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15219, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "12110:16:51", + "memberName": "supplierAccepted", + "nodeType": "MemberAccess", + "referencedDeclaration": 14559, + "src": "12101:25:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 15223, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 15220, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "12130:3:51", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 15221, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12134:6:51", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "12130:10:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 15222, + "name": "supplier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15157, + "src": "12144:8:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "12130:22:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 15224, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "12129:24:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "12101:52:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 15226, + "nodeType": "ExpressionStatement", + "src": "12101:52:51" + }, + { + "expression": { + "id": 15231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 15227, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15174, + "src": "12198:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15229, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "12207:13:51", + "memberName": "counterReason", + "nodeType": "MemberAccess", + "referencedDeclaration": 14576, + "src": "12198:22:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 15230, + "name": "counterReason", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15163, + "src": "12223:13:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "12198:38:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 15232, + "nodeType": "ExpressionStatement", + "src": "12198:38:51" + }, + { + "expression": { + "id": 15237, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 15233, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15174, + "src": "12246:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15235, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "12255:14:51", + "memberName": "counterVersion", + "nodeType": "MemberAccess", + "referencedDeclaration": 14578, + "src": "12246:23:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 15236, + "name": "counterVersion", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15165, + "src": "12272:14:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "12246:40:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 15238, + "nodeType": "ExpressionStatement", + "src": "12246:40:51" + }, + { + "expression": { + "id": 15242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "12334:25:51", + "subExpression": { + "expression": { + "id": 15239, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15174, + "src": "12334:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15241, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "12343:14:51", + "memberName": "timesCountered", + "nodeType": "MemberAccess", + "referencedDeclaration": 14555, + "src": "12334:23:51", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "id": 15243, + "nodeType": "ExpressionStatement", + "src": "12334:25:51" + }, + { + "eventCall": { + "arguments": [ + { + "id": 15245, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15159, + "src": "12430:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 15246, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15174, + "src": "12451:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15247, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12460:15:51", + "memberName": "initialProposer", + "nodeType": "MemberAccess", + "referencedDeclaration": 14553, + "src": "12451:24:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 15248, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15174, + "src": "12489:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15249, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12498:15:51", + "memberName": "currentProposer", + "nodeType": "MemberAccess", + "referencedDeclaration": 14561, + "src": "12489:24:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "expression": { + "id": 15250, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15174, + "src": "12527:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15251, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12536:12:51", + "memberName": "refundAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 14551, + "src": "12527:21:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 15252, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15174, + "src": "12562:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15253, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12571:13:51", + "memberName": "ownerAccepted", + "nodeType": "MemberAccess", + "referencedDeclaration": 14557, + "src": "12562:22:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "expression": { + "id": 15254, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15174, + "src": "12598:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15255, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12607:16:51", + "memberName": "supplierAccepted", + "nodeType": "MemberAccess", + "referencedDeclaration": 14559, + "src": "12598:25:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "expression": { + "id": 15256, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15174, + "src": "12637:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15257, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12646:14:51", + "memberName": "timesCountered", + "nodeType": "MemberAccess", + "referencedDeclaration": 14555, + "src": "12637:23:51", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + { + "expression": { + "id": 15258, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15174, + "src": "12674:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15259, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12683:13:51", + "memberName": "timesRejected", + "nodeType": "MemberAccess", + "referencedDeclaration": 14563, + "src": "12674:22:51", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + }, + { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + ], + "id": 15244, + "name": "CancellationPending", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14620, + "src": "12397:19:51", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_address_$_t_uint256_$_t_bool_$_t_bool_$_t_uint32_$_t_uint32_$returns$__$", + "typeString": "function (uint256,address,address,uint256,bool,bool,uint32,uint32)" + } + }, + "id": 15260, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12397:309:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 15261, + "nodeType": "EmitStatement", + "src": "12392:314:51" + }, + { + "eventCall": { + "arguments": [ + { + "id": 15263, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15159, + "src": "12785:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 15264, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15174, + "src": "12806:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15265, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12815:18:51", + "memberName": "cancellationReason", + "nodeType": "MemberAccess", + "referencedDeclaration": 14568, + "src": "12806:27:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "expression": { + "id": 15266, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15174, + "src": "12847:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15267, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12856:19:51", + "memberName": "cancellationVersion", + "nodeType": "MemberAccess", + "referencedDeclaration": 14570, + "src": "12847:28:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "expression": { + "id": 15268, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15174, + "src": "12889:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15269, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12898:15:51", + "memberName": "rejectionReason", + "nodeType": "MemberAccess", + "referencedDeclaration": 14572, + "src": "12889:24:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "expression": { + "id": 15270, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15174, + "src": "12927:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15271, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12936:16:51", + "memberName": "rejectionVersion", + "nodeType": "MemberAccess", + "referencedDeclaration": 14574, + "src": "12927:25:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "expression": { + "id": 15272, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15174, + "src": "12966:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15273, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12975:13:51", + "memberName": "counterReason", + "nodeType": "MemberAccess", + "referencedDeclaration": 14576, + "src": "12966:22:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "expression": { + "id": 15274, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15174, + "src": "13002:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15275, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13011:14:51", + "memberName": "counterVersion", + "nodeType": "MemberAccess", + "referencedDeclaration": 14578, + "src": "13002:23:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "expression": { + "id": 15276, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15174, + "src": "13039:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15277, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13048:16:51", + "memberName": "withdrawalReason", + "nodeType": "MemberAccess", + "referencedDeclaration": 14580, + "src": "13039:25:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "expression": { + "id": 15278, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15174, + "src": "13078:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15279, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13087:17:51", + "memberName": "withdrawalVersion", + "nodeType": "MemberAccess", + "referencedDeclaration": 14582, + "src": "13078:26:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "id": 15262, + "name": "CancellationReasons", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14640, + "src": "12752:19:51", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint16_$_t_uint16_$returns$__$", + "typeString": "function (uint256,uint16,uint16,uint16,uint16,uint16,uint16,uint16,uint16)" + } + }, + "id": 15280, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12752:362:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 15281, + "nodeType": "EmitStatement", + "src": "12747:367:51" + } + ] + }, + "id": 15283, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 15168, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15155, + "src": "11503:5:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 15169, + "name": "supplier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15157, + "src": "11510:8:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 15170, + "kind": "modifierInvocation", + "modifierName": { + "id": 15167, + "name": "onlyOwnerOrSupplier", + "nameLocations": [ + "11483:19:51" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 14732, + "src": "11483:19:51" + }, + "nodeType": "ModifierInvocation", + "src": "11483:36:51" + } + ], + "name": "_counterCancellation", + "nameLocation": "11274:20:51", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 15166, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 15155, + "mutability": "mutable", + "name": "owner", + "nameLocation": "11312:5:51", + "nodeType": "VariableDeclaration", + "scope": 15283, + "src": "11304:13:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 15154, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11304:7:51", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15157, + "mutability": "mutable", + "name": "supplier", + "nameLocation": "11335:8:51", + "nodeType": "VariableDeclaration", + "scope": 15283, + "src": "11327:16:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 15156, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11327:7:51", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15159, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "11361:7:51", + "nodeType": "VariableDeclaration", + "scope": 15283, + "src": "11353:15:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15158, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11353:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15161, + "mutability": "mutable", + "name": "refundAmount", + "nameLocation": "11386:12:51", + "nodeType": "VariableDeclaration", + "scope": 15283, + "src": "11378:20:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15160, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11378:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15163, + "mutability": "mutable", + "name": "counterReason", + "nameLocation": "11415:13:51", + "nodeType": "VariableDeclaration", + "scope": 15283, + "src": "11408:20:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 15162, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "11408:6:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15165, + "mutability": "mutable", + "name": "counterVersion", + "nameLocation": "11445:14:51", + "nodeType": "VariableDeclaration", + "scope": 15283, + "src": "11438:21:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 15164, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "11438:6:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "11294:171:51" + }, + "returnParameters": { + "id": 15171, + "nodeType": "ParameterList", + "parameters": [], + "src": "11520:0:51" + }, + "scope": 15532, + "src": "11265:1856:51", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 15358, + "nodeType": "Block", + "src": "13359:835:51", + "statements": [ + { + "assignments": [ + 15302 + ], + "declarations": [ + { + "constant": false, + "id": 15302, + "mutability": "mutable", + "name": "proposal", + "nameLocation": "13386:8:51", + "nodeType": "VariableDeclaration", + "scope": 15358, + "src": "13369:25:51", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal" + }, + "typeName": { + "id": 15301, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 15300, + "name": "Proposal", + "nameLocations": [ + "13369:8:51" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 14583, + "src": "13369:8:51" + }, + "referencedDeclaration": 14583, + "src": "13369:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal" + } + }, + "visibility": "internal" + } + ], + "id": 15308, + "initialValue": { + "baseExpression": { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 15303, + "name": "_getBookingTokenCancellableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14602, + "src": "13397:34:51", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_BookingTokenCancellableStorage_$14590_storage_ptr_$", + "typeString": "function () pure returns (struct BookingTokenCancellable.BookingTokenCancellableStorage storage pointer)" + } + }, + "id": 15304, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13397:36:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenCancellableStorage_$14590_storage_ptr", + "typeString": "struct BookingTokenCancellable.BookingTokenCancellableStorage storage pointer" + } + }, + "id": 15305, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13434:10:51", + "memberName": "_proposals", + "nodeType": "MemberAccess", + "referencedDeclaration": 14589, + "src": "13397:47:51", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$14583_storage_$", + "typeString": "mapping(uint256 => struct BookingTokenCancellable.Proposal storage ref)" + } + }, + "id": 15307, + "indexExpression": { + "id": 15306, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15289, + "src": "13445:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "13397:56:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage", + "typeString": "struct BookingTokenCancellable.Proposal storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13369:84:51" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + }, + "id": 15313, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 15309, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15302, + "src": "13510:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15310, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13519:6:51", + "memberName": "status", + "nodeType": "MemberAccess", + "referencedDeclaration": 14566, + "src": "13510:15:51", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "id": 15311, + "name": "CancellationProposalStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14549, + "src": "13529:26:51", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_CancellationProposalStatus_$14549_$", + "typeString": "type(enum CancellationProposalStatus)" + } + }, + "id": 15312, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "13556:7:51", + "memberName": "PENDING", + "nodeType": "MemberAccess", + "referencedDeclaration": 14545, + "src": "13529:34:51", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + }, + "src": "13510:53:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 15321, + "nodeType": "IfStatement", + "src": "13506:150:51", + "trueBody": { + "id": 15320, + "nodeType": "Block", + "src": "13565:91:51", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 15315, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15289, + "src": "13620:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 15316, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15302, + "src": "13629:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15317, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13638:6:51", + "memberName": "status", + "nodeType": "MemberAccess", + "referencedDeclaration": 14566, + "src": "13629:15:51", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + ], + "id": 15314, + "name": "InvalidCancellationProposalStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14681, + "src": "13586:33:51", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_enum$_CancellationProposalStatus_$14549_$returns$__$", + "typeString": "function (uint256,enum CancellationProposalStatus) pure" + } + }, + "id": 15318, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13586:59:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 15319, + "nodeType": "RevertStatement", + "src": "13579:66:51" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 15326, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 15322, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "13716:3:51", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 15323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13720:6:51", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "13716:10:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "id": 15324, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15302, + "src": "13730:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15325, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13739:15:51", + "memberName": "currentProposer", + "nodeType": "MemberAccess", + "referencedDeclaration": 14561, + "src": "13730:24:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "13716:38:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 15332, + "nodeType": "IfStatement", + "src": "13712:127:51", + "trueBody": { + "id": 15331, + "nodeType": "Block", + "src": "13756:83:51", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 15328, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15289, + "src": "13820:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 15327, + "name": "OnlyCurrentProposerCanWithdrawCancellation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14697, + "src": "13777:42:51", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", + "typeString": "function (uint256) pure" + } + }, + "id": 15329, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13777:51:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 15330, + "nodeType": "RevertStatement", + "src": "13770:58:51" + } + ] + } + }, + { + "expression": { + "id": 15337, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 15333, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15302, + "src": "13882:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15335, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "13891:16:51", + "memberName": "withdrawalReason", + "nodeType": "MemberAccess", + "referencedDeclaration": 14580, + "src": "13882:25:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 15336, + "name": "withdrawalReason", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15291, + "src": "13910:16:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "13882:44:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 15338, + "nodeType": "ExpressionStatement", + "src": "13882:44:51" + }, + { + "expression": { + "id": 15343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 15339, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15302, + "src": "13936:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15341, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "13945:17:51", + "memberName": "withdrawalVersion", + "nodeType": "MemberAccess", + "referencedDeclaration": 14582, + "src": "13936:26:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 15342, + "name": "withdrawalVersion", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15293, + "src": "13965:17:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "13936:46:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 15344, + "nodeType": "ExpressionStatement", + "src": "13936:46:51" + }, + { + "expression": { + "id": 15350, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 15345, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15302, + "src": "14028:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15347, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "14037:6:51", + "memberName": "status", + "nodeType": "MemberAccess", + "referencedDeclaration": 14566, + "src": "14028:15:51", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 15348, + "name": "CancellationProposalStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14549, + "src": "14046:26:51", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_CancellationProposalStatus_$14549_$", + "typeString": "type(enum CancellationProposalStatus)" + } + }, + "id": 15349, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "14073:9:51", + "memberName": "WITHDRAWN", + "nodeType": "MemberAccess", + "referencedDeclaration": 14547, + "src": "14046:36:51", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + }, + "src": "14028:54:51", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + }, + "id": 15351, + "nodeType": "ExpressionStatement", + "src": "14028:54:51" + }, + { + "eventCall": { + "arguments": [ + { + "id": 15353, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15289, + "src": "14142:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 15354, + "name": "withdrawalReason", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15291, + "src": "14151:16:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "id": 15355, + "name": "withdrawalVersion", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15293, + "src": "14169:17:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "id": 15352, + "name": "CancellationWithdrawn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14648, + "src": "14120:21:51", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint16_$_t_uint16_$returns$__$", + "typeString": "function (uint256,uint16,uint16)" + } + }, + "id": 15356, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14120:67:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 15357, + "nodeType": "EmitStatement", + "src": "14115:72:51" + } + ] + }, + "id": 15359, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 15296, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15285, + "src": "13342:5:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 15297, + "name": "supplier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15287, + "src": "13349:8:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 15298, + "kind": "modifierInvocation", + "modifierName": { + "id": 15295, + "name": "onlyOwnerOrSupplier", + "nameLocations": [ + "13322:19:51" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 14732, + "src": "13322:19:51" + }, + "nodeType": "ModifierInvocation", + "src": "13322:36:51" + } + ], + "name": "_withdrawCancellation", + "nameLocation": "13136:21:51", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 15294, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 15285, + "mutability": "mutable", + "name": "owner", + "nameLocation": "13175:5:51", + "nodeType": "VariableDeclaration", + "scope": 15359, + "src": "13167:13:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 15284, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13167:7:51", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15287, + "mutability": "mutable", + "name": "supplier", + "nameLocation": "13198:8:51", + "nodeType": "VariableDeclaration", + "scope": 15359, + "src": "13190:16:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 15286, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13190:7:51", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15289, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "13224:7:51", + "nodeType": "VariableDeclaration", + "scope": 15359, + "src": "13216:15:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15288, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13216:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15291, + "mutability": "mutable", + "name": "withdrawalReason", + "nameLocation": "13248:16:51", + "nodeType": "VariableDeclaration", + "scope": 15359, + "src": "13241:23:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 15290, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "13241:6:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15293, + "mutability": "mutable", + "name": "withdrawalVersion", + "nameLocation": "13281:17:51", + "nodeType": "VariableDeclaration", + "scope": 15359, + "src": "13274:24:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 15292, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "13274:6:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "13157:147:51" + }, + "returnParameters": { + "id": 15299, + "nodeType": "ParameterList", + "parameters": [], + "src": "13359:0:51" + }, + "scope": 15532, + "src": "13127:1067:51", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 15439, + "nodeType": "Block", + "src": "14434:894:51", + "statements": [ + { + "assignments": [ + 15378 + ], + "declarations": [ + { + "constant": false, + "id": 15378, + "mutability": "mutable", + "name": "proposal", + "nameLocation": "14461:8:51", + "nodeType": "VariableDeclaration", + "scope": 15439, + "src": "14444:25:51", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal" + }, + "typeName": { + "id": 15377, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 15376, + "name": "Proposal", + "nameLocations": [ + "14444:8:51" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 14583, + "src": "14444:8:51" + }, + "referencedDeclaration": 14583, + "src": "14444:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal" + } + }, + "visibility": "internal" + } + ], + "id": 15384, + "initialValue": { + "baseExpression": { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 15379, + "name": "_getBookingTokenCancellableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14602, + "src": "14472:34:51", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_BookingTokenCancellableStorage_$14590_storage_ptr_$", + "typeString": "function () pure returns (struct BookingTokenCancellable.BookingTokenCancellableStorage storage pointer)" + } + }, + "id": 15380, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14472:36:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenCancellableStorage_$14590_storage_ptr", + "typeString": "struct BookingTokenCancellable.BookingTokenCancellableStorage storage pointer" + } + }, + "id": 15381, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14509:10:51", + "memberName": "_proposals", + "nodeType": "MemberAccess", + "referencedDeclaration": 14589, + "src": "14472:47:51", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$14583_storage_$", + "typeString": "mapping(uint256 => struct BookingTokenCancellable.Proposal storage ref)" + } + }, + "id": 15383, + "indexExpression": { + "id": 15382, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15365, + "src": "14520:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14472:56:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage", + "typeString": "struct BookingTokenCancellable.Proposal storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14444:84:51" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + }, + "id": 15389, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 15385, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15378, + "src": "14585:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15386, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14594:6:51", + "memberName": "status", + "nodeType": "MemberAccess", + "referencedDeclaration": 14566, + "src": "14585:15:51", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "id": 15387, + "name": "CancellationProposalStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14549, + "src": "14604:26:51", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_CancellationProposalStatus_$14549_$", + "typeString": "type(enum CancellationProposalStatus)" + } + }, + "id": 15388, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "14631:7:51", + "memberName": "PENDING", + "nodeType": "MemberAccess", + "referencedDeclaration": 14545, + "src": "14604:34:51", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + }, + "src": "14585:53:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 15397, + "nodeType": "IfStatement", + "src": "14581:150:51", + "trueBody": { + "id": 15396, + "nodeType": "Block", + "src": "14640:91:51", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 15391, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15365, + "src": "14695:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 15392, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15378, + "src": "14704:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15393, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14713:6:51", + "memberName": "status", + "nodeType": "MemberAccess", + "referencedDeclaration": 14566, + "src": "14704:15:51", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + ], + "id": 15390, + "name": "InvalidCancellationProposalStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14681, + "src": "14661:33:51", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_enum$_CancellationProposalStatus_$14549_$returns$__$", + "typeString": "function (uint256,enum CancellationProposalStatus) pure" + } + }, + "id": 15394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14661:59:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 15395, + "nodeType": "RevertStatement", + "src": "14654:66:51" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 15402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 15398, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "14797:3:51", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 15399, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14801:6:51", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "14797:10:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "expression": { + "id": 15400, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15378, + "src": "14811:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15401, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14820:15:51", + "memberName": "currentProposer", + "nodeType": "MemberAccess", + "referencedDeclaration": 14561, + "src": "14811:24:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "14797:38:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 15408, + "nodeType": "IfStatement", + "src": "14793:117:51", + "trueBody": { + "id": 15407, + "nodeType": "Block", + "src": "14837:73:51", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 15404, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15365, + "src": "14891:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 15403, + "name": "ProposerCanNotRejectCancellation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14693, + "src": "14858:32:51", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", + "typeString": "function (uint256) pure" + } + }, + "id": 15405, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14858:41:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 15406, + "nodeType": "RevertStatement", + "src": "14851:48:51" + } + ] + } + }, + { + "expression": { + "id": 15413, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 15409, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15378, + "src": "14942:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15411, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "14951:15:51", + "memberName": "rejectionReason", + "nodeType": "MemberAccess", + "referencedDeclaration": 14572, + "src": "14942:24:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 15412, + "name": "rejectionReason", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15367, + "src": "14969:15:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "14942:42:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 15414, + "nodeType": "ExpressionStatement", + "src": "14942:42:51" + }, + { + "expression": { + "id": 15419, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 15415, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15378, + "src": "14994:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15417, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "15003:16:51", + "memberName": "rejectionVersion", + "nodeType": "MemberAccess", + "referencedDeclaration": 14574, + "src": "14994:25:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 15418, + "name": "rejectionReasonVersion", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15369, + "src": "15022:22:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "src": "14994:50:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "id": 15420, + "nodeType": "ExpressionStatement", + "src": "14994:50:51" + }, + { + "expression": { + "id": 15426, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 15421, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15378, + "src": "15089:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15423, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "15098:6:51", + "memberName": "status", + "nodeType": "MemberAccess", + "referencedDeclaration": 14566, + "src": "15089:15:51", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 15424, + "name": "CancellationProposalStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14549, + "src": "15107:26:51", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_CancellationProposalStatus_$14549_$", + "typeString": "type(enum CancellationProposalStatus)" + } + }, + "id": 15425, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "15134:8:51", + "memberName": "REJECTED", + "nodeType": "MemberAccess", + "referencedDeclaration": 14546, + "src": "15107:35:51", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + }, + "src": "15089:53:51", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + }, + "id": 15427, + "nodeType": "ExpressionStatement", + "src": "15089:53:51" + }, + { + "expression": { + "id": 15431, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "15189:24:51", + "subExpression": { + "expression": { + "id": 15428, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15378, + "src": "15189:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15430, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "15198:13:51", + "memberName": "timesRejected", + "nodeType": "MemberAccess", + "referencedDeclaration": 14563, + "src": "15189:22:51", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "id": 15432, + "nodeType": "ExpressionStatement", + "src": "15189:24:51" + }, + { + "eventCall": { + "arguments": [ + { + "id": 15434, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15365, + "src": "15272:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 15435, + "name": "rejectionReason", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15367, + "src": "15281:15:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "id": 15436, + "name": "rejectionReasonVersion", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15369, + "src": "15298:22:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "id": 15433, + "name": "CancellationRejected", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14656, + "src": "15251:20:51", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint16_$_t_uint16_$returns$__$", + "typeString": "function (uint256,uint16,uint16)" + } + }, + "id": 15437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15251:70:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 15438, + "nodeType": "EmitStatement", + "src": "15246:75:51" + } + ] + }, + "id": 15440, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 15372, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15361, + "src": "14417:5:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 15373, + "name": "supplier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15363, + "src": "14424:8:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 15374, + "kind": "modifierInvocation", + "modifierName": { + "id": 15371, + "name": "onlyOwnerOrSupplier", + "nameLocations": [ + "14397:19:51" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 14732, + "src": "14397:19:51" + }, + "nodeType": "ModifierInvocation", + "src": "14397:36:51" + } + ], + "name": "_rejectCancellation", + "nameLocation": "14209:19:51", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 15370, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 15361, + "mutability": "mutable", + "name": "owner", + "nameLocation": "14246:5:51", + "nodeType": "VariableDeclaration", + "scope": 15440, + "src": "14238:13:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 15360, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14238:7:51", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15363, + "mutability": "mutable", + "name": "supplier", + "nameLocation": "14269:8:51", + "nodeType": "VariableDeclaration", + "scope": 15440, + "src": "14261:16:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 15362, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14261:7:51", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15365, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "14295:7:51", + "nodeType": "VariableDeclaration", + "scope": 15440, + "src": "14287:15:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15364, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14287:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15367, + "mutability": "mutable", + "name": "rejectionReason", + "nameLocation": "14319:15:51", + "nodeType": "VariableDeclaration", + "scope": 15440, + "src": "14312:22:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 15366, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "14312:6:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15369, + "mutability": "mutable", + "name": "rejectionReasonVersion", + "nameLocation": "14351:22:51", + "nodeType": "VariableDeclaration", + "scope": 15440, + "src": "14344:29:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 15368, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "14344:6:51", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "14228:151:51" + }, + "returnParameters": { + "id": 15375, + "nodeType": "ParameterList", + "parameters": [], + "src": "14434:0:51" + }, + "scope": 15532, + "src": "14200:1128:51", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 15530, + "nodeType": "Block", + "src": "15505:1247:51", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 15454, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 15451, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "15574:3:51", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 15452, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15578:6:51", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "15574:10:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 15453, + "name": "supplier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15442, + "src": "15588:8:51", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "15574:22:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 15460, + "nodeType": "IfStatement", + "src": "15570:104:51", + "trueBody": { + "id": 15459, + "nodeType": "Block", + "src": "15598:76:51", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 15456, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15444, + "src": "15655:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 15455, + "name": "OnlySupplierCanFinalizeCancellation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14685, + "src": "15619:35:51", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", + "typeString": "function (uint256) pure" + } + }, + "id": 15457, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15619:44:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 15458, + "nodeType": "RevertStatement", + "src": "15612:51:51" + } + ] + } + }, + { + "assignments": [ + 15463 + ], + "declarations": [ + { + "constant": false, + "id": 15463, + "mutability": "mutable", + "name": "proposal", + "nameLocation": "15701:8:51", + "nodeType": "VariableDeclaration", + "scope": 15530, + "src": "15684:25:51", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal" + }, + "typeName": { + "id": 15462, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 15461, + "name": "Proposal", + "nameLocations": [ + "15684:8:51" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 14583, + "src": "15684:8:51" + }, + "referencedDeclaration": 14583, + "src": "15684:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal" + } + }, + "visibility": "internal" + } + ], + "id": 15469, + "initialValue": { + "baseExpression": { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 15464, + "name": "_getBookingTokenCancellableStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14602, + "src": "15712:34:51", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_BookingTokenCancellableStorage_$14590_storage_ptr_$", + "typeString": "function () pure returns (struct BookingTokenCancellable.BookingTokenCancellableStorage storage pointer)" + } + }, + "id": 15465, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15712:36:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_BookingTokenCancellableStorage_$14590_storage_ptr", + "typeString": "struct BookingTokenCancellable.BookingTokenCancellableStorage storage pointer" + } + }, + "id": 15466, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15749:10:51", + "memberName": "_proposals", + "nodeType": "MemberAccess", + "referencedDeclaration": 14589, + "src": "15712:47:51", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Proposal_$14583_storage_$", + "typeString": "mapping(uint256 => struct BookingTokenCancellable.Proposal storage ref)" + } + }, + "id": 15468, + "indexExpression": { + "id": 15467, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15444, + "src": "15760:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "15712:56:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage", + "typeString": "struct BookingTokenCancellable.Proposal storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15684:84:51" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + }, + "id": 15474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 15470, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15463, + "src": "15825:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15471, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15834:6:51", + "memberName": "status", + "nodeType": "MemberAccess", + "referencedDeclaration": 14566, + "src": "15825:15:51", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "expression": { + "id": 15472, + "name": "CancellationProposalStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14549, + "src": "15844:26:51", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_CancellationProposalStatus_$14549_$", + "typeString": "type(enum CancellationProposalStatus)" + } + }, + "id": 15473, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "15871:7:51", + "memberName": "PENDING", + "nodeType": "MemberAccess", + "referencedDeclaration": 14545, + "src": "15844:34:51", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + }, + "src": "15825:53:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 15482, + "nodeType": "IfStatement", + "src": "15821:150:51", + "trueBody": { + "id": 15481, + "nodeType": "Block", + "src": "15880:91:51", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 15476, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15444, + "src": "15935:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 15477, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15463, + "src": "15944:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15478, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15953:6:51", + "memberName": "status", + "nodeType": "MemberAccess", + "referencedDeclaration": 14566, + "src": "15944:15:51", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + ], + "id": 15475, + "name": "InvalidCancellationProposalStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14681, + "src": "15901:33:51", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_enum$_CancellationProposalStatus_$14549_$returns$__$", + "typeString": "function (uint256,enum CancellationProposalStatus) pure" + } + }, + "id": 15479, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15901:59:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 15480, + "nodeType": "RevertStatement", + "src": "15894:66:51" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 15486, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 15483, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15463, + "src": "16035:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15484, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16044:12:51", + "memberName": "refundAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 14551, + "src": "16035:21:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 15485, + "name": "checkRefundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15446, + "src": "16060:17:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16035:42:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 15495, + "nodeType": "IfStatement", + "src": "16031:152:51", + "trueBody": { + "id": 15494, + "nodeType": "Block", + "src": "16079:104:51", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 15488, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15444, + "src": "16122:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 15489, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15463, + "src": "16131:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15490, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16140:12:51", + "memberName": "refundAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 14551, + "src": "16131:21:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 15491, + "name": "checkRefundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15446, + "src": "16154:17:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 15487, + "name": "IncorrectRefundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14674, + "src": "16100:21:51", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256,uint256) pure" + } + }, + "id": 15492, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16100:72:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 15493, + "nodeType": "RevertStatement", + "src": "16093:79:51" + } + ] + } + }, + { + "condition": { + "id": 15498, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "16258:23:51", + "subExpression": { + "expression": { + "id": 15496, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15463, + "src": "16259:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15497, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16268:13:51", + "memberName": "ownerAccepted", + "nodeType": "MemberAccess", + "referencedDeclaration": 14557, + "src": "16259:22:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 15504, + "nodeType": "IfStatement", + "src": "16254:98:51", + "trueBody": { + "id": 15503, + "nodeType": "Block", + "src": "16283:69:51", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 15500, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15444, + "src": "16333:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 15499, + "name": "OwnerNotAcceptedCancellation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14689, + "src": "16304:28:51", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$returns$__$", + "typeString": "function (uint256) pure" + } + }, + "id": 15501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16304:37:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 15502, + "nodeType": "RevertStatement", + "src": "16297:44:51" + } + ] + } + }, + { + "condition": { + "id": 15507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "16399:26:51", + "subExpression": { + "expression": { + "id": 15505, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15463, + "src": "16400:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15506, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16409:16:51", + "memberName": "supplierAccepted", + "nodeType": "MemberAccess", + "referencedDeclaration": 14559, + "src": "16400:25:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 15515, + "nodeType": "IfStatement", + "src": "16395:89:51", + "trueBody": { + "id": 15514, + "nodeType": "Block", + "src": "16427:57:51", + "statements": [ + { + "expression": { + "id": 15512, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 15508, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15463, + "src": "16441:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15510, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "16450:16:51", + "memberName": "supplierAccepted", + "nodeType": "MemberAccess", + "referencedDeclaration": 14559, + "src": "16441:25:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "74727565", + "id": 15511, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "16469:4:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "16441:32:51", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 15513, + "nodeType": "ExpressionStatement", + "src": "16441:32:51" + } + ] + } + }, + { + "expression": { + "id": 15521, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 15516, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15463, + "src": "16529:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15518, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "16538:6:51", + "memberName": "status", + "nodeType": "MemberAccess", + "referencedDeclaration": 14566, + "src": "16529:15:51", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "expression": { + "id": 15519, + "name": "CancellationProposalStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14549, + "src": "16547:26:51", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_CancellationProposalStatus_$14549_$", + "typeString": "type(enum CancellationProposalStatus)" + } + }, + "id": 15520, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "16574:9:51", + "memberName": "FINALIZED", + "nodeType": "MemberAccess", + "referencedDeclaration": 14548, + "src": "16547:36:51", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + }, + "src": "16529:54:51", + "typeDescriptions": { + "typeIdentifier": "t_enum$_CancellationProposalStatus_$14549", + "typeString": "enum CancellationProposalStatus" + } + }, + "id": 15522, + "nodeType": "ExpressionStatement", + "src": "16529:54:51" + }, + { + "eventCall": { + "arguments": [ + { + "id": 15524, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15444, + "src": "16698:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 15523, + "name": "CancellationFinalized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14660, + "src": "16676:21:51", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 15525, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16676:30:51", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 15526, + "nodeType": "EmitStatement", + "src": "16671:35:51" + }, + { + "expression": { + "expression": { + "id": 15527, + "name": "proposal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15463, + "src": "16724:8:51", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Proposal_$14583_storage_ptr", + "typeString": "struct BookingTokenCancellable.Proposal storage pointer" + } + }, + "id": 15528, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16733:12:51", + "memberName": "refundAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 14551, + "src": "16724:21:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 15450, + "id": 15529, + "nodeType": "Return", + "src": "16717:28:51" + } + ] + }, + "id": 15531, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_finalizeCancellation", + "nameLocation": "15343:21:51", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 15447, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 15442, + "mutability": "mutable", + "name": "supplier", + "nameLocation": "15382:8:51", + "nodeType": "VariableDeclaration", + "scope": 15531, + "src": "15374:16:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 15441, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15374:7:51", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15444, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "15408:7:51", + "nodeType": "VariableDeclaration", + "scope": 15531, + "src": "15400:15:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15443, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15400:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15446, + "mutability": "mutable", + "name": "checkRefundAmount", + "nameLocation": "15433:17:51", + "nodeType": "VariableDeclaration", + "scope": 15531, + "src": "15425:25:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15445, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15425:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "15364:92:51" + }, + "returnParameters": { + "id": 15450, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 15449, + "mutability": "mutable", + "name": "refundAmount", + "nameLocation": "15491:12:51", + "nodeType": "VariableDeclaration", + "scope": 15531, + "src": "15483:20:51", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15448, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15483:7:51", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "15482:22:51" + }, + "scope": 15532, + "src": "15334:1418:51", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 15533, + "src": "208:16546:51", + "usedErrors": [ + 14662, + 14666, + 14674, + 14681, + 14685, + 14689, + 14693, + 14697 + ], + "usedEvents": [ + 14620, + 14640, + 14648, + 14656, + 14660 + ] + } + ], + "src": "39:16716:51" + }, + "id": 51 + }, + "contracts/booking-token/BookingTokenOperator.sol": { + "ast": { + "absolutePath": "contracts/booking-token/BookingTokenOperator.sol", + "exportedSymbols": { + "BookingTokenOperator": [ + 15915 + ], + "CancellationProposalStatus": [ + 14549 + ], + "IBookingToken": [ + 16027 + ], + "IERC20": [ + 4513 + ], + "SafeERC20": [ + 4950 + ] + }, + "id": 15916, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 15534, + "literals": [ + "solidity", + "0.8", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "39:23:52" + }, + { + "absolutePath": "contracts/booking-token/IBookingToken.sol", + "file": "./IBookingToken.sol", + "id": 15537, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 15916, + "sourceUnit": 16028, + "src": "64:60:52", + "symbolAliases": [ + { + "foreign": { + "id": 15535, + "name": "IBookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16027, + "src": "73:13:52", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + }, + { + "foreign": { + "id": 15536, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4513, + "src": "88:6:52", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/booking-token/BookingTokenCancellable.sol", + "file": "./BookingTokenCancellable.sol", + "id": 15539, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 15916, + "sourceUnit": 15533, + "src": "125:75:52", + "symbolAliases": [ + { + "foreign": { + "id": 15538, + "name": "CancellationProposalStatus", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 14549, + "src": "134:26:52", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol", + "id": 15541, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 15916, + "sourceUnit": 4951, + "src": "218:84:52", + "symbolAliases": [ + { + "foreign": { + "id": 15540, + "name": "SafeERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4950, + "src": "227:9:52", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "BookingTokenOperator", + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 15542, + "nodeType": "StructuredDocumentation", + "src": "304:279:52", + "text": " @title BookingTokenOperator\n @notice Booking token operator contract is used by the {CMAccount} contract to mint\n and buy booking tokens.\n We made this a library so that we can use it in the {CMAccount} contract without\n increasing the size of the contract." + }, + "fullyImplemented": true, + "id": 15915, + "linearizedBaseContracts": [ + 15915 + ], + "name": "BookingTokenOperator", + "nameLocation": "592:20:52", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 15546, + "libraryName": { + "id": 15543, + "name": "SafeERC20", + "nameLocations": [ + "625:9:52" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4950, + "src": "625:9:52" + }, + "nodeType": "UsingForDirective", + "src": "619:27:52", + "typeName": { + "id": 15545, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 15544, + "name": "IERC20", + "nameLocations": [ + "639:6:52" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4513, + "src": "639:6:52" + }, + "referencedDeclaration": 4513, + "src": "639:6:52", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + } + }, + { + "constant": true, + "documentation": { + "id": 15547, + "nodeType": "StructuredDocumentation", + "src": "825:125:52", + "text": " @dev Special address for native payments.\n @notice Tokens are directly transferred to the recipient." + }, + "functionSelector": "a0f07c74", + "id": 15553, + "mutability": "constant", + "name": "NATIVE_PAYMENT", + "nameLocation": "979:14:52", + "nodeType": "VariableDeclaration", + "scope": 15915, + "src": "955:51:52", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 15548, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "955:7:52", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": { + "arguments": [ + { + "hexValue": "30", + "id": 15551, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1004:1:52", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 15550, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "996:7:52", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 15549, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "996:7:52", + "typeDescriptions": {} + } + }, + "id": 15552, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "996:10:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 15554, + "nodeType": "StructuredDocumentation", + "src": "1013:127:52", + "text": " @dev Special address for offchain payments.\n @notice A third-party service is used to handle payments." + }, + "functionSelector": "bfb26c06", + "id": 15560, + "mutability": "constant", + "name": "OFFCHAIN_PAYMENT", + "nameLocation": "1169:16:52", + "nodeType": "VariableDeclaration", + "scope": 15915, + "src": "1145:53:52", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 15555, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1145:7:52", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": { + "arguments": [ + { + "hexValue": "31", + "id": 15558, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1196:1:52", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "id": 15557, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1188:7:52", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 15556, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1188:7:52", + "typeDescriptions": {} + } + }, + "id": 15559, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1188:10:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "errorSelector": "30cb9c41", + "id": 15568, + "name": "UnexpectedPrice", + "nameLocation": "1384:15:52", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 15567, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 15562, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "1408:7:52", + "nodeType": "VariableDeclaration", + "scope": 15568, + "src": "1400:15:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15561, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1400:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15564, + "mutability": "mutable", + "name": "actualPrice", + "nameLocation": "1425:11:52", + "nodeType": "VariableDeclaration", + "scope": 15568, + "src": "1417:19:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15563, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1417:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15566, + "mutability": "mutable", + "name": "expectedPrice", + "nameLocation": "1446:13:52", + "nodeType": "VariableDeclaration", + "scope": 15568, + "src": "1438:21:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15565, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1438:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1399:61:52" + }, + "src": "1378:83:52" + }, + { + "errorSelector": "41fe0054", + "id": 15578, + "name": "UnexpectedPaymentToken", + "nameLocation": "1473:22:52", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 15577, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 15570, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "1504:7:52", + "nodeType": "VariableDeclaration", + "scope": 15578, + "src": "1496:15:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15569, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1496:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15573, + "mutability": "mutable", + "name": "actualPaymentToken", + "nameLocation": "1520:18:52", + "nodeType": "VariableDeclaration", + "scope": 15578, + "src": "1513:25:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 15572, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 15571, + "name": "IERC20", + "nameLocations": [ + "1513:6:52" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4513, + "src": "1513:6:52" + }, + "referencedDeclaration": 4513, + "src": "1513:6:52", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15576, + "mutability": "mutable", + "name": "expectedPaymentToken", + "nameLocation": "1547:20:52", + "nodeType": "VariableDeclaration", + "scope": 15578, + "src": "1540:27:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 15575, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 15574, + "name": "IERC20", + "nameLocations": [ + "1540:6:52" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4513, + "src": "1540:6:52" + }, + "referencedDeclaration": 4513, + "src": "1540:6:52", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "1495:73:52" + }, + "src": "1467:102:52" + }, + { + "body": { + "id": 15612, + "nodeType": "Block", + "src": "2615:260:52", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 15603, + "name": "reservedFor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15583, + "src": "2690:11:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 15604, + "name": "uri", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15585, + "src": "2715:3:52", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "id": 15605, + "name": "expirationTimestamp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15587, + "src": "2732:19:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 15606, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15589, + "src": "2765:5:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 15607, + "name": "paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15592, + "src": "2784:12:52", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + { + "id": 15608, + "name": "offchainPaymentCurrency", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15594, + "src": "2810:23:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 15609, + "name": "cancellable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15596, + "src": "2847:11:52", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "expression": { + "arguments": [ + { + "id": 15600, + "name": "bookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15581, + "src": "2639:12:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 15599, + "name": "IBookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16027, + "src": "2625:13:52", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBookingToken_$16027_$", + "typeString": "type(contract IBookingToken)" + } + }, + "id": 15601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2625:27:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBookingToken_$16027", + "typeString": "contract IBookingToken" + } + }, + "id": 15602, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2653:23:52", + "memberName": "safeMintWithReservation", + "nodeType": "MemberAccess", + "referencedDeclaration": 15937, + "src": "2625:51:52", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_string_memory_ptr_$_t_uint256_$_t_uint256_$_t_contract$_IERC20_$4513_$_t_uint256_$_t_bool_$returns$__$", + "typeString": "function (address,string memory,uint256,uint256,contract IERC20,uint256,bool) external" + } + }, + "id": 15610, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2625:243:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 15611, + "nodeType": "ExpressionStatement", + "src": "2625:243:52" + } + ] + }, + "documentation": { + "id": 15579, + "nodeType": "StructuredDocumentation", + "src": "1748:581:52", + "text": " @dev Mints a booking token with offchain payment currency and cancellable support.\n @param bookingToken booking token contract address\n @param reservedFor address of the CM Account that can buy the token\n (generally the distributor)\n @param uri URI of the token\n @param expirationTimestamp expiration timestamp of the token in seconds\n @param price price of the token\n @param paymentToken payment token address\n @param offchainPaymentCurrency payment token address\n @param cancellable cancellable flag" + }, + "functionSelector": "e4c22569", + "id": 15613, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mintBookingToken", + "nameLocation": "2343:16:52", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 15597, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 15581, + "mutability": "mutable", + "name": "bookingToken", + "nameLocation": "2377:12:52", + "nodeType": "VariableDeclaration", + "scope": 15613, + "src": "2369:20:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 15580, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2369:7:52", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15583, + "mutability": "mutable", + "name": "reservedFor", + "nameLocation": "2407:11:52", + "nodeType": "VariableDeclaration", + "scope": 15613, + "src": "2399:19:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 15582, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2399:7:52", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15585, + "mutability": "mutable", + "name": "uri", + "nameLocation": "2442:3:52", + "nodeType": "VariableDeclaration", + "scope": 15613, + "src": "2428:17:52", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 15584, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2428:6:52", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15587, + "mutability": "mutable", + "name": "expirationTimestamp", + "nameLocation": "2463:19:52", + "nodeType": "VariableDeclaration", + "scope": 15613, + "src": "2455:27:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15586, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2455:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15589, + "mutability": "mutable", + "name": "price", + "nameLocation": "2500:5:52", + "nodeType": "VariableDeclaration", + "scope": 15613, + "src": "2492:13:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15588, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2492:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15592, + "mutability": "mutable", + "name": "paymentToken", + "nameLocation": "2522:12:52", + "nodeType": "VariableDeclaration", + "scope": 15613, + "src": "2515:19:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 15591, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 15590, + "name": "IERC20", + "nameLocations": [ + "2515:6:52" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4513, + "src": "2515:6:52" + }, + "referencedDeclaration": 4513, + "src": "2515:6:52", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15594, + "mutability": "mutable", + "name": "offchainPaymentCurrency", + "nameLocation": "2552:23:52", + "nodeType": "VariableDeclaration", + "scope": 15613, + "src": "2544:31:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15593, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2544:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15596, + "mutability": "mutable", + "name": "cancellable", + "nameLocation": "2590:11:52", + "nodeType": "VariableDeclaration", + "scope": 15613, + "src": "2585:16:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 15595, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2585:4:52", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2359:248:52" + }, + "returnParameters": { + "id": 15598, + "nodeType": "ParameterList", + "parameters": [], + "src": "2615:0:52" + }, + "scope": 15915, + "src": "2334:541:52", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 15713, + "nodeType": "Block", + "src": "3257:1388:52", + "statements": [ + { + "assignments": [ + 15627, + 15630 + ], + "declarations": [ + { + "constant": false, + "id": 15627, + "mutability": "mutable", + "name": "price", + "nameLocation": "3333:5:52", + "nodeType": "VariableDeclaration", + "scope": 15713, + "src": "3325:13:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15626, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3325:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15630, + "mutability": "mutable", + "name": "paymentToken", + "nameLocation": "3347:12:52", + "nodeType": "VariableDeclaration", + "scope": 15713, + "src": "3340:19:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 15629, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 15628, + "name": "IERC20", + "nameLocations": [ + "3340:6:52" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4513, + "src": "3340:6:52" + }, + "referencedDeclaration": 4513, + "src": "3340:6:52", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "id": 15637, + "initialValue": { + "arguments": [ + { + "id": 15635, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15618, + "src": "3411:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 15632, + "name": "bookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15616, + "src": "3377:12:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 15631, + "name": "IBookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16027, + "src": "3363:13:52", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBookingToken_$16027_$", + "typeString": "type(contract IBookingToken)" + } + }, + "id": 15633, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3363:27:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBookingToken_$16027", + "typeString": "contract IBookingToken" + } + }, + "id": 15634, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3391:19:52", + "memberName": "getReservationPrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 15952, + "src": "3363:47:52", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$_t_contract$_IERC20_$4513_$", + "typeString": "function (uint256) view external returns (uint256,contract IERC20)" + } + }, + "id": 15636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3363:56:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_contract$_IERC20_$4513_$", + "typeString": "tuple(uint256,contract IERC20)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3324:95:52" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 15640, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 15638, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15627, + "src": "3475:5:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "id": 15639, + "name": "expectedPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15620, + "src": "3484:13:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3475:22:52", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 15648, + "nodeType": "IfStatement", + "src": "3471:106:52", + "trueBody": { + "id": 15647, + "nodeType": "Block", + "src": "3499:78:52", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 15642, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15618, + "src": "3536:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 15643, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15627, + "src": "3545:5:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 15644, + "name": "expectedPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15620, + "src": "3552:13:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 15641, + "name": "UnexpectedPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15568, + "src": "3520:15:52", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256,uint256) pure" + } + }, + "id": 15645, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3520:46:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 15646, + "nodeType": "RevertStatement", + "src": "3513:53:52" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 15657, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 15651, + "name": "paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15630, + "src": "3648:12:52", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + ], + "id": 15650, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3640:7:52", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 15649, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3640:7:52", + "typeDescriptions": {} + } + }, + "id": 15652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3640:21:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "id": 15655, + "name": "expectedPaymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15623, + "src": "3673:20:52", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + ], + "id": 15654, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3665:7:52", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 15653, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3665:7:52", + "typeDescriptions": {} + } + }, + "id": 15656, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3665:29:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3640:54:52", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 15665, + "nodeType": "IfStatement", + "src": "3636:159:52", + "trueBody": { + "id": 15664, + "nodeType": "Block", + "src": "3696:99:52", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 15659, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15618, + "src": "3740:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 15660, + "name": "paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15630, + "src": "3749:12:52", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + { + "id": 15661, + "name": "expectedPaymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15623, + "src": "3763:20:52", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + }, + { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + ], + "id": 15658, + "name": "UnexpectedPaymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15578, + "src": "3717:22:52", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_contract$_IERC20_$4513_$_t_contract$_IERC20_$4513_$returns$__$", + "typeString": "function (uint256,contract IERC20,contract IERC20) pure" + } + }, + "id": 15662, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3717:67:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 15663, + "nodeType": "RevertStatement", + "src": "3710:74:52" + } + ] + } + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 15671, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 15668, + "name": "paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15630, + "src": "3817:12:52", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + ], + "id": 15667, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3809:7:52", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 15666, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3809:7:52", + "typeDescriptions": {} + } + }, + "id": 15669, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3809:21:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 15670, + "name": "NATIVE_PAYMENT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15553, + "src": "3834:14:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3809:39:52", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 15687, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 15684, + "name": "paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15630, + "src": "4109:12:52", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + ], + "id": 15683, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4101:7:52", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 15682, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4101:7:52", + "typeDescriptions": {} + } + }, + "id": 15685, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4101:21:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 15686, + "name": "OFFCHAIN_PAYMENT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15560, + "src": "4126:16:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4101:41:52", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 15710, + "nodeType": "Block", + "src": "4291:348:52", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 15699, + "name": "bookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15616, + "src": "4511:12:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 15700, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15627, + "src": "4525:5:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 15696, + "name": "paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15630, + "src": "4485:12:52", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + "id": 15698, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4498:12:52", + "memberName": "forceApprove", + "nodeType": "MemberAccess", + "referencedDeclaration": 4734, + "src": "4485:25:52", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4513_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$4513_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 15701, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4485:46:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 15702, + "nodeType": "ExpressionStatement", + "src": "4485:46:52" + }, + { + "expression": { + "arguments": [ + { + "id": 15707, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15618, + "src": "4620:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 15704, + "name": "bookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15616, + "src": "4589:12:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 15703, + "name": "IBookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16027, + "src": "4575:13:52", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBookingToken_$16027_$", + "typeString": "type(contract IBookingToken)" + } + }, + "id": 15705, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4575:27:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBookingToken_$16027", + "typeString": "contract IBookingToken" + } + }, + "id": 15706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4603:16:52", + "memberName": "buyReservedToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 15942, + "src": "4575:44:52", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_uint256_$returns$__$", + "typeString": "function (uint256) payable external" + } + }, + "id": 15708, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4575:53:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 15709, + "nodeType": "ExpressionStatement", + "src": "4575:53:52" + } + ] + }, + "id": 15711, + "nodeType": "IfStatement", + "src": "4097:542:52", + "trueBody": { + "id": 15695, + "nodeType": "Block", + "src": "4144:141:52", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 15692, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15618, + "src": "4266:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 15689, + "name": "bookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15616, + "src": "4235:12:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 15688, + "name": "IBookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16027, + "src": "4221:13:52", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBookingToken_$16027_$", + "typeString": "type(contract IBookingToken)" + } + }, + "id": 15690, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4221:27:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBookingToken_$16027", + "typeString": "contract IBookingToken" + } + }, + "id": 15691, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4249:16:52", + "memberName": "buyReservedToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 15942, + "src": "4221:44:52", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_uint256_$returns$__$", + "typeString": "function (uint256) payable external" + } + }, + "id": 15693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4221:53:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 15694, + "nodeType": "ExpressionStatement", + "src": "4221:53:52" + } + ] + } + }, + "id": 15712, + "nodeType": "IfStatement", + "src": "3805:834:52", + "trueBody": { + "id": 15681, + "nodeType": "Block", + "src": "3850:241:52", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 15678, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15618, + "src": "4072:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 15673, + "name": "bookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15616, + "src": "4025:12:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 15672, + "name": "IBookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16027, + "src": "4011:13:52", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBookingToken_$16027_$", + "typeString": "type(contract IBookingToken)" + } + }, + "id": 15674, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4011:27:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBookingToken_$16027", + "typeString": "contract IBookingToken" + } + }, + "id": 15675, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4039:16:52", + "memberName": "buyReservedToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 15942, + "src": "4011:44:52", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_uint256_$returns$__$", + "typeString": "function (uint256) payable external" + } + }, + "id": 15677, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": [ + "value" + ], + "nodeType": "FunctionCallOptions", + "options": [ + { + "id": 15676, + "name": "price", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15627, + "src": "4064:5:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "4011:60:52", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_uint256_$returns$__$value", + "typeString": "function (uint256) payable external" + } + }, + "id": 15679, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4011:69:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 15680, + "nodeType": "ExpressionStatement", + "src": "4011:69:52" + } + ] + } + } + ] + }, + "documentation": { + "id": 15614, + "nodeType": "StructuredDocumentation", + "src": "2881:210:52", + "text": " @dev Buys a booking token with the specified price and payment token in the\n reservation.\n @param bookingToken booking token contract address\n @param tokenId token id" + }, + "functionSelector": "7adf63b7", + "id": 15714, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "buyBookingToken", + "nameLocation": "3105:15:52", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 15624, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 15616, + "mutability": "mutable", + "name": "bookingToken", + "nameLocation": "3138:12:52", + "nodeType": "VariableDeclaration", + "scope": 15714, + "src": "3130:20:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 15615, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3130:7:52", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15618, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "3168:7:52", + "nodeType": "VariableDeclaration", + "scope": 15714, + "src": "3160:15:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15617, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3160:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15620, + "mutability": "mutable", + "name": "expectedPrice", + "nameLocation": "3193:13:52", + "nodeType": "VariableDeclaration", + "scope": 15714, + "src": "3185:21:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15619, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3185:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15623, + "mutability": "mutable", + "name": "expectedPaymentToken", + "nameLocation": "3223:20:52", + "nodeType": "VariableDeclaration", + "scope": 15714, + "src": "3216:27:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 15622, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 15621, + "name": "IERC20", + "nameLocations": [ + "3216:6:52" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4513, + "src": "3216:6:52" + }, + "referencedDeclaration": 4513, + "src": "3216:6:52", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "3120:129:52" + }, + "returnParameters": { + "id": 15625, + "nodeType": "ParameterList", + "parameters": [], + "src": "3257:0:52" + }, + "scope": 15915, + "src": "3096:1549:52", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 15729, + "nodeType": "Block", + "src": "4892:70:52", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 15726, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15719, + "src": "4947:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 15723, + "name": "bookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15717, + "src": "4916:12:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 15722, + "name": "IBookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16027, + "src": "4902:13:52", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBookingToken_$16027_$", + "typeString": "type(contract IBookingToken)" + } + }, + "id": 15724, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4902:27:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBookingToken_$16027", + "typeString": "contract IBookingToken" + } + }, + "id": 15725, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4930:16:52", + "memberName": "recordExpiration", + "nodeType": "MemberAccess", + "referencedDeclaration": 15966, + "src": "4902:44:52", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256) external" + } + }, + "id": 15727, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4902:53:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 15728, + "nodeType": "ExpressionStatement", + "src": "4902:53:52" + } + ] + }, + "documentation": { + "id": 15715, + "nodeType": "StructuredDocumentation", + "src": "4651:164:52", + "text": " @notice Record the expiration of a booking token.\n @param bookingToken booking token contract address\n @param tokenId token id" + }, + "functionSelector": "c7bffa96", + "id": 15730, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "recordExpiration", + "nameLocation": "4829:16:52", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 15720, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 15717, + "mutability": "mutable", + "name": "bookingToken", + "nameLocation": "4854:12:52", + "nodeType": "VariableDeclaration", + "scope": 15730, + "src": "4846:20:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 15716, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4846:7:52", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15719, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "4876:7:52", + "nodeType": "VariableDeclaration", + "scope": 15730, + "src": "4868:15:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15718, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4868:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4845:39:52" + }, + "returnParameters": { + "id": 15721, + "nodeType": "ParameterList", + "parameters": [], + "src": "4892:0:52" + }, + "scope": 15915, + "src": "4820:142:52", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 15754, + "nodeType": "Block", + "src": "5700:193:52", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 15748, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15735, + "src": "5772:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 15749, + "name": "refundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15737, + "src": "5793:12:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 15750, + "name": "cancellationReason", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15739, + "src": "5819:18:52", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "id": 15751, + "name": "cancellationReasonVersion", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15741, + "src": "5851:25:52", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "expression": { + "arguments": [ + { + "id": 15745, + "name": "bookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15733, + "src": "5724:12:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 15744, + "name": "IBookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16027, + "src": "5710:13:52", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBookingToken_$16027_$", + "typeString": "type(contract IBookingToken)" + } + }, + "id": 15746, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5710:27:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBookingToken_$16027", + "typeString": "contract IBookingToken" + } + }, + "id": 15747, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5738:20:52", + "memberName": "initiateCancellation", + "nodeType": "MemberAccess", + "referencedDeclaration": 15978, + "src": "5710:48:52", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_uint16_$_t_uint16_$returns$__$", + "typeString": "function (uint256,uint256,uint16,uint16) external" + } + }, + "id": 15752, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5710:176:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 15753, + "nodeType": "ExpressionStatement", + "src": "5710:176:52" + } + ] + }, + "documentation": { + "id": 15731, + "nodeType": "StructuredDocumentation", + "src": "5141:347:52", + "text": " @notice Initiates a cancellation proposal for a bought token.\n @param bookingToken booking token contract address\n @param tokenId token id\n @param refundAmount proposed refund amount\n @param cancellationReason cancellation reason\n @param cancellationReasonVersion cancellation reason version" + }, + "functionSelector": "b54e72d8", + "id": 15755, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initiateCancellation", + "nameLocation": "5502:20:52", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 15742, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 15733, + "mutability": "mutable", + "name": "bookingToken", + "nameLocation": "5540:12:52", + "nodeType": "VariableDeclaration", + "scope": 15755, + "src": "5532:20:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 15732, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5532:7:52", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15735, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "5570:7:52", + "nodeType": "VariableDeclaration", + "scope": 15755, + "src": "5562:15:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15734, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5562:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15737, + "mutability": "mutable", + "name": "refundAmount", + "nameLocation": "5595:12:52", + "nodeType": "VariableDeclaration", + "scope": 15755, + "src": "5587:20:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15736, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5587:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15739, + "mutability": "mutable", + "name": "cancellationReason", + "nameLocation": "5624:18:52", + "nodeType": "VariableDeclaration", + "scope": 15755, + "src": "5617:25:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 15738, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5617:6:52", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15741, + "mutability": "mutable", + "name": "cancellationReasonVersion", + "nameLocation": "5659:25:52", + "nodeType": "VariableDeclaration", + "scope": 15755, + "src": "5652:32:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 15740, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "5652:6:52", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "5522:168:52" + }, + "returnParameters": { + "id": 15743, + "nodeType": "ParameterList", + "parameters": [], + "src": "5700:0:52" + }, + "scope": 15915, + "src": "5493:400:52", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 15773, + "nodeType": "Block", + "src": "6289:86:52", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 15769, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15760, + "src": "6346:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 15770, + "name": "refundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15762, + "src": "6355:12:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 15766, + "name": "bookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15758, + "src": "6313:12:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 15765, + "name": "IBookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16027, + "src": "6299:13:52", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBookingToken_$16027_$", + "typeString": "type(contract IBookingToken)" + } + }, + "id": 15767, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6299:27:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBookingToken_$16027", + "typeString": "contract IBookingToken" + } + }, + "id": 15768, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6327:18:52", + "memberName": "acceptCancellation", + "nodeType": "MemberAccess", + "referencedDeclaration": 15986, + "src": "6299:46:52", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) external" + } + }, + "id": 15771, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6299:69:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 15772, + "nodeType": "ExpressionStatement", + "src": "6299:69:52" + } + ] + }, + "documentation": { + "id": 15756, + "nodeType": "StructuredDocumentation", + "src": "5899:287:52", + "text": " @notice Sets accepted by the owner or supplier flag for a cancellation proposal for a bought token.\n @param tokenId The token id to accept the cancellation for\n @param refundAmount The refund amount to check, this is to prevent front-running attacks" + }, + "functionSelector": "348e06dd", + "id": 15774, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "acceptCancellation", + "nameLocation": "6200:18:52", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 15763, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 15758, + "mutability": "mutable", + "name": "bookingToken", + "nameLocation": "6227:12:52", + "nodeType": "VariableDeclaration", + "scope": 15774, + "src": "6219:20:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 15757, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6219:7:52", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15760, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "6249:7:52", + "nodeType": "VariableDeclaration", + "scope": 15774, + "src": "6241:15:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15759, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6241:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15762, + "mutability": "mutable", + "name": "refundAmount", + "nameLocation": "6266:12:52", + "nodeType": "VariableDeclaration", + "scope": 15774, + "src": "6258:20:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15761, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6258:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6218:61:52" + }, + "returnParameters": { + "id": 15764, + "nodeType": "ParameterList", + "parameters": [], + "src": "6289:0:52" + }, + "scope": 15915, + "src": "6191:184:52", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 15798, + "nodeType": "Block", + "src": "6786:124:52", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 15792, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15779, + "src": "6844:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 15793, + "name": "refundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15781, + "src": "6853:12:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 15794, + "name": "counterReason", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15783, + "src": "6867:13:52", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "id": 15795, + "name": "counterReasonVersion", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15785, + "src": "6882:20:52", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "expression": { + "arguments": [ + { + "id": 15789, + "name": "bookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15777, + "src": "6810:12:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 15788, + "name": "IBookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16027, + "src": "6796:13:52", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBookingToken_$16027_$", + "typeString": "type(contract IBookingToken)" + } + }, + "id": 15790, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6796:27:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBookingToken_$16027", + "typeString": "contract IBookingToken" + } + }, + "id": 15791, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6824:19:52", + "memberName": "counterCancellation", + "nodeType": "MemberAccess", + "referencedDeclaration": 16008, + "src": "6796:47:52", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_uint16_$_t_uint16_$returns$__$", + "typeString": "function (uint256,uint256,uint16,uint16) external" + } + }, + "id": 15796, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6796:107:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 15797, + "nodeType": "ExpressionStatement", + "src": "6796:107:52" + } + ] + }, + "documentation": { + "id": 15775, + "nodeType": "StructuredDocumentation", + "src": "6381:206:52", + "text": " @notice Counters a cancellation proposal.\n @param bookingToken booking token contract address\n @param tokenId token id\n @param refundAmount proposed refund amount" + }, + "functionSelector": "fd13a43e", + "id": 15799, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "counterCancellation", + "nameLocation": "6601:19:52", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 15786, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 15777, + "mutability": "mutable", + "name": "bookingToken", + "nameLocation": "6638:12:52", + "nodeType": "VariableDeclaration", + "scope": 15799, + "src": "6630:20:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 15776, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6630:7:52", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15779, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "6668:7:52", + "nodeType": "VariableDeclaration", + "scope": 15799, + "src": "6660:15:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15778, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6660:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15781, + "mutability": "mutable", + "name": "refundAmount", + "nameLocation": "6693:12:52", + "nodeType": "VariableDeclaration", + "scope": 15799, + "src": "6685:20:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15780, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6685:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15783, + "mutability": "mutable", + "name": "counterReason", + "nameLocation": "6722:13:52", + "nodeType": "VariableDeclaration", + "scope": 15799, + "src": "6715:20:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 15782, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "6715:6:52", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15785, + "mutability": "mutable", + "name": "counterReasonVersion", + "nameLocation": "6752:20:52", + "nodeType": "VariableDeclaration", + "scope": 15799, + "src": "6745:27:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 15784, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "6745:6:52", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "6620:158:52" + }, + "returnParameters": { + "id": 15787, + "nodeType": "ParameterList", + "parameters": [], + "src": "6786:0:52" + }, + "scope": 15915, + "src": "6592:318:52", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 15820, + "nodeType": "Block", + "src": "7365:97:52", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 15815, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15804, + "src": "7424:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 15816, + "name": "reason", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15806, + "src": "7433:6:52", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "id": 15817, + "name": "reasonVersion", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15808, + "src": "7441:13:52", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "expression": { + "arguments": [ + { + "id": 15812, + "name": "bookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15802, + "src": "7389:12:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 15811, + "name": "IBookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16027, + "src": "7375:13:52", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBookingToken_$16027_$", + "typeString": "type(contract IBookingToken)" + } + }, + "id": 15813, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7375:27:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBookingToken_$16027", + "typeString": "contract IBookingToken" + } + }, + "id": 15814, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7403:20:52", + "memberName": "withdrawCancellation", + "nodeType": "MemberAccess", + "referencedDeclaration": 16018, + "src": "7375:48:52", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint16_$_t_uint16_$returns$__$", + "typeString": "function (uint256,uint16,uint16) external" + } + }, + "id": 15818, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7375:80:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 15819, + "nodeType": "ExpressionStatement", + "src": "7375:80:52" + } + ] + }, + "documentation": { + "id": 15800, + "nodeType": "StructuredDocumentation", + "src": "6916:331:52", + "text": " @notice Withdraws a cancellation proposal.\n @param bookingToken booking token contract address\n @param tokenId token id for which to withdraw the proposal\n @param reason The reason for withdrawing the proposal\n @param reasonVersion The version of the withdrawal reason from the CMP" + }, + "functionSelector": "07e47316", + "id": 15821, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdrawCancellation", + "nameLocation": "7261:20:52", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 15809, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 15802, + "mutability": "mutable", + "name": "bookingToken", + "nameLocation": "7290:12:52", + "nodeType": "VariableDeclaration", + "scope": 15821, + "src": "7282:20:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 15801, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7282:7:52", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15804, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "7312:7:52", + "nodeType": "VariableDeclaration", + "scope": 15821, + "src": "7304:15:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15803, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7304:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15806, + "mutability": "mutable", + "name": "reason", + "nameLocation": "7328:6:52", + "nodeType": "VariableDeclaration", + "scope": 15821, + "src": "7321:13:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 15805, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "7321:6:52", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15808, + "mutability": "mutable", + "name": "reasonVersion", + "nameLocation": "7343:13:52", + "nodeType": "VariableDeclaration", + "scope": 15821, + "src": "7336:20:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 15807, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "7336:6:52", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "7281:76:52" + }, + "returnParameters": { + "id": 15810, + "nodeType": "ParameterList", + "parameters": [], + "src": "7365:0:52" + }, + "scope": 15915, + "src": "7252:210:52", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 15842, + "nodeType": "Block", + "src": "8009:113:52", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 15837, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15826, + "src": "8066:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 15838, + "name": "rejectionReason", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15828, + "src": "8075:15:52", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + { + "id": 15839, + "name": "rejectionReasonVersion", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15830, + "src": "8092:22:52", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + ], + "expression": { + "arguments": [ + { + "id": 15834, + "name": "bookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15824, + "src": "8033:12:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 15833, + "name": "IBookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16027, + "src": "8019:13:52", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBookingToken_$16027_$", + "typeString": "type(contract IBookingToken)" + } + }, + "id": 15835, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8019:27:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBookingToken_$16027", + "typeString": "contract IBookingToken" + } + }, + "id": 15836, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8047:18:52", + "memberName": "rejectCancellation", + "nodeType": "MemberAccess", + "referencedDeclaration": 15996, + "src": "8019:46:52", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint16_$_t_uint16_$returns$__$", + "typeString": "function (uint256,uint16,uint16) external" + } + }, + "id": 15840, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8019:96:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 15841, + "nodeType": "ExpressionStatement", + "src": "8019:96:52" + } + ] + }, + "documentation": { + "id": 15822, + "nodeType": "StructuredDocumentation", + "src": "7468:367:52", + "text": " @notice Reject a cancellation proposal for a bought token.\n @param bookingToken booking token contract address\n @param tokenId The token id to reject the cancellation for\n @param rejectionReason The reason for rejecting the cancellation\n @param rejectionReasonVersion Version of the rejection reason enum from the CMP" + }, + "functionSelector": "793dddac", + "id": 15843, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "rejectCancellation", + "nameLocation": "7849:18:52", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 15831, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 15824, + "mutability": "mutable", + "name": "bookingToken", + "nameLocation": "7885:12:52", + "nodeType": "VariableDeclaration", + "scope": 15843, + "src": "7877:20:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 15823, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7877:7:52", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15826, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "7915:7:52", + "nodeType": "VariableDeclaration", + "scope": 15843, + "src": "7907:15:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15825, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7907:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15828, + "mutability": "mutable", + "name": "rejectionReason", + "nameLocation": "7939:15:52", + "nodeType": "VariableDeclaration", + "scope": 15843, + "src": "7932:22:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 15827, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "7932:6:52", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15830, + "mutability": "mutable", + "name": "rejectionReasonVersion", + "nameLocation": "7971:22:52", + "nodeType": "VariableDeclaration", + "scope": 15843, + "src": "7964:29:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 15829, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "7964:6:52", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "7867:132:52" + }, + "returnParameters": { + "id": 15832, + "nodeType": "ParameterList", + "parameters": [], + "src": "8009:0:52" + }, + "scope": 15915, + "src": "7840:282:52", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 15913, + "nodeType": "Block", + "src": "8593:1094:52", + "statements": [ + { + "assignments": [ + 15855 + ], + "declarations": [ + { + "constant": false, + "id": 15855, + "mutability": "mutable", + "name": "paymentToken", + "nameLocation": "8610:12:52", + "nodeType": "VariableDeclaration", + "scope": 15913, + "src": "8603:19:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 15854, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 15853, + "name": "IERC20", + "nameLocations": [ + "8603:6:52" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4513, + "src": "8603:6:52" + }, + "referencedDeclaration": 4513, + "src": "8603:6:52", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "id": 15862, + "initialValue": { + "arguments": [ + { + "id": 15860, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15848, + "src": "8680:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 15857, + "name": "bookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15846, + "src": "8639:12:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 15856, + "name": "IBookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16027, + "src": "8625:13:52", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBookingToken_$16027_$", + "typeString": "type(contract IBookingToken)" + } + }, + "id": 15858, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8625:27:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBookingToken_$16027", + "typeString": "contract IBookingToken" + } + }, + "id": 15859, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8653:26:52", + "memberName": "getReservationPaymentToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 15960, + "src": "8625:54:52", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_contract$_IERC20_$4513_$", + "typeString": "function (uint256) view external returns (contract IERC20)" + } + }, + "id": 15861, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8625:63:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8603:85:52" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 15868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 15865, + "name": "paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15855, + "src": "8773:12:52", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + ], + "id": 15864, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8765:7:52", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 15863, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8765:7:52", + "typeDescriptions": {} + } + }, + "id": 15866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8765:21:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 15867, + "name": "NATIVE_PAYMENT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15553, + "src": "8790:14:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8765:39:52", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 15885, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "id": 15882, + "name": "paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15855, + "src": "9102:12:52", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + ], + "id": 15881, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9094:7:52", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 15880, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9094:7:52", + "typeDescriptions": {} + } + }, + "id": 15883, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9094:21:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 15884, + "name": "OFFCHAIN_PAYMENT", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15560, + "src": "9119:16:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9094:41:52", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 15910, + "nodeType": "Block", + "src": "9302:379:52", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 15898, + "name": "bookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15846, + "src": "9518:12:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 15899, + "name": "refundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15850, + "src": "9532:12:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 15895, + "name": "paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15855, + "src": "9492:12:52", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + "id": 15897, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9505:12:52", + "memberName": "forceApprove", + "nodeType": "MemberAccess", + "referencedDeclaration": 4734, + "src": "9492:25:52", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$4513_$_t_address_$_t_uint256_$returns$__$attached_to$_t_contract$_IERC20_$4513_$", + "typeString": "function (contract IERC20,address,uint256)" + } + }, + "id": 15900, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9492:53:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 15901, + "nodeType": "ExpressionStatement", + "src": "9492:53:52" + }, + { + "expression": { + "arguments": [ + { + "id": 15906, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15848, + "src": "9648:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 15907, + "name": "refundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15850, + "src": "9657:12:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 15903, + "name": "bookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15846, + "src": "9613:12:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 15902, + "name": "IBookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16027, + "src": "9599:13:52", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBookingToken_$16027_$", + "typeString": "type(contract IBookingToken)" + } + }, + "id": 15904, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9599:27:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBookingToken_$16027", + "typeString": "contract IBookingToken" + } + }, + "id": 15905, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9627:20:52", + "memberName": "finalizeCancellation", + "nodeType": "MemberAccess", + "referencedDeclaration": 16026, + "src": "9599:48:52", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) payable external" + } + }, + "id": 15908, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9599:71:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 15909, + "nodeType": "ExpressionStatement", + "src": "9599:71:52" + } + ] + }, + "id": 15911, + "nodeType": "IfStatement", + "src": "9090:591:52", + "trueBody": { + "id": 15894, + "nodeType": "Block", + "src": "9137:159:52", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 15890, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15848, + "src": "9263:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 15891, + "name": "refundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15850, + "src": "9272:12:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 15887, + "name": "bookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15846, + "src": "9228:12:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 15886, + "name": "IBookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16027, + "src": "9214:13:52", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBookingToken_$16027_$", + "typeString": "type(contract IBookingToken)" + } + }, + "id": 15888, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9214:27:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBookingToken_$16027", + "typeString": "contract IBookingToken" + } + }, + "id": 15889, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9242:20:52", + "memberName": "finalizeCancellation", + "nodeType": "MemberAccess", + "referencedDeclaration": 16026, + "src": "9214:48:52", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) payable external" + } + }, + "id": 15892, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9214:71:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 15893, + "nodeType": "ExpressionStatement", + "src": "9214:71:52" + } + ] + } + }, + "id": 15912, + "nodeType": "IfStatement", + "src": "8761:920:52", + "trueBody": { + "id": 15879, + "nodeType": "Block", + "src": "8806:278:52", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 15875, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15848, + "src": "9051:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 15876, + "name": "refundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15850, + "src": "9060:12:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 15870, + "name": "bookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15846, + "src": "8993:12:52", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 15869, + "name": "IBookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16027, + "src": "8979:13:52", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IBookingToken_$16027_$", + "typeString": "type(contract IBookingToken)" + } + }, + "id": 15871, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8979:27:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IBookingToken_$16027", + "typeString": "contract IBookingToken" + } + }, + "id": 15872, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9007:20:52", + "memberName": "finalizeCancellation", + "nodeType": "MemberAccess", + "referencedDeclaration": 16026, + "src": "8979:48:52", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) payable external" + } + }, + "id": 15874, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": [ + "value" + ], + "nodeType": "FunctionCallOptions", + "options": [ + { + "id": 15873, + "name": "refundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 15850, + "src": "9036:12:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "8979:71:52", + "typeDescriptions": { + "typeIdentifier": "t_function_external_payable$_t_uint256_$_t_uint256_$returns$__$value", + "typeString": "function (uint256,uint256) payable external" + } + }, + "id": 15877, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8979:94:52", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 15878, + "nodeType": "ExpressionStatement", + "src": "8979:94:52" + } + ] + } + } + ] + }, + "documentation": { + "id": 15844, + "nodeType": "StructuredDocumentation", + "src": "8128:362:52", + "text": " @notice Finalizes a cancellation proposal by transferring the refund amount\n to the Booking Token contract.\n @param bookingToken BookingToken contract address\n @param tokenId The token id for which to finalize the proposal\n @param refundAmount The refund amount to check, this is to prevent front-running attacks" + }, + "functionSelector": "21b87f3a", + "id": 15914, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "finalizeCancellation", + "nameLocation": "8504:20:52", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 15851, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 15846, + "mutability": "mutable", + "name": "bookingToken", + "nameLocation": "8533:12:52", + "nodeType": "VariableDeclaration", + "scope": 15914, + "src": "8525:20:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 15845, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8525:7:52", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15848, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "8555:7:52", + "nodeType": "VariableDeclaration", + "scope": 15914, + "src": "8547:15:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15847, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8547:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15850, + "mutability": "mutable", + "name": "refundAmount", + "nameLocation": "8572:12:52", + "nodeType": "VariableDeclaration", + "scope": 15914, + "src": "8564:20:52", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15849, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8564:7:52", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8524:61:52" + }, + "returnParameters": { + "id": 15852, + "nodeType": "ParameterList", + "parameters": [], + "src": "8593:0:52" + }, + "scope": 15915, + "src": "8495:1192:52", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 15916, + "src": "584:9105:52", + "usedErrors": [ + 4553, + 15568, + 15578 + ], + "usedEvents": [] + } + ], + "src": "39:9651:52" + }, + "id": 52 + }, + "contracts/booking-token/IBookingToken.sol": { + "ast": { + "absolutePath": "contracts/booking-token/IBookingToken.sol", + "exportedSymbols": { + "IBookingToken": [ + 16027 + ], + "IERC20": [ + 4513 + ] + }, + "id": 16028, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 15917, + "literals": [ + "solidity", + "0.8", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "39:23:53" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "id": 15919, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 16028, + "sourceUnit": 4514, + "src": "64:72:53", + "symbolAliases": [ + { + "foreign": { + "id": 15918, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4513, + "src": "73:6:53", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IBookingToken", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 16027, + "linearizedBaseContracts": [ + 16027 + ], + "name": "IBookingToken", + "nameLocation": "148:13:53", + "nodeType": "ContractDefinition", + "nodes": [ + { + "functionSelector": "db2b2682", + "id": 15937, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "safeMintWithReservation", + "nameLocation": "177:23:53", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 15935, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 15921, + "mutability": "mutable", + "name": "reservedFor", + "nameLocation": "218:11:53", + "nodeType": "VariableDeclaration", + "scope": 15937, + "src": "210:19:53", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 15920, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "210:7:53", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15923, + "mutability": "mutable", + "name": "uri", + "nameLocation": "253:3:53", + "nodeType": "VariableDeclaration", + "scope": 15937, + "src": "239:17:53", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 15922, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "239:6:53", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15925, + "mutability": "mutable", + "name": "expirationTimestamp", + "nameLocation": "274:19:53", + "nodeType": "VariableDeclaration", + "scope": 15937, + "src": "266:27:53", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15924, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "266:7:53", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15927, + "mutability": "mutable", + "name": "price", + "nameLocation": "311:5:53", + "nodeType": "VariableDeclaration", + "scope": 15937, + "src": "303:13:53", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15926, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "303:7:53", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15930, + "mutability": "mutable", + "name": "paymentToken", + "nameLocation": "333:12:53", + "nodeType": "VariableDeclaration", + "scope": 15937, + "src": "326:19:53", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 15929, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 15928, + "name": "IERC20", + "nameLocations": [ + "326:6:53" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4513, + "src": "326:6:53" + }, + "referencedDeclaration": 4513, + "src": "326:6:53", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15932, + "mutability": "mutable", + "name": "offchainPaymentCurrency", + "nameLocation": "363:23:53", + "nodeType": "VariableDeclaration", + "scope": 15937, + "src": "355:31:53", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15931, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "355:7:53", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15934, + "mutability": "mutable", + "name": "isCancellable", + "nameLocation": "401:13:53", + "nodeType": "VariableDeclaration", + "scope": 15937, + "src": "396:18:53", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 15933, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "396:4:53", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "200:220:53" + }, + "returnParameters": { + "id": 15936, + "nodeType": "ParameterList", + "parameters": [], + "src": "429:0:53" + }, + "scope": 16027, + "src": "168:262:53", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "96591edd", + "id": 15942, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "buyReservedToken", + "nameLocation": "445:16:53", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 15940, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 15939, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "470:7:53", + "nodeType": "VariableDeclaration", + "scope": 15942, + "src": "462:15:53", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15938, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "462:7:53", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "461:17:53" + }, + "returnParameters": { + "id": 15941, + "nodeType": "ParameterList", + "parameters": [], + "src": "495:0:53" + }, + "scope": 16027, + "src": "436:60:53", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "004fdd3c", + "id": 15952, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getReservationPrice", + "nameLocation": "511:19:53", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 15945, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 15944, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "539:7:53", + "nodeType": "VariableDeclaration", + "scope": 15952, + "src": "531:15:53", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15943, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "531:7:53", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "530:17:53" + }, + "returnParameters": { + "id": 15951, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 15947, + "mutability": "mutable", + "name": "price", + "nameLocation": "579:5:53", + "nodeType": "VariableDeclaration", + "scope": 15952, + "src": "571:13:53", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15946, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "571:7:53", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15950, + "mutability": "mutable", + "name": "paymentToken", + "nameLocation": "593:12:53", + "nodeType": "VariableDeclaration", + "scope": 15952, + "src": "586:19:53", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 15949, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 15948, + "name": "IERC20", + "nameLocations": [ + "586:6:53" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4513, + "src": "586:6:53" + }, + "referencedDeclaration": 4513, + "src": "586:6:53", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "570:36:53" + }, + "scope": 16027, + "src": "502:105:53", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "b191d092", + "id": 15960, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getReservationPaymentToken", + "nameLocation": "622:26:53", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 15955, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 15954, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "657:7:53", + "nodeType": "VariableDeclaration", + "scope": 15960, + "src": "649:15:53", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15953, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "649:7:53", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "648:17:53" + }, + "returnParameters": { + "id": 15959, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 15958, + "mutability": "mutable", + "name": "paymentToken", + "nameLocation": "696:12:53", + "nodeType": "VariableDeclaration", + "scope": 15960, + "src": "689:19:53", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + }, + "typeName": { + "id": 15957, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 15956, + "name": "IERC20", + "nameLocations": [ + "689:6:53" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4513, + "src": "689:6:53" + }, + "referencedDeclaration": 4513, + "src": "689:6:53", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$4513", + "typeString": "contract IERC20" + } + }, + "visibility": "internal" + } + ], + "src": "688:21:53" + }, + "scope": 16027, + "src": "613:97:53", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 15961, + "nodeType": "StructuredDocumentation", + "src": "716:131:53", + "text": " @notice Record expiration status if the token is expired\n @param tokenId The token id to record as expired" + }, + "functionSelector": "e5a6725c", + "id": 15966, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "recordExpiration", + "nameLocation": "861:16:53", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 15964, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 15963, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "886:7:53", + "nodeType": "VariableDeclaration", + "scope": 15966, + "src": "878:15:53", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15962, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "878:7:53", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "877:17:53" + }, + "returnParameters": { + "id": 15965, + "nodeType": "ParameterList", + "parameters": [], + "src": "903:0:53" + }, + "scope": 16027, + "src": "852:52:53", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 15967, + "nodeType": "StructuredDocumentation", + "src": "1083:347:53", + "text": " @notice Initiates a cancellation for a bought token.\n @param tokenId The token id to initiate the cancellation for\n @param refundAmount The proposed refund amount in wei\n @param cancellationReason The reason for cancellation\n @param cancellationReasonVersion The version of the cancellation reason" + }, + "functionSelector": "f7e45f09", + "id": 15978, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "initiateCancellation", + "nameLocation": "1444:20:53", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 15976, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 15969, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "1482:7:53", + "nodeType": "VariableDeclaration", + "scope": 15978, + "src": "1474:15:53", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15968, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1474:7:53", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15971, + "mutability": "mutable", + "name": "refundAmount", + "nameLocation": "1507:12:53", + "nodeType": "VariableDeclaration", + "scope": 15978, + "src": "1499:20:53", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15970, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1499:7:53", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15973, + "mutability": "mutable", + "name": "cancellationReason", + "nameLocation": "1536:18:53", + "nodeType": "VariableDeclaration", + "scope": 15978, + "src": "1529:25:53", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 15972, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "1529:6:53", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15975, + "mutability": "mutable", + "name": "cancellationReasonVersion", + "nameLocation": "1571:25:53", + "nodeType": "VariableDeclaration", + "scope": 15978, + "src": "1564:32:53", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 15974, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "1564:6:53", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "1464:138:53" + }, + "returnParameters": { + "id": 15977, + "nodeType": "ParameterList", + "parameters": [], + "src": "1611:0:53" + }, + "scope": 16027, + "src": "1435:177:53", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 15979, + "nodeType": "StructuredDocumentation", + "src": "1618:287:53", + "text": " @notice Sets accepted by the owner or supplier flag for a cancellation proposal for a bought token.\n @param tokenId The token id to accept the cancellation for\n @param refundAmount The refund amount to check, this is to prevent front-running attacks" + }, + "functionSelector": "be667188", + "id": 15986, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "acceptCancellation", + "nameLocation": "1919:18:53", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 15984, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 15981, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "1946:7:53", + "nodeType": "VariableDeclaration", + "scope": 15986, + "src": "1938:15:53", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15980, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1938:7:53", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15983, + "mutability": "mutable", + "name": "refundAmount", + "nameLocation": "1963:12:53", + "nodeType": "VariableDeclaration", + "scope": 15986, + "src": "1955:20:53", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15982, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1955:7:53", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1937:39:53" + }, + "returnParameters": { + "id": 15985, + "nodeType": "ParameterList", + "parameters": [], + "src": "1985:0:53" + }, + "scope": 16027, + "src": "1910:76:53", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 15987, + "nodeType": "StructuredDocumentation", + "src": "1992:278:53", + "text": " @notice Reject a cancellation proposal for a bought token.\n @param tokenId The token id to reject the cancellation for\n @param rejectionReason The reason for rejection\n @param rejectionReasonVersion The version of the rejection reason" + }, + "functionSelector": "74fe60e9", + "id": 15996, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "rejectCancellation", + "nameLocation": "2284:18:53", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 15994, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 15989, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "2311:7:53", + "nodeType": "VariableDeclaration", + "scope": 15996, + "src": "2303:15:53", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15988, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2303:7:53", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15991, + "mutability": "mutable", + "name": "rejectionReason", + "nameLocation": "2327:15:53", + "nodeType": "VariableDeclaration", + "scope": 15996, + "src": "2320:22:53", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 15990, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "2320:6:53", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 15993, + "mutability": "mutable", + "name": "rejectionReasonVersion", + "nameLocation": "2351:22:53", + "nodeType": "VariableDeclaration", + "scope": 15996, + "src": "2344:29:53", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 15992, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "2344:6:53", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "2302:72:53" + }, + "returnParameters": { + "id": 15995, + "nodeType": "ParameterList", + "parameters": [], + "src": "2383:0:53" + }, + "scope": 16027, + "src": "2275:109:53", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 15997, + "nodeType": "StructuredDocumentation", + "src": "2390:374:53", + "text": " @notice Counters a cancellation proposal with a new proposal.\n @param tokenId The token id to counter the cancellation for\n @param refundAmount The refund amount to check, this is to prevent front-running attacks\n @param counterReason The reason for the counter\n @param counterReasonVersion The version of the counter reason" + }, + "functionSelector": "74aa2048", + "id": 16008, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "counterCancellation", + "nameLocation": "2778:19:53", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 16006, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 15999, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "2815:7:53", + "nodeType": "VariableDeclaration", + "scope": 16008, + "src": "2807:15:53", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15998, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2807:7:53", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 16001, + "mutability": "mutable", + "name": "refundAmount", + "nameLocation": "2840:12:53", + "nodeType": "VariableDeclaration", + "scope": 16008, + "src": "2832:20:53", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 16000, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2832:7:53", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 16003, + "mutability": "mutable", + "name": "counterReason", + "nameLocation": "2869:13:53", + "nodeType": "VariableDeclaration", + "scope": 16008, + "src": "2862:20:53", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 16002, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "2862:6:53", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 16005, + "mutability": "mutable", + "name": "counterReasonVersion", + "nameLocation": "2899:20:53", + "nodeType": "VariableDeclaration", + "scope": 16008, + "src": "2892:27:53", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 16004, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "2892:6:53", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "2797:128:53" + }, + "returnParameters": { + "id": 16007, + "nodeType": "ParameterList", + "parameters": [], + "src": "2934:0:53" + }, + "scope": 16027, + "src": "2769:166:53", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 16009, + "nodeType": "StructuredDocumentation", + "src": "2941:348:53", + "text": " @notice Withdraws an active cancellation proposal. Only the current proposer of the proposal can withdraw.\n @param tokenId The token id for which to withdraw the proposal\n @param withdrawalReason The reason for withdrawing the proposal\n @param withdrawalReasonVersion The version of the withdrawal reason" + }, + "functionSelector": "2a119380", + "id": 16018, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "withdrawCancellation", + "nameLocation": "3303:20:53", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 16016, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16011, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "3332:7:53", + "nodeType": "VariableDeclaration", + "scope": 16018, + "src": "3324:15:53", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 16010, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3324:7:53", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 16013, + "mutability": "mutable", + "name": "withdrawalReason", + "nameLocation": "3348:16:53", + "nodeType": "VariableDeclaration", + "scope": 16018, + "src": "3341:23:53", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 16012, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "3341:6:53", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 16015, + "mutability": "mutable", + "name": "withdrawalReasonVersion", + "nameLocation": "3373:23:53", + "nodeType": "VariableDeclaration", + "scope": 16018, + "src": "3366:30:53", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 16014, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "3366:6:53", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "3323:74:53" + }, + "returnParameters": { + "id": 16017, + "nodeType": "ParameterList", + "parameters": [], + "src": "3406:0:53" + }, + "scope": 16027, + "src": "3294:113:53", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 16019, + "nodeType": "StructuredDocumentation", + "src": "3413:279:53", + "text": " @notice Finalizes a cancellation proposal. Only the supplier of the token can finalize.\n @param tokenId The token id for which to finalize the proposal\n @param refundAmount The refund amount to check, this is to prevent front-running attacks" + }, + "functionSelector": "1c54f0f7", + "id": 16026, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "finalizeCancellation", + "nameLocation": "3706:20:53", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 16024, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16021, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "3735:7:53", + "nodeType": "VariableDeclaration", + "scope": 16026, + "src": "3727:15:53", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 16020, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3727:7:53", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 16023, + "mutability": "mutable", + "name": "refundAmount", + "nameLocation": "3752:12:53", + "nodeType": "VariableDeclaration", + "scope": 16026, + "src": "3744:20:53", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 16022, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3744:7:53", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3726:39:53" + }, + "returnParameters": { + "id": 16025, + "nodeType": "ParameterList", + "parameters": [], + "src": "3782:0:53" + }, + "scope": 16027, + "src": "3697:86:53", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 16028, + "src": "138:3647:53", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "39:3747:53" + }, + "id": 53 + }, + "contracts/manager/CMAccountManager.sol": { + "ast": { + "absolutePath": "contracts/manager/CMAccountManager.sol", + "exportedSymbols": { + "AccessControlEnumerableUpgradeable": [ + 586 + ], + "Address": [ + 5481 + ], + "CMAccountManager": [ + 16881 + ], + "ERC1967Proxy": [ + 3580 + ], + "ICMAccount": [ + 12932 + ], + "Initializable": [ + 840 + ], + "PausableUpgradeable": [ + 2978 + ], + "ReentrancyGuardUpgradeable": [ + 3107 + ], + "ServiceRegistry": [ + 18165 + ], + "UUPSUpgradeable": [ + 1022 + ] + }, + "id": 16882, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 16029, + "literals": [ + "solidity", + "0.8", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "79:23:54" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "id": 16031, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 16882, + "sourceUnit": 841, + "src": "118:98:54", + "symbolAliases": [ + { + "foreign": { + "id": 16030, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 840, + "src": "127:13:54", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", + "file": "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol", + "id": 16033, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 16882, + "sourceUnit": 3581, + "src": "217:86:54", + "symbolAliases": [ + { + "foreign": { + "id": 16032, + "name": "ERC1967Proxy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3580, + "src": "226:12:54", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", + "file": "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol", + "id": 16035, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 16882, + "sourceUnit": 1023, + "src": "304:102:54", + "symbolAliases": [ + { + "foreign": { + "id": 16034, + "name": "UUPSUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1022, + "src": "313:15:54", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol", + "file": "@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol", + "id": 16037, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 16882, + "sourceUnit": 2979, + "src": "418:104:54", + "symbolAliases": [ + { + "foreign": { + "id": 16036, + "name": "PausableUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2978, + "src": "427:19:54", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/access/extensions/AccessControlEnumerableUpgradeable.sol", + "file": "@openzeppelin/contracts-upgradeable/access/extensions/AccessControlEnumerableUpgradeable.sol", + "id": 16039, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 16882, + "sourceUnit": 587, + "src": "523:146:54", + "symbolAliases": [ + { + "foreign": { + "id": 16038, + "name": "AccessControlEnumerableUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 586, + "src": "532:34:54", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol", + "file": "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol", + "id": 16041, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 16882, + "sourceUnit": 3108, + "src": "670:118:54", + "symbolAliases": [ + { + "foreign": { + "id": 16040, + "name": "ReentrancyGuardUpgradeable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3107, + "src": "679:26:54", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/account/ICMAccount.sol", + "file": "../account/ICMAccount.sol", + "id": 16043, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 16882, + "sourceUnit": 12933, + "src": "838:55:54", + "symbolAliases": [ + { + "foreign": { + "id": 16042, + "name": "ICMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12932, + "src": "847:10:54", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/Address.sol", + "file": "@openzeppelin/contracts/utils/Address.sol", + "id": 16045, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 16882, + "sourceUnit": 5482, + "src": "904:68:54", + "symbolAliases": [ + { + "foreign": { + "id": 16044, + "name": "Address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5481, + "src": "913:7:54", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "contracts/partner/ServiceRegistry.sol", + "file": "../partner/ServiceRegistry.sol", + "id": 16047, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 16882, + "sourceUnit": 18166, + "src": "994:65:54", + "symbolAliases": [ + { + "foreign": { + "id": 16046, + "name": "ServiceRegistry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18165, + "src": "1003:15:54", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 16049, + "name": "Initializable", + "nameLocations": [ + "2348:13:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 840, + "src": "2348:13:54" + }, + "id": 16050, + "nodeType": "InheritanceSpecifier", + "src": "2348:13:54" + }, + { + "baseName": { + "id": 16051, + "name": "PausableUpgradeable", + "nameLocations": [ + "2367:19:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2978, + "src": "2367:19:54" + }, + "id": 16052, + "nodeType": "InheritanceSpecifier", + "src": "2367:19:54" + }, + { + "baseName": { + "id": 16053, + "name": "AccessControlEnumerableUpgradeable", + "nameLocations": [ + "2392:34:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 586, + "src": "2392:34:54" + }, + "id": 16054, + "nodeType": "InheritanceSpecifier", + "src": "2392:34:54" + }, + { + "baseName": { + "id": 16055, + "name": "UUPSUpgradeable", + "nameLocations": [ + "2432:15:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 1022, + "src": "2432:15:54" + }, + "id": 16056, + "nodeType": "InheritanceSpecifier", + "src": "2432:15:54" + }, + { + "baseName": { + "id": 16057, + "name": "ReentrancyGuardUpgradeable", + "nameLocations": [ + "2453:26:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3107, + "src": "2453:26:54" + }, + "id": 16058, + "nodeType": "InheritanceSpecifier", + "src": "2453:26:54" + }, + { + "baseName": { + "id": 16059, + "name": "ServiceRegistry", + "nameLocations": [ + "2485:15:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 18165, + "src": "2485:15:54" + }, + "id": 16060, + "nodeType": "InheritanceSpecifier", + "src": "2485:15:54" + } + ], + "canonicalName": "CMAccountManager", + "contractDependencies": [ + 3580 + ], + "contractKind": "contract", + "documentation": { + "id": 16048, + "nodeType": "StructuredDocumentation", + "src": "1061:1253:54", + "text": " @title Camino Messenger Account Manager\n @notice This contract manages the creation of the Camino Messenger accounts by\n deploying {ERC1967Proxy} proxies that point to the{CMAccount} implementation\n address.\n Create CM Account: Users who want to create an account should call\n `createCMAccount(address admin, address upgrader)` function with addresses of\n the accounts admin and upgrader roles and also send the pre fund amount,\n which is currently set as 100 CAMs. When the manager contract is paused,\n account creation is stopped.\n Developer Fee: This contracts also keeps the info about the developer wallet\n and fee basis points. Which are used during the cheque cash in to pay for the\n developer fee.\n Service Registry: {CMAccountManager} also acts as a registry for the services\n that {CMAccount} contracts add as a supported or wanted service. Registry\n works by hashing (keccak256) the service name (string) and creating a mapping\n as keccak256(serviceName) => serviceName. And provides functions that\n {CMAccount} function uses to register services. The {CMAccount} only keeps\n the hashes (byte32) of the registered services.\n @custom:security-contact https://r.xyz/program/camino-network" + }, + "fullyImplemented": true, + "id": 16881, + "linearizedBaseContracts": [ + 16881, + 18165, + 3107, + 1022, + 3405, + 586, + 362, + 3147, + 6389, + 3256, + 3230, + 2978, + 2802, + 840 + ], + "name": "CMAccountManager", + "nameLocation": "2324:16:54", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 16063, + "libraryName": { + "id": 16061, + "name": "Address", + "nameLocations": [ + "2513:7:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 5481, + "src": "2513:7:54" + }, + "nodeType": "UsingForDirective", + "src": "2507:34:54", + "typeName": { + "id": 16062, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2525:15:54", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + }, + { + "constant": true, + "documentation": { + "id": 16064, + "nodeType": "StructuredDocumentation", + "src": "2547:168:54", + "text": " @notice Pauser role can pause the contract. Currently this only affects the\n creation of CM Accounts. When paused, account creation is stopped." + }, + "functionSelector": "e63ab1e9", + "id": 16069, + "mutability": "constant", + "name": "PAUSER_ROLE", + "nameLocation": "2744:11:54", + "nodeType": "VariableDeclaration", + "scope": 16881, + "src": "2720:62:54", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 16065, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2720:7:54", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "5041555345525f524f4c45", + "id": 16067, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2768:13:54", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a", + "typeString": "literal_string \"PAUSER_ROLE\"" + }, + "value": "PAUSER_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a", + "typeString": "literal_string \"PAUSER_ROLE\"" + } + ], + "id": 16066, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "2758:9:54", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 16068, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2758:24:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 16070, + "nodeType": "StructuredDocumentation", + "src": "2789:90:54", + "text": " @notice Upgrader role can upgrade the contract to a new implementation." + }, + "functionSelector": "f72c0d8b", + "id": 16075, + "mutability": "constant", + "name": "UPGRADER_ROLE", + "nameLocation": "2908:13:54", + "nodeType": "VariableDeclaration", + "scope": 16881, + "src": "2884:66:54", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 16071, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2884:7:54", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "55504752414445525f524f4c45", + "id": 16073, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2934:15:54", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3", + "typeString": "literal_string \"UPGRADER_ROLE\"" + }, + "value": "UPGRADER_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3", + "typeString": "literal_string \"UPGRADER_ROLE\"" + } + ], + "id": 16072, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "2924:9:54", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 16074, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2924:26:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 16076, + "nodeType": "StructuredDocumentation", + "src": "2957:390:54", + "text": " @notice Versioner role can set new {CMAccount} implementation address. When a\n new implementation address is set, it is used for the new {CMAccount}\n creations.\n The old {CMAccount} contracts are not affected by this. Owners of those\n should do the upgrade manually by calling the `upgradeToAndCall(address)`\n function on the account." + }, + "functionSelector": "b289819c", + "id": 16081, + "mutability": "constant", + "name": "VERSIONER_ROLE", + "nameLocation": "3376:14:54", + "nodeType": "VariableDeclaration", + "scope": 16881, + "src": "3352:68:54", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 16077, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3352:7:54", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "56455253494f4e45525f524f4c45", + "id": 16079, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3403:16:54", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6a42249708403f5ed28bf492facd11e85bc1054e6c27c155ed468f6ff4f7ecd0", + "typeString": "literal_string \"VERSIONER_ROLE\"" + }, + "value": "VERSIONER_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_6a42249708403f5ed28bf492facd11e85bc1054e6c27c155ed468f6ff4f7ecd0", + "typeString": "literal_string \"VERSIONER_ROLE\"" + } + ], + "id": 16078, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3393:9:54", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 16080, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3393:27:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 16082, + "nodeType": "StructuredDocumentation", + "src": "3427:170:54", + "text": " @notice Fee admin role can set the developer fee basis points which used for\n calculating the developer fee that is cut from the cheque payments." + }, + "functionSelector": "4cba593a", + "id": 16087, + "mutability": "constant", + "name": "FEE_ADMIN_ROLE", + "nameLocation": "3626:14:54", + "nodeType": "VariableDeclaration", + "scope": 16881, + "src": "3602:68:54", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 16083, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3602:7:54", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "4645455f41444d494e5f524f4c45", + "id": 16085, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3653:16:54", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_349eec46d2c564a125684d1934a6120a70cc341d3a26d362e358a775e07dec17", + "typeString": "literal_string \"FEE_ADMIN_ROLE\"" + }, + "value": "FEE_ADMIN_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_349eec46d2c564a125684d1934a6120a70cc341d3a26d362e358a775e07dec17", + "typeString": "literal_string \"FEE_ADMIN_ROLE\"" + } + ], + "id": 16084, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3643:9:54", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 16086, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3643:27:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 16088, + "nodeType": "StructuredDocumentation", + "src": "3677:142:54", + "text": " @notice Developer wallet admin role can set the developer wallet address\n which is used to receive the developer fee." + }, + "functionSelector": "40df8d84", + "id": 16093, + "mutability": "constant", + "name": "DEVELOPER_WALLET_ADMIN_ROLE", + "nameLocation": "3848:27:54", + "nodeType": "VariableDeclaration", + "scope": 16881, + "src": "3824:94:54", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 16089, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3824:7:54", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "444556454c4f5045525f57414c4c45545f41444d494e5f524f4c45", + "id": 16091, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3888:29:54", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_819590c814c6d279357359f817d25adb06a7b9f6e493592b7d3b8bb268adb676", + "typeString": "literal_string \"DEVELOPER_WALLET_ADMIN_ROLE\"" + }, + "value": "DEVELOPER_WALLET_ADMIN_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_819590c814c6d279357359f817d25adb06a7b9f6e493592b7d3b8bb268adb676", + "typeString": "literal_string \"DEVELOPER_WALLET_ADMIN_ROLE\"" + } + ], + "id": 16090, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3878:9:54", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 16092, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3878:40:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 16094, + "nodeType": "StructuredDocumentation", + "src": "3925:116:54", + "text": " @notice Prefund admin role can set the mandatory prefund amount for {CMAccount}\n contracts." + }, + "functionSelector": "01601d2f", + "id": 16099, + "mutability": "constant", + "name": "PREFUND_ADMIN_ROLE", + "nameLocation": "4070:18:54", + "nodeType": "VariableDeclaration", + "scope": 16881, + "src": "4046:76:54", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 16095, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4046:7:54", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "50524546554e445f41444d494e5f524f4c45", + "id": 16097, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4101:20:54", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_30f3325e23b502dce693b147d37de928d14dd5ab09bbc928fb79867329ac5b83", + "typeString": "literal_string \"PREFUND_ADMIN_ROLE\"" + }, + "value": "PREFUND_ADMIN_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_30f3325e23b502dce693b147d37de928d14dd5ab09bbc928fb79867329ac5b83", + "typeString": "literal_string \"PREFUND_ADMIN_ROLE\"" + } + ], + "id": 16096, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "4091:9:54", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 16098, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4091:31:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 16100, + "nodeType": "StructuredDocumentation", + "src": "4129:165:54", + "text": " @notice Service registry admin role can add and remove services to the service\n registry mapping. Implemented by {ServiceRegistry} contract." + }, + "functionSelector": "92cf833f", + "id": 16105, + "mutability": "constant", + "name": "SERVICE_REGISTRY_ADMIN_ROLE", + "nameLocation": "4323:27:54", + "nodeType": "VariableDeclaration", + "scope": 16881, + "src": "4299:94:54", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 16101, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4299:7:54", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "534552564943455f52454749535452595f41444d494e5f524f4c45", + "id": 16103, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4363:29:54", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_dccfb718b018e1b06f849958baf67b0b252302f06a69871f72c5127ee92f659d", + "typeString": "literal_string \"SERVICE_REGISTRY_ADMIN_ROLE\"" + }, + "value": "SERVICE_REGISTRY_ADMIN_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_dccfb718b018e1b06f849958baf67b0b252302f06a69871f72c5127ee92f659d", + "typeString": "literal_string \"SERVICE_REGISTRY_ADMIN_ROLE\"" + } + ], + "id": 16102, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "4353:9:54", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 16104, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4353:40:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "constant": true, + "documentation": { + "id": 16106, + "nodeType": "StructuredDocumentation", + "src": "4400:136:54", + "text": " @notice This role is granted to the created CM Accounts. It is used to keep\n an enumerable list of CM Accounts." + }, + "functionSelector": "7fa34657", + "id": 16111, + "mutability": "constant", + "name": "CMACCOUNT_ROLE", + "nameLocation": "4565:14:54", + "nodeType": "VariableDeclaration", + "scope": 16881, + "src": "4541:68:54", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 16107, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4541:7:54", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "arguments": [ + { + "hexValue": "434d4143434f554e545f524f4c45", + "id": 16109, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4592:16:54", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4f22871c78b70c8896c7119179fc4e9b6f4cf323f8db6eadb7d79007d1e00c3f", + "typeString": "literal_string \"CMACCOUNT_ROLE\"" + }, + "value": "CMACCOUNT_ROLE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_4f22871c78b70c8896c7119179fc4e9b6f4cf323f8db6eadb7d79007d1e00c3f", + "typeString": "literal_string \"CMACCOUNT_ROLE\"" + } + ], + "id": 16108, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "4582:9:54", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 16110, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4582:27:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "public" + }, + { + "canonicalName": "CMAccountManager.CMAccountInfo", + "documentation": { + "id": 16112, + "nodeType": "StructuredDocumentation", + "src": "4789:113:54", + "text": " @notice CMAccount info struct, to keep track of created CM Accounts and their\n creators." + }, + "id": 16117, + "members": [ + { + "constant": false, + "id": 16114, + "mutability": "mutable", + "name": "isCMAccount", + "nameLocation": "4943:11:54", + "nodeType": "VariableDeclaration", + "scope": 16117, + "src": "4938:16:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 16113, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4938:4:54", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 16116, + "mutability": "mutable", + "name": "creator", + "nameLocation": "4972:7:54", + "nodeType": "VariableDeclaration", + "scope": 16117, + "src": "4964:15:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16115, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4964:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "name": "CMAccountInfo", + "nameLocation": "4914:13:54", + "nodeType": "StructDefinition", + "scope": 16881, + "src": "4907:79:54", + "visibility": "public" + }, + { + "canonicalName": "CMAccountManager.CMAccountManagerStorage", + "documentation": { + "id": 16118, + "nodeType": "StructuredDocumentation", + "src": "4992:78:54", + "text": "@custom:storage-location erc7201:camino.messenger.storage.CMAccountManager" + }, + "id": 16140, + "members": [ + { + "constant": false, + "id": 16121, + "mutability": "mutable", + "name": "_latestAccountImplementation", + "nameLocation": "5307:28:54", + "nodeType": "VariableDeclaration", + "scope": 16140, + "src": "5299:36:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16120, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5299:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 16124, + "mutability": "mutable", + "name": "_prefundAmount", + "nameLocation": "5409:14:54", + "nodeType": "VariableDeclaration", + "scope": 16140, + "src": "5401:22:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 16123, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5401:7:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 16127, + "mutability": "mutable", + "name": "_developerWallet", + "nameLocation": "5558:16:54", + "nodeType": "VariableDeclaration", + "scope": 16140, + "src": "5550:24:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16126, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5550:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 16130, + "mutability": "mutable", + "name": "_developerFeeBp", + "nameLocation": "5894:15:54", + "nodeType": "VariableDeclaration", + "scope": 16140, + "src": "5886:23:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 16129, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5886:7:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 16133, + "mutability": "mutable", + "name": "_bookingToken", + "nameLocation": "5989:13:54", + "nodeType": "VariableDeclaration", + "scope": 16140, + "src": "5981:21:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16132, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5981:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 16139, + "mutability": "mutable", + "name": "_cmAccountInfo", + "nameLocation": "6177:14:54", + "nodeType": "VariableDeclaration", + "scope": 16140, + "src": "6135:56:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_CMAccountInfo_$16117_storage_$", + "typeString": "mapping(address => struct CMAccountManager.CMAccountInfo)" + }, + "typeName": { + "id": 16138, + "keyName": "account", + "keyNameLocation": "6151:7:54", + "keyType": { + "id": 16135, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6143:7:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "6135:41:54", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_CMAccountInfo_$16117_storage_$", + "typeString": "mapping(address => struct CMAccountManager.CMAccountInfo)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 16137, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 16136, + "name": "CMAccountInfo", + "nameLocations": [ + "6162:13:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16117, + "src": "6162:13:54" + }, + "referencedDeclaration": 16117, + "src": "6162:13:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountInfo_$16117_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountInfo" + } + } + }, + "visibility": "internal" + } + ], + "name": "CMAccountManagerStorage", + "nameLocation": "5082:23:54", + "nodeType": "StructDefinition", + "scope": 16881, + "src": "5075:1123:54", + "visibility": "public" + }, + { + "constant": true, + "id": 16143, + "mutability": "constant", + "name": "CMAccountManagerStorageLocation", + "nameLocation": "6354:31:54", + "nodeType": "VariableDeclaration", + "scope": 16881, + "src": "6329:133:54", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 16141, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6329:7:54", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307832623432316166333931383335393230633431653737623638313066366537313566356237313363313762633539306635356465366137643339313265383030", + "id": 16142, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6396:66:54", + "typeDescriptions": { + "typeIdentifier": "t_rational_19566250407352200527424460317761694510754414034952949117014692734580418603008_by_1", + "typeString": "int_const 1956...(69 digits omitted)...3008" + }, + "value": "0x2b421af391835920c41e77b6810f6e715f5b713c17bc590f55de6a7d3912e800" + }, + "visibility": "private" + }, + { + "body": { + "id": 16150, + "nodeType": "Block", + "src": "6565:90:54", + "statements": [ + { + "AST": { + "nativeSrc": "6584:65:54", + "nodeType": "YulBlock", + "src": "6584:65:54", + "statements": [ + { + "nativeSrc": "6598:41:54", + "nodeType": "YulAssignment", + "src": "6598:41:54", + "value": { + "name": "CMAccountManagerStorageLocation", + "nativeSrc": "6608:31:54", + "nodeType": "YulIdentifier", + "src": "6608:31:54" + }, + "variableNames": [ + { + "name": "$.slot", + "nativeSrc": "6598:6:54", + "nodeType": "YulIdentifier", + "src": "6598:6:54" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 16147, + "isOffset": false, + "isSlot": true, + "src": "6598:6:54", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 16143, + "isOffset": false, + "isSlot": false, + "src": "6608:31:54", + "valueSize": 1 + } + ], + "id": 16149, + "nodeType": "InlineAssembly", + "src": "6575:74:54" + } + ] + }, + "id": 16151, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getCMAccountManagerStorage", + "nameLocation": "6478:27:54", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 16144, + "nodeType": "ParameterList", + "parameters": [], + "src": "6505:2:54" + }, + "returnParameters": { + "id": 16148, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16147, + "mutability": "mutable", + "name": "$", + "nameLocation": "6562:1:54", + "nodeType": "VariableDeclaration", + "scope": 16151, + "src": "6530:33:54", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + }, + "typeName": { + "id": 16146, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 16145, + "name": "CMAccountManagerStorage", + "nameLocations": [ + "6530:23:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16140, + "src": "6530:23:54" + }, + "referencedDeclaration": 16140, + "src": "6530:23:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + } + }, + "visibility": "internal" + } + ], + "src": "6529:35:54" + }, + "scope": 16881, + "src": "6469:186:54", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": { + "id": 16152, + "nodeType": "StructuredDocumentation", + "src": "6834:107:54", + "text": " @notice CM Account created event.\n @param account The address of the new CMAccount" + }, + "eventSelector": "22de16ef21e3a33810fbcaf0e737ab9c9e2854fa565d8535041456c789afcd93", + "id": 16156, + "name": "CMAccountCreated", + "nameLocation": "6952:16:54", + "nodeType": "EventDefinition", + "parameters": { + "id": 16155, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16154, + "indexed": true, + "mutability": "mutable", + "name": "account", + "nameLocation": "6985:7:54", + "nodeType": "VariableDeclaration", + "scope": 16156, + "src": "6969:23:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16153, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6969:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "6968:25:54" + }, + "src": "6946:48:54" + }, + { + "anonymous": false, + "documentation": { + "id": 16157, + "nodeType": "StructuredDocumentation", + "src": "7000:201:54", + "text": " @notice CM Account implementation address updated event.\n @param oldImplementation The old implementation address\n @param newImplementation The new implementation address" + }, + "eventSelector": "ecd599290ada9c149ae0fb600bc6ada3c103a716eadb877b5341b7d298b62d93", + "id": 16163, + "name": "CMAccountImplementationUpdated", + "nameLocation": "7212:30:54", + "nodeType": "EventDefinition", + "parameters": { + "id": 16162, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16159, + "indexed": true, + "mutability": "mutable", + "name": "oldImplementation", + "nameLocation": "7259:17:54", + "nodeType": "VariableDeclaration", + "scope": 16163, + "src": "7243:33:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16158, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7243:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 16161, + "indexed": true, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "7294:17:54", + "nodeType": "VariableDeclaration", + "scope": 16163, + "src": "7278:33:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16160, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7278:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "7242:70:54" + }, + "src": "7206:107:54" + }, + { + "anonymous": false, + "documentation": { + "id": 16164, + "nodeType": "StructuredDocumentation", + "src": "7319:198:54", + "text": " @notice Developer wallet address updated event.\n @param oldDeveloperWallet The old developer wallet address\n @param newDeveloperWallet The new developer wallet address" + }, + "eventSelector": "88bf70d4f3c446213b5064d7cfe95ec0ed196748f014c19a833117bac32468fd", + "id": 16170, + "name": "DeveloperWalletUpdated", + "nameLocation": "7528:22:54", + "nodeType": "EventDefinition", + "parameters": { + "id": 16169, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16166, + "indexed": true, + "mutability": "mutable", + "name": "oldDeveloperWallet", + "nameLocation": "7567:18:54", + "nodeType": "VariableDeclaration", + "scope": 16170, + "src": "7551:34:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16165, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7551:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 16168, + "indexed": true, + "mutability": "mutable", + "name": "newDeveloperWallet", + "nameLocation": "7603:18:54", + "nodeType": "VariableDeclaration", + "scope": 16170, + "src": "7587:34:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16167, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7587:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "7550:72:54" + }, + "src": "7522:101:54" + }, + { + "anonymous": false, + "documentation": { + "id": 16171, + "nodeType": "StructuredDocumentation", + "src": "7629:202:54", + "text": " @notice Developer fee basis points updated event.\n @param oldDeveloperFeeBp The old developer fee basis points\n @param newDeveloperFeeBp The new developer fee basis points" + }, + "eventSelector": "c1fec27bbb8c533fedd3d449016c429341bfc0df21a9600e6162605e08f1c78f", + "id": 16177, + "name": "DeveloperFeeBpUpdated", + "nameLocation": "7842:21:54", + "nodeType": "EventDefinition", + "parameters": { + "id": 16176, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16173, + "indexed": true, + "mutability": "mutable", + "name": "oldDeveloperFeeBp", + "nameLocation": "7880:17:54", + "nodeType": "VariableDeclaration", + "scope": 16177, + "src": "7864:33:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 16172, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7864:7:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 16175, + "indexed": true, + "mutability": "mutable", + "name": "newDeveloperFeeBp", + "nameLocation": "7915:17:54", + "nodeType": "VariableDeclaration", + "scope": 16177, + "src": "7899:33:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 16174, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7899:7:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "7863:70:54" + }, + "src": "7836:98:54" + }, + { + "anonymous": false, + "documentation": { + "id": 16178, + "nodeType": "StructuredDocumentation", + "src": "7940:183:54", + "text": " @notice Booking token address updated event.\n @param oldBookingToken The old booking token address\n @param newBookingToken The new booking token address" + }, + "eventSelector": "8752daf55fa0ccd919c149bbc809abaad4433f02ba7aa93ac6d5acfd2f8dc22c", + "id": 16184, + "name": "BookingTokenAddressUpdated", + "nameLocation": "8134:26:54", + "nodeType": "EventDefinition", + "parameters": { + "id": 16183, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16180, + "indexed": true, + "mutability": "mutable", + "name": "oldBookingToken", + "nameLocation": "8177:15:54", + "nodeType": "VariableDeclaration", + "scope": 16184, + "src": "8161:31:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16179, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8161:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 16182, + "indexed": true, + "mutability": "mutable", + "name": "newBookingToken", + "nameLocation": "8210:15:54", + "nodeType": "VariableDeclaration", + "scope": 16184, + "src": "8194:31:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16181, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8194:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "8160:66:54" + }, + "src": "8128:99:54" + }, + { + "documentation": { + "id": 16185, + "nodeType": "StructuredDocumentation", + "src": "8406:147:54", + "text": " @notice The implementation of the CMAccount is invalid.\n @param implementation The implementation address of the CMAccount" + }, + "errorSelector": "6eecde86", + "id": 16189, + "name": "CMAccountInvalidImplementation", + "nameLocation": "8564:30:54", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 16188, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16187, + "mutability": "mutable", + "name": "implementation", + "nameLocation": "8603:14:54", + "nodeType": "VariableDeclaration", + "scope": 16189, + "src": "8595:22:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16186, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8595:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "8594:24:54" + }, + "src": "8558:61:54" + }, + { + "documentation": { + "id": 16190, + "nodeType": "StructuredDocumentation", + "src": "8625:94:54", + "text": " @notice The admin address is invalid.\n @param admin The admin address" + }, + "errorSelector": "e2a72f9a", + "id": 16194, + "name": "CMAccountInvalidAdmin", + "nameLocation": "8730:21:54", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 16193, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16192, + "mutability": "mutable", + "name": "admin", + "nameLocation": "8760:5:54", + "nodeType": "VariableDeclaration", + "scope": 16194, + "src": "8752:13:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16191, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8752:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "8751:15:54" + }, + "src": "8724:43:54" + }, + { + "documentation": { + "id": 16195, + "nodeType": "StructuredDocumentation", + "src": "8773:112:54", + "text": " @notice Invalid developer address.\n @param developerWallet The developer wallet address" + }, + "errorSelector": "44169e22", + "id": 16199, + "name": "InvalidDeveloperWallet", + "nameLocation": "8896:22:54", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 16198, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16197, + "mutability": "mutable", + "name": "developerWallet", + "nameLocation": "8927:15:54", + "nodeType": "VariableDeclaration", + "scope": 16199, + "src": "8919:23:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16196, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8919:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "8918:25:54" + }, + "src": "8890:54:54" + }, + { + "documentation": { + "id": 16200, + "nodeType": "StructuredDocumentation", + "src": "8950:110:54", + "text": " @notice Invalid booking token address.\n @param bookingToken The booking token address" + }, + "errorSelector": "c9c10a61", + "id": 16204, + "name": "InvalidBookingTokenAddress", + "nameLocation": "9071:26:54", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 16203, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16202, + "mutability": "mutable", + "name": "bookingToken", + "nameLocation": "9106:12:54", + "nodeType": "VariableDeclaration", + "scope": 16204, + "src": "9098:20:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16201, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9098:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "9097:22:54" + }, + "src": "9065:55:54" + }, + { + "documentation": { + "id": 16205, + "nodeType": "StructuredDocumentation", + "src": "9126:105:54", + "text": " @notice Incorrect pre fund amount.\n @param expected The expected pre fund amount" + }, + "errorSelector": "a7e038c6", + "id": 16211, + "name": "IncorrectPrefundAmount", + "nameLocation": "9242:22:54", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 16210, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16207, + "mutability": "mutable", + "name": "expected", + "nameLocation": "9273:8:54", + "nodeType": "VariableDeclaration", + "scope": 16211, + "src": "9265:16:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 16206, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9265:7:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 16209, + "mutability": "mutable", + "name": "sended", + "nameLocation": "9291:6:54", + "nodeType": "VariableDeclaration", + "scope": 16211, + "src": "9283:14:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 16208, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9283:7:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9264:34:54" + }, + "src": "9236:63:54" + }, + { + "body": { + "id": 16218, + "nodeType": "Block", + "src": "9545:39:54", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 16215, + "name": "_disableInitializers", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 808, + "src": "9555:20:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 16216, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9555:22:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 16217, + "nodeType": "ExpressionStatement", + "src": "9555:22:54" + } + ] + }, + "documentation": { + "id": 16212, + "nodeType": "StructuredDocumentation", + "src": "9478:48:54", + "text": "@custom:oz-upgrades-unsafe-allow constructor" + }, + "id": 16219, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 16213, + "nodeType": "ParameterList", + "parameters": [], + "src": "9542:2:54" + }, + "returnParameters": { + "id": 16214, + "nodeType": "ParameterList", + "parameters": [], + "src": "9545:0:54" + }, + "scope": 16881, + "src": "9531:53:54", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 16289, + "nodeType": "Block", + "src": "10022:543:54", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 16236, + "name": "__Pausable_init", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2854, + "src": "10032:15:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 16237, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10032:17:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 16238, + "nodeType": "ExpressionStatement", + "src": "10032:17:54" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 16239, + "name": "__AccessControl_init", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 63, + "src": "10059:20:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 16240, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10059:22:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 16241, + "nodeType": "ExpressionStatement", + "src": "10059:22:54" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 16242, + "name": "__UUPSUpgradeable_init", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 894, + "src": "10091:22:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 16243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10091:24:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 16244, + "nodeType": "ExpressionStatement", + "src": "10091:24:54" + }, + { + "expression": { + "arguments": [ + { + "id": 16246, + "name": "DEFAULT_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 28, + "src": "10137:18:54", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 16247, + "name": "defaultAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16221, + "src": "10157:12:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 16245, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 545 + ], + "referencedDeclaration": 545, + "src": "10126:10:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 16248, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10126:44:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 16249, + "nodeType": "ExpressionStatement", + "src": "10126:44:54" + }, + { + "expression": { + "arguments": [ + { + "id": 16251, + "name": "PAUSER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16069, + "src": "10191:11:54", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 16252, + "name": "pauser", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16223, + "src": "10204:6:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 16250, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 545 + ], + "referencedDeclaration": 545, + "src": "10180:10:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 16253, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10180:31:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 16254, + "nodeType": "ExpressionStatement", + "src": "10180:31:54" + }, + { + "expression": { + "arguments": [ + { + "id": 16256, + "name": "UPGRADER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16075, + "src": "10232:13:54", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 16257, + "name": "upgrader", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16225, + "src": "10247:8:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 16255, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 545 + ], + "referencedDeclaration": 545, + "src": "10221:10:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 16258, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10221:35:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 16259, + "nodeType": "ExpressionStatement", + "src": "10221:35:54" + }, + { + "expression": { + "arguments": [ + { + "id": 16261, + "name": "VERSIONER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16081, + "src": "10277:14:54", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 16262, + "name": "versioner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16227, + "src": "10293:9:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 16260, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 545 + ], + "referencedDeclaration": 545, + "src": "10266:10:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 16263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10266:37:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 16264, + "nodeType": "ExpressionStatement", + "src": "10266:37:54" + }, + { + "assignments": [ + 16267 + ], + "declarations": [ + { + "constant": false, + "id": 16267, + "mutability": "mutable", + "name": "$", + "nameLocation": "10346:1:54", + "nodeType": "VariableDeclaration", + "scope": 16289, + "src": "10314:33:54", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + }, + "typeName": { + "id": 16266, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 16265, + "name": "CMAccountManagerStorage", + "nameLocations": [ + "10314:23:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16140, + "src": "10314:23:54" + }, + "referencedDeclaration": 16140, + "src": "10314:23:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 16270, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 16268, + "name": "_getCMAccountManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16151, + "src": "10350:27:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_CMAccountManagerStorage_$16140_storage_ptr_$", + "typeString": "function () pure returns (struct CMAccountManager.CMAccountManagerStorage storage pointer)" + } + }, + "id": 16269, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10350:29:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10314:65:54" + }, + { + "expression": { + "id": 16275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 16271, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16267, + "src": "10390:1:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "id": 16273, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "10392:16:54", + "memberName": "_developerWallet", + "nodeType": "MemberAccess", + "referencedDeclaration": 16127, + "src": "10390:18:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 16274, + "name": "developerWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16229, + "src": "10411:15:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10390:36:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 16276, + "nodeType": "ExpressionStatement", + "src": "10390:36:54" + }, + { + "expression": { + "id": 16281, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 16277, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16267, + "src": "10436:1:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "id": 16279, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "10438:15:54", + "memberName": "_developerFeeBp", + "nodeType": "MemberAccess", + "referencedDeclaration": 16130, + "src": "10436:17:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 16280, + "name": "developerFeeBp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16231, + "src": "10456:14:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10436:34:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 16282, + "nodeType": "ExpressionStatement", + "src": "10436:34:54" + }, + { + "expression": { + "id": 16287, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 16283, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16267, + "src": "10530:1:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "id": 16285, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "10532:14:54", + "memberName": "_prefundAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 16124, + "src": "10530:16:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "313030", + "id": 16286, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10549:9:54", + "subdenomination": "ether", + "typeDescriptions": { + "typeIdentifier": "t_rational_100000000000000000000_by_1", + "typeString": "int_const 100000000000000000000" + }, + "value": "100" + }, + "src": "10530:28:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 16288, + "nodeType": "ExpressionStatement", + "src": "10530:28:54" + } + ] + }, + "functionSelector": "95b6ef0c", + "id": 16290, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 16234, + "kind": "modifierInvocation", + "modifierName": { + "id": 16233, + "name": "initializer", + "nameLocations": [ + "10010:11:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 694, + "src": "10010:11:54" + }, + "nodeType": "ModifierInvocation", + "src": "10010:11:54" + } + ], + "name": "initialize", + "nameLocation": "9599:10:54", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 16232, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16221, + "mutability": "mutable", + "name": "defaultAdmin", + "nameLocation": "9627:12:54", + "nodeType": "VariableDeclaration", + "scope": 16290, + "src": "9619:20:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16220, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9619:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 16223, + "mutability": "mutable", + "name": "pauser", + "nameLocation": "9676:6:54", + "nodeType": "VariableDeclaration", + "scope": 16290, + "src": "9668:14:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16222, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9668:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 16225, + "mutability": "mutable", + "name": "upgrader", + "nameLocation": "9725:8:54", + "nodeType": "VariableDeclaration", + "scope": 16290, + "src": "9717:16:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16224, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9717:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 16227, + "mutability": "mutable", + "name": "versioner", + "nameLocation": "9794:9:54", + "nodeType": "VariableDeclaration", + "scope": 16290, + "src": "9786:17:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16226, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9786:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 16229, + "mutability": "mutable", + "name": "developerWallet", + "nameLocation": "9865:15:54", + "nodeType": "VariableDeclaration", + "scope": 16290, + "src": "9857:23:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16228, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9857:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 16231, + "mutability": "mutable", + "name": "developerFeeBp", + "nameLocation": "9952:14:54", + "nodeType": "VariableDeclaration", + "scope": 16290, + "src": "9944:22:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 16230, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9944:7:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9609:393:54" + }, + "returnParameters": { + "id": 16235, + "nodeType": "ParameterList", + "parameters": [], + "src": "10022:0:54" + }, + "scope": 16881, + "src": "9590:975:54", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 16300, + "nodeType": "Block", + "src": "10790:25:54", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 16297, + "name": "_pause", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2953, + "src": "10800:6:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 16298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10800:8:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 16299, + "nodeType": "ExpressionStatement", + "src": "10800:8:54" + } + ] + }, + "documentation": { + "id": 16291, + "nodeType": "StructuredDocumentation", + "src": "10571:168:54", + "text": " @notice Pauses the CMAccountManager contract. Currently this only affects the\n creation of CMAccount. When paused, account creation is stopped." + }, + "functionSelector": "8456cb59", + "id": 16301, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 16294, + "name": "PAUSER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16069, + "src": "10777:11:54", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 16295, + "kind": "modifierInvocation", + "modifierName": { + "id": 16293, + "name": "onlyRole", + "nameLocations": [ + "10768:8:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "10768:8:54" + }, + "nodeType": "ModifierInvocation", + "src": "10768:21:54" + } + ], + "name": "pause", + "nameLocation": "10753:5:54", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 16292, + "nodeType": "ParameterList", + "parameters": [], + "src": "10758:2:54" + }, + "returnParameters": { + "id": 16296, + "nodeType": "ParameterList", + "parameters": [], + "src": "10790:0:54" + }, + "scope": 16881, + "src": "10744:71:54", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 16311, + "nodeType": "Block", + "src": "10940:27:54", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 16308, + "name": "_unpause", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2977, + "src": "10950:8:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 16309, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10950:10:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 16310, + "nodeType": "ExpressionStatement", + "src": "10950:10:54" + } + ] + }, + "documentation": { + "id": 16302, + "nodeType": "StructuredDocumentation", + "src": "10821:66:54", + "text": " @notice Unpauses the CMAccountManager contract." + }, + "functionSelector": "3f4ba83a", + "id": 16312, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 16305, + "name": "PAUSER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16069, + "src": "10927:11:54", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 16306, + "kind": "modifierInvocation", + "modifierName": { + "id": 16304, + "name": "onlyRole", + "nameLocations": [ + "10918:8:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "10918:8:54" + }, + "nodeType": "ModifierInvocation", + "src": "10918:21:54" + } + ], + "name": "unpause", + "nameLocation": "10901:7:54", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 16303, + "nodeType": "ParameterList", + "parameters": [], + "src": "10908:2:54" + }, + "returnParameters": { + "id": 16307, + "nodeType": "ParameterList", + "parameters": [], + "src": "10940:0:54" + }, + "scope": 16881, + "src": "10892:75:54", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 976 + ], + "body": { + "id": 16322, + "nodeType": "Block", + "src": "11157:2:54", + "statements": [] + }, + "documentation": { + "id": 16313, + "nodeType": "StructuredDocumentation", + "src": "10973:83:54", + "text": " @notice Authorization for the CMAccountManager contract upgrade." + }, + "id": 16323, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 16319, + "name": "UPGRADER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16075, + "src": "11142:13:54", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 16320, + "kind": "modifierInvocation", + "modifierName": { + "id": 16318, + "name": "onlyRole", + "nameLocations": [ + "11133:8:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "11133:8:54" + }, + "nodeType": "ModifierInvocation", + "src": "11133:23:54" + } + ], + "name": "_authorizeUpgrade", + "nameLocation": "11070:17:54", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 16317, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "11124:8:54" + }, + "parameters": { + "id": 16316, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16315, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "11096:17:54", + "nodeType": "VariableDeclaration", + "scope": 16323, + "src": "11088:25:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16314, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11088:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "11087:27:54" + }, + "returnParameters": { + "id": 16321, + "nodeType": "ParameterList", + "parameters": [], + "src": "11157:0:54" + }, + "scope": 16881, + "src": "11061:98:54", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 16342, + "nodeType": "Block", + "src": "11879:57:54", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 16338, + "name": "admin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16326, + "src": "11913:5:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 16339, + "name": "upgrader", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16328, + "src": "11920:8:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 16337, + "name": "_createCMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16483, + "src": "11896:16:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$returns$_t_address_$", + "typeString": "function (address,address) returns (address)" + } + }, + "id": 16340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11896:33:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 16336, + "id": 16341, + "nodeType": "Return", + "src": "11889:40:54" + } + ] + }, + "documentation": { + "id": 16324, + "nodeType": "StructuredDocumentation", + "src": "11338:394:54", + "text": " @notice Creates CMAccount by deploying a ERC1967Proxy with the CMAccount\n implementation from the manager.\n Because this function is deploying a contract, it reverts if the caller is\n not KYC or KYB verified. (For EOAs only)\n Caller must send the pre-fund amount with the transaction.\n @dev Emits a {CMAccountCreated} event." + }, + "functionSelector": "fd2fbd52", + "id": 16343, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 16331, + "kind": "modifierInvocation", + "modifierName": { + "id": 16330, + "name": "nonReentrant", + "nameLocations": [ + "11834:12:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3047, + "src": "11834:12:54" + }, + "nodeType": "ModifierInvocation", + "src": "11834:12:54" + }, + { + "id": 16333, + "kind": "modifierInvocation", + "modifierName": { + "id": 16332, + "name": "whenNotPaused", + "nameLocations": [ + "11847:13:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 2880, + "src": "11847:13:54" + }, + "nodeType": "ModifierInvocation", + "src": "11847:13:54" + } + ], + "name": "createCMAccount", + "nameLocation": "11746:15:54", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 16329, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16326, + "mutability": "mutable", + "name": "admin", + "nameLocation": "11779:5:54", + "nodeType": "VariableDeclaration", + "scope": 16343, + "src": "11771:13:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16325, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11771:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 16328, + "mutability": "mutable", + "name": "upgrader", + "nameLocation": "11802:8:54", + "nodeType": "VariableDeclaration", + "scope": 16343, + "src": "11794:16:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16327, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11794:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "11761:55:54" + }, + "returnParameters": { + "id": 16336, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16335, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 16343, + "src": "11870:7:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16334, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11870:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "11869:9:54" + }, + "scope": 16881, + "src": "11737:199:54", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 16482, + "nodeType": "Block", + "src": "12100:1486:54", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 16358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 16353, + "name": "admin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16346, + "src": "12132:5:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 16356, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12149:1:54", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 16355, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12141:7:54", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 16354, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12141:7:54", + "typeDescriptions": {} + } + }, + "id": 16357, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12141:10:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "12132:19:54", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 16364, + "nodeType": "IfStatement", + "src": "12128:85:54", + "trueBody": { + "id": 16363, + "nodeType": "Block", + "src": "12153:60:54", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 16360, + "name": "admin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16346, + "src": "12196:5:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 16359, + "name": "CMAccountInvalidAdmin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16194, + "src": "12174:21:54", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 16361, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12174:28:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 16362, + "nodeType": "RevertStatement", + "src": "12167:35:54" + } + ] + } + }, + { + "assignments": [ + 16366 + ], + "declarations": [ + { + "constant": false, + "id": 16366, + "mutability": "mutable", + "name": "prefundAmount", + "nameLocation": "12231:13:54", + "nodeType": "VariableDeclaration", + "scope": 16482, + "src": "12223:21:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 16365, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12223:7:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 16369, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 16367, + "name": "getPrefundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16633, + "src": "12247:16:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 16368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12247:18:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12223:42:54" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 16373, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 16370, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "12313:3:54", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 16371, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12317:5:54", + "memberName": "value", + "nodeType": "MemberAccess", + "src": "12313:9:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "id": 16372, + "name": "prefundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16366, + "src": "12325:13:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "12313:25:54", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 16381, + "nodeType": "IfStatement", + "src": "12309:111:54", + "trueBody": { + "id": 16380, + "nodeType": "Block", + "src": "12340:80:54", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 16375, + "name": "prefundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16366, + "src": "12384:13:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "expression": { + "id": 16376, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "12399:3:54", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 16377, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12403:5:54", + "memberName": "value", + "nodeType": "MemberAccess", + "src": "12399:9:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 16374, + "name": "IncorrectPrefundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16211, + "src": "12361:22:54", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256) pure" + } + }, + "id": 16378, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12361:48:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 16379, + "nodeType": "RevertStatement", + "src": "12354:55:54" + } + ] + } + }, + { + "assignments": [ + 16383 + ], + "declarations": [ + { + "constant": false, + "id": 16383, + "mutability": "mutable", + "name": "latestAccountImplementation", + "nameLocation": "12438:27:54", + "nodeType": "VariableDeclaration", + "scope": 16482, + "src": "12430:35:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16382, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12430:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 16386, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 16384, + "name": "getAccountImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16564, + "src": "12468:24:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 16385, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12468:26:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12430:64:54" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 16391, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 16387, + "name": "latestAccountImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16383, + "src": "12508:27:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 16388, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12536:4:54", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "12508:32:54", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 16389, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12541:6:54", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "12508:39:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 16390, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12551:1:54", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "12508:44:54", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 16397, + "nodeType": "IfStatement", + "src": "12504:141:54", + "trueBody": { + "id": 16396, + "nodeType": "Block", + "src": "12554:91:54", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 16393, + "name": "latestAccountImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16383, + "src": "12606:27:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 16392, + "name": "CMAccountInvalidImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16189, + "src": "12575:30:54", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 16394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12575:59:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 16395, + "nodeType": "RevertStatement", + "src": "12568:66:54" + } + ] + } + }, + { + "assignments": [ + 16399 + ], + "declarations": [ + { + "constant": false, + "id": 16399, + "mutability": "mutable", + "name": "bookingToken", + "nameLocation": "12663:12:54", + "nodeType": "VariableDeclaration", + "scope": 16482, + "src": "12655:20:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16398, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12655:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 16402, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 16400, + "name": "getBookingTokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16671, + "src": "12678:22:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 16401, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12678:24:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12655:47:54" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 16407, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 16403, + "name": "bookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16399, + "src": "12716:12:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 16404, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12729:4:54", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "12716:17:54", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 16405, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12734:6:54", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "12716:24:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 16406, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12744:1:54", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "12716:29:54", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 16413, + "nodeType": "IfStatement", + "src": "12712:107:54", + "trueBody": { + "id": 16412, + "nodeType": "Block", + "src": "12747:72:54", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 16409, + "name": "bookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16399, + "src": "12795:12:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 16408, + "name": "InvalidBookingTokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16204, + "src": "12768:26:54", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 16410, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12768:40:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 16411, + "nodeType": "RevertStatement", + "src": "12761:47:54" + } + ] + } + }, + { + "assignments": [ + 16416 + ], + "declarations": [ + { + "constant": false, + "id": 16416, + "mutability": "mutable", + "name": "cmAccountProxy", + "nameLocation": "12911:14:54", + "nodeType": "VariableDeclaration", + "scope": 16482, + "src": "12898:27:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1967Proxy_$3580", + "typeString": "contract ERC1967Proxy" + }, + "typeName": { + "id": 16415, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 16414, + "name": "ERC1967Proxy", + "nameLocations": [ + "12898:12:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3580, + "src": "12898:12:54" + }, + "referencedDeclaration": 3580, + "src": "12898:12:54", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1967Proxy_$3580", + "typeString": "contract ERC1967Proxy" + } + }, + "visibility": "internal" + } + ], + "id": 16423, + "initialValue": { + "arguments": [ + { + "id": 16420, + "name": "latestAccountImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16383, + "src": "12945:27:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "hexValue": "", + "id": 16421, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12974:2:54", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "id": 16419, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "12928:16:54", + "typeDescriptions": { + "typeIdentifier": "t_function_creation_payable$_t_address_$_t_bytes_memory_ptr_$returns$_t_contract$_ERC1967Proxy_$3580_$", + "typeString": "function (address,bytes memory) payable returns (contract ERC1967Proxy)" + }, + "typeName": { + "id": 16418, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 16417, + "name": "ERC1967Proxy", + "nameLocations": [ + "12932:12:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 3580, + "src": "12932:12:54" + }, + "referencedDeclaration": 3580, + "src": "12932:12:54", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1967Proxy_$3580", + "typeString": "contract ERC1967Proxy" + } + } + }, + "id": 16422, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12928:49:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1967Proxy_$3580", + "typeString": "contract ERC1967Proxy" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12898:79:54" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 16433, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "13079:4:54", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CMAccountManager_$16881", + "typeString": "contract CMAccountManager" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_CMAccountManager_$16881", + "typeString": "contract CMAccountManager" + } + ], + "id": 16432, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13071:7:54", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 16431, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13071:7:54", + "typeDescriptions": {} + } + }, + "id": 16434, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13071:13:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 16435, + "name": "bookingToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16399, + "src": "13086:12:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 16436, + "name": "prefundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16366, + "src": "13100:13:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 16437, + "name": "admin", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16346, + "src": "13115:5:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 16438, + "name": "upgrader", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16348, + "src": "13122:8:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 16427, + "name": "cmAccountProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16416, + "src": "13043:14:54", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1967Proxy_$3580", + "typeString": "contract ERC1967Proxy" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC1967Proxy_$3580", + "typeString": "contract ERC1967Proxy" + } + ], + "id": 16426, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13035:7:54", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 16425, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13035:7:54", + "typeDescriptions": {} + } + }, + "id": 16428, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13035:23:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 16424, + "name": "ICMAccount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12932, + "src": "13024:10:54", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ICMAccount_$12932_$", + "typeString": "type(contract ICMAccount)" + } + }, + "id": 16429, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13024:35:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ICMAccount_$12932", + "typeString": "contract ICMAccount" + } + }, + "id": 16430, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13060:10:54", + "memberName": "initialize", + "nodeType": "MemberAccess", + "referencedDeclaration": 12931, + "src": "13024:46:54", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address,uint256,address,address) external" + } + }, + "id": 16439, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13024:107:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 16440, + "nodeType": "ExpressionStatement", + "src": "13024:107:54" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 16444, + "name": "cmAccountProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16416, + "src": "13211:14:54", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1967Proxy_$3580", + "typeString": "contract ERC1967Proxy" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC1967Proxy_$3580", + "typeString": "contract ERC1967Proxy" + } + ], + "id": 16443, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13203:7:54", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 16442, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13203:7:54", + "typeDescriptions": {} + } + }, + "id": 16445, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13203:23:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [ + { + "hexValue": "74727565", + "id": 16447, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13257:4:54", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "expression": { + "id": 16448, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "13272:3:54", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 16449, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13276:6:54", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "13272:10:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 16446, + "name": "CMAccountInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16117, + "src": "13228:13:54", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_CMAccountInfo_$16117_storage_ptr_$", + "typeString": "type(struct CMAccountManager.CMAccountInfo storage pointer)" + } + }, + "id": 16450, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [ + "13244:11:54", + "13263:7:54" + ], + "names": [ + "isCMAccount", + "creator" + ], + "nodeType": "FunctionCall", + "src": "13228:57:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountInfo_$16117_memory_ptr", + "typeString": "struct CMAccountManager.CMAccountInfo memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_struct$_CMAccountInfo_$16117_memory_ptr", + "typeString": "struct CMAccountManager.CMAccountInfo memory" + } + ], + "id": 16441, + "name": "_setCMAccountInfo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16506, + "src": "13185:17:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_struct$_CMAccountInfo_$16117_memory_ptr_$returns$__$", + "typeString": "function (address,struct CMAccountManager.CMAccountInfo memory)" + } + }, + "id": 16451, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13185:101:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 16452, + "nodeType": "ExpressionStatement", + "src": "13185:101:54" + }, + { + "expression": { + "arguments": [ + { + "id": 16454, + "name": "CMACCOUNT_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16111, + "src": "13340:14:54", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "arguments": [ + { + "id": 16457, + "name": "cmAccountProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16416, + "src": "13364:14:54", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1967Proxy_$3580", + "typeString": "contract ERC1967Proxy" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC1967Proxy_$3580", + "typeString": "contract ERC1967Proxy" + } + ], + "id": 16456, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13356:7:54", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 16455, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13356:7:54", + "typeDescriptions": {} + } + }, + "id": 16458, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13356:23:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 16453, + "name": "_grantRole", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 545 + ], + "referencedDeclaration": 545, + "src": "13329:10:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$", + "typeString": "function (bytes32,address) returns (bool)" + } + }, + "id": 16459, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13329:51:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 16460, + "nodeType": "ExpressionStatement", + "src": "13329:51:54" + }, + { + "expression": { + "arguments": [ + { + "expression": { + "id": 16466, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "13471:3:54", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 16467, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13475:5:54", + "memberName": "value", + "nodeType": "MemberAccess", + "src": "13471:9:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "id": 16463, + "name": "cmAccountProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16416, + "src": "13445:14:54", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1967Proxy_$3580", + "typeString": "contract ERC1967Proxy" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC1967Proxy_$3580", + "typeString": "contract ERC1967Proxy" + } + ], + "id": 16462, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13437:8:54", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_payable_$", + "typeString": "type(address payable)" + }, + "typeName": { + "id": 16461, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13437:8:54", + "stateMutability": "payable", + "typeDescriptions": {} + } + }, + "id": 16464, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13437:23:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 16465, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13461:9:54", + "memberName": "sendValue", + "nodeType": "MemberAccess", + "referencedDeclaration": 5279, + "src": "13437:33:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$returns$__$attached_to$_t_address_payable_$", + "typeString": "function (address payable,uint256)" + } + }, + "id": 16468, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13437:44:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 16469, + "nodeType": "ExpressionStatement", + "src": "13437:44:54" + }, + { + "eventCall": { + "arguments": [ + { + "arguments": [ + { + "id": 16473, + "name": "cmAccountProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16416, + "src": "13522:14:54", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1967Proxy_$3580", + "typeString": "contract ERC1967Proxy" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC1967Proxy_$3580", + "typeString": "contract ERC1967Proxy" + } + ], + "id": 16472, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13514:7:54", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 16471, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13514:7:54", + "typeDescriptions": {} + } + }, + "id": 16474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13514:23:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 16470, + "name": "CMAccountCreated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16156, + "src": "13497:16:54", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 16475, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13497:41:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 16476, + "nodeType": "EmitStatement", + "src": "13492:46:54" + }, + { + "expression": { + "arguments": [ + { + "id": 16479, + "name": "cmAccountProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16416, + "src": "13564:14:54", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1967Proxy_$3580", + "typeString": "contract ERC1967Proxy" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ERC1967Proxy_$3580", + "typeString": "contract ERC1967Proxy" + } + ], + "id": 16478, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13556:7:54", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 16477, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13556:7:54", + "typeDescriptions": {} + } + }, + "id": 16480, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13556:23:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 16352, + "id": 16481, + "nodeType": "Return", + "src": "13549:30:54" + } + ] + }, + "documentation": { + "id": 16344, + "nodeType": "StructuredDocumentation", + "src": "11942:68:54", + "text": " @notice Private function to create a `CMAccount`." + }, + "id": 16483, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_createCMAccount", + "nameLocation": "12024:16:54", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 16349, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16346, + "mutability": "mutable", + "name": "admin", + "nameLocation": "12049:5:54", + "nodeType": "VariableDeclaration", + "scope": 16483, + "src": "12041:13:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16345, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12041:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 16348, + "mutability": "mutable", + "name": "upgrader", + "nameLocation": "12064:8:54", + "nodeType": "VariableDeclaration", + "scope": 16483, + "src": "12056:16:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16347, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12056:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "12040:33:54" + }, + "returnParameters": { + "id": 16352, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16351, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 16483, + "src": "12091:7:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16350, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12091:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "12090:9:54" + }, + "scope": 16881, + "src": "12015:1571:54", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 16505, + "nodeType": "Block", + "src": "13672:124:54", + "statements": [ + { + "assignments": [ + 16493 + ], + "declarations": [ + { + "constant": false, + "id": 16493, + "mutability": "mutable", + "name": "$", + "nameLocation": "13714:1:54", + "nodeType": "VariableDeclaration", + "scope": 16505, + "src": "13682:33:54", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + }, + "typeName": { + "id": 16492, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 16491, + "name": "CMAccountManagerStorage", + "nameLocations": [ + "13682:23:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16140, + "src": "13682:23:54" + }, + "referencedDeclaration": 16140, + "src": "13682:23:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 16496, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 16494, + "name": "_getCMAccountManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16151, + "src": "13718:27:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_CMAccountManagerStorage_$16140_storage_ptr_$", + "typeString": "function () pure returns (struct CMAccountManager.CMAccountManagerStorage storage pointer)" + } + }, + "id": 16495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13718:29:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13682:65:54" + }, + { + "expression": { + "id": 16503, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 16497, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16493, + "src": "13757:1:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "id": 16500, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13759:14:54", + "memberName": "_cmAccountInfo", + "nodeType": "MemberAccess", + "referencedDeclaration": 16139, + "src": "13757:16:54", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_CMAccountInfo_$16117_storage_$", + "typeString": "mapping(address => struct CMAccountManager.CMAccountInfo storage ref)" + } + }, + "id": 16501, + "indexExpression": { + "id": 16499, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16485, + "src": "13774:7:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "13757:25:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountInfo_$16117_storage", + "typeString": "struct CMAccountManager.CMAccountInfo storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 16502, + "name": "info", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16488, + "src": "13785:4:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountInfo_$16117_memory_ptr", + "typeString": "struct CMAccountManager.CMAccountInfo memory" + } + }, + "src": "13757:32:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountInfo_$16117_storage", + "typeString": "struct CMAccountManager.CMAccountInfo storage ref" + } + }, + "id": 16504, + "nodeType": "ExpressionStatement", + "src": "13757:32:54" + } + ] + }, + "id": 16506, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setCMAccountInfo", + "nameLocation": "13601:17:54", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 16489, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16485, + "mutability": "mutable", + "name": "account", + "nameLocation": "13627:7:54", + "nodeType": "VariableDeclaration", + "scope": 16506, + "src": "13619:15:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16484, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13619:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 16488, + "mutability": "mutable", + "name": "info", + "nameLocation": "13657:4:54", + "nodeType": "VariableDeclaration", + "scope": 16506, + "src": "13636:25:54", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountInfo_$16117_memory_ptr", + "typeString": "struct CMAccountManager.CMAccountInfo" + }, + "typeName": { + "id": 16487, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 16486, + "name": "CMAccountInfo", + "nameLocations": [ + "13636:13:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16117, + "src": "13636:13:54" + }, + "referencedDeclaration": 16117, + "src": "13636:13:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountInfo_$16117_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountInfo" + } + }, + "visibility": "internal" + } + ], + "src": "13618:44:54" + }, + "returnParameters": { + "id": 16490, + "nodeType": "ParameterList", + "parameters": [], + "src": "13672:0:54" + }, + "scope": 16881, + "src": "13592:204:54", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 16526, + "nodeType": "Block", + "src": "13988:132:54", + "statements": [ + { + "assignments": [ + 16516 + ], + "declarations": [ + { + "constant": false, + "id": 16516, + "mutability": "mutable", + "name": "$", + "nameLocation": "14030:1:54", + "nodeType": "VariableDeclaration", + "scope": 16526, + "src": "13998:33:54", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + }, + "typeName": { + "id": 16515, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 16514, + "name": "CMAccountManagerStorage", + "nameLocations": [ + "13998:23:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16140, + "src": "13998:23:54" + }, + "referencedDeclaration": 16140, + "src": "13998:23:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 16519, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 16517, + "name": "_getCMAccountManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16151, + "src": "14034:27:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_CMAccountManagerStorage_$16140_storage_ptr_$", + "typeString": "function () pure returns (struct CMAccountManager.CMAccountManagerStorage storage pointer)" + } + }, + "id": 16518, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14034:29:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13998:65:54" + }, + { + "expression": { + "expression": { + "baseExpression": { + "expression": { + "id": 16520, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16516, + "src": "14080:1:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "id": 16521, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14082:14:54", + "memberName": "_cmAccountInfo", + "nodeType": "MemberAccess", + "referencedDeclaration": 16139, + "src": "14080:16:54", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_CMAccountInfo_$16117_storage_$", + "typeString": "mapping(address => struct CMAccountManager.CMAccountInfo storage ref)" + } + }, + "id": 16523, + "indexExpression": { + "id": 16522, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16509, + "src": "14097:7:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14080:25:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountInfo_$16117_storage", + "typeString": "struct CMAccountManager.CMAccountInfo storage ref" + } + }, + "id": 16524, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14106:7:54", + "memberName": "creator", + "nodeType": "MemberAccess", + "referencedDeclaration": 16116, + "src": "14080:33:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 16513, + "id": 16525, + "nodeType": "Return", + "src": "14073:40:54" + } + ] + }, + "documentation": { + "id": 16507, + "nodeType": "StructuredDocumentation", + "src": "13802:105:54", + "text": " @notice Returns the given account's creator.\n @param account The account address" + }, + "functionSelector": "2cec1a06", + "id": 16527, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getCMAccountCreator", + "nameLocation": "13921:19:54", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 16510, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16509, + "mutability": "mutable", + "name": "account", + "nameLocation": "13949:7:54", + "nodeType": "VariableDeclaration", + "scope": 16527, + "src": "13941:15:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16508, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13941:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "13940:17:54" + }, + "returnParameters": { + "id": 16513, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16512, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 16527, + "src": "13979:7:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16511, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13979:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "13978:9:54" + }, + "scope": 16881, + "src": "13912:208:54", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 16547, + "nodeType": "Block", + "src": "14330:136:54", + "statements": [ + { + "assignments": [ + 16537 + ], + "declarations": [ + { + "constant": false, + "id": 16537, + "mutability": "mutable", + "name": "$", + "nameLocation": "14372:1:54", + "nodeType": "VariableDeclaration", + "scope": 16547, + "src": "14340:33:54", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + }, + "typeName": { + "id": 16536, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 16535, + "name": "CMAccountManagerStorage", + "nameLocations": [ + "14340:23:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16140, + "src": "14340:23:54" + }, + "referencedDeclaration": 16140, + "src": "14340:23:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 16540, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 16538, + "name": "_getCMAccountManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16151, + "src": "14376:27:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_CMAccountManagerStorage_$16140_storage_ptr_$", + "typeString": "function () pure returns (struct CMAccountManager.CMAccountManagerStorage storage pointer)" + } + }, + "id": 16539, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14376:29:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14340:65:54" + }, + { + "expression": { + "expression": { + "baseExpression": { + "expression": { + "id": 16541, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16537, + "src": "14422:1:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "id": 16542, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14424:14:54", + "memberName": "_cmAccountInfo", + "nodeType": "MemberAccess", + "referencedDeclaration": 16139, + "src": "14422:16:54", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_CMAccountInfo_$16117_storage_$", + "typeString": "mapping(address => struct CMAccountManager.CMAccountInfo storage ref)" + } + }, + "id": 16544, + "indexExpression": { + "id": 16543, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16530, + "src": "14439:7:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14422:25:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountInfo_$16117_storage", + "typeString": "struct CMAccountManager.CMAccountInfo storage ref" + } + }, + "id": 16545, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14448:11:54", + "memberName": "isCMAccount", + "nodeType": "MemberAccess", + "referencedDeclaration": 16114, + "src": "14422:37:54", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 16534, + "id": 16546, + "nodeType": "Return", + "src": "14415:44:54" + } + ] + }, + "documentation": { + "id": 16528, + "nodeType": "StructuredDocumentation", + "src": "14126:134:54", + "text": " @notice Check if an address is CMAccount created by the manager.\n @param account The account address to check" + }, + "functionSelector": "12b357b5", + "id": 16548, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isCMAccount", + "nameLocation": "14274:11:54", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 16531, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16530, + "mutability": "mutable", + "name": "account", + "nameLocation": "14294:7:54", + "nodeType": "VariableDeclaration", + "scope": 16548, + "src": "14286:15:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16529, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14286:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "14285:17:54" + }, + "returnParameters": { + "id": 16534, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16533, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 16548, + "src": "14324:4:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 16532, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "14324:4:54", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "14323:6:54" + }, + "scope": 16881, + "src": "14265:201:54", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 16563, + "nodeType": "Block", + "src": "14788:129:54", + "statements": [ + { + "assignments": [ + 16556 + ], + "declarations": [ + { + "constant": false, + "id": 16556, + "mutability": "mutable", + "name": "$", + "nameLocation": "14830:1:54", + "nodeType": "VariableDeclaration", + "scope": 16563, + "src": "14798:33:54", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + }, + "typeName": { + "id": 16555, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 16554, + "name": "CMAccountManagerStorage", + "nameLocations": [ + "14798:23:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16140, + "src": "14798:23:54" + }, + "referencedDeclaration": 16140, + "src": "14798:23:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 16559, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 16557, + "name": "_getCMAccountManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16151, + "src": "14834:27:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_CMAccountManagerStorage_$16140_storage_ptr_$", + "typeString": "function () pure returns (struct CMAccountManager.CMAccountManagerStorage storage pointer)" + } + }, + "id": 16558, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14834:29:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14798:65:54" + }, + { + "expression": { + "expression": { + "id": 16560, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16556, + "src": "14880:1:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "id": 16561, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14882:28:54", + "memberName": "_latestAccountImplementation", + "nodeType": "MemberAccess", + "referencedDeclaration": 16121, + "src": "14880:30:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 16553, + "id": 16562, + "nodeType": "Return", + "src": "14873:37:54" + } + ] + }, + "documentation": { + "id": 16549, + "nodeType": "StructuredDocumentation", + "src": "14645:72:54", + "text": " @notice Returns the CMAccount implementation address." + }, + "functionSelector": "9d825bc5", + "id": 16564, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAccountImplementation", + "nameLocation": "14731:24:54", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 16550, + "nodeType": "ParameterList", + "parameters": [], + "src": "14755:2:54" + }, + "returnParameters": { + "id": 16553, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16552, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 16564, + "src": "14779:7:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16551, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14779:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "14778:9:54" + }, + "scope": 16881, + "src": "14722:195:54", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 16598, + "nodeType": "Block", + "src": "15154:339:54", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 16577, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 16573, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16567, + "src": "15168:17:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 16574, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15186:4:54", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "15168:22:54", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 16575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15191:6:54", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "15168:29:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 16576, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15201:1:54", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "15168:34:54", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 16583, + "nodeType": "IfStatement", + "src": "15164:121:54", + "trueBody": { + "id": 16582, + "nodeType": "Block", + "src": "15204:81:54", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 16579, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16567, + "src": "15256:17:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 16578, + "name": "CMAccountInvalidImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16189, + "src": "15225:30:54", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 16580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15225:49:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 16581, + "nodeType": "RevertStatement", + "src": "15218:56:54" + } + ] + } + }, + { + "assignments": [ + 16585 + ], + "declarations": [ + { + "constant": false, + "id": 16585, + "mutability": "mutable", + "name": "oldImplementation", + "nameLocation": "15303:17:54", + "nodeType": "VariableDeclaration", + "scope": 16598, + "src": "15295:25:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16584, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15295:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 16588, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 16586, + "name": "getAccountImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16564, + "src": "15323:24:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 16587, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15323:26:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15295:54:54" + }, + { + "expression": { + "arguments": [ + { + "id": 16590, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16567, + "src": "15385:17:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 16589, + "name": "_setAccountImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16617, + "src": "15359:25:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 16591, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15359:44:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 16592, + "nodeType": "ExpressionStatement", + "src": "15359:44:54" + }, + { + "eventCall": { + "arguments": [ + { + "id": 16594, + "name": "oldImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16585, + "src": "15449:17:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 16595, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16567, + "src": "15468:17:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 16593, + "name": "CMAccountImplementationUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16163, + "src": "15418:30:54", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 16596, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15418:68:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 16597, + "nodeType": "EmitStatement", + "src": "15413:73:54" + } + ] + }, + "documentation": { + "id": 16565, + "nodeType": "StructuredDocumentation", + "src": "14923:133:54", + "text": " @notice Set a new CMAccount implementation address.\n @param newImplementation The new implementation address" + }, + "functionSelector": "09766da2", + "id": 16599, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 16570, + "name": "VERSIONER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16081, + "src": "15138:14:54", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 16571, + "kind": "modifierInvocation", + "modifierName": { + "id": 16569, + "name": "onlyRole", + "nameLocations": [ + "15129:8:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "15129:8:54" + }, + "nodeType": "ModifierInvocation", + "src": "15129:24:54" + } + ], + "name": "setAccountImplementation", + "nameLocation": "15070:24:54", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 16568, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16567, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "15103:17:54", + "nodeType": "VariableDeclaration", + "scope": 16599, + "src": "15095:25:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16566, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15095:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "15094:27:54" + }, + "returnParameters": { + "id": 16572, + "nodeType": "ParameterList", + "parameters": [], + "src": "15154:0:54" + }, + "scope": 16881, + "src": "15061:432:54", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 16616, + "nodeType": "Block", + "src": "15570:142:54", + "statements": [ + { + "assignments": [ + 16606 + ], + "declarations": [ + { + "constant": false, + "id": 16606, + "mutability": "mutable", + "name": "$", + "nameLocation": "15612:1:54", + "nodeType": "VariableDeclaration", + "scope": 16616, + "src": "15580:33:54", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + }, + "typeName": { + "id": 16605, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 16604, + "name": "CMAccountManagerStorage", + "nameLocations": [ + "15580:23:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16140, + "src": "15580:23:54" + }, + "referencedDeclaration": 16140, + "src": "15580:23:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 16609, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 16607, + "name": "_getCMAccountManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16151, + "src": "15616:27:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_CMAccountManagerStorage_$16140_storage_ptr_$", + "typeString": "function () pure returns (struct CMAccountManager.CMAccountManagerStorage storage pointer)" + } + }, + "id": 16608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15616:29:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15580:65:54" + }, + { + "expression": { + "id": 16614, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 16610, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16606, + "src": "15655:1:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "id": 16612, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "15657:28:54", + "memberName": "_latestAccountImplementation", + "nodeType": "MemberAccess", + "referencedDeclaration": 16121, + "src": "15655:30:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 16613, + "name": "newImplementation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16601, + "src": "15688:17:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "15655:50:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 16615, + "nodeType": "ExpressionStatement", + "src": "15655:50:54" + } + ] + }, + "id": 16617, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setAccountImplementation", + "nameLocation": "15508:25:54", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 16602, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16601, + "mutability": "mutable", + "name": "newImplementation", + "nameLocation": "15542:17:54", + "nodeType": "VariableDeclaration", + "scope": 16617, + "src": "15534:25:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16600, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15534:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "15533:27:54" + }, + "returnParameters": { + "id": 16603, + "nodeType": "ParameterList", + "parameters": [], + "src": "15570:0:54" + }, + "scope": 16881, + "src": "15499:213:54", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 16632, + "nodeType": "Block", + "src": "16008:115:54", + "statements": [ + { + "assignments": [ + 16625 + ], + "declarations": [ + { + "constant": false, + "id": 16625, + "mutability": "mutable", + "name": "$", + "nameLocation": "16050:1:54", + "nodeType": "VariableDeclaration", + "scope": 16632, + "src": "16018:33:54", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + }, + "typeName": { + "id": 16624, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 16623, + "name": "CMAccountManagerStorage", + "nameLocations": [ + "16018:23:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16140, + "src": "16018:23:54" + }, + "referencedDeclaration": 16140, + "src": "16018:23:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 16628, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 16626, + "name": "_getCMAccountManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16151, + "src": "16054:27:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_CMAccountManagerStorage_$16140_storage_ptr_$", + "typeString": "function () pure returns (struct CMAccountManager.CMAccountManagerStorage storage pointer)" + } + }, + "id": 16627, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16054:29:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16018:65:54" + }, + { + "expression": { + "expression": { + "id": 16629, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16625, + "src": "16100:1:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "id": 16630, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16102:14:54", + "memberName": "_prefundAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 16124, + "src": "16100:16:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 16622, + "id": 16631, + "nodeType": "Return", + "src": "16093:23:54" + } + ] + }, + "documentation": { + "id": 16618, + "nodeType": "StructuredDocumentation", + "src": "15891:54:54", + "text": " @notice Returns the prefund amount." + }, + "functionSelector": "c39409e1", + "id": 16633, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getPrefundAmount", + "nameLocation": "15959:16:54", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 16619, + "nodeType": "ParameterList", + "parameters": [], + "src": "15975:2:54" + }, + "returnParameters": { + "id": 16622, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16621, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 16633, + "src": "15999:7:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 16620, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15999:7:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "15998:9:54" + }, + "scope": 16881, + "src": "15950:173:54", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 16654, + "nodeType": "Block", + "src": "16273:127:54", + "statements": [ + { + "assignments": [ + 16644 + ], + "declarations": [ + { + "constant": false, + "id": 16644, + "mutability": "mutable", + "name": "$", + "nameLocation": "16315:1:54", + "nodeType": "VariableDeclaration", + "scope": 16654, + "src": "16283:33:54", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + }, + "typeName": { + "id": 16643, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 16642, + "name": "CMAccountManagerStorage", + "nameLocations": [ + "16283:23:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16140, + "src": "16283:23:54" + }, + "referencedDeclaration": 16140, + "src": "16283:23:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 16647, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 16645, + "name": "_getCMAccountManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16151, + "src": "16319:27:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_CMAccountManagerStorage_$16140_storage_ptr_$", + "typeString": "function () pure returns (struct CMAccountManager.CMAccountManagerStorage storage pointer)" + } + }, + "id": 16646, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16319:29:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16283:65:54" + }, + { + "expression": { + "id": 16652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 16648, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16644, + "src": "16358:1:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "id": 16650, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "16360:14:54", + "memberName": "_prefundAmount", + "nodeType": "MemberAccess", + "referencedDeclaration": 16124, + "src": "16358:16:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 16651, + "name": "newPrefundAmount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16636, + "src": "16377:16:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "16358:35:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 16653, + "nodeType": "ExpressionStatement", + "src": "16358:35:54" + } + ] + }, + "documentation": { + "id": 16634, + "nodeType": "StructuredDocumentation", + "src": "16129:51:54", + "text": " @notice Sets the prefund amount." + }, + "functionSelector": "1c2b3afc", + "id": 16655, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 16639, + "name": "PREFUND_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16099, + "src": "16253:18:54", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 16640, + "kind": "modifierInvocation", + "modifierName": { + "id": 16638, + "name": "onlyRole", + "nameLocations": [ + "16244:8:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "16244:8:54" + }, + "nodeType": "ModifierInvocation", + "src": "16244:28:54" + } + ], + "name": "setPrefundAmount", + "nameLocation": "16194:16:54", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 16637, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16636, + "mutability": "mutable", + "name": "newPrefundAmount", + "nameLocation": "16219:16:54", + "nodeType": "VariableDeclaration", + "scope": 16655, + "src": "16211:24:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 16635, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16211:7:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "16210:26:54" + }, + "returnParameters": { + "id": 16641, + "nodeType": "ParameterList", + "parameters": [], + "src": "16273:0:54" + }, + "scope": 16881, + "src": "16185:215:54", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 16670, + "nodeType": "Block", + "src": "16709:114:54", + "statements": [ + { + "assignments": [ + 16663 + ], + "declarations": [ + { + "constant": false, + "id": 16663, + "mutability": "mutable", + "name": "$", + "nameLocation": "16751:1:54", + "nodeType": "VariableDeclaration", + "scope": 16670, + "src": "16719:33:54", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + }, + "typeName": { + "id": 16662, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 16661, + "name": "CMAccountManagerStorage", + "nameLocations": [ + "16719:23:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16140, + "src": "16719:23:54" + }, + "referencedDeclaration": 16140, + "src": "16719:23:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 16666, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 16664, + "name": "_getCMAccountManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16151, + "src": "16755:27:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_CMAccountManagerStorage_$16140_storage_ptr_$", + "typeString": "function () pure returns (struct CMAccountManager.CMAccountManagerStorage storage pointer)" + } + }, + "id": 16665, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16755:29:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16719:65:54" + }, + { + "expression": { + "expression": { + "id": 16667, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16663, + "src": "16801:1:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "id": 16668, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16803:13:54", + "memberName": "_bookingToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 16133, + "src": "16801:15:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 16660, + "id": 16669, + "nodeType": "Return", + "src": "16794:22:54" + } + ] + }, + "documentation": { + "id": 16656, + "nodeType": "StructuredDocumentation", + "src": "16579:61:54", + "text": " @notice Returns the booking token address." + }, + "functionSelector": "4f3f4639", + "id": 16671, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getBookingTokenAddress", + "nameLocation": "16654:22:54", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 16657, + "nodeType": "ParameterList", + "parameters": [], + "src": "16676:2:54" + }, + "returnParameters": { + "id": 16660, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16659, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 16671, + "src": "16700:7:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16658, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16700:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "16699:9:54" + }, + "scope": 16881, + "src": "16645:178:54", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 16705, + "nodeType": "Block", + "src": "16967:261:54", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 16684, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "expression": { + "id": 16680, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16674, + "src": "16981:5:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 16681, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16987:4:54", + "memberName": "code", + "nodeType": "MemberAccess", + "src": "16981:10:54", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 16682, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16992:6:54", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "16981:17:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "hexValue": "30", + "id": 16683, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "17002:1:54", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "16981:22:54", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 16690, + "nodeType": "IfStatement", + "src": "16977:93:54", + "trueBody": { + "id": 16689, + "nodeType": "Block", + "src": "17005:65:54", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 16686, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16674, + "src": "17053:5:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 16685, + "name": "InvalidBookingTokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16204, + "src": "17026:26:54", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 16687, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17026:33:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 16688, + "nodeType": "RevertStatement", + "src": "17019:40:54" + } + ] + } + }, + { + "assignments": [ + 16692 + ], + "declarations": [ + { + "constant": false, + "id": 16692, + "mutability": "mutable", + "name": "oldToken", + "nameLocation": "17088:8:54", + "nodeType": "VariableDeclaration", + "scope": 16705, + "src": "17080:16:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16691, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17080:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 16695, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 16693, + "name": "getBookingTokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16671, + "src": "17099:22:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 16694, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17099:24:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17080:43:54" + }, + { + "expression": { + "arguments": [ + { + "id": 16697, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16674, + "src": "17157:5:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 16696, + "name": "_setBookingTokenAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16724, + "src": "17133:23:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 16698, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17133:30:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 16699, + "nodeType": "ExpressionStatement", + "src": "17133:30:54" + }, + { + "eventCall": { + "arguments": [ + { + "id": 16701, + "name": "oldToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16692, + "src": "17205:8:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 16702, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16674, + "src": "17215:5:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 16700, + "name": "BookingTokenAddressUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16184, + "src": "17178:26:54", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 16703, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17178:43:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 16704, + "nodeType": "EmitStatement", + "src": "17173:48:54" + } + ] + }, + "documentation": { + "id": 16672, + "nodeType": "StructuredDocumentation", + "src": "16829:54:54", + "text": " @notice Sets booking token address." + }, + "functionSelector": "c17e30bf", + "id": 16706, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 16677, + "name": "VERSIONER_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16081, + "src": "16951:14:54", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 16678, + "kind": "modifierInvocation", + "modifierName": { + "id": 16676, + "name": "onlyRole", + "nameLocations": [ + "16942:8:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "16942:8:54" + }, + "nodeType": "ModifierInvocation", + "src": "16942:24:54" + } + ], + "name": "setBookingTokenAddress", + "nameLocation": "16897:22:54", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 16675, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16674, + "mutability": "mutable", + "name": "token", + "nameLocation": "16928:5:54", + "nodeType": "VariableDeclaration", + "scope": 16706, + "src": "16920:13:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16673, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16920:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "16919:15:54" + }, + "returnParameters": { + "id": 16679, + "nodeType": "ParameterList", + "parameters": [], + "src": "16967:0:54" + }, + "scope": 16881, + "src": "16888:340:54", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 16723, + "nodeType": "Block", + "src": "17291:115:54", + "statements": [ + { + "assignments": [ + 16713 + ], + "declarations": [ + { + "constant": false, + "id": 16713, + "mutability": "mutable", + "name": "$", + "nameLocation": "17333:1:54", + "nodeType": "VariableDeclaration", + "scope": 16723, + "src": "17301:33:54", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + }, + "typeName": { + "id": 16712, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 16711, + "name": "CMAccountManagerStorage", + "nameLocations": [ + "17301:23:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16140, + "src": "17301:23:54" + }, + "referencedDeclaration": 16140, + "src": "17301:23:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 16716, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 16714, + "name": "_getCMAccountManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16151, + "src": "17337:27:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_CMAccountManagerStorage_$16140_storage_ptr_$", + "typeString": "function () pure returns (struct CMAccountManager.CMAccountManagerStorage storage pointer)" + } + }, + "id": 16715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17337:29:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17301:65:54" + }, + { + "expression": { + "id": 16721, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 16717, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16713, + "src": "17376:1:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "id": 16719, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "17378:13:54", + "memberName": "_bookingToken", + "nodeType": "MemberAccess", + "referencedDeclaration": 16133, + "src": "17376:15:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 16720, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16708, + "src": "17394:5:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "17376:23:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 16722, + "nodeType": "ExpressionStatement", + "src": "17376:23:54" + } + ] + }, + "id": 16724, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setBookingTokenAddress", + "nameLocation": "17243:23:54", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 16709, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16708, + "mutability": "mutable", + "name": "token", + "nameLocation": "17275:5:54", + "nodeType": "VariableDeclaration", + "scope": 16724, + "src": "17267:13:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16707, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17267:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "17266:15:54" + }, + "returnParameters": { + "id": 16710, + "nodeType": "ParameterList", + "parameters": [], + "src": "17291:0:54" + }, + "scope": 16881, + "src": "17234:172:54", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 16739, + "nodeType": "Block", + "src": "17726:117:54", + "statements": [ + { + "assignments": [ + 16732 + ], + "declarations": [ + { + "constant": false, + "id": 16732, + "mutability": "mutable", + "name": "$", + "nameLocation": "17768:1:54", + "nodeType": "VariableDeclaration", + "scope": 16739, + "src": "17736:33:54", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + }, + "typeName": { + "id": 16731, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 16730, + "name": "CMAccountManagerStorage", + "nameLocations": [ + "17736:23:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16140, + "src": "17736:23:54" + }, + "referencedDeclaration": 16140, + "src": "17736:23:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 16735, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 16733, + "name": "_getCMAccountManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16151, + "src": "17772:27:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_CMAccountManagerStorage_$16140_storage_ptr_$", + "typeString": "function () pure returns (struct CMAccountManager.CMAccountManagerStorage storage pointer)" + } + }, + "id": 16734, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17772:29:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17736:65:54" + }, + { + "expression": { + "expression": { + "id": 16736, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16732, + "src": "17818:1:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "id": 16737, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17820:16:54", + "memberName": "_developerWallet", + "nodeType": "MemberAccess", + "referencedDeclaration": 16127, + "src": "17818:18:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 16729, + "id": 16738, + "nodeType": "Return", + "src": "17811:25:54" + } + ] + }, + "documentation": { + "id": 16725, + "nodeType": "StructuredDocumentation", + "src": "17585:60:54", + "text": " @notice Returns developer wallet address." + }, + "functionSelector": "0470d3ac", + "id": 16740, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getDeveloperWallet", + "nameLocation": "17659:18:54", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 16726, + "nodeType": "ParameterList", + "parameters": [], + "src": "17677:2:54" + }, + "returnParameters": { + "id": 16729, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16728, + "mutability": "mutable", + "name": "developerWallet", + "nameLocation": "17709:15:54", + "nodeType": "VariableDeclaration", + "scope": 16740, + "src": "17701:23:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16727, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17701:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "17700:25:54" + }, + "scope": 16881, + "src": "17650:193:54", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 16775, + "nodeType": "Block", + "src": "18009:302:54", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 16754, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 16749, + "name": "developerWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16743, + "src": "18023:15:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 16752, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "18050:1:54", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 16751, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "18042:7:54", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 16750, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18042:7:54", + "typeDescriptions": {} + } + }, + "id": 16753, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18042:10:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "18023:29:54", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 16760, + "nodeType": "IfStatement", + "src": "18019:106:54", + "trueBody": { + "id": 16759, + "nodeType": "Block", + "src": "18054:71:54", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 16756, + "name": "developerWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16743, + "src": "18098:15:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 16755, + "name": "InvalidDeveloperWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16199, + "src": "18075:22:54", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 16757, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18075:39:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 16758, + "nodeType": "RevertStatement", + "src": "18068:46:54" + } + ] + } + }, + { + "assignments": [ + 16762 + ], + "declarations": [ + { + "constant": false, + "id": 16762, + "mutability": "mutable", + "name": "oldDeveloperWallet", + "nameLocation": "18143:18:54", + "nodeType": "VariableDeclaration", + "scope": 16775, + "src": "18135:26:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16761, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18135:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 16765, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 16763, + "name": "getDeveloperWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16740, + "src": "18164:18:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 16764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18164:20:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "18135:49:54" + }, + { + "expression": { + "arguments": [ + { + "id": 16767, + "name": "developerWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16743, + "src": "18214:15:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 16766, + "name": "_setDeveloperWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16794, + "src": "18194:19:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 16768, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18194:36:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 16769, + "nodeType": "ExpressionStatement", + "src": "18194:36:54" + }, + { + "eventCall": { + "arguments": [ + { + "id": 16771, + "name": "oldDeveloperWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16762, + "src": "18268:18:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 16772, + "name": "developerWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16743, + "src": "18288:15:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 16770, + "name": "DeveloperWalletUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16170, + "src": "18245:22:54", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 16773, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18245:59:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 16774, + "nodeType": "EmitStatement", + "src": "18240:64:54" + } + ] + }, + "documentation": { + "id": 16741, + "nodeType": "StructuredDocumentation", + "src": "17849:57:54", + "text": " @notice Sets developer wallet address." + }, + "functionSelector": "6cd56878", + "id": 16776, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 16746, + "name": "DEVELOPER_WALLET_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16093, + "src": "17980:27:54", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 16747, + "kind": "modifierInvocation", + "modifierName": { + "id": 16745, + "name": "onlyRole", + "nameLocations": [ + "17971:8:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "17971:8:54" + }, + "nodeType": "ModifierInvocation", + "src": "17971:37:54" + } + ], + "name": "setDeveloperWallet", + "nameLocation": "17920:18:54", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 16744, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16743, + "mutability": "mutable", + "name": "developerWallet", + "nameLocation": "17947:15:54", + "nodeType": "VariableDeclaration", + "scope": 16776, + "src": "17939:23:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16742, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17939:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "17938:25:54" + }, + "returnParameters": { + "id": 16748, + "nodeType": "ParameterList", + "parameters": [], + "src": "18009:0:54" + }, + "scope": 16881, + "src": "17911:400:54", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 16793, + "nodeType": "Block", + "src": "18379:128:54", + "statements": [ + { + "assignments": [ + 16783 + ], + "declarations": [ + { + "constant": false, + "id": 16783, + "mutability": "mutable", + "name": "$", + "nameLocation": "18421:1:54", + "nodeType": "VariableDeclaration", + "scope": 16793, + "src": "18389:33:54", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + }, + "typeName": { + "id": 16782, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 16781, + "name": "CMAccountManagerStorage", + "nameLocations": [ + "18389:23:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16140, + "src": "18389:23:54" + }, + "referencedDeclaration": 16140, + "src": "18389:23:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 16786, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 16784, + "name": "_getCMAccountManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16151, + "src": "18425:27:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_CMAccountManagerStorage_$16140_storage_ptr_$", + "typeString": "function () pure returns (struct CMAccountManager.CMAccountManagerStorage storage pointer)" + } + }, + "id": 16785, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18425:29:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "18389:65:54" + }, + { + "expression": { + "id": 16791, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 16787, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16783, + "src": "18464:1:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "id": 16789, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "18466:16:54", + "memberName": "_developerWallet", + "nodeType": "MemberAccess", + "referencedDeclaration": 16127, + "src": "18464:18:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 16790, + "name": "developerWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16778, + "src": "18485:15:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "18464:36:54", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 16792, + "nodeType": "ExpressionStatement", + "src": "18464:36:54" + } + ] + }, + "id": 16794, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setDeveloperWallet", + "nameLocation": "18326:19:54", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 16779, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16778, + "mutability": "mutable", + "name": "developerWallet", + "nameLocation": "18354:15:54", + "nodeType": "VariableDeclaration", + "scope": 16794, + "src": "18346:23:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16777, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18346:7:54", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "18345:25:54" + }, + "returnParameters": { + "id": 16780, + "nodeType": "ParameterList", + "parameters": [], + "src": "18379:0:54" + }, + "scope": 16881, + "src": "18317:190:54", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 16809, + "nodeType": "Block", + "src": "18657:116:54", + "statements": [ + { + "assignments": [ + 16802 + ], + "declarations": [ + { + "constant": false, + "id": 16802, + "mutability": "mutable", + "name": "$", + "nameLocation": "18699:1:54", + "nodeType": "VariableDeclaration", + "scope": 16809, + "src": "18667:33:54", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + }, + "typeName": { + "id": 16801, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 16800, + "name": "CMAccountManagerStorage", + "nameLocations": [ + "18667:23:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16140, + "src": "18667:23:54" + }, + "referencedDeclaration": 16140, + "src": "18667:23:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 16805, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 16803, + "name": "_getCMAccountManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16151, + "src": "18703:27:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_CMAccountManagerStorage_$16140_storage_ptr_$", + "typeString": "function () pure returns (struct CMAccountManager.CMAccountManagerStorage storage pointer)" + } + }, + "id": 16804, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "18703:29:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "18667:65:54" + }, + { + "expression": { + "expression": { + "id": 16806, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16802, + "src": "18749:1:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "id": 16807, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "18751:15:54", + "memberName": "_developerFeeBp", + "nodeType": "MemberAccess", + "referencedDeclaration": 16130, + "src": "18749:17:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 16799, + "id": 16808, + "nodeType": "Return", + "src": "18742:24:54" + } + ] + }, + "documentation": { + "id": 16795, + "nodeType": "StructuredDocumentation", + "src": "18513:65:54", + "text": " @notice Returns developer fee in basis points." + }, + "functionSelector": "3c555938", + "id": 16810, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getDeveloperFeeBp", + "nameLocation": "18592:17:54", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 16796, + "nodeType": "ParameterList", + "parameters": [], + "src": "18609:2:54" + }, + "returnParameters": { + "id": 16799, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16798, + "mutability": "mutable", + "name": "developerFeeBp", + "nameLocation": "18641:14:54", + "nodeType": "VariableDeclaration", + "scope": 16810, + "src": "18633:22:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 16797, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18633:7:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "18632:24:54" + }, + "scope": 16881, + "src": "18583:190:54", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 16833, + "nodeType": "Block", + "src": "19127:131:54", + "statements": [ + { + "assignments": [ + 16820 + ], + "declarations": [ + { + "constant": false, + "id": 16820, + "mutability": "mutable", + "name": "oldBp", + "nameLocation": "19145:5:54", + "nodeType": "VariableDeclaration", + "scope": 16833, + "src": "19137:13:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 16819, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19137:7:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 16823, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 16821, + "name": "getDeveloperFeeBp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16810, + "src": "19153:17:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 16822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19153:19:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "19137:35:54" + }, + { + "expression": { + "arguments": [ + { + "id": 16825, + "name": "bp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16813, + "src": "19201:2:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 16824, + "name": "_setDeveloperFeeBp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16852, + "src": "19182:18:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 16826, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19182:22:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 16827, + "nodeType": "ExpressionStatement", + "src": "19182:22:54" + }, + { + "eventCall": { + "arguments": [ + { + "id": 16829, + "name": "oldBp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16820, + "src": "19241:5:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 16830, + "name": "bp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16813, + "src": "19248:2:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 16828, + "name": "DeveloperFeeBpUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16177, + "src": "19219:21:54", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (uint256,uint256)" + } + }, + "id": 16831, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19219:32:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 16832, + "nodeType": "EmitStatement", + "src": "19214:37:54" + } + ] + }, + "documentation": { + "id": 16811, + "nodeType": "StructuredDocumentation", + "src": "18779:272:54", + "text": " @notice Sets developer fee in basis points.\n A basis point (bp) is one hundredth of 1 percentage point.\n 1 bp = 0.01%, 1/10,000⁠, or 0.0001.\n 10 bp = 0.1%, 1/1,000⁠, or 0.001.\n 100 bp = 1%, ⁠1/100⁠, or 0.01." + }, + "functionSelector": "f85b4a9c", + "id": 16834, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 16816, + "name": "FEE_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16087, + "src": "19111:14:54", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 16817, + "kind": "modifierInvocation", + "modifierName": { + "id": 16815, + "name": "onlyRole", + "nameLocations": [ + "19102:8:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "19102:8:54" + }, + "nodeType": "ModifierInvocation", + "src": "19102:24:54" + } + ], + "name": "setDeveloperFeeBp", + "nameLocation": "19065:17:54", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 16814, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16813, + "mutability": "mutable", + "name": "bp", + "nameLocation": "19091:2:54", + "nodeType": "VariableDeclaration", + "scope": 16834, + "src": "19083:10:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 16812, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19083:7:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "19082:12:54" + }, + "returnParameters": { + "id": 16818, + "nodeType": "ParameterList", + "parameters": [], + "src": "19127:0:54" + }, + "scope": 16881, + "src": "19056:202:54", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 16851, + "nodeType": "Block", + "src": "19312:114:54", + "statements": [ + { + "assignments": [ + 16841 + ], + "declarations": [ + { + "constant": false, + "id": 16841, + "mutability": "mutable", + "name": "$", + "nameLocation": "19354:1:54", + "nodeType": "VariableDeclaration", + "scope": 16851, + "src": "19322:33:54", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + }, + "typeName": { + "id": 16840, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 16839, + "name": "CMAccountManagerStorage", + "nameLocations": [ + "19322:23:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16140, + "src": "19322:23:54" + }, + "referencedDeclaration": 16140, + "src": "19322:23:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage" + } + }, + "visibility": "internal" + } + ], + "id": 16844, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 16842, + "name": "_getCMAccountManagerStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16151, + "src": "19358:27:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_CMAccountManagerStorage_$16140_storage_ptr_$", + "typeString": "function () pure returns (struct CMAccountManager.CMAccountManagerStorage storage pointer)" + } + }, + "id": 16843, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19358:29:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "19322:65:54" + }, + { + "expression": { + "id": 16849, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "id": 16845, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16841, + "src": "19397:1:54", + "typeDescriptions": { + "typeIdentifier": "t_struct$_CMAccountManagerStorage_$16140_storage_ptr", + "typeString": "struct CMAccountManager.CMAccountManagerStorage storage pointer" + } + }, + "id": 16847, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "19399:15:54", + "memberName": "_developerFeeBp", + "nodeType": "MemberAccess", + "referencedDeclaration": 16130, + "src": "19397:17:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 16848, + "name": "bp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16836, + "src": "19417:2:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "19397:22:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 16850, + "nodeType": "ExpressionStatement", + "src": "19397:22:54" + } + ] + }, + "id": 16852, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setDeveloperFeeBp", + "nameLocation": "19273:18:54", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 16837, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16836, + "mutability": "mutable", + "name": "bp", + "nameLocation": "19300:2:54", + "nodeType": "VariableDeclaration", + "scope": 16852, + "src": "19292:10:54", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 16835, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19292:7:54", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "19291:12:54" + }, + "returnParameters": { + "id": 16838, + "nodeType": "ParameterList", + "parameters": [], + "src": "19312:0:54" + }, + "scope": 16881, + "src": "19264:162:54", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 16865, + "nodeType": "Block", + "src": "19941:50:54", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 16862, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16855, + "src": "19972:11:54", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 16861, + "name": "_registerServiceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17962, + "src": "19951:20:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory)" + } + }, + "id": 16863, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "19951:33:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 16864, + "nodeType": "ExpressionStatement", + "src": "19951:33:54" + } + ] + }, + "documentation": { + "id": 16853, + "nodeType": "StructuredDocumentation", + "src": "19605:234:54", + "text": " @notice Registers a given service name. CM Accounts can only register services\n if they are also registered in the service registry on the manager contract.\n @param serviceName Name of the service" + }, + "functionSelector": "0d6115d0", + "id": 16866, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 16858, + "name": "SERVICE_REGISTRY_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16105, + "src": "19912:27:54", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 16859, + "kind": "modifierInvocation", + "modifierName": { + "id": 16857, + "name": "onlyRole", + "nameLocations": [ + "19903:8:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "19903:8:54" + }, + "nodeType": "ModifierInvocation", + "src": "19903:37:54" + } + ], + "name": "registerService", + "nameLocation": "19853:15:54", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 16856, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16855, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "19883:11:54", + "nodeType": "VariableDeclaration", + "scope": 16866, + "src": "19869:25:54", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 16854, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "19869:6:54", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "19868:27:54" + }, + "returnParameters": { + "id": 16860, + "nodeType": "ParameterList", + "parameters": [], + "src": "19941:0:54" + }, + "scope": 16881, + "src": "19844:147:54", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 16879, + "nodeType": "Block", + "src": "20283:52:54", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 16876, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16869, + "src": "20316:11:54", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 16875, + "name": "_unregisterServiceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18016, + "src": "20293:22:54", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory)" + } + }, + "id": 16877, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "20293:35:54", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 16878, + "nodeType": "ExpressionStatement", + "src": "20293:35:54" + } + ] + }, + "documentation": { + "id": 16867, + "nodeType": "StructuredDocumentation", + "src": "19997:182:54", + "text": " @notice Unregisters a given service name. CM Accounts will not be able to register\n the service anymore.\n @param serviceName Name of the service" + }, + "functionSelector": "5e818619", + "id": 16880, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": [ + { + "id": 16872, + "name": "SERVICE_REGISTRY_ADMIN_ROLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16105, + "src": "20254:27:54", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 16873, + "kind": "modifierInvocation", + "modifierName": { + "id": 16871, + "name": "onlyRole", + "nameLocations": [ + "20245:8:54" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 57, + "src": "20245:8:54" + }, + "nodeType": "ModifierInvocation", + "src": "20245:37:54" + } + ], + "name": "unregisterService", + "nameLocation": "20193:17:54", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 16870, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16869, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "20225:11:54", + "nodeType": "VariableDeclaration", + "scope": 16880, + "src": "20211:25:54", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 16868, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "20211:6:54", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "20210:27:54" + }, + "returnParameters": { + "id": 16874, + "nodeType": "ParameterList", + "parameters": [], + "src": "20283:0:54" + }, + "scope": 16881, + "src": "20184:151:54", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 16882, + "src": "2315:18022:54", + "usedErrors": [ + 603, + 606, + 867, + 872, + 2841, + 2844, + 3009, + 3157, + 3160, + 3600, + 3613, + 5232, + 5521, + 5524, + 16189, + 16194, + 16199, + 16204, + 16211, + 17889, + 17891 + ], + "usedEvents": [ + 611, + 2833, + 2838, + 3169, + 3178, + 3187, + 3350, + 16156, + 16163, + 16170, + 16177, + 16184, + 17879, + 17885 + ] + } + ], + "src": "79:20259:54" + }, + "id": 54 + }, + "contracts/manager/ICMAccountManager.sol": { + "ast": { + "absolutePath": "contracts/manager/ICMAccountManager.sol", + "exportedSymbols": { + "ICMAccountManager": [ + 16920 + ] + }, + "id": 16921, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 16883, + "literals": [ + "solidity", + "0.8", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "40:23:55" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "ICMAccountManager", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 16920, + "linearizedBaseContracts": [ + 16920 + ], + "name": "ICMAccountManager", + "nameLocation": "75:17:55", + "nodeType": "ContractDefinition", + "nodes": [ + { + "functionSelector": "9d825bc5", + "id": 16888, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getAccountImplementation", + "nameLocation": "108:24:55", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 16884, + "nodeType": "ParameterList", + "parameters": [], + "src": "132:2:55" + }, + "returnParameters": { + "id": 16887, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16886, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 16888, + "src": "158:7:55", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16885, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "158:7:55", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "157:9:55" + }, + "scope": 16920, + "src": "99:68:55", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "3c555938", + "id": 16893, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getDeveloperFeeBp", + "nameLocation": "182:17:55", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 16889, + "nodeType": "ParameterList", + "parameters": [], + "src": "199:2:55" + }, + "returnParameters": { + "id": 16892, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16891, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 16893, + "src": "225:7:55", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 16890, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "225:7:55", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "224:9:55" + }, + "scope": 16920, + "src": "173:61:55", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "0470d3ac", + "id": 16898, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getDeveloperWallet", + "nameLocation": "249:18:55", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 16894, + "nodeType": "ParameterList", + "parameters": [], + "src": "267:2:55" + }, + "returnParameters": { + "id": 16897, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16896, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 16898, + "src": "293:7:55", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16895, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "293:7:55", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "292:9:55" + }, + "scope": 16920, + "src": "240:62:55", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "12b357b5", + "id": 16905, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "isCMAccount", + "nameLocation": "317:11:55", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 16901, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16900, + "mutability": "mutable", + "name": "account", + "nameLocation": "337:7:55", + "nodeType": "VariableDeclaration", + "scope": 16905, + "src": "329:15:55", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16899, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "329:7:55", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "328:17:55" + }, + "returnParameters": { + "id": 16904, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16903, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 16905, + "src": "369:4:55", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 16902, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "369:4:55", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "368:6:55" + }, + "scope": 16920, + "src": "308:67:55", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "352af39a", + "id": 16912, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getRegisteredServiceHashByName", + "nameLocation": "390:30:55", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 16908, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16907, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "435:11:55", + "nodeType": "VariableDeclaration", + "scope": 16912, + "src": "421:25:55", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 16906, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "421:6:55", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "420:27:55" + }, + "returnParameters": { + "id": 16911, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16910, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "479:11:55", + "nodeType": "VariableDeclaration", + "scope": 16912, + "src": "471:19:55", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 16909, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "471:7:55", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "470:21:55" + }, + "scope": 16920, + "src": "381:111:55", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "5a81a626", + "id": 16919, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getRegisteredServiceNameByHash", + "nameLocation": "507:30:55", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 16915, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16914, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "546:11:55", + "nodeType": "VariableDeclaration", + "scope": 16919, + "src": "538:19:55", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 16913, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "538:7:55", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "537:21:55" + }, + "returnParameters": { + "id": 16918, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16917, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "596:11:55", + "nodeType": "VariableDeclaration", + "scope": 16919, + "src": "582:25:55", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 16916, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "582:6:55", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "581:27:55" + }, + "scope": 16920, + "src": "498:111:55", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 16921, + "src": "65:546:55", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "40:572:55" + }, + "id": 55 + }, + "contracts/manager/test/CMAccountManagerTest.sol": { + "ast": { + "absolutePath": "contracts/manager/test/CMAccountManagerTest.sol", + "exportedSymbols": { + "CMAccountManager": [ + 16881 + ], + "CMAccountManagerTest": [ + 16935 + ] + }, + "id": 16936, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 16922, + "literals": [ + "solidity", + "0.8", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "149:23:56" + }, + { + "absolutePath": "contracts/manager/CMAccountManager.sol", + "file": "../CMAccountManager.sol", + "id": 16924, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 16936, + "sourceUnit": 16882, + "src": "174:59:56", + "symbolAliases": [ + { + "foreign": { + "id": 16923, + "name": "CMAccountManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16881, + "src": "183:16:56", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 16925, + "name": "CMAccountManager", + "nameLocations": [ + "268:16:56" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16881, + "src": "268:16:56" + }, + "id": 16926, + "nodeType": "InheritanceSpecifier", + "src": "268:16:56" + } + ], + "canonicalName": "CMAccountManagerTest", + "contractDependencies": [ + 3580 + ], + "contractKind": "contract", + "fullyImplemented": true, + "id": 16935, + "linearizedBaseContracts": [ + 16935, + 16881, + 18165, + 3107, + 1022, + 3405, + 586, + 362, + 3147, + 6389, + 3256, + 3230, + 2978, + 2802, + 840 + ], + "name": "CMAccountManagerTest", + "nameLocation": "244:20:56", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 16933, + "nodeType": "Block", + "src": "349:33:56", + "statements": [ + { + "expression": { + "hexValue": "54455354494e47", + "id": 16931, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "366:9:56", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_565f46e8b5b2e1fb9e412451c870ebda37fab600cca232ac63eccf4710b8ced3", + "typeString": "literal_string \"TESTING\"" + }, + "value": "TESTING" + }, + "functionReturnParameters": 16930, + "id": 16932, + "nodeType": "Return", + "src": "359:16:56" + } + ] + }, + "functionSelector": "0d8e6e2c", + "id": 16934, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getVersion", + "nameLocation": "300:10:56", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 16927, + "nodeType": "ParameterList", + "parameters": [], + "src": "310:2:56" + }, + "returnParameters": { + "id": 16930, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16929, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 16934, + "src": "334:13:56", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 16928, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "334:6:56", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "333:15:56" + }, + "scope": 16935, + "src": "291:91:56", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + } + ], + "scope": 16936, + "src": "235:319:56", + "usedErrors": [ + 603, + 606, + 867, + 872, + 2841, + 2844, + 3009, + 3157, + 3160, + 3600, + 3613, + 5232, + 5521, + 5524, + 16189, + 16194, + 16199, + 16204, + 16211, + 17889, + 17891 + ], + "usedEvents": [ + 611, + 2833, + 2838, + 3169, + 3178, + 3187, + 3350, + 16156, + 16163, + 16170, + 16177, + 16184, + 17879, + 17885 + ] + } + ], + "src": "149:406:56" + }, + "id": 56 + }, + "contracts/partner/PartnerConfiguration.sol": { + "ast": { + "absolutePath": "contracts/partner/PartnerConfiguration.sol", + "exportedSymbols": { + "EnumerableSet": [ + 10517 + ], + "Initializable": [ + 840 + ], + "PartnerConfiguration": [ + 17836 + ] + }, + "id": 17837, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 16937, + "literals": [ + "solidity", + "0.8", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "85:23:57" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "id": 16939, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 17837, + "sourceUnit": 841, + "src": "110:98:57", + "symbolAliases": [ + { + "foreign": { + "id": 16938, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 840, + "src": "119:13:57", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/structs/EnumerableSet.sol", + "file": "@openzeppelin/contracts/utils/structs/EnumerableSet.sol", + "id": 16941, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 17837, + "sourceUnit": 10518, + "src": "209:88:57", + "symbolAliases": [ + { + "foreign": { + "id": 16940, + "name": "EnumerableSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10517, + "src": "218:13:57", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 16943, + "name": "Initializable", + "nameLocations": [ + "510:13:57" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 840, + "src": "510:13:57" + }, + "id": 16944, + "nodeType": "InheritanceSpecifier", + "src": "510:13:57" + } + ], + "canonicalName": "PartnerConfiguration", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 16942, + "nodeType": "StructuredDocumentation", + "src": "299:168:57", + "text": " @title PartnerConfiguration\n @notice Partner Configuration is used by the {CMAccount} contract to register\n supported and wanted services by the partner." + }, + "fullyImplemented": true, + "id": 17836, + "linearizedBaseContracts": [ + 17836, + 840 + ], + "name": "PartnerConfiguration", + "nameLocation": "486:20:57", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 16948, + "libraryName": { + "id": 16945, + "name": "EnumerableSet", + "nameLocations": [ + "536:13:57" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10517, + "src": "536:13:57" + }, + "nodeType": "UsingForDirective", + "src": "530:49:57", + "typeName": { + "id": 16947, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 16946, + "name": "EnumerableSet.Bytes32Set", + "nameLocations": [ + "554:13:57", + "568:10:57" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10109, + "src": "554:24:57" + }, + "referencedDeclaration": 10109, + "src": "554:24:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$10109_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + } + }, + { + "global": false, + "id": 16952, + "libraryName": { + "id": 16949, + "name": "EnumerableSet", + "nameLocations": [ + "590:13:57" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10517, + "src": "590:13:57" + }, + "nodeType": "UsingForDirective", + "src": "584:49:57", + "typeName": { + "id": 16951, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 16950, + "name": "EnumerableSet.AddressSet", + "nameLocations": [ + "608:13:57", + "622:10:57" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10230, + "src": "608:24:57" + }, + "referencedDeclaration": 10230, + "src": "608:24:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$10230_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + } + }, + { + "canonicalName": "PartnerConfiguration.Service", + "documentation": { + "id": 16953, + "nodeType": "StructuredDocumentation", + "src": "812:85:57", + "text": " @notice Struct for storing supported service details for suppliers" + }, + "id": 16962, + "members": [ + { + "constant": false, + "id": 16955, + "mutability": "mutable", + "name": "_fee", + "nameLocation": "935:4:57", + "nodeType": "VariableDeclaration", + "scope": 16962, + "src": "927:12:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 16954, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "927:7:57", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 16958, + "mutability": "mutable", + "name": "_restrictedRate", + "nameLocation": "1112:15:57", + "nodeType": "VariableDeclaration", + "scope": 16962, + "src": "1107:20:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 16957, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1107:4:57", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 16961, + "mutability": "mutable", + "name": "_capabilities", + "nameLocation": "1146:13:57", + "nodeType": "VariableDeclaration", + "scope": 16962, + "src": "1137:22:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 16959, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1137:6:57", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 16960, + "nodeType": "ArrayTypeName", + "src": "1137:8:57", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + } + ], + "name": "Service", + "nameLocation": "909:7:57", + "nodeType": "StructDefinition", + "scope": 17836, + "src": "902:264:57", + "visibility": "public" + }, + { + "canonicalName": "PartnerConfiguration.PaymentInfo", + "id": 16968, + "members": [ + { + "constant": false, + "id": 16964, + "mutability": "mutable", + "name": "_supportsOffChainPayment", + "nameLocation": "1206:24:57", + "nodeType": "VariableDeclaration", + "scope": 16968, + "src": "1201:29:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 16963, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1201:4:57", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 16967, + "mutability": "mutable", + "name": "_supportedTokens", + "nameLocation": "1304:16:57", + "nodeType": "VariableDeclaration", + "scope": 16968, + "src": "1279:41:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$10230_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "id": 16966, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 16965, + "name": "EnumerableSet.AddressSet", + "nameLocations": [ + "1279:13:57", + "1293:10:57" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10230, + "src": "1279:24:57" + }, + "referencedDeclaration": 10230, + "src": "1279:24:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$10230_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "visibility": "internal" + } + ], + "name": "PaymentInfo", + "nameLocation": "1179:11:57", + "nodeType": "StructDefinition", + "scope": 17836, + "src": "1172:195:57", + "visibility": "public" + }, + { + "canonicalName": "PartnerConfiguration.PartnerConfigurationStorage", + "documentation": { + "id": 16969, + "nodeType": "StructuredDocumentation", + "src": "1373:82:57", + "text": "@custom:storage-location erc7201:camino.messenger.storage.PartnerConfiguration" + }, + "id": 16991, + "members": [ + { + "constant": false, + "id": 16972, + "mutability": "mutable", + "name": "_servicesHashSet", + "nameLocation": "1573:16:57", + "nodeType": "VariableDeclaration", + "scope": 16991, + "src": "1548:41:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$10109_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + }, + "typeName": { + "id": 16971, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 16970, + "name": "EnumerableSet.Bytes32Set", + "nameLocations": [ + "1548:13:57", + "1562:10:57" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10109, + "src": "1548:24:57" + }, + "referencedDeclaration": 10109, + "src": "1548:24:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$10109_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 16977, + "mutability": "mutable", + "name": "_supportedServices", + "nameLocation": "1709:18:57", + "nodeType": "VariableDeclaration", + "scope": 16991, + "src": "1659:68:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Service_$16962_storage_$", + "typeString": "mapping(bytes32 => struct PartnerConfiguration.Service)" + }, + "typeName": { + "id": 16976, + "keyName": "_serviceHash", + "keyNameLocation": "1675:12:57", + "keyType": { + "id": 16973, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1667:7:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "1659:49:57", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Service_$16962_storage_$", + "typeString": "mapping(bytes32 => struct PartnerConfiguration.Service)" + }, + "valueName": "_service", + "valueNameLocation": "1699:8:57", + "valueType": { + "id": 16975, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 16974, + "name": "Service", + "nameLocations": [ + "1691:7:57" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16962, + "src": "1691:7:57" + }, + "referencedDeclaration": 16962, + "src": "1691:7:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$16962_storage_ptr", + "typeString": "struct PartnerConfiguration.Service" + } + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 16980, + "mutability": "mutable", + "name": "_paymentInfo", + "nameLocation": "1768:12:57", + "nodeType": "VariableDeclaration", + "scope": 16991, + "src": "1756:24:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentInfo_$16968_storage_ptr", + "typeString": "struct PartnerConfiguration.PaymentInfo" + }, + "typeName": { + "id": 16979, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 16978, + "name": "PaymentInfo", + "nameLocations": [ + "1756:11:57" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16968, + "src": "1756:11:57" + }, + "referencedDeclaration": 16968, + "src": "1756:11:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentInfo_$16968_storage_ptr", + "typeString": "struct PartnerConfiguration.PaymentInfo" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 16983, + "mutability": "mutable", + "name": "_publicKeyAddressesSet", + "nameLocation": "1886:22:57", + "nodeType": "VariableDeclaration", + "scope": 16991, + "src": "1861:47:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$10230_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "id": 16982, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 16981, + "name": "EnumerableSet.AddressSet", + "nameLocations": [ + "1861:13:57", + "1875:10:57" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10230, + "src": "1861:24:57" + }, + "referencedDeclaration": 10230, + "src": "1861:24:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$10230_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 16987, + "mutability": "mutable", + "name": "_publicKeys", + "nameLocation": "2040:11:57", + "nodeType": "VariableDeclaration", + "scope": 16991, + "src": "1987:64:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bytes_storage_$", + "typeString": "mapping(address => bytes)" + }, + "typeName": { + "id": 16986, + "keyName": "publicKeyAddress", + "keyNameLocation": "2003:16:57", + "keyType": { + "id": 16984, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1995:7:57", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1987:52:57", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bytes_storage_$", + "typeString": "mapping(address => bytes)" + }, + "valueName": "publicKey", + "valueNameLocation": "2029:9:57", + "valueType": { + "id": 16985, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2023:5:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 16990, + "mutability": "mutable", + "name": "_wantedServicesHashSet", + "nameLocation": "2141:22:57", + "nodeType": "VariableDeclaration", + "scope": 16991, + "src": "2116:47:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$10109_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + }, + "typeName": { + "id": 16989, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 16988, + "name": "EnumerableSet.Bytes32Set", + "nameLocations": [ + "2116:13:57", + "2130:10:57" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10109, + "src": "2116:24:57" + }, + "referencedDeclaration": 10109, + "src": "2116:24:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$10109_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + }, + "visibility": "internal" + } + ], + "name": "PartnerConfigurationStorage", + "nameLocation": "1467:27:57", + "nodeType": "StructDefinition", + "scope": 17836, + "src": "1460:710:57", + "visibility": "public" + }, + { + "constant": true, + "id": 16994, + "mutability": "constant", + "name": "PartnerConfigurationStorageLocation", + "nameLocation": "2330:35:57", + "nodeType": "VariableDeclaration", + "scope": 17836, + "src": "2305:137:57", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 16992, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2305:7:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307866323835366535653162373638396463646531626235353166643131356333636164386432343365613630396434376134366234643232656535386433303030", + "id": 16993, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2376:66:57", + "typeDescriptions": { + "typeIdentifier": "t_rational_109695461745991320572768326828640350552342084100038240268071478376876378763264_by_1", + "typeString": "int_const 1096...(70 digits omitted)...3264" + }, + "value": "0xf2856e5e1b7689dcde1bb551fd115c3cad8d243ea609d47a46b4d22ee58d3000" + }, + "visibility": "private" + }, + { + "body": { + "id": 17001, + "nodeType": "Block", + "src": "2553:94:57", + "statements": [ + { + "AST": { + "nativeSrc": "2572:69:57", + "nodeType": "YulBlock", + "src": "2572:69:57", + "statements": [ + { + "nativeSrc": "2586:45:57", + "nodeType": "YulAssignment", + "src": "2586:45:57", + "value": { + "name": "PartnerConfigurationStorageLocation", + "nativeSrc": "2596:35:57", + "nodeType": "YulIdentifier", + "src": "2596:35:57" + }, + "variableNames": [ + { + "name": "$.slot", + "nativeSrc": "2586:6:57", + "nodeType": "YulIdentifier", + "src": "2586:6:57" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 16998, + "isOffset": false, + "isSlot": true, + "src": "2586:6:57", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 16994, + "isOffset": false, + "isSlot": false, + "src": "2596:35:57", + "valueSize": 1 + } + ], + "id": 17000, + "nodeType": "InlineAssembly", + "src": "2563:78:57" + } + ] + }, + "id": 17002, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getPartnerConfigurationStorage", + "nameLocation": "2458:31:57", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 16995, + "nodeType": "ParameterList", + "parameters": [], + "src": "2489:2:57" + }, + "returnParameters": { + "id": 16999, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 16998, + "mutability": "mutable", + "name": "$", + "nameLocation": "2550:1:57", + "nodeType": "VariableDeclaration", + "scope": 17002, + "src": "2514:37:57", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 16997, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 16996, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "2514:27:57" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16991, + "src": "2514:27:57" + }, + "referencedDeclaration": 16991, + "src": "2514:27:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "src": "2513:39:57" + }, + "scope": 17836, + "src": "2449:198:57", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "errorSelector": "010f1dd8", + "id": 17006, + "name": "ServiceAlreadyExists", + "nameLocation": "2832:20:57", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 17005, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17004, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "2861:11:57", + "nodeType": "VariableDeclaration", + "scope": 17006, + "src": "2853:19:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 17003, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2853:7:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2852:21:57" + }, + "src": "2826:48:57" + }, + { + "errorSelector": "7a5bdbb4", + "id": 17010, + "name": "ServiceDoesNotExist", + "nameLocation": "2885:19:57", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 17009, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17008, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "2913:11:57", + "nodeType": "VariableDeclaration", + "scope": 17010, + "src": "2905:19:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 17007, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2905:7:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2904:21:57" + }, + "src": "2879:47:57" + }, + { + "errorSelector": "1a1e0569", + "id": 17014, + "name": "WantedServiceAlreadyExists", + "nameLocation": "2938:26:57", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 17013, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17012, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "2973:11:57", + "nodeType": "VariableDeclaration", + "scope": 17014, + "src": "2965:19:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 17011, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2965:7:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "2964:21:57" + }, + "src": "2932:54:57" + }, + { + "errorSelector": "fd5cb3e2", + "id": 17018, + "name": "WantedServiceDoesNotExist", + "nameLocation": "2997:25:57", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 17017, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17016, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "3031:11:57", + "nodeType": "VariableDeclaration", + "scope": 17018, + "src": "3023:19:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 17015, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3023:7:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "3022:21:57" + }, + "src": "2991:53:57" + }, + { + "errorSelector": "50e5f7f2", + "id": 17022, + "name": "PaymentTokenAlreadyExists", + "nameLocation": "3056:25:57", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 17021, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17020, + "mutability": "mutable", + "name": "token", + "nameLocation": "3090:5:57", + "nodeType": "VariableDeclaration", + "scope": 17022, + "src": "3082:13:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 17019, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3082:7:57", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3081:15:57" + }, + "src": "3050:47:57" + }, + { + "errorSelector": "54cb99c4", + "id": 17026, + "name": "PaymentTokenDoesNotExist", + "nameLocation": "3108:24:57", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 17025, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17024, + "mutability": "mutable", + "name": "token", + "nameLocation": "3141:5:57", + "nodeType": "VariableDeclaration", + "scope": 17026, + "src": "3133:13:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 17023, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3133:7:57", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3132:15:57" + }, + "src": "3102:46:57" + }, + { + "errorSelector": "d3083f18", + "id": 17030, + "name": "PublicKeyAlreadyExists", + "nameLocation": "3160:22:57", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 17029, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17028, + "mutability": "mutable", + "name": "pubKeyAddress", + "nameLocation": "3191:13:57", + "nodeType": "VariableDeclaration", + "scope": 17030, + "src": "3183:21:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 17027, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3183:7:57", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3182:23:57" + }, + "src": "3154:52:57" + }, + { + "errorSelector": "ba650b5f", + "id": 17034, + "name": "PublicKeyDoesNotExist", + "nameLocation": "3217:21:57", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 17033, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17032, + "mutability": "mutable", + "name": "pubKeyAddress", + "nameLocation": "3247:13:57", + "nodeType": "VariableDeclaration", + "scope": 17034, + "src": "3239:21:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 17031, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3239:7:57", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3238:23:57" + }, + "src": "3211:51:57" + }, + { + "errorSelector": "fe2915cf", + "id": 17038, + "name": "InvalidPublicKeyUseType", + "nameLocation": "3273:23:57", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 17037, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17036, + "mutability": "mutable", + "name": "use", + "nameLocation": "3303:3:57", + "nodeType": "VariableDeclaration", + "scope": 17038, + "src": "3297:9:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 17035, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "3297:5:57", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + } + ], + "src": "3296:11:57" + }, + "src": "3267:41:57" + }, + { + "anonymous": false, + "eventSelector": "a317c10673baf4f03b3c1041bd5ddbb537d0333a86fec3607c75f9dbb630f48f", + "id": 17042, + "name": "PaymentTokenAdded", + "nameLocation": "3493:17:57", + "nodeType": "EventDefinition", + "parameters": { + "id": 17041, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17040, + "indexed": true, + "mutability": "mutable", + "name": "token", + "nameLocation": "3527:5:57", + "nodeType": "VariableDeclaration", + "scope": 17042, + "src": "3511:21:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 17039, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3511:7:57", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3510:23:57" + }, + "src": "3487:47:57" + }, + { + "anonymous": false, + "eventSelector": "85a3e72f8dd6db3794f93109c3c5f5b79d6112f6979431c45f98b26134b42af2", + "id": 17046, + "name": "PaymentTokenRemoved", + "nameLocation": "3545:19:57", + "nodeType": "EventDefinition", + "parameters": { + "id": 17045, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17044, + "indexed": true, + "mutability": "mutable", + "name": "token", + "nameLocation": "3581:5:57", + "nodeType": "VariableDeclaration", + "scope": 17046, + "src": "3565:21:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 17043, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3565:7:57", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3564:23:57" + }, + "src": "3539:49:57" + }, + { + "anonymous": false, + "eventSelector": "e93ceb76efb130156c6aa39fa4ac986b3f683b6da926496fca3f95ea7fe715e3", + "id": 17050, + "name": "OffChainPaymentSupportUpdated", + "nameLocation": "3600:29:57", + "nodeType": "EventDefinition", + "parameters": { + "id": 17049, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17048, + "indexed": false, + "mutability": "mutable", + "name": "supportsOffChainPayment", + "nameLocation": "3635:23:57", + "nodeType": "VariableDeclaration", + "scope": 17050, + "src": "3630:28:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 17047, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3630:4:57", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "3629:30:57" + }, + "src": "3594:66:57" + }, + { + "anonymous": false, + "eventSelector": "928ec246afda323bc23c2815ca3f516e9fc6a7b7179772235c221e132545fe82", + "id": 17054, + "name": "PublicKeyAdded", + "nameLocation": "3672:14:57", + "nodeType": "EventDefinition", + "parameters": { + "id": 17053, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17052, + "indexed": true, + "mutability": "mutable", + "name": "pubKeyAddress", + "nameLocation": "3703:13:57", + "nodeType": "VariableDeclaration", + "scope": 17054, + "src": "3687:29:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 17051, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3687:7:57", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3686:31:57" + }, + "src": "3666:52:57" + }, + { + "anonymous": false, + "eventSelector": "c5a9b8041ef11732e7dd7043167d8c22db5c7ea99dcd38dce401effacf8a29bf", + "id": 17058, + "name": "PublicKeyRemoved", + "nameLocation": "3729:16:57", + "nodeType": "EventDefinition", + "parameters": { + "id": 17057, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17056, + "indexed": true, + "mutability": "mutable", + "name": "pubKeyAddress", + "nameLocation": "3762:13:57", + "nodeType": "VariableDeclaration", + "scope": 17058, + "src": "3746:29:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 17055, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3746:7:57", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "3745:31:57" + }, + "src": "3723:54:57" + }, + { + "body": { + "id": 17063, + "nodeType": "Block", + "src": "4021:2:57", + "statements": [] + }, + "id": 17064, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 17061, + "kind": "modifierInvocation", + "modifierName": { + "id": 17060, + "name": "onlyInitializing", + "nameLocations": [ + "4004:16:57" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 749, + "src": "4004:16:57" + }, + "nodeType": "ModifierInvocation", + "src": "4004:16:57" + } + ], + "name": "__PartnerConfiguration_init", + "nameLocation": "3965:27:57", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 17059, + "nodeType": "ParameterList", + "parameters": [], + "src": "3992:2:57" + }, + "returnParameters": { + "id": 17062, + "nodeType": "ParameterList", + "parameters": [], + "src": "4021:0:57" + }, + "scope": 17836, + "src": "3956:67:57", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 17069, + "nodeType": "Block", + "src": "4104:2:57", + "statements": [] + }, + "id": 17070, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 17067, + "kind": "modifierInvocation", + "modifierName": { + "id": 17066, + "name": "onlyInitializing", + "nameLocations": [ + "4087:16:57" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 749, + "src": "4087:16:57" + }, + "nodeType": "ModifierInvocation", + "src": "4087:16:57" + } + ], + "name": "__PartnerConfiguration_init_unchained", + "nameLocation": "4038:37:57", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 17065, + "nodeType": "ParameterList", + "parameters": [], + "src": "4075:2:57" + }, + "returnParameters": { + "id": 17068, + "nodeType": "ParameterList", + "parameters": [], + "src": "4104:0:57" + }, + "scope": 17836, + "src": "4029:77:57", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 17117, + "nodeType": "Block", + "src": "4749:468:57", + "statements": [ + { + "assignments": [ + 17085 + ], + "declarations": [ + { + "constant": false, + "id": 17085, + "mutability": "mutable", + "name": "$", + "nameLocation": "4795:1:57", + "nodeType": "VariableDeclaration", + "scope": 17117, + "src": "4759:37:57", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 17084, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 17083, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "4759:27:57" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16991, + "src": "4759:27:57" + }, + "referencedDeclaration": 16991, + "src": "4759:27:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 17088, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 17086, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17002, + "src": "4799:31:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$16991_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 17087, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4799:33:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4759:73:57" + }, + { + "assignments": [ + 17090 + ], + "declarations": [ + { + "constant": false, + "id": 17090, + "mutability": "mutable", + "name": "added", + "nameLocation": "4907:5:57", + "nodeType": "VariableDeclaration", + "scope": 17117, + "src": "4902:10:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 17089, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4902:4:57", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 17096, + "initialValue": { + "arguments": [ + { + "id": 17094, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17073, + "src": "4938:11:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "expression": { + "id": 17091, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17085, + "src": "4915:1:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 17092, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4917:16:57", + "memberName": "_servicesHashSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 16972, + "src": "4915:18:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$10109_storage", + "typeString": "struct EnumerableSet.Bytes32Set storage ref" + } + }, + "id": 17093, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4934:3:57", + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 10127, + "src": "4915:22:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32Set_$10109_storage_ptr_$_t_bytes32_$returns$_t_bool_$attached_to$_t_struct$_Bytes32Set_$10109_storage_ptr_$", + "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 17095, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4915:35:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4902:48:57" + }, + { + "condition": { + "id": 17098, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4964:6:57", + "subExpression": { + "id": 17097, + "name": "added", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17090, + "src": "4965:5:57", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 17104, + "nodeType": "IfStatement", + "src": "4960:77:57", + "trueBody": { + "id": 17103, + "nodeType": "Block", + "src": "4972:65:57", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 17100, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17073, + "src": "5014:11:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 17099, + "name": "ServiceAlreadyExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17006, + "src": "4993:20:57", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$", + "typeString": "function (bytes32) pure" + } + }, + "id": 17101, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4993:33:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 17102, + "nodeType": "RevertStatement", + "src": "4986:40:57" + } + ] + } + }, + { + "expression": { + "id": 17115, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 17105, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17085, + "src": "5046:1:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 17108, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5048:18:57", + "memberName": "_supportedServices", + "nodeType": "MemberAccess", + "referencedDeclaration": 16977, + "src": "5046:20:57", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Service_$16962_storage_$", + "typeString": "mapping(bytes32 => struct PartnerConfiguration.Service storage ref)" + } + }, + "id": 17109, + "indexExpression": { + "id": 17107, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17073, + "src": "5067:11:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5046:33:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$16962_storage", + "typeString": "struct PartnerConfiguration.Service storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 17111, + "name": "fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17075, + "src": "5110:3:57", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 17112, + "name": "capabilities", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17078, + "src": "5142:12:57", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + { + "id": 17113, + "name": "restrictedRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17080, + "src": "5185:14:57", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 17110, + "name": "Service", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 16962, + "src": "5082:7:57", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_Service_$16962_storage_ptr_$", + "typeString": "type(struct PartnerConfiguration.Service storage pointer)" + } + }, + "id": 17114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [ + "5104:4:57", + "5127:13:57", + "5168:15:57" + ], + "names": [ + "_fee", + "_capabilities", + "_restrictedRate" + ], + "nodeType": "FunctionCall", + "src": "5082:128:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$16962_memory_ptr", + "typeString": "struct PartnerConfiguration.Service memory" + } + }, + "src": "5046:164:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$16962_storage", + "typeString": "struct PartnerConfiguration.Service storage ref" + } + }, + "id": 17116, + "nodeType": "ExpressionStatement", + "src": "5046:164:57" + } + ] + }, + "documentation": { + "id": 17071, + "nodeType": "StructuredDocumentation", + "src": "4285:298:57", + "text": " @notice Adds a supported Service object for a given hash.\n @param serviceHash Hash of the service\n @param fee Fee for the service\n @param capabilities Capabilities for the service\n @param restrictedRate If the service is restricted to pre-agreement" + }, + "id": 17118, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addService", + "nameLocation": "4597:11:57", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 17081, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17073, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "4626:11:57", + "nodeType": "VariableDeclaration", + "scope": 17118, + "src": "4618:19:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 17072, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4618:7:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 17075, + "mutability": "mutable", + "name": "fee", + "nameLocation": "4655:3:57", + "nodeType": "VariableDeclaration", + "scope": 17118, + "src": "4647:11:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 17074, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4647:7:57", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 17078, + "mutability": "mutable", + "name": "capabilities", + "nameLocation": "4684:12:57", + "nodeType": "VariableDeclaration", + "scope": 17118, + "src": "4668:28:57", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 17076, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4668:6:57", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 17077, + "nodeType": "ArrayTypeName", + "src": "4668:8:57", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 17080, + "mutability": "mutable", + "name": "restrictedRate", + "nameLocation": "4711:14:57", + "nodeType": "VariableDeclaration", + "scope": 17118, + "src": "4706:19:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 17079, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4706:4:57", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "4608:123:57" + }, + "returnParameters": { + "id": 17082, + "nodeType": "ParameterList", + "parameters": [], + "src": "4749:0:57" + }, + "scope": 17836, + "src": "4588:629:57", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 17152, + "nodeType": "Block", + "src": "5422:329:57", + "statements": [ + { + "assignments": [ + 17126 + ], + "declarations": [ + { + "constant": false, + "id": 17126, + "mutability": "mutable", + "name": "$", + "nameLocation": "5468:1:57", + "nodeType": "VariableDeclaration", + "scope": 17152, + "src": "5432:37:57", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 17125, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 17124, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "5432:27:57" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16991, + "src": "5432:27:57" + }, + "referencedDeclaration": 16991, + "src": "5432:27:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 17129, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 17127, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17002, + "src": "5472:31:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$16991_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 17128, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5472:33:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5432:73:57" + }, + { + "assignments": [ + 17131 + ], + "declarations": [ + { + "constant": false, + "id": 17131, + "mutability": "mutable", + "name": "removed", + "nameLocation": "5558:7:57", + "nodeType": "VariableDeclaration", + "scope": 17152, + "src": "5553:12:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 17130, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5553:4:57", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 17137, + "initialValue": { + "arguments": [ + { + "id": 17135, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17121, + "src": "5594:11:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "expression": { + "id": 17132, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17126, + "src": "5568:1:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 17133, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5570:16:57", + "memberName": "_servicesHashSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 16972, + "src": "5568:18:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$10109_storage", + "typeString": "struct EnumerableSet.Bytes32Set storage ref" + } + }, + "id": 17134, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5587:6:57", + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 10145, + "src": "5568:25:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32Set_$10109_storage_ptr_$_t_bytes32_$returns$_t_bool_$attached_to$_t_struct$_Bytes32Set_$10109_storage_ptr_$", + "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 17136, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5568:38:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5553:53:57" + }, + { + "condition": { + "id": 17139, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "5620:8:57", + "subExpression": { + "id": 17138, + "name": "removed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17131, + "src": "5621:7:57", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 17145, + "nodeType": "IfStatement", + "src": "5616:78:57", + "trueBody": { + "id": 17144, + "nodeType": "Block", + "src": "5630:64:57", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 17141, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17121, + "src": "5671:11:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 17140, + "name": "ServiceDoesNotExist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17010, + "src": "5651:19:57", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$", + "typeString": "function (bytes32) pure" + } + }, + "id": 17142, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5651:32:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 17143, + "nodeType": "RevertStatement", + "src": "5644:39:57" + } + ] + } + }, + { + "expression": { + "id": 17150, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "5704:40:57", + "subExpression": { + "baseExpression": { + "expression": { + "id": 17146, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17126, + "src": "5711:1:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 17147, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5713:18:57", + "memberName": "_supportedServices", + "nodeType": "MemberAccess", + "referencedDeclaration": 16977, + "src": "5711:20:57", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Service_$16962_storage_$", + "typeString": "mapping(bytes32 => struct PartnerConfiguration.Service storage ref)" + } + }, + "id": 17149, + "indexExpression": { + "id": 17148, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17121, + "src": "5732:11:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5711:33:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$16962_storage", + "typeString": "struct PartnerConfiguration.Service storage ref" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 17151, + "nodeType": "ExpressionStatement", + "src": "5704:40:57" + } + ] + }, + "documentation": { + "id": 17119, + "nodeType": "StructuredDocumentation", + "src": "5223:132:57", + "text": " @notice Removes a supported Service object for a given hash.\n @param serviceHash Hash of the service" + }, + "id": 17153, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeService", + "nameLocation": "5369:14:57", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 17122, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17121, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "5392:11:57", + "nodeType": "VariableDeclaration", + "scope": 17153, + "src": "5384:19:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 17120, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5384:7:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5383:21:57" + }, + "returnParameters": { + "id": 17123, + "nodeType": "ParameterList", + "parameters": [], + "src": "5422:0:57" + }, + "scope": 17836, + "src": "5360:391:57", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 17181, + "nodeType": "Block", + "src": "5977:230:57", + "statements": [ + { + "assignments": [ + 17163 + ], + "declarations": [ + { + "constant": false, + "id": 17163, + "mutability": "mutable", + "name": "$", + "nameLocation": "6023:1:57", + "nodeType": "VariableDeclaration", + "scope": 17181, + "src": "5987:37:57", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 17162, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 17161, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "5987:27:57" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16991, + "src": "5987:27:57" + }, + "referencedDeclaration": 16991, + "src": "5987:27:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 17166, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 17164, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17002, + "src": "6027:31:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$16991_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 17165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6027:33:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5987:73:57" + }, + { + "expression": { + "arguments": [ + { + "id": 17168, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17156, + "src": "6130:11:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 17169, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17163, + "src": "6143:1:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + ], + "id": 17167, + "name": "_checkServiceExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17495, + "src": "6110:19:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_struct$_PartnerConfigurationStorage_$16991_storage_ptr_$returns$__$", + "typeString": "function (bytes32,struct PartnerConfiguration.PartnerConfigurationStorage storage pointer) view" + } + }, + "id": 17170, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6110:35:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 17171, + "nodeType": "ExpressionStatement", + "src": "6110:35:57" + }, + { + "expression": { + "id": 17179, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "baseExpression": { + "expression": { + "id": 17172, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17163, + "src": "6156:1:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 17175, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6158:18:57", + "memberName": "_supportedServices", + "nodeType": "MemberAccess", + "referencedDeclaration": 16977, + "src": "6156:20:57", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Service_$16962_storage_$", + "typeString": "mapping(bytes32 => struct PartnerConfiguration.Service storage ref)" + } + }, + "id": 17176, + "indexExpression": { + "id": 17174, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17156, + "src": "6177:11:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6156:33:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$16962_storage", + "typeString": "struct PartnerConfiguration.Service storage ref" + } + }, + "id": 17177, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "6190:4:57", + "memberName": "_fee", + "nodeType": "MemberAccess", + "referencedDeclaration": 16955, + "src": "6156:38:57", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 17178, + "name": "fee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17158, + "src": "6197:3:57", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6156:44:57", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 17180, + "nodeType": "ExpressionStatement", + "src": "6156:44:57" + } + ] + }, + "documentation": { + "id": 17154, + "nodeType": "StructuredDocumentation", + "src": "5757:140:57", + "text": " @notice Sets the Service fee for a given hash.\n @param serviceHash Hash of the service\n @param fee Fee" + }, + "id": 17182, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setServiceFee", + "nameLocation": "5911:14:57", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 17159, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17156, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "5934:11:57", + "nodeType": "VariableDeclaration", + "scope": 17182, + "src": "5926:19:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 17155, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5926:7:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 17158, + "mutability": "mutable", + "name": "fee", + "nameLocation": "5955:3:57", + "nodeType": "VariableDeclaration", + "scope": 17182, + "src": "5947:11:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 17157, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5947:7:57", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "5925:34:57" + }, + "returnParameters": { + "id": 17160, + "nodeType": "ParameterList", + "parameters": [], + "src": "5977:0:57" + }, + "scope": 17836, + "src": "5902:305:57", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 17210, + "nodeType": "Block", + "src": "6487:252:57", + "statements": [ + { + "assignments": [ + 17192 + ], + "declarations": [ + { + "constant": false, + "id": 17192, + "mutability": "mutable", + "name": "$", + "nameLocation": "6533:1:57", + "nodeType": "VariableDeclaration", + "scope": 17210, + "src": "6497:37:57", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 17191, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 17190, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "6497:27:57" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16991, + "src": "6497:27:57" + }, + "referencedDeclaration": 16991, + "src": "6497:27:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 17195, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 17193, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17002, + "src": "6537:31:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$16991_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 17194, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6537:33:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6497:73:57" + }, + { + "expression": { + "arguments": [ + { + "id": 17197, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17185, + "src": "6640:11:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 17198, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17192, + "src": "6653:1:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + ], + "id": 17196, + "name": "_checkServiceExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17495, + "src": "6620:19:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_struct$_PartnerConfigurationStorage_$16991_storage_ptr_$returns$__$", + "typeString": "function (bytes32,struct PartnerConfiguration.PartnerConfigurationStorage storage pointer) view" + } + }, + "id": 17199, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6620:35:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 17200, + "nodeType": "ExpressionStatement", + "src": "6620:35:57" + }, + { + "expression": { + "id": 17208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "baseExpression": { + "expression": { + "id": 17201, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17192, + "src": "6666:1:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 17204, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6668:18:57", + "memberName": "_supportedServices", + "nodeType": "MemberAccess", + "referencedDeclaration": 16977, + "src": "6666:20:57", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Service_$16962_storage_$", + "typeString": "mapping(bytes32 => struct PartnerConfiguration.Service storage ref)" + } + }, + "id": 17205, + "indexExpression": { + "id": 17203, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17185, + "src": "6687:11:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6666:33:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$16962_storage", + "typeString": "struct PartnerConfiguration.Service storage ref" + } + }, + "id": 17206, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "6700:15:57", + "memberName": "_restrictedRate", + "nodeType": "MemberAccess", + "referencedDeclaration": 16958, + "src": "6666:49:57", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 17207, + "name": "restrictedRate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17187, + "src": "6718:14:57", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "6666:66:57", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 17209, + "nodeType": "ExpressionStatement", + "src": "6666:66:57" + } + ] + }, + "documentation": { + "id": 17183, + "nodeType": "StructuredDocumentation", + "src": "6213:175:57", + "text": " @notice Sets the Service restricted rate for a given hash.\n @param serviceHash Hash of the service\n @param restrictedRate Restricted rate" + }, + "id": 17211, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setServiceRestrictedRate", + "nameLocation": "6402:25:57", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 17188, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17185, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "6436:11:57", + "nodeType": "VariableDeclaration", + "scope": 17211, + "src": "6428:19:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 17184, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6428:7:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 17187, + "mutability": "mutable", + "name": "restrictedRate", + "nameLocation": "6454:14:57", + "nodeType": "VariableDeclaration", + "scope": 17211, + "src": "6449:19:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 17186, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6449:4:57", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "6427:42:57" + }, + "returnParameters": { + "id": 17189, + "nodeType": "ParameterList", + "parameters": [], + "src": "6487:0:57" + }, + "scope": 17836, + "src": "6393:346:57", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 17240, + "nodeType": "Block", + "src": "7018:248:57", + "statements": [ + { + "assignments": [ + 17222 + ], + "declarations": [ + { + "constant": false, + "id": 17222, + "mutability": "mutable", + "name": "$", + "nameLocation": "7064:1:57", + "nodeType": "VariableDeclaration", + "scope": 17240, + "src": "7028:37:57", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 17221, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 17220, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "7028:27:57" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16991, + "src": "7028:27:57" + }, + "referencedDeclaration": 16991, + "src": "7028:27:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 17225, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 17223, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17002, + "src": "7068:31:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$16991_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 17224, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7068:33:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7028:73:57" + }, + { + "expression": { + "arguments": [ + { + "id": 17227, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17214, + "src": "7171:11:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 17228, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17222, + "src": "7184:1:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + ], + "id": 17226, + "name": "_checkServiceExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17495, + "src": "7151:19:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_struct$_PartnerConfigurationStorage_$16991_storage_ptr_$returns$__$", + "typeString": "function (bytes32,struct PartnerConfiguration.PartnerConfigurationStorage storage pointer) view" + } + }, + "id": 17229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7151:35:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 17230, + "nodeType": "ExpressionStatement", + "src": "7151:35:57" + }, + { + "expression": { + "id": 17238, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "baseExpression": { + "expression": { + "id": 17231, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17222, + "src": "7197:1:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 17234, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7199:18:57", + "memberName": "_supportedServices", + "nodeType": "MemberAccess", + "referencedDeclaration": 16977, + "src": "7197:20:57", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Service_$16962_storage_$", + "typeString": "mapping(bytes32 => struct PartnerConfiguration.Service storage ref)" + } + }, + "id": 17235, + "indexExpression": { + "id": 17233, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17214, + "src": "7218:11:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7197:33:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$16962_storage", + "typeString": "struct PartnerConfiguration.Service storage ref" + } + }, + "id": 17236, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "7231:13:57", + "memberName": "_capabilities", + "nodeType": "MemberAccess", + "referencedDeclaration": 16961, + "src": "7197:47:57", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", + "typeString": "string storage ref[] storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 17237, + "name": "capabilities", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17217, + "src": "7247:12:57", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + "src": "7197:62:57", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", + "typeString": "string storage ref[] storage ref" + } + }, + "id": 17239, + "nodeType": "ExpressionStatement", + "src": "7197:62:57" + } + ] + }, + "documentation": { + "id": 17212, + "nodeType": "StructuredDocumentation", + "src": "6745:167:57", + "text": " @notice Sets the Service capabilities for a given hash.\n @param serviceHash Hash of the service\n @param capabilities Capabilities" + }, + "id": 17241, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setServiceCapabilities", + "nameLocation": "6926:23:57", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 17218, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17214, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "6958:11:57", + "nodeType": "VariableDeclaration", + "scope": 17241, + "src": "6950:19:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 17213, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6950:7:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 17217, + "mutability": "mutable", + "name": "capabilities", + "nameLocation": "6987:12:57", + "nodeType": "VariableDeclaration", + "scope": 17241, + "src": "6971:28:57", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 17215, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "6971:6:57", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 17216, + "nodeType": "ArrayTypeName", + "src": "6971:8:57", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + } + ], + "src": "6949:51:57" + }, + "returnParameters": { + "id": 17219, + "nodeType": "ParameterList", + "parameters": [], + "src": "7018:0:57" + }, + "scope": 17836, + "src": "6917:349:57", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 17270, + "nodeType": "Block", + "src": "7521:250:57", + "statements": [ + { + "assignments": [ + 17251 + ], + "declarations": [ + { + "constant": false, + "id": 17251, + "mutability": "mutable", + "name": "$", + "nameLocation": "7567:1:57", + "nodeType": "VariableDeclaration", + "scope": 17270, + "src": "7531:37:57", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 17250, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 17249, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "7531:27:57" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16991, + "src": "7531:27:57" + }, + "referencedDeclaration": 16991, + "src": "7531:27:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 17254, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 17252, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17002, + "src": "7571:31:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$16991_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 17253, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7571:33:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "7531:73:57" + }, + { + "expression": { + "arguments": [ + { + "id": 17256, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17244, + "src": "7674:11:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 17257, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17251, + "src": "7687:1:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + ], + "id": 17255, + "name": "_checkServiceExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17495, + "src": "7654:19:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_struct$_PartnerConfigurationStorage_$16991_storage_ptr_$returns$__$", + "typeString": "function (bytes32,struct PartnerConfiguration.PartnerConfigurationStorage storage pointer) view" + } + }, + "id": 17258, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7654:35:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 17259, + "nodeType": "ExpressionStatement", + "src": "7654:35:57" + }, + { + "expression": { + "arguments": [ + { + "id": 17267, + "name": "capability", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17246, + "src": "7753:10:57", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "expression": { + "expression": { + "baseExpression": { + "expression": { + "id": 17260, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17251, + "src": "7700:1:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 17263, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7702:18:57", + "memberName": "_supportedServices", + "nodeType": "MemberAccess", + "referencedDeclaration": 16977, + "src": "7700:20:57", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Service_$16962_storage_$", + "typeString": "mapping(bytes32 => struct PartnerConfiguration.Service storage ref)" + } + }, + "id": 17264, + "indexExpression": { + "id": 17262, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17244, + "src": "7721:11:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7700:33:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$16962_storage", + "typeString": "struct PartnerConfiguration.Service storage ref" + } + }, + "id": 17265, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7734:13:57", + "memberName": "_capabilities", + "nodeType": "MemberAccess", + "referencedDeclaration": 16961, + "src": "7700:47:57", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", + "typeString": "string storage ref[] storage ref" + } + }, + "id": 17266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "7748:4:57", + "memberName": "push", + "nodeType": "MemberAccess", + "src": "7700:52:57", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_array$_t_string_storage_$dyn_storage_ptr_$_t_string_storage_$returns$__$attached_to$_t_array$_t_string_storage_$dyn_storage_ptr_$", + "typeString": "function (string storage ref[] storage pointer,string storage ref)" + } + }, + "id": 17268, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "7700:64:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 17269, + "nodeType": "ExpressionStatement", + "src": "7700:64:57" + } + ] + }, + "documentation": { + "id": 17242, + "nodeType": "StructuredDocumentation", + "src": "7272:149:57", + "text": " @notice Adds a capability to the service.\n @param serviceHash Hash of the service\n @param capability Capability" + }, + "id": 17271, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addServiceCapability", + "nameLocation": "7435:21:57", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 17247, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17244, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "7465:11:57", + "nodeType": "VariableDeclaration", + "scope": 17271, + "src": "7457:19:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 17243, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7457:7:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 17246, + "mutability": "mutable", + "name": "capability", + "nameLocation": "7492:10:57", + "nodeType": "VariableDeclaration", + "scope": 17271, + "src": "7478:24:57", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 17245, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "7478:6:57", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "7456:47:57" + }, + "returnParameters": { + "id": 17248, + "nodeType": "ParameterList", + "parameters": [], + "src": "7521:0:57" + }, + "scope": 17836, + "src": "7426:345:57", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 17348, + "nodeType": "Block", + "src": "8034:588:57", + "statements": [ + { + "assignments": [ + 17281 + ], + "declarations": [ + { + "constant": false, + "id": 17281, + "mutability": "mutable", + "name": "$", + "nameLocation": "8080:1:57", + "nodeType": "VariableDeclaration", + "scope": 17348, + "src": "8044:37:57", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 17280, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 17279, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "8044:27:57" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16991, + "src": "8044:27:57" + }, + "referencedDeclaration": 16991, + "src": "8044:27:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 17284, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 17282, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17002, + "src": "8084:31:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$16991_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 17283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8084:33:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8044:73:57" + }, + { + "expression": { + "arguments": [ + { + "id": 17286, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17274, + "src": "8187:11:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 17287, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17281, + "src": "8200:1:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + ], + "id": 17285, + "name": "_checkServiceExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17495, + "src": "8167:19:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_struct$_PartnerConfigurationStorage_$16991_storage_ptr_$returns$__$", + "typeString": "function (bytes32,struct PartnerConfiguration.PartnerConfigurationStorage storage pointer) view" + } + }, + "id": 17288, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8167:35:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 17289, + "nodeType": "ExpressionStatement", + "src": "8167:35:57" + }, + { + "assignments": [ + 17294 + ], + "declarations": [ + { + "constant": false, + "id": 17294, + "mutability": "mutable", + "name": "capabilities", + "nameLocation": "8230:12:57", + "nodeType": "VariableDeclaration", + "scope": 17348, + "src": "8213:29:57", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 17292, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "8213:6:57", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 17293, + "nodeType": "ArrayTypeName", + "src": "8213:8:57", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + } + ], + "id": 17300, + "initialValue": { + "expression": { + "baseExpression": { + "expression": { + "id": 17295, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17281, + "src": "8245:1:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 17296, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8247:18:57", + "memberName": "_supportedServices", + "nodeType": "MemberAccess", + "referencedDeclaration": 16977, + "src": "8245:20:57", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Service_$16962_storage_$", + "typeString": "mapping(bytes32 => struct PartnerConfiguration.Service storage ref)" + } + }, + "id": 17298, + "indexExpression": { + "id": 17297, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17274, + "src": "8266:11:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8245:33:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$16962_storage", + "typeString": "struct PartnerConfiguration.Service storage ref" + } + }, + "id": 17299, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8279:13:57", + "memberName": "_capabilities", + "nodeType": "MemberAccess", + "referencedDeclaration": 16961, + "src": "8245:47:57", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", + "typeString": "string storage ref[] storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8213:79:57" + }, + { + "body": { + "id": 17346, + "nodeType": "Block", + "src": "8352:264:57", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "id": 17326, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "arguments": [ + { + "arguments": [ + { + "baseExpression": { + "id": 17315, + "name": "capabilities", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17294, + "src": "8397:12:57", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string storage ref[] storage pointer" + } + }, + "id": 17317, + "indexExpression": { + "id": 17316, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17302, + "src": "8410:1:57", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8397:15:57", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + ], + "expression": { + "id": 17313, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "8380:3:57", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 17314, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "8384:12:57", + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "8380:16:57", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 17318, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8380:33:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 17312, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "8370:9:57", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 17319, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8370:44:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "arguments": [ + { + "arguments": [ + { + "id": 17323, + "name": "capability", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17276, + "src": "8445:10:57", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "expression": { + "id": 17321, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "8428:3:57", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 17322, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "8432:12:57", + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "8428:16:57", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 17324, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8428:28:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 17320, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "8418:9:57", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 17325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8418:39:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "8370:87:57", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 17345, + "nodeType": "IfStatement", + "src": "8366:240:57", + "trueBody": { + "id": 17344, + "nodeType": "Block", + "src": "8459:147:57", + "statements": [ + { + "expression": { + "id": 17336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 17327, + "name": "capabilities", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17294, + "src": "8477:12:57", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string storage ref[] storage pointer" + } + }, + "id": 17329, + "indexExpression": { + "id": 17328, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17302, + "src": "8490:1:57", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8477:15:57", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "baseExpression": { + "id": 17330, + "name": "capabilities", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17294, + "src": "8495:12:57", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string storage ref[] storage pointer" + } + }, + "id": 17335, + "indexExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 17334, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 17331, + "name": "capabilities", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17294, + "src": "8508:12:57", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string storage ref[] storage pointer" + } + }, + "id": 17332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8521:6:57", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "8508:19:57", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "hexValue": "31", + "id": 17333, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8530:1:57", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "8508:23:57", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8495:37:57", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "src": "8477:55:57", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 17337, + "nodeType": "ExpressionStatement", + "src": "8477:55:57" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 17338, + "name": "capabilities", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17294, + "src": "8550:12:57", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string storage ref[] storage pointer" + } + }, + "id": 17340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8563:3:57", + "memberName": "pop", + "nodeType": "MemberAccess", + "src": "8550:16:57", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypop_nonpayable$_t_array$_t_string_storage_$dyn_storage_ptr_$returns$__$attached_to$_t_array$_t_string_storage_$dyn_storage_ptr_$", + "typeString": "function (string storage ref[] storage pointer)" + } + }, + "id": 17341, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8550:18:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 17342, + "nodeType": "ExpressionStatement", + "src": "8550:18:57" + }, + { + "id": 17343, + "nodeType": "Break", + "src": "8586:5:57" + } + ] + } + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 17308, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 17305, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17302, + "src": "8322:1:57", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 17306, + "name": "capabilities", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17294, + "src": "8326:12:57", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string storage ref[] storage pointer" + } + }, + "id": 17307, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8339:6:57", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "8326:19:57", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8322:23:57", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 17347, + "initializationExpression": { + "assignments": [ + 17302 + ], + "declarations": [ + { + "constant": false, + "id": 17302, + "mutability": "mutable", + "name": "i", + "nameLocation": "8315:1:57", + "nodeType": "VariableDeclaration", + "scope": 17347, + "src": "8307:9:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 17301, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8307:7:57", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 17304, + "initialValue": { + "hexValue": "30", + "id": 17303, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8319:1:57", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "8307:13:57" + }, + "isSimpleCounterLoop": true, + "loopExpression": { + "expression": { + "id": 17310, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "8347:3:57", + "subExpression": { + "id": 17309, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17302, + "src": "8347:1:57", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 17311, + "nodeType": "ExpressionStatement", + "src": "8347:3:57" + }, + "nodeType": "ForStatement", + "src": "8302:314:57" + } + ] + }, + "documentation": { + "id": 17272, + "nodeType": "StructuredDocumentation", + "src": "7777:154:57", + "text": " @notice Removes a capability from the service.\n @param serviceHash Hash of the service\n @param capability Capability" + }, + "id": 17349, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeServiceCapability", + "nameLocation": "7945:24:57", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 17277, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17274, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "7978:11:57", + "nodeType": "VariableDeclaration", + "scope": 17349, + "src": "7970:19:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 17273, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7970:7:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 17276, + "mutability": "mutable", + "name": "capability", + "nameLocation": "8005:10:57", + "nodeType": "VariableDeclaration", + "scope": 17349, + "src": "7991:24:57", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 17275, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "7991:6:57", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "7969:47:57" + }, + "returnParameters": { + "id": 17278, + "nodeType": "ParameterList", + "parameters": [], + "src": "8034:0:57" + }, + "scope": 17836, + "src": "7936:686:57", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 17367, + "nodeType": "Block", + "src": "8781:134:57", + "statements": [ + { + "assignments": [ + 17358 + ], + "declarations": [ + { + "constant": false, + "id": 17358, + "mutability": "mutable", + "name": "$", + "nameLocation": "8827:1:57", + "nodeType": "VariableDeclaration", + "scope": 17367, + "src": "8791:37:57", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 17357, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 17356, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "8791:27:57" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16991, + "src": "8791:27:57" + }, + "referencedDeclaration": 16991, + "src": "8791:27:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 17361, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 17359, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17002, + "src": "8831:31:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$16991_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 17360, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8831:33:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8791:73:57" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "expression": { + "id": 17362, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17358, + "src": "8881:1:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 17363, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8883:16:57", + "memberName": "_servicesHashSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 16972, + "src": "8881:18:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$10109_storage", + "typeString": "struct EnumerableSet.Bytes32Set storage ref" + } + }, + "id": 17364, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "8900:6:57", + "memberName": "values", + "nodeType": "MemberAccess", + "referencedDeclaration": 10226, + "src": "8881:25:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32Set_$10109_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$attached_to$_t_struct$_Bytes32Set_$10109_storage_ptr_$", + "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer) view returns (bytes32[] memory)" + } + }, + "id": 17365, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "8881:27:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "functionReturnParameters": 17355, + "id": 17366, + "nodeType": "Return", + "src": "8874:34:57" + } + ] + }, + "documentation": { + "id": 17350, + "nodeType": "StructuredDocumentation", + "src": "8628:64:57", + "text": " @notice Returns all supported service hashes." + }, + "functionSelector": "42072bbd", + "id": 17368, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAllServiceHashes", + "nameLocation": "8706:19:57", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 17351, + "nodeType": "ParameterList", + "parameters": [], + "src": "8725:2:57" + }, + "returnParameters": { + "id": 17355, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17354, + "mutability": "mutable", + "name": "serviceHashes", + "nameLocation": "8766:13:57", + "nodeType": "VariableDeclaration", + "scope": 17368, + "src": "8749:30:57", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 17352, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8749:7:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 17353, + "nodeType": "ArrayTypeName", + "src": "8749:9:57", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "src": "8748:32:57" + }, + "scope": 17836, + "src": "8697:218:57", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 17393, + "nodeType": "Block", + "src": "9647:226:57", + "statements": [ + { + "assignments": [ + 17379 + ], + "declarations": [ + { + "constant": false, + "id": 17379, + "mutability": "mutable", + "name": "$", + "nameLocation": "9693:1:57", + "nodeType": "VariableDeclaration", + "scope": 17393, + "src": "9657:37:57", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 17378, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 17377, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "9657:27:57" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16991, + "src": "9657:27:57" + }, + "referencedDeclaration": 16991, + "src": "9657:27:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 17382, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 17380, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17002, + "src": "9697:31:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$16991_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 17381, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9697:33:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9657:73:57" + }, + { + "expression": { + "arguments": [ + { + "id": 17384, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17371, + "src": "9800:11:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 17385, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17379, + "src": "9813:1:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + ], + "id": 17383, + "name": "_checkServiceExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17495, + "src": "9780:19:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_struct$_PartnerConfigurationStorage_$16991_storage_ptr_$returns$__$", + "typeString": "function (bytes32,struct PartnerConfiguration.PartnerConfigurationStorage storage pointer) view" + } + }, + "id": 17386, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "9780:35:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 17387, + "nodeType": "ExpressionStatement", + "src": "9780:35:57" + }, + { + "expression": { + "baseExpression": { + "expression": { + "id": 17388, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17379, + "src": "9833:1:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 17389, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "9835:18:57", + "memberName": "_supportedServices", + "nodeType": "MemberAccess", + "referencedDeclaration": 16977, + "src": "9833:20:57", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Service_$16962_storage_$", + "typeString": "mapping(bytes32 => struct PartnerConfiguration.Service storage ref)" + } + }, + "id": 17391, + "indexExpression": { + "id": 17390, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17371, + "src": "9854:11:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9833:33:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$16962_storage", + "typeString": "struct PartnerConfiguration.Service storage ref" + } + }, + "functionReturnParameters": 17376, + "id": 17392, + "nodeType": "Return", + "src": "9826:40:57" + } + ] + }, + "documentation": { + "id": 17369, + "nodeType": "StructuredDocumentation", + "src": "8921:627:57", + "text": " @notice Returns the Service object for a given hash. Service object contains fee and capabilities.\n `serviceHash` is keccak256 hash of the pkg + service name as:\n ```text\n ┌────────────── pkg ─────────────┐ ┌───── service name ─────┐\n keccak256(\"cmp.services.accommodation.v1alpha.AccommodationSearchService\")\n ```\n @dev These services are coming from the Camino Messenger Protocol's protobuf\n definitions.\n @param serviceHash Hash of the service" + }, + "functionSelector": "da47d856", + "id": 17394, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getService", + "nameLocation": "9562:10:57", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 17372, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17371, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "9581:11:57", + "nodeType": "VariableDeclaration", + "scope": 17394, + "src": "9573:19:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 17370, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9573:7:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "9572:21:57" + }, + "returnParameters": { + "id": 17376, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17375, + "mutability": "mutable", + "name": "service", + "nameLocation": "9638:7:57", + "nodeType": "VariableDeclaration", + "scope": 17394, + "src": "9623:22:57", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$16962_memory_ptr", + "typeString": "struct PartnerConfiguration.Service" + }, + "typeName": { + "id": 17374, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 17373, + "name": "Service", + "nameLocations": [ + "9623:7:57" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16962, + "src": "9623:7:57" + }, + "referencedDeclaration": 16962, + "src": "9623:7:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$16962_storage_ptr", + "typeString": "struct PartnerConfiguration.Service" + } + }, + "visibility": "internal" + } + ], + "src": "9622:24:57" + }, + "scope": 17836, + "src": "9553:320:57", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 17419, + "nodeType": "Block", + "src": "10091:231:57", + "statements": [ + { + "assignments": [ + 17404 + ], + "declarations": [ + { + "constant": false, + "id": 17404, + "mutability": "mutable", + "name": "$", + "nameLocation": "10137:1:57", + "nodeType": "VariableDeclaration", + "scope": 17419, + "src": "10101:37:57", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 17403, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 17402, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "10101:27:57" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16991, + "src": "10101:27:57" + }, + "referencedDeclaration": 16991, + "src": "10101:27:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 17407, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 17405, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17002, + "src": "10141:31:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$16991_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 17406, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10141:33:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10101:73:57" + }, + { + "expression": { + "arguments": [ + { + "id": 17409, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17397, + "src": "10244:11:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 17410, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17404, + "src": "10257:1:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + ], + "id": 17408, + "name": "_checkServiceExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17495, + "src": "10224:19:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_struct$_PartnerConfigurationStorage_$16991_storage_ptr_$returns$__$", + "typeString": "function (bytes32,struct PartnerConfiguration.PartnerConfigurationStorage storage pointer) view" + } + }, + "id": 17411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10224:35:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 17412, + "nodeType": "ExpressionStatement", + "src": "10224:35:57" + }, + { + "expression": { + "expression": { + "baseExpression": { + "expression": { + "id": 17413, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17404, + "src": "10277:1:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 17414, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10279:18:57", + "memberName": "_supportedServices", + "nodeType": "MemberAccess", + "referencedDeclaration": 16977, + "src": "10277:20:57", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Service_$16962_storage_$", + "typeString": "mapping(bytes32 => struct PartnerConfiguration.Service storage ref)" + } + }, + "id": 17416, + "indexExpression": { + "id": 17415, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17397, + "src": "10298:11:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10277:33:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$16962_storage", + "typeString": "struct PartnerConfiguration.Service storage ref" + } + }, + "id": 17417, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10311:4:57", + "memberName": "_fee", + "nodeType": "MemberAccess", + "referencedDeclaration": 16955, + "src": "10277:38:57", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 17401, + "id": 17418, + "nodeType": "Return", + "src": "10270:45:57" + } + ] + }, + "documentation": { + "id": 17395, + "nodeType": "StructuredDocumentation", + "src": "9879:121:57", + "text": " @notice Returns the fee for a given service hash.\n @param serviceHash Hash of the service" + }, + "functionSelector": "eb5ea273", + "id": 17420, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getServiceFee", + "nameLocation": "10014:13:57", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 17398, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17397, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "10036:11:57", + "nodeType": "VariableDeclaration", + "scope": 17420, + "src": "10028:19:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 17396, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10028:7:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "10027:21:57" + }, + "returnParameters": { + "id": 17401, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17400, + "mutability": "mutable", + "name": "fee", + "nameLocation": "10086:3:57", + "nodeType": "VariableDeclaration", + "scope": 17420, + "src": "10078:11:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 17399, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10078:7:57", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10077:13:57" + }, + "scope": 17836, + "src": "10005:317:57", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 17445, + "nodeType": "Block", + "src": "10571:242:57", + "statements": [ + { + "assignments": [ + 17430 + ], + "declarations": [ + { + "constant": false, + "id": 17430, + "mutability": "mutable", + "name": "$", + "nameLocation": "10617:1:57", + "nodeType": "VariableDeclaration", + "scope": 17445, + "src": "10581:37:57", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 17429, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 17428, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "10581:27:57" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16991, + "src": "10581:27:57" + }, + "referencedDeclaration": 16991, + "src": "10581:27:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 17433, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 17431, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17002, + "src": "10621:31:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$16991_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 17432, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10621:33:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10581:73:57" + }, + { + "expression": { + "arguments": [ + { + "id": 17435, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17423, + "src": "10724:11:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 17436, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17430, + "src": "10737:1:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + ], + "id": 17434, + "name": "_checkServiceExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17495, + "src": "10704:19:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_struct$_PartnerConfigurationStorage_$16991_storage_ptr_$returns$__$", + "typeString": "function (bytes32,struct PartnerConfiguration.PartnerConfigurationStorage storage pointer) view" + } + }, + "id": 17437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "10704:35:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 17438, + "nodeType": "ExpressionStatement", + "src": "10704:35:57" + }, + { + "expression": { + "expression": { + "baseExpression": { + "expression": { + "id": 17439, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17430, + "src": "10757:1:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 17440, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10759:18:57", + "memberName": "_supportedServices", + "nodeType": "MemberAccess", + "referencedDeclaration": 16977, + "src": "10757:20:57", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Service_$16962_storage_$", + "typeString": "mapping(bytes32 => struct PartnerConfiguration.Service storage ref)" + } + }, + "id": 17442, + "indexExpression": { + "id": 17441, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17423, + "src": "10778:11:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10757:33:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$16962_storage", + "typeString": "struct PartnerConfiguration.Service storage ref" + } + }, + "id": 17443, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "10791:15:57", + "memberName": "_restrictedRate", + "nodeType": "MemberAccess", + "referencedDeclaration": 16958, + "src": "10757:49:57", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 17427, + "id": 17444, + "nodeType": "Return", + "src": "10750:56:57" + } + ] + }, + "documentation": { + "id": 17421, + "nodeType": "StructuredDocumentation", + "src": "10328:133:57", + "text": " @notice Returns the restricted rate for a given service hash.\n @param serviceHash Hash of the service" + }, + "functionSelector": "8f69347d", + "id": 17446, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getServiceRestrictedRate", + "nameLocation": "10475:24:57", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 17424, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17423, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "10508:11:57", + "nodeType": "VariableDeclaration", + "scope": 17446, + "src": "10500:19:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 17422, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10500:7:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "10499:21:57" + }, + "returnParameters": { + "id": 17427, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17426, + "mutability": "mutable", + "name": "restrictedRate", + "nameLocation": "10555:14:57", + "nodeType": "VariableDeclaration", + "scope": 17446, + "src": "10550:19:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 17425, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "10550:4:57", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "10549:21:57" + }, + "scope": 17836, + "src": "10466:347:57", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 17472, + "nodeType": "Block", + "src": "11066:240:57", + "statements": [ + { + "assignments": [ + 17457 + ], + "declarations": [ + { + "constant": false, + "id": 17457, + "mutability": "mutable", + "name": "$", + "nameLocation": "11112:1:57", + "nodeType": "VariableDeclaration", + "scope": 17472, + "src": "11076:37:57", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 17456, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 17455, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "11076:27:57" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16991, + "src": "11076:27:57" + }, + "referencedDeclaration": 16991, + "src": "11076:27:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 17460, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 17458, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17002, + "src": "11116:31:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$16991_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 17459, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11116:33:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11076:73:57" + }, + { + "expression": { + "arguments": [ + { + "id": 17462, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17449, + "src": "11219:11:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "id": 17463, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17457, + "src": "11232:1:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + ], + "id": 17461, + "name": "_checkServiceExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17495, + "src": "11199:19:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_struct$_PartnerConfigurationStorage_$16991_storage_ptr_$returns$__$", + "typeString": "function (bytes32,struct PartnerConfiguration.PartnerConfigurationStorage storage pointer) view" + } + }, + "id": 17464, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11199:35:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 17465, + "nodeType": "ExpressionStatement", + "src": "11199:35:57" + }, + { + "expression": { + "expression": { + "baseExpression": { + "expression": { + "id": 17466, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17457, + "src": "11252:1:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 17467, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11254:18:57", + "memberName": "_supportedServices", + "nodeType": "MemberAccess", + "referencedDeclaration": 16977, + "src": "11252:20:57", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Service_$16962_storage_$", + "typeString": "mapping(bytes32 => struct PartnerConfiguration.Service storage ref)" + } + }, + "id": 17469, + "indexExpression": { + "id": 17468, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17449, + "src": "11273:11:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11252:33:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Service_$16962_storage", + "typeString": "struct PartnerConfiguration.Service storage ref" + } + }, + "id": 17470, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11286:13:57", + "memberName": "_capabilities", + "nodeType": "MemberAccess", + "referencedDeclaration": 16961, + "src": "11252:47:57", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage", + "typeString": "string storage ref[] storage ref" + } + }, + "functionReturnParameters": 17454, + "id": 17471, + "nodeType": "Return", + "src": "11245:54:57" + } + ] + }, + "documentation": { + "id": 17447, + "nodeType": "StructuredDocumentation", + "src": "10819:130:57", + "text": " @notice Returns the capabilities for a given service hash.\n @param serviceHash Hash of the service" + }, + "functionSelector": "5e07f869", + "id": 17473, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getServiceCapabilities", + "nameLocation": "10963:22:57", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 17450, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17449, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "10994:11:57", + "nodeType": "VariableDeclaration", + "scope": 17473, + "src": "10986:19:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 17448, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "10986:7:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "10985:21:57" + }, + "returnParameters": { + "id": 17454, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17453, + "mutability": "mutable", + "name": "capabilities", + "nameLocation": "11052:12:57", + "nodeType": "VariableDeclaration", + "scope": 17473, + "src": "11036:28:57", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 17451, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "11036:6:57", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 17452, + "nodeType": "ArrayTypeName", + "src": "11036:8:57", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + } + ], + "src": "11035:30:57" + }, + "scope": 17836, + "src": "10954:352:57", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 17494, + "nodeType": "Block", + "src": "11528:166:57", + "statements": [ + { + "condition": { + "id": 17487, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "11581:41:57", + "subExpression": { + "arguments": [ + { + "id": 17485, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17476, + "src": "11610:11:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "expression": { + "id": 17482, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17479, + "src": "11582:1:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 17483, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11584:16:57", + "memberName": "_servicesHashSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 16972, + "src": "11582:18:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$10109_storage", + "typeString": "struct EnumerableSet.Bytes32Set storage ref" + } + }, + "id": 17484, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "11601:8:57", + "memberName": "contains", + "nodeType": "MemberAccess", + "referencedDeclaration": 10163, + "src": "11582:27:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32Set_$10109_storage_ptr_$_t_bytes32_$returns$_t_bool_$attached_to$_t_struct$_Bytes32Set_$10109_storage_ptr_$", + "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer,bytes32) view returns (bool)" + } + }, + "id": 17486, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11582:40:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 17493, + "nodeType": "IfStatement", + "src": "11577:111:57", + "trueBody": { + "id": 17492, + "nodeType": "Block", + "src": "11624:64:57", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 17489, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17476, + "src": "11665:11:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 17488, + "name": "ServiceDoesNotExist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17010, + "src": "11645:19:57", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$", + "typeString": "function (bytes32) pure" + } + }, + "id": 17490, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "11645:32:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 17491, + "nodeType": "RevertStatement", + "src": "11638:39:57" + } + ] + } + } + ] + }, + "documentation": { + "id": 17474, + "nodeType": "StructuredDocumentation", + "src": "11312:109:57", + "text": " @notice Checks if the service exists.\n @param serviceHash Hash of the service" + }, + "id": 17495, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkServiceExists", + "nameLocation": "11435:19:57", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 17480, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17476, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "11463:11:57", + "nodeType": "VariableDeclaration", + "scope": 17495, + "src": "11455:19:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 17475, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "11455:7:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 17479, + "mutability": "mutable", + "name": "$", + "nameLocation": "11512:1:57", + "nodeType": "VariableDeclaration", + "scope": 17495, + "src": "11476:37:57", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 17478, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 17477, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "11476:27:57" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16991, + "src": "11476:27:57" + }, + "referencedDeclaration": 16991, + "src": "11476:27:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "src": "11454:60:57" + }, + "returnParameters": { + "id": 17481, + "nodeType": "ParameterList", + "parameters": [], + "src": "11528:0:57" + }, + "scope": 17836, + "src": "11426:268:57", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 17523, + "nodeType": "Block", + "src": "12130:248:57", + "statements": [ + { + "assignments": [ + 17503 + ], + "declarations": [ + { + "constant": false, + "id": 17503, + "mutability": "mutable", + "name": "$", + "nameLocation": "12176:1:57", + "nodeType": "VariableDeclaration", + "scope": 17523, + "src": "12140:37:57", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 17502, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 17501, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "12140:27:57" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16991, + "src": "12140:27:57" + }, + "referencedDeclaration": 16991, + "src": "12140:27:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 17506, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 17504, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17002, + "src": "12180:31:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$16991_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 17505, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12180:33:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12140:73:57" + }, + { + "assignments": [ + 17508 + ], + "declarations": [ + { + "constant": false, + "id": 17508, + "mutability": "mutable", + "name": "added", + "nameLocation": "12229:5:57", + "nodeType": "VariableDeclaration", + "scope": 17523, + "src": "12224:10:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 17507, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "12224:4:57", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 17514, + "initialValue": { + "arguments": [ + { + "id": 17512, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17498, + "src": "12266:11:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "expression": { + "id": 17509, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17503, + "src": "12237:1:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 17510, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12239:22:57", + "memberName": "_wantedServicesHashSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 16990, + "src": "12237:24:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$10109_storage", + "typeString": "struct EnumerableSet.Bytes32Set storage ref" + } + }, + "id": 17511, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12262:3:57", + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 10127, + "src": "12237:28:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32Set_$10109_storage_ptr_$_t_bytes32_$returns$_t_bool_$attached_to$_t_struct$_Bytes32Set_$10109_storage_ptr_$", + "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 17513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12237:41:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12224:54:57" + }, + { + "condition": { + "id": 17516, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "12293:6:57", + "subExpression": { + "id": 17515, + "name": "added", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17508, + "src": "12294:5:57", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 17522, + "nodeType": "IfStatement", + "src": "12289:83:57", + "trueBody": { + "id": 17521, + "nodeType": "Block", + "src": "12301:71:57", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 17518, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17498, + "src": "12349:11:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 17517, + "name": "WantedServiceAlreadyExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17014, + "src": "12322:26:57", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$", + "typeString": "function (bytes32) pure" + } + }, + "id": 17519, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12322:39:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 17520, + "nodeType": "RevertStatement", + "src": "12315:46:57" + } + ] + } + } + ] + }, + "documentation": { + "id": 17496, + "nodeType": "StructuredDocumentation", + "src": "11873:187:57", + "text": " @notice Adds a wanted service hash to the wanted services set.\n Reverts if the service already exists.\n @param serviceHash Hash of the service" + }, + "id": 17524, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addWantedService", + "nameLocation": "12074:17:57", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 17499, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17498, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "12100:11:57", + "nodeType": "VariableDeclaration", + "scope": 17524, + "src": "12092:19:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 17497, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12092:7:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "12091:21:57" + }, + "returnParameters": { + "id": 17500, + "nodeType": "ParameterList", + "parameters": [], + "src": "12130:0:57" + }, + "scope": 17836, + "src": "12065:313:57", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 17552, + "nodeType": "Block", + "src": "12649:254:57", + "statements": [ + { + "assignments": [ + 17532 + ], + "declarations": [ + { + "constant": false, + "id": 17532, + "mutability": "mutable", + "name": "$", + "nameLocation": "12695:1:57", + "nodeType": "VariableDeclaration", + "scope": 17552, + "src": "12659:37:57", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 17531, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 17530, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "12659:27:57" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16991, + "src": "12659:27:57" + }, + "referencedDeclaration": 16991, + "src": "12659:27:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 17535, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 17533, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17002, + "src": "12699:31:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$16991_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 17534, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12699:33:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12659:73:57" + }, + { + "assignments": [ + 17537 + ], + "declarations": [ + { + "constant": false, + "id": 17537, + "mutability": "mutable", + "name": "removed", + "nameLocation": "12748:7:57", + "nodeType": "VariableDeclaration", + "scope": 17552, + "src": "12743:12:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 17536, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "12743:4:57", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 17543, + "initialValue": { + "arguments": [ + { + "id": 17541, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17527, + "src": "12790:11:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "expression": { + "id": 17538, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17532, + "src": "12758:1:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 17539, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12760:22:57", + "memberName": "_wantedServicesHashSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 16990, + "src": "12758:24:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$10109_storage", + "typeString": "struct EnumerableSet.Bytes32Set storage ref" + } + }, + "id": 17540, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "12783:6:57", + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 10145, + "src": "12758:31:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32Set_$10109_storage_ptr_$_t_bytes32_$returns$_t_bool_$attached_to$_t_struct$_Bytes32Set_$10109_storage_ptr_$", + "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 17542, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12758:44:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12743:59:57" + }, + { + "condition": { + "id": 17545, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "12817:8:57", + "subExpression": { + "id": 17544, + "name": "removed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17537, + "src": "12818:7:57", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 17551, + "nodeType": "IfStatement", + "src": "12813:84:57", + "trueBody": { + "id": 17550, + "nodeType": "Block", + "src": "12827:70:57", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 17547, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17527, + "src": "12874:11:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 17546, + "name": "WantedServiceDoesNotExist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17018, + "src": "12848:25:57", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_bytes32_$returns$__$", + "typeString": "function (bytes32) pure" + } + }, + "id": 17548, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "12848:38:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 17549, + "nodeType": "RevertStatement", + "src": "12841:45:57" + } + ] + } + } + ] + }, + "documentation": { + "id": 17525, + "nodeType": "StructuredDocumentation", + "src": "12384:192:57", + "text": " @notice Removes a wanted service hash from the wanted services set.\n Reverts if the service does not exist.\n @param serviceHash Hash of the service" + }, + "id": 17553, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeWantedService", + "nameLocation": "12590:20:57", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 17528, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17527, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "12619:11:57", + "nodeType": "VariableDeclaration", + "scope": 17553, + "src": "12611:19:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 17526, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "12611:7:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "12610:21:57" + }, + "returnParameters": { + "id": 17529, + "nodeType": "ParameterList", + "parameters": [], + "src": "12649:0:57" + }, + "scope": 17836, + "src": "12581:322:57", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 17571, + "nodeType": "Block", + "src": "13128:140:57", + "statements": [ + { + "assignments": [ + 17562 + ], + "declarations": [ + { + "constant": false, + "id": 17562, + "mutability": "mutable", + "name": "$", + "nameLocation": "13174:1:57", + "nodeType": "VariableDeclaration", + "scope": 17571, + "src": "13138:37:57", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 17561, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 17560, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "13138:27:57" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16991, + "src": "13138:27:57" + }, + "referencedDeclaration": 16991, + "src": "13138:27:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 17565, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 17563, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17002, + "src": "13178:31:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$16991_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 17564, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13178:33:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13138:73:57" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "expression": { + "id": 17566, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17562, + "src": "13228:1:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 17567, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13230:22:57", + "memberName": "_wantedServicesHashSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 16990, + "src": "13228:24:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$10109_storage", + "typeString": "struct EnumerableSet.Bytes32Set storage ref" + } + }, + "id": 17568, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13253:6:57", + "memberName": "values", + "nodeType": "MemberAccess", + "referencedDeclaration": 10226, + "src": "13228:31:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32Set_$10109_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$attached_to$_t_struct$_Bytes32Set_$10109_storage_ptr_$", + "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer) view returns (bytes32[] memory)" + } + }, + "id": 17569, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13228:33:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "functionReturnParameters": 17559, + "id": 17570, + "nodeType": "Return", + "src": "13221:40:57" + } + ] + }, + "documentation": { + "id": 17554, + "nodeType": "StructuredDocumentation", + "src": "12909:119:57", + "text": " @notice Returns all wanted service hashes.\n @return serviceHashes Wanted service hashes" + }, + "functionSelector": "136f50ca", + "id": 17572, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getWantedServiceHashes", + "nameLocation": "13042:22:57", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 17555, + "nodeType": "ParameterList", + "parameters": [], + "src": "13064:2:57" + }, + "returnParameters": { + "id": 17559, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17558, + "mutability": "mutable", + "name": "serviceHashes", + "nameLocation": "13113:13:57", + "nodeType": "VariableDeclaration", + "scope": 17572, + "src": "13096:30:57", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 17556, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "13096:7:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 17557, + "nodeType": "ArrayTypeName", + "src": "13096:9:57", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "src": "13095:32:57" + }, + "scope": 17836, + "src": "13033:235:57", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 17605, + "nodeType": "Block", + "src": "13672:284:57", + "statements": [ + { + "assignments": [ + 17580 + ], + "declarations": [ + { + "constant": false, + "id": 17580, + "mutability": "mutable", + "name": "$", + "nameLocation": "13718:1:57", + "nodeType": "VariableDeclaration", + "scope": 17605, + "src": "13682:37:57", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 17579, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 17578, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "13682:27:57" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16991, + "src": "13682:27:57" + }, + "referencedDeclaration": 16991, + "src": "13682:27:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 17583, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 17581, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17002, + "src": "13722:31:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$16991_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 17582, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13722:33:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13682:73:57" + }, + { + "assignments": [ + 17585 + ], + "declarations": [ + { + "constant": false, + "id": 17585, + "mutability": "mutable", + "name": "added", + "nameLocation": "13770:5:57", + "nodeType": "VariableDeclaration", + "scope": 17605, + "src": "13765:10:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 17584, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "13765:4:57", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 17592, + "initialValue": { + "arguments": [ + { + "id": 17590, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17575, + "src": "13814:6:57", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "expression": { + "expression": { + "id": 17586, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17580, + "src": "13778:1:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 17587, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13780:12:57", + "memberName": "_paymentInfo", + "nodeType": "MemberAccess", + "referencedDeclaration": 16980, + "src": "13778:14:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentInfo_$16968_storage", + "typeString": "struct PartnerConfiguration.PaymentInfo storage ref" + } + }, + "id": 17588, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13793:16:57", + "memberName": "_supportedTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 16967, + "src": "13778:31:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$10230_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 17589, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "13810:3:57", + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 10257, + "src": "13778:35:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_AddressSet_$10230_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$10230_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)" + } + }, + "id": 17591, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13778:43:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "13765:56:57" + }, + { + "condition": { + "id": 17594, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "13836:6:57", + "subExpression": { + "id": 17593, + "name": "added", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17585, + "src": "13837:5:57", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 17600, + "nodeType": "IfStatement", + "src": "13832:77:57", + "trueBody": { + "id": 17599, + "nodeType": "Block", + "src": "13844:65:57", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 17596, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17575, + "src": "13891:6:57", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 17595, + "name": "PaymentTokenAlreadyExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17022, + "src": "13865:25:57", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 17597, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13865:33:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 17598, + "nodeType": "RevertStatement", + "src": "13858:40:57" + } + ] + } + }, + { + "eventCall": { + "arguments": [ + { + "id": 17602, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17575, + "src": "13942:6:57", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 17601, + "name": "PaymentTokenAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17042, + "src": "13924:17:57", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 17603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "13924:25:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 17604, + "nodeType": "EmitStatement", + "src": "13919:30:57" + } + ] + }, + "documentation": { + "id": 17573, + "nodeType": "StructuredDocumentation", + "src": "13486:120:57", + "text": " @notice Adds a supported payment token.\n @param _token Payment token address to be added" + }, + "id": 17606, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addSupportedToken", + "nameLocation": "13620:18:57", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 17576, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17575, + "mutability": "mutable", + "name": "_token", + "nameLocation": "13647:6:57", + "nodeType": "VariableDeclaration", + "scope": 17606, + "src": "13639:14:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 17574, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13639:7:57", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "13638:16:57" + }, + "returnParameters": { + "id": 17577, + "nodeType": "ParameterList", + "parameters": [], + "src": "13672:0:57" + }, + "scope": 17836, + "src": "13611:345:57", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 17639, + "nodeType": "Block", + "src": "14156:292:57", + "statements": [ + { + "assignments": [ + 17614 + ], + "declarations": [ + { + "constant": false, + "id": 17614, + "mutability": "mutable", + "name": "$", + "nameLocation": "14202:1:57", + "nodeType": "VariableDeclaration", + "scope": 17639, + "src": "14166:37:57", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 17613, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 17612, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "14166:27:57" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16991, + "src": "14166:27:57" + }, + "referencedDeclaration": 16991, + "src": "14166:27:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 17617, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 17615, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17002, + "src": "14206:31:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$16991_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 17616, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14206:33:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14166:73:57" + }, + { + "assignments": [ + 17619 + ], + "declarations": [ + { + "constant": false, + "id": 17619, + "mutability": "mutable", + "name": "removed", + "nameLocation": "14254:7:57", + "nodeType": "VariableDeclaration", + "scope": 17639, + "src": "14249:12:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 17618, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "14249:4:57", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 17626, + "initialValue": { + "arguments": [ + { + "id": 17624, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17609, + "src": "14303:6:57", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "expression": { + "expression": { + "id": 17620, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17614, + "src": "14264:1:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 17621, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14266:12:57", + "memberName": "_paymentInfo", + "nodeType": "MemberAccess", + "referencedDeclaration": 16980, + "src": "14264:14:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentInfo_$16968_storage", + "typeString": "struct PartnerConfiguration.PaymentInfo storage ref" + } + }, + "id": 17622, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14279:16:57", + "memberName": "_supportedTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 16967, + "src": "14264:31:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$10230_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 17623, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14296:6:57", + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 10284, + "src": "14264:38:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_AddressSet_$10230_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$10230_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)" + } + }, + "id": 17625, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14264:46:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14249:61:57" + }, + { + "condition": { + "id": 17628, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "14325:8:57", + "subExpression": { + "id": 17627, + "name": "removed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17619, + "src": "14326:7:57", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 17634, + "nodeType": "IfStatement", + "src": "14321:78:57", + "trueBody": { + "id": 17633, + "nodeType": "Block", + "src": "14335:64:57", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 17630, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17609, + "src": "14381:6:57", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 17629, + "name": "PaymentTokenDoesNotExist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17026, + "src": "14356:24:57", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 17631, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14356:32:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 17632, + "nodeType": "RevertStatement", + "src": "14349:39:57" + } + ] + } + }, + { + "eventCall": { + "arguments": [ + { + "id": 17636, + "name": "_token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17609, + "src": "14434:6:57", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 17635, + "name": "PaymentTokenRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17046, + "src": "14414:19:57", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 17637, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14414:27:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 17638, + "nodeType": "EmitStatement", + "src": "14409:32:57" + } + ] + }, + "documentation": { + "id": 17607, + "nodeType": "StructuredDocumentation", + "src": "13962:125:57", + "text": " @notice Removes a supported payment token.\n @param _token Payment token address to be removed" + }, + "id": 17640, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removeSupportedToken", + "nameLocation": "14101:21:57", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 17610, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17609, + "mutability": "mutable", + "name": "_token", + "nameLocation": "14131:6:57", + "nodeType": "VariableDeclaration", + "scope": 17640, + "src": "14123:14:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 17608, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14123:7:57", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "14122:16:57" + }, + "returnParameters": { + "id": 17611, + "nodeType": "ParameterList", + "parameters": [], + "src": "14156:0:57" + }, + "scope": 17836, + "src": "14092:356:57", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 17659, + "nodeType": "Block", + "src": "14659:147:57", + "statements": [ + { + "assignments": [ + 17649 + ], + "declarations": [ + { + "constant": false, + "id": 17649, + "mutability": "mutable", + "name": "$", + "nameLocation": "14705:1:57", + "nodeType": "VariableDeclaration", + "scope": 17659, + "src": "14669:37:57", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 17648, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 17647, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "14669:27:57" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16991, + "src": "14669:27:57" + }, + "referencedDeclaration": 16991, + "src": "14669:27:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 17652, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 17650, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17002, + "src": "14709:31:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$16991_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 17651, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14709:33:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14669:73:57" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "expression": { + "expression": { + "id": 17653, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17649, + "src": "14759:1:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 17654, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14761:12:57", + "memberName": "_paymentInfo", + "nodeType": "MemberAccess", + "referencedDeclaration": 16980, + "src": "14759:14:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentInfo_$16968_storage", + "typeString": "struct PartnerConfiguration.PaymentInfo storage ref" + } + }, + "id": 17655, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14774:16:57", + "memberName": "_supportedTokens", + "nodeType": "MemberAccess", + "referencedDeclaration": 16967, + "src": "14759:31:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$10230_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 17656, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "14791:6:57", + "memberName": "values", + "nodeType": "MemberAccess", + "referencedDeclaration": 10383, + "src": "14759:38:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$10230_storage_ptr_$returns$_t_array$_t_address_$dyn_memory_ptr_$attached_to$_t_struct$_AddressSet_$10230_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer) view returns (address[] memory)" + } + }, + "id": 17657, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "14759:40:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "functionReturnParameters": 17646, + "id": 17658, + "nodeType": "Return", + "src": "14752:47:57" + } + ] + }, + "documentation": { + "id": 17641, + "nodeType": "StructuredDocumentation", + "src": "14454:116:57", + "text": " @notice Returns supported token addresses.\n @return tokens Supported token addresses" + }, + "functionSelector": "d3c7c2c7", + "id": 17660, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getSupportedTokens", + "nameLocation": "14584:18:57", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 17642, + "nodeType": "ParameterList", + "parameters": [], + "src": "14602:2:57" + }, + "returnParameters": { + "id": 17646, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17645, + "mutability": "mutable", + "name": "tokens", + "nameLocation": "14651:6:57", + "nodeType": "VariableDeclaration", + "scope": 17660, + "src": "14634:23:57", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 17643, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14634:7:57", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 17644, + "nodeType": "ArrayTypeName", + "src": "14634:9:57", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "src": "14633:25:57" + }, + "scope": 17836, + "src": "14575:231:57", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 17684, + "nodeType": "Block", + "src": "15026:236:57", + "statements": [ + { + "assignments": [ + 17668 + ], + "declarations": [ + { + "constant": false, + "id": 17668, + "mutability": "mutable", + "name": "$", + "nameLocation": "15072:1:57", + "nodeType": "VariableDeclaration", + "scope": 17684, + "src": "15036:37:57", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 17667, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 17666, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "15036:27:57" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16991, + "src": "15036:27:57" + }, + "referencedDeclaration": 16991, + "src": "15036:27:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 17671, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 17669, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17002, + "src": "15076:31:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$16991_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 17670, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15076:33:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15036:73:57" + }, + { + "expression": { + "id": 17678, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "expression": { + "id": 17672, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17668, + "src": "15119:1:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 17675, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15121:12:57", + "memberName": "_paymentInfo", + "nodeType": "MemberAccess", + "referencedDeclaration": 16980, + "src": "15119:14:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentInfo_$16968_storage", + "typeString": "struct PartnerConfiguration.PaymentInfo storage ref" + } + }, + "id": 17676, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "15134:24:57", + "memberName": "_supportsOffChainPayment", + "nodeType": "MemberAccess", + "referencedDeclaration": 16964, + "src": "15119:39:57", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 17677, + "name": "_supportsOffChainPayment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17663, + "src": "15161:24:57", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "15119:66:57", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 17679, + "nodeType": "ExpressionStatement", + "src": "15119:66:57" + }, + { + "eventCall": { + "arguments": [ + { + "id": 17681, + "name": "_supportsOffChainPayment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17663, + "src": "15230:24:57", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 17680, + "name": "OffChainPaymentSupportUpdated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17050, + "src": "15200:29:57", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bool_$returns$__$", + "typeString": "function (bool)" + } + }, + "id": 17682, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15200:55:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 17683, + "nodeType": "EmitStatement", + "src": "15195:60:57" + } + ] + }, + "documentation": { + "id": 17661, + "nodeType": "StructuredDocumentation", + "src": "14860:75:57", + "text": " @notice Sets the off-chain payment support is supported." + }, + "id": 17685, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setOffChainPaymentSupported", + "nameLocation": "14949:28:57", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 17664, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17663, + "mutability": "mutable", + "name": "_supportsOffChainPayment", + "nameLocation": "14983:24:57", + "nodeType": "VariableDeclaration", + "scope": 17685, + "src": "14978:29:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 17662, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "14978:4:57", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "14977:31:57" + }, + "returnParameters": { + "id": 17665, + "nodeType": "ParameterList", + "parameters": [], + "src": "15026:0:57" + }, + "scope": 17836, + "src": "14940:322:57", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 17701, + "nodeType": "Block", + "src": "15440:146:57", + "statements": [ + { + "assignments": [ + 17693 + ], + "declarations": [ + { + "constant": false, + "id": 17693, + "mutability": "mutable", + "name": "$", + "nameLocation": "15486:1:57", + "nodeType": "VariableDeclaration", + "scope": 17701, + "src": "15450:37:57", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 17692, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 17691, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "15450:27:57" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16991, + "src": "15450:27:57" + }, + "referencedDeclaration": 16991, + "src": "15450:27:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 17696, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 17694, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17002, + "src": "15490:31:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$16991_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 17695, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "15490:33:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15450:73:57" + }, + { + "expression": { + "expression": { + "expression": { + "id": 17697, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17693, + "src": "15540:1:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 17698, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15542:12:57", + "memberName": "_paymentInfo", + "nodeType": "MemberAccess", + "referencedDeclaration": 16980, + "src": "15540:14:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PaymentInfo_$16968_storage", + "typeString": "struct PartnerConfiguration.PaymentInfo storage ref" + } + }, + "id": 17699, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "15555:24:57", + "memberName": "_supportsOffChainPayment", + "nodeType": "MemberAccess", + "referencedDeclaration": 16964, + "src": "15540:39:57", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 17690, + "id": 17700, + "nodeType": "Return", + "src": "15533:46:57" + } + ] + }, + "documentation": { + "id": 17686, + "nodeType": "StructuredDocumentation", + "src": "15268:96:57", + "text": " @notice Returns true if off-chain payment is supported for the given service." + }, + "functionSelector": "241bbbfc", + "id": 17702, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "offChainPaymentSupported", + "nameLocation": "15378:24:57", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 17687, + "nodeType": "ParameterList", + "parameters": [], + "src": "15402:2:57" + }, + "returnParameters": { + "id": 17690, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17689, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 17702, + "src": "15434:4:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 17688, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "15434:4:57", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "15433:6:57" + }, + "scope": 17836, + "src": "15369:217:57", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 17744, + "nodeType": "Block", + "src": "16081:348:57", + "statements": [ + { + "assignments": [ + 17712 + ], + "declarations": [ + { + "constant": false, + "id": 17712, + "mutability": "mutable", + "name": "$", + "nameLocation": "16127:1:57", + "nodeType": "VariableDeclaration", + "scope": 17744, + "src": "16091:37:57", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 17711, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 17710, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "16091:27:57" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16991, + "src": "16091:27:57" + }, + "referencedDeclaration": 16991, + "src": "16091:27:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 17715, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 17713, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17002, + "src": "16131:31:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$16991_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 17714, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16131:33:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16091:73:57" + }, + { + "assignments": [ + 17717 + ], + "declarations": [ + { + "constant": false, + "id": 17717, + "mutability": "mutable", + "name": "added", + "nameLocation": "16180:5:57", + "nodeType": "VariableDeclaration", + "scope": 17744, + "src": "16175:10:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 17716, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "16175:4:57", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 17723, + "initialValue": { + "arguments": [ + { + "id": 17721, + "name": "pubKeyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17705, + "src": "16217:13:57", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "expression": { + "id": 17718, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17712, + "src": "16188:1:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 17719, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16190:22:57", + "memberName": "_publicKeyAddressesSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 16983, + "src": "16188:24:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$10230_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 17720, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16213:3:57", + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 10257, + "src": "16188:28:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_AddressSet_$10230_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$10230_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)" + } + }, + "id": 17722, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16188:43:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16175:56:57" + }, + { + "condition": { + "id": 17725, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "16246:6:57", + "subExpression": { + "id": 17724, + "name": "added", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17717, + "src": "16247:5:57", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 17731, + "nodeType": "IfStatement", + "src": "16242:81:57", + "trueBody": { + "id": 17730, + "nodeType": "Block", + "src": "16254:69:57", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 17727, + "name": "pubKeyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17705, + "src": "16298:13:57", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 17726, + "name": "PublicKeyAlreadyExists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17030, + "src": "16275:22:57", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 17728, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16275:37:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 17729, + "nodeType": "RevertStatement", + "src": "16268:44:57" + } + ] + } + }, + { + "expression": { + "id": 17738, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 17732, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17712, + "src": "16333:1:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 17735, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16335:11:57", + "memberName": "_publicKeys", + "nodeType": "MemberAccess", + "referencedDeclaration": 16987, + "src": "16333:13:57", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bytes_storage_$", + "typeString": "mapping(address => bytes storage ref)" + } + }, + "id": 17736, + "indexExpression": { + "id": 17734, + "name": "pubKeyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17705, + "src": "16347:13:57", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "16333:28:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 17737, + "name": "publicKeyData", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17707, + "src": "16364:13:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "src": "16333:44:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "id": 17739, + "nodeType": "ExpressionStatement", + "src": "16333:44:57" + }, + { + "eventCall": { + "arguments": [ + { + "id": 17741, + "name": "pubKeyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17705, + "src": "16408:13:57", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 17740, + "name": "PublicKeyAdded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17054, + "src": "16393:14:57", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 17742, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16393:29:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 17743, + "nodeType": "EmitStatement", + "src": "16388:34:57" + } + ] + }, + "documentation": { + "id": 17703, + "nodeType": "StructuredDocumentation", + "src": "15765:220:57", + "text": " @notice Adds public key with an address. Reverts if the public key already\n exists.\n Beware: This functions does not check if the public key is actually for the\n given address." + }, + "id": 17745, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_addPublicKey", + "nameLocation": "15999:13:57", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 17708, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17705, + "mutability": "mutable", + "name": "pubKeyAddress", + "nameLocation": "16021:13:57", + "nodeType": "VariableDeclaration", + "scope": 17745, + "src": "16013:21:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 17704, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16013:7:57", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 17707, + "mutability": "mutable", + "name": "publicKeyData", + "nameLocation": "16049:13:57", + "nodeType": "VariableDeclaration", + "scope": 17745, + "src": "16036:26:57", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 17706, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "16036:5:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "16012:51:57" + }, + "returnParameters": { + "id": 17709, + "nodeType": "ParameterList", + "parameters": [], + "src": "16081:0:57" + }, + "scope": 17836, + "src": "15990:439:57", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 17783, + "nodeType": "Block", + "src": "16630:346:57", + "statements": [ + { + "assignments": [ + 17753 + ], + "declarations": [ + { + "constant": false, + "id": 17753, + "mutability": "mutable", + "name": "$", + "nameLocation": "16676:1:57", + "nodeType": "VariableDeclaration", + "scope": 17783, + "src": "16640:37:57", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 17752, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 17751, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "16640:27:57" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16991, + "src": "16640:27:57" + }, + "referencedDeclaration": 16991, + "src": "16640:27:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 17756, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 17754, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17002, + "src": "16680:31:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$16991_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 17755, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16680:33:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16640:73:57" + }, + { + "assignments": [ + 17758 + ], + "declarations": [ + { + "constant": false, + "id": 17758, + "mutability": "mutable", + "name": "removed", + "nameLocation": "16729:7:57", + "nodeType": "VariableDeclaration", + "scope": 17783, + "src": "16724:12:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 17757, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "16724:4:57", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 17764, + "initialValue": { + "arguments": [ + { + "id": 17762, + "name": "pubKeyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17748, + "src": "16771:13:57", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "expression": { + "id": 17759, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17753, + "src": "16739:1:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 17760, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16741:22:57", + "memberName": "_publicKeyAddressesSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 16983, + "src": "16739:24:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$10230_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 17761, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16764:6:57", + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 10284, + "src": "16739:31:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_AddressSet_$10230_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$10230_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)" + } + }, + "id": 17763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16739:46:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16724:61:57" + }, + { + "condition": { + "id": 17766, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "16800:8:57", + "subExpression": { + "id": 17765, + "name": "removed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17758, + "src": "16801:7:57", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 17772, + "nodeType": "IfStatement", + "src": "16796:82:57", + "trueBody": { + "id": 17771, + "nodeType": "Block", + "src": "16810:68:57", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 17768, + "name": "pubKeyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17748, + "src": "16853:13:57", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 17767, + "name": "PublicKeyDoesNotExist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17034, + "src": "16831:21:57", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 17769, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16831:36:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 17770, + "nodeType": "RevertStatement", + "src": "16824:43:57" + } + ] + } + }, + { + "expression": { + "id": 17777, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "16888:35:57", + "subExpression": { + "baseExpression": { + "expression": { + "id": 17773, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17753, + "src": "16895:1:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 17774, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "16897:11:57", + "memberName": "_publicKeys", + "nodeType": "MemberAccess", + "referencedDeclaration": 16987, + "src": "16895:13:57", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bytes_storage_$", + "typeString": "mapping(address => bytes storage ref)" + } + }, + "id": 17776, + "indexExpression": { + "id": 17775, + "name": "pubKeyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17748, + "src": "16909:13:57", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "16895:28:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 17778, + "nodeType": "ExpressionStatement", + "src": "16888:35:57" + }, + { + "eventCall": { + "arguments": [ + { + "id": 17780, + "name": "pubKeyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17748, + "src": "16955:13:57", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 17779, + "name": "PublicKeyRemoved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17058, + "src": "16938:16:57", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 17781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "16938:31:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 17782, + "nodeType": "EmitStatement", + "src": "16933:36:57" + } + ] + }, + "documentation": { + "id": 17746, + "nodeType": "StructuredDocumentation", + "src": "16435:124:57", + "text": " @notice Removes the public key for a given address\n Reverts if the public key does not exist" + }, + "id": 17784, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_removePublicKey", + "nameLocation": "16573:16:57", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 17749, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17748, + "mutability": "mutable", + "name": "pubKeyAddress", + "nameLocation": "16598:13:57", + "nodeType": "VariableDeclaration", + "scope": 17784, + "src": "16590:21:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 17747, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16590:7:57", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "16589:23:57" + }, + "returnParameters": { + "id": 17750, + "nodeType": "ParameterList", + "parameters": [], + "src": "16630:0:57" + }, + "scope": 17836, + "src": "16564:412:57", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 17802, + "nodeType": "Block", + "src": "17248:140:57", + "statements": [ + { + "assignments": [ + 17793 + ], + "declarations": [ + { + "constant": false, + "id": 17793, + "mutability": "mutable", + "name": "$", + "nameLocation": "17294:1:57", + "nodeType": "VariableDeclaration", + "scope": 17802, + "src": "17258:37:57", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 17792, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 17791, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "17258:27:57" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16991, + "src": "17258:27:57" + }, + "referencedDeclaration": 16991, + "src": "17258:27:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 17796, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 17794, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17002, + "src": "17298:31:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$16991_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 17795, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17298:33:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17258:73:57" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "expression": { + "id": 17797, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17793, + "src": "17348:1:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 17798, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17350:22:57", + "memberName": "_publicKeyAddressesSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 16983, + "src": "17348:24:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$10230_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 17799, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17373:6:57", + "memberName": "values", + "nodeType": "MemberAccess", + "referencedDeclaration": 10383, + "src": "17348:31:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$10230_storage_ptr_$returns$_t_array$_t_address_$dyn_memory_ptr_$attached_to$_t_struct$_AddressSet_$10230_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer) view returns (address[] memory)" + } + }, + "id": 17800, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17348:33:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "functionReturnParameters": 17790, + "id": 17801, + "nodeType": "Return", + "src": "17341:40:57" + } + ] + }, + "documentation": { + "id": 17785, + "nodeType": "StructuredDocumentation", + "src": "16982:164:57", + "text": " @notice Returns the addresses of all public keys. These can then be used to\n retrieve the public keys the `getPublicKey(address)` function." + }, + "functionSelector": "ea79d07a", + "id": 17803, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getPublicKeysAddresses", + "nameLocation": "17160:22:57", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 17786, + "nodeType": "ParameterList", + "parameters": [], + "src": "17182:2:57" + }, + "returnParameters": { + "id": 17790, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17789, + "mutability": "mutable", + "name": "pubKeyAddresses", + "nameLocation": "17231:15:57", + "nodeType": "VariableDeclaration", + "scope": 17803, + "src": "17214:32:57", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 17787, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17214:7:57", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 17788, + "nodeType": "ArrayTypeName", + "src": "17214:9:57", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "src": "17213:34:57" + }, + "scope": 17836, + "src": "17151:237:57", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 17834, + "nodeType": "Block", + "src": "17678:269:57", + "statements": [ + { + "assignments": [ + 17813 + ], + "declarations": [ + { + "constant": false, + "id": 17813, + "mutability": "mutable", + "name": "$", + "nameLocation": "17724:1:57", + "nodeType": "VariableDeclaration", + "scope": 17834, + "src": "17688:37:57", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + }, + "typeName": { + "id": 17812, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 17811, + "name": "PartnerConfigurationStorage", + "nameLocations": [ + "17688:27:57" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 16991, + "src": "17688:27:57" + }, + "referencedDeclaration": 16991, + "src": "17688:27:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage" + } + }, + "visibility": "internal" + } + ], + "id": 17816, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 17814, + "name": "_getPartnerConfigurationStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17002, + "src": "17728:31:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_PartnerConfigurationStorage_$16991_storage_ptr_$", + "typeString": "function () pure returns (struct PartnerConfiguration.PartnerConfigurationStorage storage pointer)" + } + }, + "id": 17815, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17728:33:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "17688:73:57" + }, + { + "condition": { + "id": 17822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "17776:49:57", + "subExpression": { + "arguments": [ + { + "id": 17820, + "name": "pubKeyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17806, + "src": "17811:13:57", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "expression": { + "id": 17817, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17813, + "src": "17777:1:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 17818, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17779:22:57", + "memberName": "_publicKeyAddressesSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 16983, + "src": "17777:24:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$10230_storage", + "typeString": "struct EnumerableSet.AddressSet storage ref" + } + }, + "id": 17819, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17802:8:57", + "memberName": "contains", + "nodeType": "MemberAccess", + "referencedDeclaration": 10311, + "src": "17777:33:57", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_AddressSet_$10230_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$10230_storage_ptr_$", + "typeString": "function (struct EnumerableSet.AddressSet storage pointer,address) view returns (bool)" + } + }, + "id": 17821, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17777:48:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 17828, + "nodeType": "IfStatement", + "src": "17772:123:57", + "trueBody": { + "id": 17827, + "nodeType": "Block", + "src": "17827:68:57", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 17824, + "name": "pubKeyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17806, + "src": "17870:13:57", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 17823, + "name": "PublicKeyDoesNotExist", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17034, + "src": "17848:21:57", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_address_$returns$__$", + "typeString": "function (address) pure" + } + }, + "id": 17825, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "17848:36:57", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 17826, + "nodeType": "RevertStatement", + "src": "17841:43:57" + } + ] + } + }, + { + "expression": { + "baseExpression": { + "expression": { + "id": 17829, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17813, + "src": "17912:1:57", + "typeDescriptions": { + "typeIdentifier": "t_struct$_PartnerConfigurationStorage_$16991_storage_ptr", + "typeString": "struct PartnerConfiguration.PartnerConfigurationStorage storage pointer" + } + }, + "id": 17830, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "17914:11:57", + "memberName": "_publicKeys", + "nodeType": "MemberAccess", + "referencedDeclaration": 16987, + "src": "17912:13:57", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bytes_storage_$", + "typeString": "mapping(address => bytes storage ref)" + } + }, + "id": 17832, + "indexExpression": { + "id": 17831, + "name": "pubKeyAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17806, + "src": "17926:13:57", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "17912:28:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage", + "typeString": "bytes storage ref" + } + }, + "functionReturnParameters": 17810, + "id": 17833, + "nodeType": "Return", + "src": "17905:35:57" + } + ] + }, + "documentation": { + "id": 17804, + "nodeType": "StructuredDocumentation", + "src": "17394:186:57", + "text": " @notice Returns the public key for a given address.\n Reverts if the public key does not exist\n @param pubKeyAddress Address of the public key" + }, + "functionSelector": "857cdbb8", + "id": 17835, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getPublicKey", + "nameLocation": "17594:12:57", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 17807, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17806, + "mutability": "mutable", + "name": "pubKeyAddress", + "nameLocation": "17615:13:57", + "nodeType": "VariableDeclaration", + "scope": 17835, + "src": "17607:21:57", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 17805, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17607:7:57", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "17606:23:57" + }, + "returnParameters": { + "id": 17810, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17809, + "mutability": "mutable", + "name": "data", + "nameLocation": "17672:4:57", + "nodeType": "VariableDeclaration", + "scope": 17835, + "src": "17659:17:57", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 17808, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "17659:5:57", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "17658:19:57" + }, + "scope": 17836, + "src": "17585:362:57", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + } + ], + "scope": 17837, + "src": "468:17481:57", + "usedErrors": [ + 603, + 606, + 17006, + 17010, + 17014, + 17018, + 17022, + 17026, + 17030, + 17034, + 17038 + ], + "usedEvents": [ + 611, + 17042, + 17046, + 17050, + 17054, + 17058 + ] + } + ], + "src": "85:17865:57" + }, + "id": 57 + }, + "contracts/partner/ServiceRegistry.sol": { + "ast": { + "absolutePath": "contracts/partner/ServiceRegistry.sol", + "exportedSymbols": { + "EnumerableSet": [ + 10517 + ], + "Initializable": [ + 840 + ], + "ServiceRegistry": [ + 18165 + ] + }, + "id": 18166, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 17838, + "literals": [ + "solidity", + "0.8", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "106:23:58" + }, + { + "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "file": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol", + "id": 17840, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 18166, + "sourceUnit": 841, + "src": "131:98:58", + "symbolAliases": [ + { + "foreign": { + "id": 17839, + "name": "Initializable", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 840, + "src": "140:13:58", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/structs/EnumerableSet.sol", + "file": "@openzeppelin/contracts/utils/structs/EnumerableSet.sol", + "id": 17842, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 18166, + "sourceUnit": 10518, + "src": "230:88:58", + "symbolAliases": [ + { + "foreign": { + "id": 17841, + "name": "EnumerableSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 10517, + "src": "239:13:58", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "baseName": { + "id": 17844, + "name": "Initializable", + "nameLocations": [ + "603:13:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 840, + "src": "603:13:58" + }, + "id": 17845, + "nodeType": "InheritanceSpecifier", + "src": "603:13:58" + } + ], + "canonicalName": "ServiceRegistry", + "contractDependencies": [], + "contractKind": "contract", + "documentation": { + "id": 17843, + "nodeType": "StructuredDocumentation", + "src": "320:245:58", + "text": " @title ServiceRegistry\n @notice Service registry is used by the {CMAccountManager} contract to register\n services by hashing (keccak256) the service name (string) and creating a mapping\n as keccak256(serviceName) => serviceName." + }, + "fullyImplemented": true, + "id": 18165, + "linearizedBaseContracts": [ + 18165, + 840 + ], + "name": "ServiceRegistry", + "nameLocation": "584:15:58", + "nodeType": "ContractDefinition", + "nodes": [ + { + "global": false, + "id": 17849, + "libraryName": { + "id": 17846, + "name": "EnumerableSet", + "nameLocations": [ + "802:13:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10517, + "src": "802:13:58" + }, + "nodeType": "UsingForDirective", + "src": "796:49:58", + "typeName": { + "id": 17848, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 17847, + "name": "EnumerableSet.Bytes32Set", + "nameLocations": [ + "820:13:58", + "834:10:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10109, + "src": "820:24:58" + }, + "referencedDeclaration": 10109, + "src": "820:24:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$10109_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + } + }, + { + "canonicalName": "ServiceRegistry.ServiceRegistryStorage", + "documentation": { + "id": 17850, + "nodeType": "StructuredDocumentation", + "src": "851:77:58", + "text": "@custom:storage-location erc7201:camino.messenger.storage.ServiceRegistry" + }, + "id": 17862, + "members": [ + { + "constant": false, + "id": 17853, + "mutability": "mutable", + "name": "_servicesHashSet", + "nameLocation": "998:16:58", + "nodeType": "VariableDeclaration", + "scope": 17862, + "src": "973:41:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$10109_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + }, + "typeName": { + "id": 17852, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 17851, + "name": "EnumerableSet.Bytes32Set", + "nameLocations": [ + "973:13:58", + "987:10:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 10109, + "src": "973:24:58" + }, + "referencedDeclaration": 10109, + "src": "973:24:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$10109_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 17857, + "mutability": "mutable", + "name": "_serviceNameByHash", + "nameLocation": "1100:18:58", + "nodeType": "VariableDeclaration", + "scope": 17862, + "src": "1049:69:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_string_storage_$", + "typeString": "mapping(bytes32 => string)" + }, + "typeName": { + "id": 17856, + "keyName": "serviceHash", + "keyNameLocation": "1065:11:58", + "keyType": { + "id": 17854, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1057:7:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "1049:50:58", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_string_storage_$", + "typeString": "mapping(bytes32 => string)" + }, + "valueName": "serviceName", + "valueNameLocation": "1087:11:58", + "valueType": { + "id": 17855, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1080:6:58", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 17861, + "mutability": "mutable", + "name": "_hashByServiceName", + "nameLocation": "1179:18:58", + "nodeType": "VariableDeclaration", + "scope": 17862, + "src": "1128:69:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_bytes32_$", + "typeString": "mapping(string => bytes32)" + }, + "typeName": { + "id": 17860, + "keyName": "serviceName", + "keyNameLocation": "1143:11:58", + "keyType": { + "id": 17858, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1136:6:58", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "nodeType": "Mapping", + "src": "1128:50:58", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_bytes32_$", + "typeString": "mapping(string => bytes32)" + }, + "valueName": "serviceHash", + "valueNameLocation": "1166:11:58", + "valueType": { + "id": 17859, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1158:7:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + }, + "visibility": "internal" + } + ], + "name": "ServiceRegistryStorage", + "nameLocation": "940:22:58", + "nodeType": "StructDefinition", + "scope": 18165, + "src": "933:271:58", + "visibility": "public" + }, + { + "constant": true, + "id": 17865, + "mutability": "constant", + "name": "ServiceRegistryStorageLocation", + "nameLocation": "1359:30:58", + "nodeType": "VariableDeclaration", + "scope": 18165, + "src": "1334:132:58", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 17863, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1334:7:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "hexValue": "307835363365303337333535666666303530373730356634383165346233363265346333393936613362353764303733303764656162666361336438313638363030", + "id": 17864, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1400:66:58", + "typeDescriptions": { + "typeIdentifier": "t_rational_39008473310866908200128771551230288420814066119420102897059719156439451076096_by_1", + "typeString": "int_const 3900...(69 digits omitted)...6096" + }, + "value": "0x563e037355fff0507705f481e4b362e4c3996a3b57d07307deabfca3d8168600" + }, + "visibility": "private" + }, + { + "body": { + "id": 17872, + "nodeType": "Block", + "src": "1567:89:58", + "statements": [ + { + "AST": { + "nativeSrc": "1586:64:58", + "nodeType": "YulBlock", + "src": "1586:64:58", + "statements": [ + { + "nativeSrc": "1600:40:58", + "nodeType": "YulAssignment", + "src": "1600:40:58", + "value": { + "name": "ServiceRegistryStorageLocation", + "nativeSrc": "1610:30:58", + "nodeType": "YulIdentifier", + "src": "1610:30:58" + }, + "variableNames": [ + { + "name": "$.slot", + "nativeSrc": "1600:6:58", + "nodeType": "YulIdentifier", + "src": "1600:6:58" + } + ] + } + ] + }, + "evmVersion": "paris", + "externalReferences": [ + { + "declaration": 17869, + "isOffset": false, + "isSlot": true, + "src": "1600:6:58", + "suffix": "slot", + "valueSize": 1 + }, + { + "declaration": 17865, + "isOffset": false, + "isSlot": false, + "src": "1610:30:58", + "valueSize": 1 + } + ], + "id": 17871, + "nodeType": "InlineAssembly", + "src": "1577:73:58" + } + ] + }, + "id": 17873, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_getServiceRegistryStorage", + "nameLocation": "1482:26:58", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 17866, + "nodeType": "ParameterList", + "parameters": [], + "src": "1508:2:58" + }, + "returnParameters": { + "id": 17870, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17869, + "mutability": "mutable", + "name": "$", + "nameLocation": "1564:1:58", + "nodeType": "VariableDeclaration", + "scope": 17873, + "src": "1533:32:58", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$17862_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage" + }, + "typeName": { + "id": 17868, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 17867, + "name": "ServiceRegistryStorage", + "nameLocations": [ + "1533:22:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 17862, + "src": "1533:22:58" + }, + "referencedDeclaration": 17862, + "src": "1533:22:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$17862_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage" + } + }, + "visibility": "internal" + } + ], + "src": "1532:34:58" + }, + "scope": 18165, + "src": "1473:183:58", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + }, + { + "anonymous": false, + "eventSelector": "bad43a69707ac20dd539f3163b927e83baef6e967f2c95432129b1ded4166458", + "id": 17879, + "name": "ServiceRegistered", + "nameLocation": "1841:17:58", + "nodeType": "EventDefinition", + "parameters": { + "id": 17878, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17875, + "indexed": false, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "1866:11:58", + "nodeType": "VariableDeclaration", + "scope": 17879, + "src": "1859:18:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 17874, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1859:6:58", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 17877, + "indexed": false, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "1887:11:58", + "nodeType": "VariableDeclaration", + "scope": 17879, + "src": "1879:19:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 17876, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1879:7:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1858:41:58" + }, + "src": "1835:65:58" + }, + { + "anonymous": false, + "eventSelector": "57158eaa7e642cefd761327d5cd6c147ddaad706ec257f90f4d8b59b3d365eb7", + "id": 17885, + "name": "ServiceUnregistered", + "nameLocation": "1911:19:58", + "nodeType": "EventDefinition", + "parameters": { + "id": 17884, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17881, + "indexed": false, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "1938:11:58", + "nodeType": "VariableDeclaration", + "scope": 17885, + "src": "1931:18:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 17880, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1931:6:58", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 17883, + "indexed": false, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "1959:11:58", + "nodeType": "VariableDeclaration", + "scope": 17885, + "src": "1951:19:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 17882, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1951:7:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "1930:41:58" + }, + "src": "1905:67:58" + }, + { + "errorSelector": "7b5a1bea", + "id": 17889, + "name": "ServiceAlreadyRegistered", + "nameLocation": "2157:24:58", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 17888, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17887, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "2189:11:58", + "nodeType": "VariableDeclaration", + "scope": 17889, + "src": "2182:18:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 17886, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2182:6:58", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "2181:20:58" + }, + "src": "2151:51:58" + }, + { + "errorSelector": "2c5d24ce", + "id": 17891, + "name": "ServiceNotRegistered", + "nameLocation": "2213:20:58", + "nodeType": "ErrorDefinition", + "parameters": { + "id": 17890, + "nodeType": "ParameterList", + "parameters": [], + "src": "2233:2:58" + }, + "src": "2207:29:58" + }, + { + "body": { + "id": 17896, + "nodeType": "Block", + "src": "2475:2:58", + "statements": [] + }, + "id": 17897, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 17894, + "kind": "modifierInvocation", + "modifierName": { + "id": 17893, + "name": "onlyInitializing", + "nameLocations": [ + "2458:16:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 749, + "src": "2458:16:58" + }, + "nodeType": "ModifierInvocation", + "src": "2458:16:58" + } + ], + "name": "__ServiceRegistry_init", + "nameLocation": "2424:22:58", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 17892, + "nodeType": "ParameterList", + "parameters": [], + "src": "2446:2:58" + }, + "returnParameters": { + "id": 17895, + "nodeType": "ParameterList", + "parameters": [], + "src": "2475:0:58" + }, + "scope": 18165, + "src": "2415:62:58", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 17902, + "nodeType": "Block", + "src": "2553:2:58", + "statements": [] + }, + "id": 17903, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "id": 17900, + "kind": "modifierInvocation", + "modifierName": { + "id": 17899, + "name": "onlyInitializing", + "nameLocations": [ + "2536:16:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 749, + "src": "2536:16:58" + }, + "nodeType": "ModifierInvocation", + "src": "2536:16:58" + } + ], + "name": "__ServiceRegistry_init_unchained", + "nameLocation": "2492:32:58", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 17898, + "nodeType": "ParameterList", + "parameters": [], + "src": "2524:2:58" + }, + "returnParameters": { + "id": 17901, + "nodeType": "ParameterList", + "parameters": [], + "src": "2553:0:58" + }, + "scope": 18165, + "src": "2483:72:58", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 17961, + "nodeType": "Block", + "src": "3431:527:58", + "statements": [ + { + "assignments": [ + 17910 + ], + "declarations": [ + { + "constant": false, + "id": 17910, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "3449:11:58", + "nodeType": "VariableDeclaration", + "scope": 17961, + "src": "3441:19:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 17909, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3441:7:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 17917, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 17914, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17906, + "src": "3490:11:58", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "expression": { + "id": 17912, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "3473:3:58", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 17913, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "3477:12:58", + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "3473:16:58", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 17915, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3473:29:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 17911, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3463:9:58", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 17916, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3463:40:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3441:62:58" + }, + { + "assignments": [ + 17920 + ], + "declarations": [ + { + "constant": false, + "id": 17920, + "mutability": "mutable", + "name": "$", + "nameLocation": "3545:1:58", + "nodeType": "VariableDeclaration", + "scope": 17961, + "src": "3514:32:58", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$17862_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage" + }, + "typeName": { + "id": 17919, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 17918, + "name": "ServiceRegistryStorage", + "nameLocations": [ + "3514:22:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 17862, + "src": "3514:22:58" + }, + "referencedDeclaration": 17862, + "src": "3514:22:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$17862_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage" + } + }, + "visibility": "internal" + } + ], + "id": 17923, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 17921, + "name": "_getServiceRegistryStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17873, + "src": "3549:26:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ServiceRegistryStorage_$17862_storage_ptr_$", + "typeString": "function () pure returns (struct ServiceRegistry.ServiceRegistryStorage storage pointer)" + } + }, + "id": 17922, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3549:28:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$17862_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3514:63:58" + }, + { + "assignments": [ + 17925 + ], + "declarations": [ + { + "constant": false, + "id": 17925, + "mutability": "mutable", + "name": "added", + "nameLocation": "3643:5:58", + "nodeType": "VariableDeclaration", + "scope": 17961, + "src": "3638:10:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 17924, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3638:4:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 17931, + "initialValue": { + "arguments": [ + { + "id": 17929, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17910, + "src": "3674:11:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "expression": { + "id": 17926, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17920, + "src": "3651:1:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$17862_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage storage pointer" + } + }, + "id": 17927, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3653:16:58", + "memberName": "_servicesHashSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 17853, + "src": "3651:18:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$10109_storage", + "typeString": "struct EnumerableSet.Bytes32Set storage ref" + } + }, + "id": 17928, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3670:3:58", + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 10127, + "src": "3651:22:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32Set_$10109_storage_ptr_$_t_bytes32_$returns$_t_bool_$attached_to$_t_struct$_Bytes32Set_$10109_storage_ptr_$", + "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 17930, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3651:35:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3638:48:58" + }, + { + "condition": { + "id": 17933, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "3701:6:58", + "subExpression": { + "id": 17932, + "name": "added", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17925, + "src": "3702:5:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 17939, + "nodeType": "IfStatement", + "src": "3697:81:58", + "trueBody": { + "id": 17938, + "nodeType": "Block", + "src": "3709:69:58", + "statements": [ + { + "errorCall": { + "arguments": [ + { + "id": 17935, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17906, + "src": "3755:11:58", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 17934, + "name": "ServiceAlreadyRegistered", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17889, + "src": "3730:24:58", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 17936, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3730:37:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 17937, + "nodeType": "RevertStatement", + "src": "3723:44:58" + } + ] + } + }, + { + "expression": { + "id": 17946, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 17940, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17920, + "src": "3788:1:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$17862_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage storage pointer" + } + }, + "id": 17943, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3790:18:58", + "memberName": "_serviceNameByHash", + "nodeType": "MemberAccess", + "referencedDeclaration": 17857, + "src": "3788:20:58", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_string_storage_$", + "typeString": "mapping(bytes32 => string storage ref)" + } + }, + "id": 17944, + "indexExpression": { + "id": 17942, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17910, + "src": "3809:11:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3788:33:58", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 17945, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17906, + "src": "3824:11:58", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "3788:47:58", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 17947, + "nodeType": "ExpressionStatement", + "src": "3788:47:58" + }, + { + "expression": { + "id": 17954, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "id": 17948, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17920, + "src": "3845:1:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$17862_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage storage pointer" + } + }, + "id": 17951, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3847:18:58", + "memberName": "_hashByServiceName", + "nodeType": "MemberAccess", + "referencedDeclaration": 17861, + "src": "3845:20:58", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_bytes32_$", + "typeString": "mapping(string memory => bytes32)" + } + }, + "id": 17952, + "indexExpression": { + "id": 17950, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17906, + "src": "3866:11:58", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3845:33:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 17953, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17910, + "src": "3881:11:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3845:47:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 17955, + "nodeType": "ExpressionStatement", + "src": "3845:47:58" + }, + { + "eventCall": { + "arguments": [ + { + "id": 17957, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17906, + "src": "3926:11:58", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "id": 17958, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17910, + "src": "3939:11:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 17956, + "name": "ServiceRegistered", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17879, + "src": "3908:17:58", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_bytes32_$returns$__$", + "typeString": "function (string memory,bytes32)" + } + }, + "id": 17959, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3908:43:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 17960, + "nodeType": "EmitStatement", + "src": "3903:48:58" + } + ] + }, + "documentation": { + "id": 17904, + "nodeType": "StructuredDocumentation", + "src": "2734:618:58", + "text": " @notice Adds a new service by its name. This function calculates the hash of the\n service name and adds it to the registry\n {serviceName} is the pkg + service name as:\n ```text\n ┌────────────── pkg ─────────────┐ ┌───── service name ─────┐\n \"cmp.services.accommodation.v1alpha.AccommodationSearchService\"\n ```\n @dev These services are coming from the Camino Messenger Protocol's protobuf\n definitions.\n @param serviceName Name of the service" + }, + "id": 17962, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_registerServiceName", + "nameLocation": "3366:20:58", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 17907, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17906, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "3401:11:58", + "nodeType": "VariableDeclaration", + "scope": 17962, + "src": "3387:25:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 17905, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3387:6:58", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "3386:27:58" + }, + "returnParameters": { + "id": 17908, + "nodeType": "ParameterList", + "parameters": [], + "src": "3431:0:58" + }, + "scope": 18165, + "src": "3357:601:58", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 18015, + "nodeType": "Block", + "src": "4250:510:58", + "statements": [ + { + "assignments": [ + 17969 + ], + "declarations": [ + { + "constant": false, + "id": 17969, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "4268:11:58", + "nodeType": "VariableDeclaration", + "scope": 18015, + "src": "4260:19:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 17968, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4260:7:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "id": 17976, + "initialValue": { + "arguments": [ + { + "arguments": [ + { + "id": 17973, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17965, + "src": "4309:11:58", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "expression": { + "id": 17971, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "4292:3:58", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 17972, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "4296:12:58", + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "4292:16:58", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 17974, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4292:29:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 17970, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "4282:9:58", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 17975, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4282:40:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4260:62:58" + }, + { + "assignments": [ + 17979 + ], + "declarations": [ + { + "constant": false, + "id": 17979, + "mutability": "mutable", + "name": "$", + "nameLocation": "4364:1:58", + "nodeType": "VariableDeclaration", + "scope": 18015, + "src": "4333:32:58", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$17862_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage" + }, + "typeName": { + "id": 17978, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 17977, + "name": "ServiceRegistryStorage", + "nameLocations": [ + "4333:22:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 17862, + "src": "4333:22:58" + }, + "referencedDeclaration": 17862, + "src": "4333:22:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$17862_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage" + } + }, + "visibility": "internal" + } + ], + "id": 17982, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 17980, + "name": "_getServiceRegistryStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17873, + "src": "4368:26:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ServiceRegistryStorage_$17862_storage_ptr_$", + "typeString": "function () pure returns (struct ServiceRegistry.ServiceRegistryStorage storage pointer)" + } + }, + "id": 17981, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4368:28:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$17862_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4333:63:58" + }, + { + "assignments": [ + 17984 + ], + "declarations": [ + { + "constant": false, + "id": 17984, + "mutability": "mutable", + "name": "removed", + "nameLocation": "4465:7:58", + "nodeType": "VariableDeclaration", + "scope": 18015, + "src": "4460:12:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 17983, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4460:4:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "id": 17990, + "initialValue": { + "arguments": [ + { + "id": 17988, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17969, + "src": "4501:11:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "expression": { + "id": 17985, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17979, + "src": "4475:1:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$17862_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage storage pointer" + } + }, + "id": 17986, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4477:16:58", + "memberName": "_servicesHashSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 17853, + "src": "4475:18:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$10109_storage", + "typeString": "struct EnumerableSet.Bytes32Set storage ref" + } + }, + "id": 17987, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4494:6:58", + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 10145, + "src": "4475:25:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Bytes32Set_$10109_storage_ptr_$_t_bytes32_$returns$_t_bool_$attached_to$_t_struct$_Bytes32Set_$10109_storage_ptr_$", + "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 17989, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4475:38:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4460:53:58" + }, + { + "condition": { + "id": 17992, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4528:8:58", + "subExpression": { + "id": 17991, + "name": "removed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17984, + "src": "4529:7:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 17997, + "nodeType": "IfStatement", + "src": "4524:68:58", + "trueBody": { + "id": 17996, + "nodeType": "Block", + "src": "4538:54:58", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 17993, + "name": "ServiceNotRegistered", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17891, + "src": "4559:20:58", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 17994, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4559:22:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 17995, + "nodeType": "RevertStatement", + "src": "4552:29:58" + } + ] + } + }, + { + "expression": { + "id": 18002, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "4602:40:58", + "subExpression": { + "baseExpression": { + "expression": { + "id": 17998, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17979, + "src": "4609:1:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$17862_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage storage pointer" + } + }, + "id": 17999, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4611:18:58", + "memberName": "_serviceNameByHash", + "nodeType": "MemberAccess", + "referencedDeclaration": 17857, + "src": "4609:20:58", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_string_storage_$", + "typeString": "mapping(bytes32 => string storage ref)" + } + }, + "id": 18001, + "indexExpression": { + "id": 18000, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17969, + "src": "4630:11:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4609:33:58", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 18003, + "nodeType": "ExpressionStatement", + "src": "4602:40:58" + }, + { + "expression": { + "id": 18008, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "4652:40:58", + "subExpression": { + "baseExpression": { + "expression": { + "id": 18004, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17979, + "src": "4659:1:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$17862_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage storage pointer" + } + }, + "id": 18005, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4661:18:58", + "memberName": "_hashByServiceName", + "nodeType": "MemberAccess", + "referencedDeclaration": 17861, + "src": "4659:20:58", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_bytes32_$", + "typeString": "mapping(string memory => bytes32)" + } + }, + "id": 18007, + "indexExpression": { + "id": 18006, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17965, + "src": "4680:11:58", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4659:33:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 18009, + "nodeType": "ExpressionStatement", + "src": "4652:40:58" + }, + { + "eventCall": { + "arguments": [ + { + "id": 18011, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17965, + "src": "4728:11:58", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "id": 18012, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17969, + "src": "4741:11:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 18010, + "name": "ServiceUnregistered", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17885, + "src": "4708:19:58", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_string_memory_ptr_$_t_bytes32_$returns$__$", + "typeString": "function (string memory,bytes32)" + } + }, + "id": 18013, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4708:45:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 18014, + "nodeType": "EmitStatement", + "src": "4703:50:58" + } + ] + }, + "documentation": { + "id": 17963, + "nodeType": "StructuredDocumentation", + "src": "3964:205:58", + "text": " @notice Removes a service by its name. This function calculates the hash of the\n service name and removes it from the registry.\n @param serviceName Name of the service" + }, + "id": 18016, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_unregisterServiceName", + "nameLocation": "4183:22:58", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 17966, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 17965, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "4220:11:58", + "nodeType": "VariableDeclaration", + "scope": 18016, + "src": "4206:25:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 17964, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4206:6:58", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "4205:27:58" + }, + "returnParameters": { + "id": 17967, + "nodeType": "ParameterList", + "parameters": [], + "src": "4250:0:58" + }, + "scope": 18165, + "src": "4174:586:58", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 18046, + "nodeType": "Block", + "src": "5002:287:58", + "statements": [ + { + "assignments": [ + 18026 + ], + "declarations": [ + { + "constant": false, + "id": 18026, + "mutability": "mutable", + "name": "$", + "nameLocation": "5043:1:58", + "nodeType": "VariableDeclaration", + "scope": 18046, + "src": "5012:32:58", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$17862_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage" + }, + "typeName": { + "id": 18025, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 18024, + "name": "ServiceRegistryStorage", + "nameLocations": [ + "5012:22:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 17862, + "src": "5012:22:58" + }, + "referencedDeclaration": 17862, + "src": "5012:22:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$17862_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage" + } + }, + "visibility": "internal" + } + ], + "id": 18029, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 18027, + "name": "_getServiceRegistryStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17873, + "src": "5047:26:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ServiceRegistryStorage_$17862_storage_ptr_$", + "typeString": "function () pure returns (struct ServiceRegistry.ServiceRegistryStorage storage pointer)" + } + }, + "id": 18028, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5047:28:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$17862_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5012:63:58" + }, + { + "condition": { + "id": 18035, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "5136:41:58", + "subExpression": { + "arguments": [ + { + "id": 18033, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18019, + "src": "5165:11:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "expression": { + "id": 18030, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18026, + "src": "5137:1:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$17862_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage storage pointer" + } + }, + "id": 18031, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5139:16:58", + "memberName": "_servicesHashSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 17853, + "src": "5137:18:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$10109_storage", + "typeString": "struct EnumerableSet.Bytes32Set storage ref" + } + }, + "id": 18032, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5156:8:58", + "memberName": "contains", + "nodeType": "MemberAccess", + "referencedDeclaration": 10163, + "src": "5137:27:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32Set_$10109_storage_ptr_$_t_bytes32_$returns$_t_bool_$attached_to$_t_struct$_Bytes32Set_$10109_storage_ptr_$", + "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer,bytes32) view returns (bool)" + } + }, + "id": 18034, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5137:40:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 18040, + "nodeType": "IfStatement", + "src": "5132:101:58", + "trueBody": { + "id": 18039, + "nodeType": "Block", + "src": "5179:54:58", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 18036, + "name": "ServiceNotRegistered", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17891, + "src": "5200:20:58", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 18037, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5200:22:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 18038, + "nodeType": "RevertStatement", + "src": "5193:29:58" + } + ] + } + }, + { + "expression": { + "baseExpression": { + "expression": { + "id": 18041, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18026, + "src": "5249:1:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$17862_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage storage pointer" + } + }, + "id": 18042, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5251:18:58", + "memberName": "_serviceNameByHash", + "nodeType": "MemberAccess", + "referencedDeclaration": 17857, + "src": "5249:20:58", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_string_storage_$", + "typeString": "mapping(bytes32 => string storage ref)" + } + }, + "id": 18044, + "indexExpression": { + "id": 18043, + "name": "serviceHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18019, + "src": "5270:11:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5249:33:58", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 18023, + "id": 18045, + "nodeType": "Return", + "src": "5242:40:58" + } + ] + }, + "documentation": { + "id": 18017, + "nodeType": "StructuredDocumentation", + "src": "4766:122:58", + "text": " @notice Returns the name of a service by its hash.\n @param serviceHash Hash of the service" + }, + "functionSelector": "5a81a626", + "id": 18047, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getRegisteredServiceNameByHash", + "nameLocation": "4902:30:58", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 18020, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 18019, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "4941:11:58", + "nodeType": "VariableDeclaration", + "scope": 18047, + "src": "4933:19:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 18018, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4933:7:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "4932:21:58" + }, + "returnParameters": { + "id": 18023, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 18022, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "4989:11:58", + "nodeType": "VariableDeclaration", + "scope": 18047, + "src": "4975:25:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 18021, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4975:6:58", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "4974:27:58" + }, + "scope": 18165, + "src": "4893:396:58", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 18082, + "nodeType": "Block", + "src": "5531:317:58", + "statements": [ + { + "assignments": [ + 18057 + ], + "declarations": [ + { + "constant": false, + "id": 18057, + "mutability": "mutable", + "name": "$", + "nameLocation": "5572:1:58", + "nodeType": "VariableDeclaration", + "scope": 18082, + "src": "5541:32:58", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$17862_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage" + }, + "typeName": { + "id": 18056, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 18055, + "name": "ServiceRegistryStorage", + "nameLocations": [ + "5541:22:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 17862, + "src": "5541:22:58" + }, + "referencedDeclaration": 17862, + "src": "5541:22:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$17862_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage" + } + }, + "visibility": "internal" + } + ], + "id": 18060, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 18058, + "name": "_getServiceRegistryStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17873, + "src": "5576:26:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ServiceRegistryStorage_$17862_storage_ptr_$", + "typeString": "function () pure returns (struct ServiceRegistry.ServiceRegistryStorage storage pointer)" + } + }, + "id": 18059, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5576:28:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$17862_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5541:63:58" + }, + { + "condition": { + "id": 18071, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "5665:70:58", + "subExpression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "id": 18067, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18050, + "src": "5721:11:58", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "expression": { + "id": 18065, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "5704:3:58", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 18066, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberLocation": "5708:12:58", + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "src": "5704:16:58", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 18068, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5704:29:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 18064, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "5694:9:58", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 18069, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5694:40:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "expression": { + "id": 18061, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18057, + "src": "5666:1:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$17862_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage storage pointer" + } + }, + "id": 18062, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5668:16:58", + "memberName": "_servicesHashSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 17853, + "src": "5666:18:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$10109_storage", + "typeString": "struct EnumerableSet.Bytes32Set storage ref" + } + }, + "id": 18063, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5685:8:58", + "memberName": "contains", + "nodeType": "MemberAccess", + "referencedDeclaration": 10163, + "src": "5666:27:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32Set_$10109_storage_ptr_$_t_bytes32_$returns$_t_bool_$attached_to$_t_struct$_Bytes32Set_$10109_storage_ptr_$", + "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer,bytes32) view returns (bool)" + } + }, + "id": 18070, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5666:69:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 18076, + "nodeType": "IfStatement", + "src": "5661:130:58", + "trueBody": { + "id": 18075, + "nodeType": "Block", + "src": "5737:54:58", + "statements": [ + { + "errorCall": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 18072, + "name": "ServiceNotRegistered", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17891, + "src": "5758:20:58", + "typeDescriptions": { + "typeIdentifier": "t_function_error_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 18073, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5758:22:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 18074, + "nodeType": "RevertStatement", + "src": "5751:29:58" + } + ] + } + }, + { + "expression": { + "baseExpression": { + "expression": { + "id": 18077, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18057, + "src": "5808:1:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$17862_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage storage pointer" + } + }, + "id": 18078, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5810:18:58", + "memberName": "_hashByServiceName", + "nodeType": "MemberAccess", + "referencedDeclaration": 17861, + "src": "5808:20:58", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_bytes32_$", + "typeString": "mapping(string memory => bytes32)" + } + }, + "id": 18080, + "indexExpression": { + "id": 18079, + "name": "serviceName", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18050, + "src": "5829:11:58", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5808:33:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 18054, + "id": 18081, + "nodeType": "Return", + "src": "5801:40:58" + } + ] + }, + "documentation": { + "id": 18048, + "nodeType": "StructuredDocumentation", + "src": "5295:122:58", + "text": " @notice Returns the hash of a service by its name.\n @param serviceName Name of the service" + }, + "functionSelector": "352af39a", + "id": 18083, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getRegisteredServiceHashByName", + "nameLocation": "5431:30:58", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 18051, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 18050, + "mutability": "mutable", + "name": "serviceName", + "nameLocation": "5476:11:58", + "nodeType": "VariableDeclaration", + "scope": 18083, + "src": "5462:25:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 18049, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "5462:6:58", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "5461:27:58" + }, + "returnParameters": { + "id": 18054, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 18053, + "mutability": "mutable", + "name": "serviceHash", + "nameLocation": "5518:11:58", + "nodeType": "VariableDeclaration", + "scope": 18083, + "src": "5510:19:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 18052, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5510:7:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "5509:21:58" + }, + "scope": 18165, + "src": "5422:426:58", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 18101, + "nodeType": "Block", + "src": "6078:124:58", + "statements": [ + { + "assignments": [ + 18092 + ], + "declarations": [ + { + "constant": false, + "id": 18092, + "mutability": "mutable", + "name": "$", + "nameLocation": "6119:1:58", + "nodeType": "VariableDeclaration", + "scope": 18101, + "src": "6088:32:58", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$17862_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage" + }, + "typeName": { + "id": 18091, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 18090, + "name": "ServiceRegistryStorage", + "nameLocations": [ + "6088:22:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 17862, + "src": "6088:22:58" + }, + "referencedDeclaration": 17862, + "src": "6088:22:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$17862_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage" + } + }, + "visibility": "internal" + } + ], + "id": 18095, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 18093, + "name": "_getServiceRegistryStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17873, + "src": "6123:26:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ServiceRegistryStorage_$17862_storage_ptr_$", + "typeString": "function () pure returns (struct ServiceRegistry.ServiceRegistryStorage storage pointer)" + } + }, + "id": 18094, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6123:28:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$17862_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6088:63:58" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "expression": { + "id": 18096, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18092, + "src": "6168:1:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$17862_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage storage pointer" + } + }, + "id": 18097, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6170:16:58", + "memberName": "_servicesHashSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 17853, + "src": "6168:18:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$10109_storage", + "typeString": "struct EnumerableSet.Bytes32Set storage ref" + } + }, + "id": 18098, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6187:6:58", + "memberName": "values", + "nodeType": "MemberAccess", + "referencedDeclaration": 10226, + "src": "6168:25:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32Set_$10109_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$attached_to$_t_struct$_Bytes32Set_$10109_storage_ptr_$", + "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer) view returns (bytes32[] memory)" + } + }, + "id": 18099, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6168:27:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "functionReturnParameters": 18089, + "id": 18100, + "nodeType": "Return", + "src": "6161:34:58" + } + ] + }, + "documentation": { + "id": 18084, + "nodeType": "StructuredDocumentation", + "src": "5854:130:58", + "text": " @notice Returns all registered service **hashes**.\n @return services All registered service hashes" + }, + "functionSelector": "8127f465", + "id": 18102, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAllRegisteredServiceHashes", + "nameLocation": "5998:29:58", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 18085, + "nodeType": "ParameterList", + "parameters": [], + "src": "6027:2:58" + }, + "returnParameters": { + "id": 18089, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 18088, + "mutability": "mutable", + "name": "services", + "nameLocation": "6068:8:58", + "nodeType": "VariableDeclaration", + "scope": 18102, + "src": "6051:25:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 18086, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6051:7:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 18087, + "nodeType": "ArrayTypeName", + "src": "6051:9:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "src": "6050:27:58" + }, + "scope": 18165, + "src": "5989:213:58", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 18163, + "nodeType": "Block", + "src": "6428:505:58", + "statements": [ + { + "assignments": [ + 18111 + ], + "declarations": [ + { + "constant": false, + "id": 18111, + "mutability": "mutable", + "name": "$", + "nameLocation": "6469:1:58", + "nodeType": "VariableDeclaration", + "scope": 18163, + "src": "6438:32:58", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$17862_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage" + }, + "typeName": { + "id": 18110, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 18109, + "name": "ServiceRegistryStorage", + "nameLocations": [ + "6438:22:58" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 17862, + "src": "6438:22:58" + }, + "referencedDeclaration": 17862, + "src": "6438:22:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$17862_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage" + } + }, + "visibility": "internal" + } + ], + "id": 18114, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 18112, + "name": "_getServiceRegistryStorage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17873, + "src": "6473:26:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$__$returns$_t_struct$_ServiceRegistryStorage_$17862_storage_ptr_$", + "typeString": "function () pure returns (struct ServiceRegistry.ServiceRegistryStorage storage pointer)" + } + }, + "id": 18113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6473:28:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$17862_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage storage pointer" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6438:63:58" + }, + { + "assignments": [ + 18119 + ], + "declarations": [ + { + "constant": false, + "id": 18119, + "mutability": "mutable", + "name": "serviceHashes", + "nameLocation": "6596:13:58", + "nodeType": "VariableDeclaration", + "scope": 18163, + "src": "6579:30:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 18117, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6579:7:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 18118, + "nodeType": "ArrayTypeName", + "src": "6579:9:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "visibility": "internal" + } + ], + "id": 18124, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "expression": { + "id": 18120, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18111, + "src": "6612:1:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$17862_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage storage pointer" + } + }, + "id": 18121, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6614:16:58", + "memberName": "_servicesHashSet", + "nodeType": "MemberAccess", + "referencedDeclaration": 17853, + "src": "6612:18:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$10109_storage", + "typeString": "struct EnumerableSet.Bytes32Set storage ref" + } + }, + "id": 18122, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6631:6:58", + "memberName": "values", + "nodeType": "MemberAccess", + "referencedDeclaration": 10226, + "src": "6612:25:58", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Bytes32Set_$10109_storage_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$attached_to$_t_struct$_Bytes32Set_$10109_storage_ptr_$", + "typeString": "function (struct EnumerableSet.Bytes32Set storage pointer) view returns (bytes32[] memory)" + } + }, + "id": 18123, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6612:27:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6579:60:58" + }, + { + "assignments": [ + 18129 + ], + "declarations": [ + { + "constant": false, + "id": 18129, + "mutability": "mutable", + "name": "serviceNames", + "nameLocation": "6665:12:58", + "nodeType": "VariableDeclaration", + "scope": 18163, + "src": "6649:28:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 18127, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "6649:6:58", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 18128, + "nodeType": "ArrayTypeName", + "src": "6649:8:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + } + ], + "id": 18136, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 18133, + "name": "serviceHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18119, + "src": "6693:13:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 18134, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6707:6:58", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "6693:20:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 18132, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "6680:12:58", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_string_memory_ptr_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (string memory[] memory)" + }, + "typeName": { + "baseType": { + "id": 18130, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "6684:6:58", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 18131, + "nodeType": "ArrayTypeName", + "src": "6684:8:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + } + }, + "id": 18135, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "6680:34:58", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6649:65:58" + }, + { + "body": { + "id": 18159, + "nodeType": "Block", + "src": "6816:81:58", + "statements": [ + { + "expression": { + "id": 18157, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 18148, + "name": "serviceNames", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18129, + "src": "6830:12:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + "id": 18150, + "indexExpression": { + "id": 18149, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18138, + "src": "6843:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6830:15:58", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "baseExpression": { + "expression": { + "id": 18151, + "name": "$", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18111, + "src": "6848:1:58", + "typeDescriptions": { + "typeIdentifier": "t_struct$_ServiceRegistryStorage_$17862_storage_ptr", + "typeString": "struct ServiceRegistry.ServiceRegistryStorage storage pointer" + } + }, + "id": 18152, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6850:18:58", + "memberName": "_serviceNameByHash", + "nodeType": "MemberAccess", + "referencedDeclaration": 17857, + "src": "6848:20:58", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_string_storage_$", + "typeString": "mapping(bytes32 => string storage ref)" + } + }, + "id": 18156, + "indexExpression": { + "baseExpression": { + "id": 18153, + "name": "serviceHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18119, + "src": "6869:13:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 18155, + "indexExpression": { + "id": 18154, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18138, + "src": "6883:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6869:16:58", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6848:38:58", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "src": "6830:56:58", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "id": 18158, + "nodeType": "ExpressionStatement", + "src": "6830:56:58" + } + ] + }, + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 18144, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 18141, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18138, + "src": "6785:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 18142, + "name": "serviceHashes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18119, + "src": "6789:13:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 18143, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "6803:6:58", + "memberName": "length", + "nodeType": "MemberAccess", + "src": "6789:20:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6785:24:58", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 18160, + "initializationExpression": { + "assignments": [ + 18138 + ], + "declarations": [ + { + "constant": false, + "id": 18138, + "mutability": "mutable", + "name": "i", + "nameLocation": "6778:1:58", + "nodeType": "VariableDeclaration", + "scope": 18160, + "src": "6770:9:58", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 18137, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6770:7:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 18140, + "initialValue": { + "hexValue": "30", + "id": 18139, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6782:1:58", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "6770:13:58" + }, + "isSimpleCounterLoop": true, + "loopExpression": { + "expression": { + "id": 18146, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "6811:3:58", + "subExpression": { + "id": 18145, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18138, + "src": "6811:1:58", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 18147, + "nodeType": "ExpressionStatement", + "src": "6811:3:58" + }, + "nodeType": "ForStatement", + "src": "6765:132:58" + }, + { + "expression": { + "id": 18161, + "name": "serviceNames", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18129, + "src": "6914:12:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string memory[] memory" + } + }, + "functionReturnParameters": 18108, + "id": 18162, + "nodeType": "Return", + "src": "6907:19:58" + } + ] + }, + "documentation": { + "id": 18103, + "nodeType": "StructuredDocumentation", + "src": "6208:128:58", + "text": " @notice Returns all registered service **names**.\n @return services All registered service names" + }, + "functionSelector": "c2a1db78", + "id": 18164, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getAllRegisteredServiceNames", + "nameLocation": "6350:28:58", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 18104, + "nodeType": "ParameterList", + "parameters": [], + "src": "6378:2:58" + }, + "returnParameters": { + "id": 18108, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 18107, + "mutability": "mutable", + "name": "services", + "nameLocation": "6418:8:58", + "nodeType": "VariableDeclaration", + "scope": 18164, + "src": "6402:24:58", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "typeString": "string[]" + }, + "typeName": { + "baseType": { + "id": 18105, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "6402:6:58", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "id": 18106, + "nodeType": "ArrayTypeName", + "src": "6402:8:58", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr", + "typeString": "string[]" + } + }, + "visibility": "internal" + } + ], + "src": "6401:26:58" + }, + "scope": 18165, + "src": "6341:592:58", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + } + ], + "scope": 18166, + "src": "566:6369:58", + "usedErrors": [ + 603, + 606, + 17889, + 17891 + ], + "usedEvents": [ + 611, + 17879, + 17885 + ] + } + ], + "src": "106:6830:58" + }, + "id": 58 + }, + "contracts/test/Dummy.sol": { + "ast": { + "absolutePath": "contracts/test/Dummy.sol", + "exportedSymbols": { + "Dummy": [ + 18176 + ] + }, + "id": 18177, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 18167, + "literals": [ + "solidity", + "0.8", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "60:23:59" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "Dummy", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 18176, + "linearizedBaseContracts": [ + 18176 + ], + "name": "Dummy", + "nameLocation": "94:5:59", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 18174, + "nodeType": "Block", + "src": "164:31:59", + "statements": [ + { + "expression": { + "hexValue": "44554d4d59", + "id": 18172, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "181:7:59", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_71a1e3f2a606b6c3410d51baf77895d71d0a1627d85a0a301f2533628beb6ff7", + "typeString": "literal_string \"DUMMY\"" + }, + "value": "DUMMY" + }, + "functionReturnParameters": 18171, + "id": 18173, + "nodeType": "Return", + "src": "174:14:59" + } + ] + }, + "functionSelector": "0d8e6e2c", + "id": 18175, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getVersion", + "nameLocation": "115:10:59", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 18168, + "nodeType": "ParameterList", + "parameters": [], + "src": "125:2:59" + }, + "returnParameters": { + "id": 18171, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 18170, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 18175, + "src": "149:13:59", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 18169, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "149:6:59", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "148:15:59" + }, + "scope": 18176, + "src": "106:89:59", + "stateMutability": "pure", + "virtual": false, + "visibility": "public" + } + ], + "scope": 18177, + "src": "85:112:59", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "60:138:59" + }, + "id": 59 + }, + "contracts/test/NullUSD.sol": { + "ast": { + "absolutePath": "contracts/test/NullUSD.sol", + "exportedSymbols": { + "ERC20": [ + 4435 + ], + "NullUSD": [ + 18202 + ] + }, + "id": 18203, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 18178, + "literals": [ + "solidity", + "0.8", + ".24" + ], + "nodeType": "PragmaDirective", + "src": "85:23:60" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol", + "id": 18180, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 18203, + "sourceUnit": 4436, + "src": "110:70:60", + "symbolAliases": [ + { + "foreign": { + "id": 18179, + "name": "ERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4435, + "src": "119:5:60", + "typeDescriptions": {} + }, + "nameLocation": "-1:-1:-1" + } + ], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "baseName": { + "id": 18181, + "name": "ERC20", + "nameLocations": [ + "202:5:60" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4435, + "src": "202:5:60" + }, + "id": 18182, + "nodeType": "InheritanceSpecifier", + "src": "202:5:60" + } + ], + "canonicalName": "NullUSD", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 18202, + "linearizedBaseContracts": [ + 18202, + 4435, + 3447, + 4539, + 4513, + 5511 + ], + "name": "NullUSD", + "nameLocation": "191:7:60", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 18200, + "nodeType": "Block", + "src": "253:62:60", + "statements": [ + { + "expression": { + "arguments": [ + { + "expression": { + "id": 18190, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "269:3:60", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 18191, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "273:6:60", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "269:10:60", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 18197, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "31303030303030", + "id": 18192, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "281:7:60", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000_by_1", + "typeString": "int_const 1000000" + }, + "value": "1000000" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 18196, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3130", + "id": 18193, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "291:2:60", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 18194, + "name": "decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3999, + "src": "297:8:60", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint8_$", + "typeString": "function () view returns (uint8)" + } + }, + "id": 18195, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "297:10:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "291:16:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "281:26:60", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 18189, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4275, + "src": "263:5:60", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 18198, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "263:45:60", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 18199, + "nodeType": "ExpressionStatement", + "src": "263:45:60" + } + ] + }, + "id": 18201, + "implemented": true, + "kind": "constructor", + "modifiers": [ + { + "arguments": [ + { + "hexValue": "4e756c6c555344", + "id": 18185, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "234:9:60", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f2ee2cacf70906ed938e3b3ff6c78c261bd0c34ee8b771a36c13f0e1d1ebf4ca", + "typeString": "literal_string \"NullUSD\"" + }, + "value": "NullUSD" + }, + { + "hexValue": "4e555344", + "id": 18186, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "245:6:60", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_650b666f55ad817de46e6c6c87861d8deaadefa05697861f467f8d066c7b63cc", + "typeString": "literal_string \"NUSD\"" + }, + "value": "NUSD" + } + ], + "id": 18187, + "kind": "baseConstructorSpecifier", + "modifierName": { + "id": 18184, + "name": "ERC20", + "nameLocations": [ + "228:5:60" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 4435, + "src": "228:5:60" + }, + "nodeType": "ModifierInvocation", + "src": "228:24:60" + } + ], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 18183, + "nodeType": "ParameterList", + "parameters": [], + "src": "225:2:60" + }, + "returnParameters": { + "id": 18188, + "nodeType": "ParameterList", + "parameters": [], + "src": "253:0:60" + }, + "scope": 18202, + "src": "214:101:60", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 18203, + "src": "182:135:60", + "usedErrors": [ + 3417, + 3422, + 3427, + 3436, + 3441, + 3446 + ], + "usedEvents": [ + 4447, + 4456 + ] + } + ], + "src": "85:233:60" + }, + "id": 60 + } + }, + "contracts": { + "@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol": { + "AccessControlUpgradeable": { + "abi": [ + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "callerConfirmation", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "DEFAULT_ADMIN_ROLE()": "a217fddf", + "getRoleAdmin(bytes32)": "248a9ca3", + "grantRole(bytes32,address)": "2f2ff15d", + "hasRole(bytes32,address)": "91d14854", + "renounceRole(bytes32,address)": "36568abe", + "revokeRole(bytes32,address)": "d547741f", + "supportsInterface(bytes4)": "01ffc9a7" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module that allows children to implement role-based access control mechanisms. This is a lightweight version that doesn't allow enumerating role members except through off-chain means by accessing the contract event logs. Some applications may benefit from on-chain enumerability, for those cases see {AccessControlEnumerable}. Roles are referred to by their `bytes32` identifier. These should be exposed in the external API and be unique. The best way to achieve this is by using `public constant` hash digests: ```solidity bytes32 public constant MY_ROLE = keccak256(\\\"MY_ROLE\\\"); ``` Roles can be used to represent a set of permissions. To restrict access to a function call, use {hasRole}: ```solidity function foo() public { require(hasRole(MY_ROLE, msg.sender)); ... } ``` Roles can be granted and revoked dynamically via the {grantRole} and {revokeRole} functions. Each role has an associated admin role, and only accounts that have a role's admin role can call {grantRole} and {revokeRole}. By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means that only accounts with this role will be able to grant or revoke other roles. More complex role relationships can be created by using {_setRoleAdmin}. WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to grant and revoke this role. Extra precautions should be taken to secure accounts that have been granted it. We recommend using {AccessControlDefaultAdminRules} to enforce additional security measures for this role.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\":\"AccessControlUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts-upgradeable/access/extensions/AccessControlEnumerableUpgradeable.sol": { + "AccessControlEnumerableUpgradeable": { + "abi": [ + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoleMember", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMemberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMembers", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "callerConfirmation", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "DEFAULT_ADMIN_ROLE()": "a217fddf", + "getRoleAdmin(bytes32)": "248a9ca3", + "getRoleMember(bytes32,uint256)": "9010d07c", + "getRoleMemberCount(bytes32)": "ca15c873", + "getRoleMembers(bytes32)": "a3246ad3", + "grantRole(bytes32,address)": "2f2ff15d", + "hasRole(bytes32,address)": "91d14854", + "renounceRole(bytes32,address)": "36568abe", + "revokeRole(bytes32,address)": "d547741f", + "supportsInterface(bytes4)": "01ffc9a7" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMembers\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Extension of {AccessControl} that allows enumerating the members of each role.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"getRoleMembers(bytes32)\":{\"details\":\"Return all accounts that have `role` WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that this function has an unbounded cost, and using it as part of a state-changing function may render the function uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/access/extensions/AccessControlEnumerableUpgradeable.sol\":\"AccessControlEnumerableUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"@openzeppelin/contracts-upgradeable/access/extensions/AccessControlEnumerableUpgradeable.sol\":{\"keccak256\":\"0xaec38804089a16494f7d45ebbbeab78fe05e5dc4bc2eae1d2af458fe999fb43c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04796408e2c4a1051afb23319e9505edb595a3d9c663ff5d6fcfb8e185ab1d93\",\"dweb:/ipfs/Qma8ZTi4kGyqg45SyNibbJSqMF7broiQnJPHhEGLcZyF9U\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.sol\":{\"keccak256\":\"0xca774fbe0568762efdc1a7cba31f09549c7fa96dbe97410f4843fa2f0bc000a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0187ffdbf3d61b6d86cba4fcd9826e53d876987d620533ee84c681bdaf0f3ba3\",\"dweb:/ipfs/QmVJDqdJv6uzHY7ifncfv2QJep8XTzS3bGb4s5Exhuv86m\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol": { + "Initializable": { + "abi": [ + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor constructor() { _disableInitializers(); } ``` ====\",\"details\":\"This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ```solidity contract MyToken is ERC20Upgradeable { function initialize() initializer public { __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\"); } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable { function initializeV2() reinitializer(2) public { __ERC20Permit_init(\\\"MyToken\\\"); } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":\"Initializable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol": { + "UUPSUpgradeable": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + } + ], + "name": "AddressEmptyCode", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "ERC1967InvalidImplementation", + "type": "error" + }, + { + "inputs": [], + "name": "ERC1967NonPayable", + "type": "error" + }, + { + "inputs": [], + "name": "FailedCall", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "inputs": [], + "name": "UUPSUnauthorizedCallContext", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "slot", + "type": "bytes32" + } + ], + "name": "UUPSUnsupportedProxiableUUID", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "inputs": [], + "name": "UPGRADE_INTERFACE_VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "UPGRADE_INTERFACE_VERSION()": "ad3cb1cc", + "proxiableUUID()": "52d1902d", + "upgradeToAndCall(address,bytes)": "4f1ef286" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"An upgradeability mechanism designed for UUPS proxies. The functions included here can perform an upgrade of an {ERC1967Proxy}, when this contract is set as the implementation behind such a proxy. A security mechanism ensures that an upgrade does not turn off upgradeability accidentally, although this risk is reinstated if the upgrade retains upgradeability but removes the security mechanism, e.g. by replacing `UUPSUpgradeable` with a custom implementation of upgrades. The {_authorizeUpgrade} function must be overridden to include access restriction to the upgrade mechanism.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"stateVariables\":{\"UPGRADE_INTERFACE_VERSION\":{\"details\":\"The version of the upgrade interface of the contract. If this getter is missing, both `upgradeTo(address)` and `upgradeToAndCall(address,bytes)` are present, and `upgradeTo` must be used if no function should be called, while `upgradeToAndCall` will invoke the `receive` function if the second argument is the empty byte string. If the getter returns `\\\"5.0.0\\\"`, only `upgradeToAndCall(address,bytes)` is present, and the second argument must be the empty byte string if no function should be called, making it impossible to invoke the `receive` function during an upgrade.\"},\"__self\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":\"UUPSUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xf72d3b11f41fccbbdcacd121f994daab8267ccfceb1fb4f247e4ba274c169d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e46ee40ddc9e2009176ce5d76aa2c046fd68f2ed52d02d77db191365b7c5b2e\",\"dweb:/ipfs/QmZnxgPmCCHosdvbh4J65uTaFYeGtZGzQ1sXRdeh1y68Zr\"]},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c\",\"dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol": { + "ERC721Upgradeable": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC721IncorrectOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721InsufficientApproval", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC721InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "ERC721InvalidOperator", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC721InvalidOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC721InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC721InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721NonexistentToken", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "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": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "getApproved(uint256)": "081812fc", + "isApprovedForAll(address,address)": "e985e9c5", + "name()": "06fdde03", + "ownerOf(uint256)": "6352211e", + "safeTransferFrom(address,address,uint256)": "42842e0e", + "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde", + "setApprovalForAll(address,bool)": "a22cb465", + "supportsInterface(bytes4)": "01ffc9a7", + "symbol()": "95d89b41", + "tokenURI(uint256)": "c87b56dd", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"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\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of https://eips.ethereum.org/EIPS/eip-721[ERC-721] Non-Fungible Token Standard, including the Metadata extension, but not including the Enumerable extension, which is available separately as {ERC721Enumerable}.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":\"ERC721Upgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"keccak256\":\"0xfd473ea8f70e13eaa6475c7e348885b8a32925252e3bc237e07c0e3fde0f10f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea9d17ae8f18568ab1aedf555ebc79906ba3eaaccfa78efbaed05bd3a9e1b6f2\",\"dweb:/ipfs/QmUQDGwCVE72tExiyA9EuwBeaiu9a8DQin3DZxuX76umg4\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xb5afb8e8eebc4d1c6404df2f5e1e6d2c3d24fd01e5dfc855314951ecfaae462d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://78586466c424f076c6a2a551d848cfbe3f7c49e723830807598484a1047b3b34\",\"dweb:/ipfs/Qmb717ovcFxm7qgNKEShiV6M9SPR3v1qnNpAGH84D6w29p\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"]},\"@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol\":{\"keccak256\":\"0x40399695922383778f9f540a620bec475a2f8e0f08d41f0005682842e28a9855\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://746d295e403931aeb9d6065fd5a0871f43ab5459814a60623611e4b6641a09fd\",\"dweb:/ipfs/QmWrgT8YJrQ9FfD1o3YYArwo57e7MGdpFKuM74qJ4qE34E\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0\",\"dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol": { + "ERC721EnumerableUpgradeable": { + "abi": [ + { + "inputs": [], + "name": "ERC721EnumerableForbiddenBatchMint", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC721IncorrectOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721InsufficientApproval", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC721InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "ERC721InvalidOperator", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC721InvalidOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC721InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC721InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721NonexistentToken", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "ERC721OutOfBoundsIndex", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "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": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "getApproved(uint256)": "081812fc", + "isApprovedForAll(address,address)": "e985e9c5", + "name()": "06fdde03", + "ownerOf(uint256)": "6352211e", + "safeTransferFrom(address,address,uint256)": "42842e0e", + "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde", + "setApprovalForAll(address,bool)": "a22cb465", + "supportsInterface(bytes4)": "01ffc9a7", + "symbol()": "95d89b41", + "tokenByIndex(uint256)": "4f6ccce7", + "tokenOfOwnerByIndex(address,uint256)": "2f745c59", + "tokenURI(uint256)": "c87b56dd", + "totalSupply()": "18160ddd", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ERC721EnumerableForbiddenBatchMint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"ERC721OutOfBoundsIndex\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"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\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This implements an optional extension of {ERC721} defined in the ERC that adds enumerability of all the token ids in the contract as well as all token ids owned by each account. CAUTION: {ERC721} extensions that implement custom `balanceOf` logic, such as {ERC721Consecutive}, interfere with enumerability and should not be used together with {ERC721Enumerable}.\",\"errors\":{\"ERC721EnumerableForbiddenBatchMint()\":[{\"details\":\"Batch mint is not allowed.\"}],\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721OutOfBoundsIndex(address,uint256)\":[{\"details\":\"An `owner`'s token query was out of bounds for `index`. NOTE: The owner being `address(0)` indicates a global out of bounds index.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenByIndex(uint256)\":{\"details\":\"See {IERC721Enumerable-tokenByIndex}.\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"See {IERC721Enumerable-tokenOfOwnerByIndex}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"totalSupply()\":{\"details\":\"See {IERC721Enumerable-totalSupply}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol\":\"ERC721EnumerableUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"keccak256\":\"0xfd473ea8f70e13eaa6475c7e348885b8a32925252e3bc237e07c0e3fde0f10f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea9d17ae8f18568ab1aedf555ebc79906ba3eaaccfa78efbaed05bd3a9e1b6f2\",\"dweb:/ipfs/QmUQDGwCVE72tExiyA9EuwBeaiu9a8DQin3DZxuX76umg4\"]},\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol\":{\"keccak256\":\"0x374714bef85e753a13fdf792ca567ef734351029265f2cce8db533d7a942c740\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6024252b335cecf3bcf3502cfb883ffc7f8e72926734f848b0684eccaeac8027\",\"dweb:/ipfs/QmevY4P9E3eEDZ7msGJ5aFmbPGLWZr976g3EUwWeUs1JGV\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xb5afb8e8eebc4d1c6404df2f5e1e6d2c3d24fd01e5dfc855314951ecfaae462d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://78586466c424f076c6a2a551d848cfbe3f7c49e723830807598484a1047b3b34\",\"dweb:/ipfs/Qmb717ovcFxm7qgNKEShiV6M9SPR3v1qnNpAGH84D6w29p\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0x3d6954a93ac198a2ffa384fa58ccf18e7e235263e051a394328002eff4e073de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1f58c799bd939d3951c94893e83ef86acd56989d1d7db7f9d180c515e29e28ff\",\"dweb:/ipfs/QmTgAxHAAys4kq9ZfU9YB24MWYoHLGAKSxnYUigPFrNW7g\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"]},\"@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol\":{\"keccak256\":\"0x40399695922383778f9f540a620bec475a2f8e0f08d41f0005682842e28a9855\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://746d295e403931aeb9d6065fd5a0871f43ab5459814a60623611e4b6641a09fd\",\"dweb:/ipfs/QmWrgT8YJrQ9FfD1o3YYArwo57e7MGdpFKuM74qJ4qE34E\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0\",\"dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol": { + "ERC721URIStorageUpgradeable": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC721IncorrectOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721InsufficientApproval", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC721InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "ERC721InvalidOperator", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC721InvalidOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC721InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC721InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721NonexistentToken", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_fromTokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_toTokenId", + "type": "uint256" + } + ], + "name": "BatchMetadataUpdate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "MetadataUpdate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "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": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "getApproved(uint256)": "081812fc", + "isApprovedForAll(address,address)": "e985e9c5", + "name()": "06fdde03", + "ownerOf(uint256)": "6352211e", + "safeTransferFrom(address,address,uint256)": "42842e0e", + "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde", + "setApprovalForAll(address,bool)": "a22cb465", + "supportsInterface(bytes4)": "01ffc9a7", + "symbol()": "95d89b41", + "tokenURI(uint256)": "c87b56dd", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_fromTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_toTokenId\",\"type\":\"uint256\"}],\"name\":\"BatchMetadataUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"MetadataUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"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\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"ERC-721 token with storage based token URI management.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"BatchMetadataUpdate(uint256,uint256)\":{\"details\":\"This event emits when the metadata of a range of tokens is changed. So that the third-party platforms such as NFT market could timely update the images and related attributes of the NFTs.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"MetadataUpdate(uint256)\":{\"details\":\"This event emits when the metadata of a token is changed. So that the third-party platforms such as NFT market could timely update the images and related attributes of the NFT.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}\"},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenURI(uint256)\":{\"details\":\"See {IERC721Metadata-tokenURI}.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-transferFrom}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol\":\"ERC721URIStorageUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"keccak256\":\"0xfd473ea8f70e13eaa6475c7e348885b8a32925252e3bc237e07c0e3fde0f10f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea9d17ae8f18568ab1aedf555ebc79906ba3eaaccfa78efbaed05bd3a9e1b6f2\",\"dweb:/ipfs/QmUQDGwCVE72tExiyA9EuwBeaiu9a8DQin3DZxuX76umg4\"]},\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol\":{\"keccak256\":\"0x7617c19dc4d1d90728911d5c13230bdad6d22edaa12a49846be4c6c5e03104d2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://67d995622f49be65b9b579609d2fa9958604de0ad97b47440e5e1b40c08f1382\",\"dweb:/ipfs/QmZHDRzg1PopU2qfhK1ffqpPL5KZzvgXbKFtMS4CkTYBtC\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"@openzeppelin/contracts/interfaces/IERC4906.sol\":{\"keccak256\":\"0x1b8691e244f6e11d987459993671db0af33e6a29f7805eac6a9925cc6b601957\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9e2a5efc2e14e98f5fe91bbab769199b4987a40dd3b96075b04957fda2ae80f\",\"dweb:/ipfs/QmbAjrSSVBiJ6MbgF7Jkr53m674iGMZ6haWbbRrWDZJraK\"]},\"@openzeppelin/contracts/interfaces/IERC721.sol\":{\"keccak256\":\"0xc4d7ebf63eb2f6bf3fee1b6c0ee775efa9f31b4843a5511d07eea147e212932d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01c66a2fad66bc710db7510419a7eee569b40b67cd9f01b70a3fc90d6f76c03b\",\"dweb:/ipfs/QmT1CjJZq4eTNA4nu8E9ZrWfaZu6ReUsDbjcK8DbEFqwx5\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xb5afb8e8eebc4d1c6404df2f5e1e6d2c3d24fd01e5dfc855314951ecfaae462d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://78586466c424f076c6a2a551d848cfbe3f7c49e723830807598484a1047b3b34\",\"dweb:/ipfs/Qmb717ovcFxm7qgNKEShiV6M9SPR3v1qnNpAGH84D6w29p\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"]},\"@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol\":{\"keccak256\":\"0x40399695922383778f9f540a620bec475a2f8e0f08d41f0005682842e28a9855\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://746d295e403931aeb9d6065fd5a0871f43ab5459814a60623611e4b6641a09fd\",\"dweb:/ipfs/QmWrgT8YJrQ9FfD1o3YYArwo57e7MGdpFKuM74qJ4qE34E\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0\",\"dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol": { + "ContextUpgradeable": { + "abi": [ + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":\"ContextUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol": { + "PausableUpgradeable": { + "abi": [ + { + "inputs": [], + "name": "EnforcedPause", + "type": "error" + }, + { + "inputs": [], + "name": "ExpectedPause", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "paused()": "5c975abb" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Contract module which allows children to implement an emergency stop mechanism that can be triggered by an authorized account. This module is used through inheritance. It will make available the modifiers `whenNotPaused` and `whenPaused`, which can be applied to the functions of your contract. Note that they will not be pausable by simply including this module, only once the modifiers are put in place.\",\"errors\":{\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"}},\"kind\":\"dev\",\"methods\":{\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol\":\"PausableUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol\":{\"keccak256\":\"0x92915b7f7f642c6be3f65bfd1522feb5d5b6ef25f755f4dbb51df32c868f2f97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85ad36d5cc7e190e1ee6c94b24659bc3a31396c4c36b6ffa6a509e10661f8007\",\"dweb:/ipfs/QmPFyc4zMh2zo6YWZt25gjm3YdR2hg6wGETaWw256fMmJJ\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol": { + "ReentrancyGuardUpgradeable": { + "abi": [ + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "inputs": [], + "name": "ReentrancyGuardReentrantCall", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"Contract module that helps prevent reentrant calls to a function. Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier available, which can be applied to functions to make sure there are no nested (reentrant) calls to them. Note that because there is a single `nonReentrant` guard, functions marked as `nonReentrant` may not call one another. This can be worked around by making those functions `private`, and then adding `external` `nonReentrant` entry points to them. TIP: If EIP-1153 (transient storage) is available on the chain you're deploying at, consider using {ReentrancyGuardTransient} instead. TIP: If you would like to learn more about reentrancy and alternative ways to protect against it, check out our blog post https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":\"ReentrancyGuardUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol": { + "ERC165Upgradeable": { + "abi": [ + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "supportsInterface(bytes4)": "01ffc9a7" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC165} interface. Contracts that want to implement ERC-165 should inherit from this contract and override {supportsInterface} to check for the additional interface id that will be supported. For example: ```solidity function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(MyInterface).interfaceId || super.supportsInterface(interfaceId); } ```\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":\"ERC165Upgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/access/IAccessControl.sol": { + "IAccessControl": { + "abi": [ + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "callerConfirmation", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "getRoleAdmin(bytes32)": "248a9ca3", + "grantRole(bytes32,address)": "2f2ff15d", + "hasRole(bytes32,address)": "91d14854", + "renounceRole(bytes32,address)": "36568abe", + "revokeRole(bytes32,address)": "d547741f" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"External interface of AccessControl declared to support ERC-165 detection.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}]},\"events\":{\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {AccessControl-_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":\"IAccessControl\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.sol": { + "IAccessControlEnumerable": { + "abi": [ + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoleMember", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMemberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "callerConfirmation", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "getRoleAdmin(bytes32)": "248a9ca3", + "getRoleMember(bytes32,uint256)": "9010d07c", + "getRoleMemberCount(bytes32)": "ca15c873", + "grantRole(bytes32,address)": "2f2ff15d", + "hasRole(bytes32,address)": "91d14854", + "renounceRole(bytes32,address)": "36568abe", + "revokeRole(bytes32,address)": "d547741f" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"External interface of AccessControlEnumerable declared to support ERC-165 detection.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}]},\"events\":{\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {AccessControl-_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.sol\":\"IAccessControlEnumerable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.sol\":{\"keccak256\":\"0xca774fbe0568762efdc1a7cba31f09549c7fa96dbe97410f4843fa2f0bc000a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0187ffdbf3d61b6d86cba4fcd9826e53d876987d620533ee84c681bdaf0f3ba3\",\"dweb:/ipfs/QmVJDqdJv6uzHY7ifncfv2QJep8XTzS3bGb4s5Exhuv86m\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/interfaces/IERC1363.sol": { + "IERC1363": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approveAndCall", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "approveAndCall", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferAndCall", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "transferAndCall", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "transferFromAndCall", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFromAndCall", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "approveAndCall(address,uint256)": "3177029f", + "approveAndCall(address,uint256,bytes)": "cae9ca51", + "balanceOf(address)": "70a08231", + "supportsInterface(bytes4)": "01ffc9a7", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferAndCall(address,uint256)": "1296ee62", + "transferAndCall(address,uint256,bytes)": "4000aea0", + "transferFrom(address,address,uint256)": "23b872dd", + "transferFromAndCall(address,address,uint256)": "d8fbe994", + "transferFromAndCall(address,address,uint256,bytes)": "c1d34b89" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approveAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"approveAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"transferAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"transferFromAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFromAndCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-1363 standard as defined in the https://eips.ethereum.org/EIPS/eip-1363[ERC-1363]. Defines an extension interface for ERC-20 tokens that supports executing code on a recipient contract after `transfer` or `transferFrom`, or code on a spender contract after `approve`, in a single transaction.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"approveAndCall(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\",\"params\":{\"spender\":\"The address which will spend the funds.\",\"value\":\"The amount of tokens to be spent.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"approveAndCall(address,uint256,bytes)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens and then calls {IERC1363Spender-onApprovalReceived} on `spender`.\",\"params\":{\"data\":\"Additional data with no specified format, sent in call to `spender`.\",\"spender\":\"The address which will spend the funds.\",\"value\":\"The amount of tokens to be spent.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferAndCall(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to` and then calls {IERC1363Receiver-onTransferReceived} on `to`.\",\"params\":{\"to\":\"The address which you want to transfer to.\",\"value\":\"The amount of tokens to be transferred.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"transferAndCall(address,uint256,bytes)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to` and then calls {IERC1363Receiver-onTransferReceived} on `to`.\",\"params\":{\"data\":\"Additional data with no specified format, sent in call to `to`.\",\"to\":\"The address which you want to transfer to.\",\"value\":\"The amount of tokens to be transferred.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFromAndCall(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism and then calls {IERC1363Receiver-onTransferReceived} on `to`.\",\"params\":{\"from\":\"The address which you want to send tokens from.\",\"to\":\"The address which you want to transfer to.\",\"value\":\"The amount of tokens to be transferred.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}},\"transferFromAndCall(address,address,uint256,bytes)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism and then calls {IERC1363Receiver-onTransferReceived} on `to`.\",\"params\":{\"data\":\"Additional data with no specified format, sent in call to `to`.\",\"from\":\"The address which you want to send tokens from.\",\"to\":\"The address which you want to transfer to.\",\"value\":\"The amount of tokens to be transferred.\"},\"returns\":{\"_0\":\"A boolean value indicating whether the operation succeeded unless throwing.\"}}},\"title\":\"IERC1363\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/IERC1363.sol\":\"IERC1363\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/interfaces/IERC1967.sol": { + "IERC1967": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "BeaconUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousAdmin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"AdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"BeaconUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"ERC-1967: Proxy Storage Slots. This interface contains the events defined in the ERC.\",\"events\":{\"AdminChanged(address,address)\":{\"details\":\"Emitted when the admin account has changed.\"},\"BeaconUpgraded(address)\":{\"details\":\"Emitted when the beacon is changed.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":\"IERC1967\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/interfaces/IERC4906.sol": { + "IERC4906": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_fromTokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_toTokenId", + "type": "uint256" + } + ], + "name": "BatchMetadataUpdate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "MetadataUpdate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "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": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "getApproved(uint256)": "081812fc", + "isApprovedForAll(address,address)": "e985e9c5", + "ownerOf(uint256)": "6352211e", + "safeTransferFrom(address,address,uint256)": "42842e0e", + "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde", + "setApprovalForAll(address,bool)": "a22cb465", + "supportsInterface(bytes4)": "01ffc9a7", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_fromTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_toTokenId\",\"type\":\"uint256\"}],\"name\":\"BatchMetadataUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"MetadataUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"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\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"BatchMetadataUpdate(uint256,uint256)\":{\"details\":\"This event emits when the metadata of a range of tokens is changed. So that the third-party platforms such as NFT market could timely update the images and related attributes of the NFTs.\"},\"MetadataUpdate(uint256)\":{\"details\":\"This event emits when the metadata of a token is changed. So that the third-party platforms such as NFT market could timely update the images and related attributes of the NFT.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC-721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"title\":\"ERC-721 Metadata Update Extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/IERC4906.sol\":\"IERC4906\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"@openzeppelin/contracts/interfaces/IERC4906.sol\":{\"keccak256\":\"0x1b8691e244f6e11d987459993671db0af33e6a29f7805eac6a9925cc6b601957\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9e2a5efc2e14e98f5fe91bbab769199b4987a40dd3b96075b04957fda2ae80f\",\"dweb:/ipfs/QmbAjrSSVBiJ6MbgF7Jkr53m674iGMZ6haWbbRrWDZJraK\"]},\"@openzeppelin/contracts/interfaces/IERC721.sol\":{\"keccak256\":\"0xc4d7ebf63eb2f6bf3fee1b6c0ee775efa9f31b4843a5511d07eea147e212932d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01c66a2fad66bc710db7510419a7eee569b40b67cd9f01b70a3fc90d6f76c03b\",\"dweb:/ipfs/QmT1CjJZq4eTNA4nu8E9ZrWfaZu6ReUsDbjcK8DbEFqwx5\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/interfaces/draft-IERC1822.sol": { + "IERC1822Proxiable": { + "abi": [ + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "proxiableUUID()": "52d1902d" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"ERC-1822: Universal Upgradeable Proxy Standard (UUPS) documents a method for upgradeability through a simplified proxy whose upgrades are fully controlled by the current implementation.\",\"kind\":\"dev\",\"methods\":{\"proxiableUUID()\":{\"details\":\"Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":\"IERC1822Proxiable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/interfaces/draft-IERC6093.sol": { + "IERC1155Errors": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC1155InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC1155InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "idsLength", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "valuesLength", + "type": "uint256" + } + ], + "name": "ERC1155InvalidArrayLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "ERC1155InvalidOperator", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC1155InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC1155InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC1155MissingApprovalForAll", + "type": "error" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC1155InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"idsLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"valuesLength\",\"type\":\"uint256\"}],\"name\":\"ERC1155InvalidArrayLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC1155InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC1155MissingApprovalForAll\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-1155 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-1155 tokens.\",\"errors\":{\"ERC1155InsufficientBalance(address,uint256,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC1155InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC1155InvalidArrayLength(uint256,uint256)\":[{\"details\":\"Indicates an array length mismatch between ids and values in a safeBatchTransferFrom operation. Used in batch transfers.\",\"params\":{\"idsLength\":\"Length of the array of token identifiers\",\"valuesLength\":\"Length of the array of token amounts\"}}],\"ERC1155InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC1155InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC1155InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC1155MissingApprovalForAll(address,address)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"owner\":\"Address of the current owner of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC1155Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + }, + "IERC20Errors": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "allowance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientAllowance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC20InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC20InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC20InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "ERC20InvalidSpender", + "type": "error" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-20 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-20 tokens.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC20Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + }, + "IERC721Errors": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC721IncorrectOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721InsufficientApproval", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC721InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "ERC721InvalidOperator", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC721InvalidOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC721InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC721InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721NonexistentToken", + "type": "error" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Standard ERC-721 Errors Interface of the https://eips.ethereum.org/EIPS/eip-6093[ERC-6093] custom errors for ERC-721 tokens.\",\"errors\":{\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":\"IERC721Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol": { + "ERC1967Proxy": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "stateMutability": "payable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + } + ], + "name": "AddressEmptyCode", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "ERC1967InvalidImplementation", + "type": "error" + }, + { + "inputs": [], + "name": "ERC1967NonPayable", + "type": "error" + }, + { + "inputs": [], + "name": "FailedCall", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "stateMutability": "payable", + "type": "fallback" + } + ], + "evm": { + "bytecode": { + "functionDebugData": { + "@_3567": { + "entryPoint": null, + "id": 3567, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_checkNonPayable_3873": { + "entryPoint": 384, + "id": 3873, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_revert_5480": { + "entryPoint": 503, + "id": 5480, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_setImplementation_3653": { + "entryPoint": 146, + "id": 3653, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@functionDelegateCall_5398": { + "entryPoint": 265, + "id": 5398, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@getAddressSlot_5620": { + "entryPoint": null, + "id": 5620, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@upgradeToAndCall_3689": { + "entryPoint": 51, + "id": 3689, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@verifyCallResultFromTarget_5438": { + "entryPoint": 417, + "id": 5438, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory": { + "entryPoint": 602, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": 828, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": 808, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "copy_memory_to_memory_with_cleanup": { + "entryPoint": 566, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "panic_error_0x41": { + "entryPoint": 544, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nativeSrc": "0:1966:61", + "nodeType": "YulBlock", + "src": "0:1966:61", + "statements": [ + { + "nativeSrc": "6:3:61", + "nodeType": "YulBlock", + "src": "6:3:61", + "statements": [] + }, + { + "body": { + "nativeSrc": "46:95:61", + "nodeType": "YulBlock", + "src": "46:95:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "63:1:61", + "nodeType": "YulLiteral", + "src": "63:1:61", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "70:3:61", + "nodeType": "YulLiteral", + "src": "70:3:61", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "75:10:61", + "nodeType": "YulLiteral", + "src": "75:10:61", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "66:3:61", + "nodeType": "YulIdentifier", + "src": "66:3:61" + }, + "nativeSrc": "66:20:61", + "nodeType": "YulFunctionCall", + "src": "66:20:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "56:6:61", + "nodeType": "YulIdentifier", + "src": "56:6:61" + }, + "nativeSrc": "56:31:61", + "nodeType": "YulFunctionCall", + "src": "56:31:61" + }, + "nativeSrc": "56:31:61", + "nodeType": "YulExpressionStatement", + "src": "56:31:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "103:1:61", + "nodeType": "YulLiteral", + "src": "103:1:61", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "106:4:61", + "nodeType": "YulLiteral", + "src": "106:4:61", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "96:6:61", + "nodeType": "YulIdentifier", + "src": "96:6:61" + }, + "nativeSrc": "96:15:61", + "nodeType": "YulFunctionCall", + "src": "96:15:61" + }, + "nativeSrc": "96:15:61", + "nodeType": "YulExpressionStatement", + "src": "96:15:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "127:1:61", + "nodeType": "YulLiteral", + "src": "127:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "130:4:61", + "nodeType": "YulLiteral", + "src": "130:4:61", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "120:6:61", + "nodeType": "YulIdentifier", + "src": "120:6:61" + }, + "nativeSrc": "120:15:61", + "nodeType": "YulFunctionCall", + "src": "120:15:61" + }, + "nativeSrc": "120:15:61", + "nodeType": "YulExpressionStatement", + "src": "120:15:61" + } + ] + }, + "name": "panic_error_0x41", + "nativeSrc": "14:127:61", + "nodeType": "YulFunctionDefinition", + "src": "14:127:61" + }, + { + "body": { + "nativeSrc": "212:184:61", + "nodeType": "YulBlock", + "src": "212:184:61", + "statements": [ + { + "nativeSrc": "222:10:61", + "nodeType": "YulVariableDeclaration", + "src": "222:10:61", + "value": { + "kind": "number", + "nativeSrc": "231:1:61", + "nodeType": "YulLiteral", + "src": "231:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "226:1:61", + "nodeType": "YulTypedName", + "src": "226:1:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "291:63:61", + "nodeType": "YulBlock", + "src": "291:63:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nativeSrc": "316:3:61", + "nodeType": "YulIdentifier", + "src": "316:3:61" + }, + { + "name": "i", + "nativeSrc": "321:1:61", + "nodeType": "YulIdentifier", + "src": "321:1:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "312:3:61", + "nodeType": "YulIdentifier", + "src": "312:3:61" + }, + "nativeSrc": "312:11:61", + "nodeType": "YulFunctionCall", + "src": "312:11:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "335:3:61", + "nodeType": "YulIdentifier", + "src": "335:3:61" + }, + { + "name": "i", + "nativeSrc": "340:1:61", + "nodeType": "YulIdentifier", + "src": "340:1:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "331:3:61", + "nodeType": "YulIdentifier", + "src": "331:3:61" + }, + "nativeSrc": "331:11:61", + "nodeType": "YulFunctionCall", + "src": "331:11:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "325:5:61", + "nodeType": "YulIdentifier", + "src": "325:5:61" + }, + "nativeSrc": "325:18:61", + "nodeType": "YulFunctionCall", + "src": "325:18:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "305:6:61", + "nodeType": "YulIdentifier", + "src": "305:6:61" + }, + "nativeSrc": "305:39:61", + "nodeType": "YulFunctionCall", + "src": "305:39:61" + }, + "nativeSrc": "305:39:61", + "nodeType": "YulExpressionStatement", + "src": "305:39:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "252:1:61", + "nodeType": "YulIdentifier", + "src": "252:1:61" + }, + { + "name": "length", + "nativeSrc": "255:6:61", + "nodeType": "YulIdentifier", + "src": "255:6:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "249:2:61", + "nodeType": "YulIdentifier", + "src": "249:2:61" + }, + "nativeSrc": "249:13:61", + "nodeType": "YulFunctionCall", + "src": "249:13:61" + }, + "nativeSrc": "241:113:61", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "263:19:61", + "nodeType": "YulBlock", + "src": "263:19:61", + "statements": [ + { + "nativeSrc": "265:15:61", + "nodeType": "YulAssignment", + "src": "265:15:61", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "274:1:61", + "nodeType": "YulIdentifier", + "src": "274:1:61" + }, + { + "kind": "number", + "nativeSrc": "277:2:61", + "nodeType": "YulLiteral", + "src": "277:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "270:3:61", + "nodeType": "YulIdentifier", + "src": "270:3:61" + }, + "nativeSrc": "270:10:61", + "nodeType": "YulFunctionCall", + "src": "270:10:61" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "265:1:61", + "nodeType": "YulIdentifier", + "src": "265:1:61" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "245:3:61", + "nodeType": "YulBlock", + "src": "245:3:61", + "statements": [] + }, + "src": "241:113:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nativeSrc": "374:3:61", + "nodeType": "YulIdentifier", + "src": "374:3:61" + }, + { + "name": "length", + "nativeSrc": "379:6:61", + "nodeType": "YulIdentifier", + "src": "379:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "370:3:61", + "nodeType": "YulIdentifier", + "src": "370:3:61" + }, + "nativeSrc": "370:16:61", + "nodeType": "YulFunctionCall", + "src": "370:16:61" + }, + { + "kind": "number", + "nativeSrc": "388:1:61", + "nodeType": "YulLiteral", + "src": "388:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "363:6:61", + "nodeType": "YulIdentifier", + "src": "363:6:61" + }, + "nativeSrc": "363:27:61", + "nodeType": "YulFunctionCall", + "src": "363:27:61" + }, + "nativeSrc": "363:27:61", + "nodeType": "YulExpressionStatement", + "src": "363:27:61" + } + ] + }, + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "146:250:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nativeSrc": "190:3:61", + "nodeType": "YulTypedName", + "src": "190:3:61", + "type": "" + }, + { + "name": "dst", + "nativeSrc": "195:3:61", + "nodeType": "YulTypedName", + "src": "195:3:61", + "type": "" + }, + { + "name": "length", + "nativeSrc": "200:6:61", + "nodeType": "YulTypedName", + "src": "200:6:61", + "type": "" + } + ], + "src": "146:250:61" + }, + { + "body": { + "nativeSrc": "508:956:61", + "nodeType": "YulBlock", + "src": "508:956:61", + "statements": [ + { + "body": { + "nativeSrc": "554:16:61", + "nodeType": "YulBlock", + "src": "554:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "563:1:61", + "nodeType": "YulLiteral", + "src": "563:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "566:1:61", + "nodeType": "YulLiteral", + "src": "566:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "556:6:61", + "nodeType": "YulIdentifier", + "src": "556:6:61" + }, + "nativeSrc": "556:12:61", + "nodeType": "YulFunctionCall", + "src": "556:12:61" + }, + "nativeSrc": "556:12:61", + "nodeType": "YulExpressionStatement", + "src": "556:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "529:7:61", + "nodeType": "YulIdentifier", + "src": "529:7:61" + }, + { + "name": "headStart", + "nativeSrc": "538:9:61", + "nodeType": "YulIdentifier", + "src": "538:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "525:3:61", + "nodeType": "YulIdentifier", + "src": "525:3:61" + }, + "nativeSrc": "525:23:61", + "nodeType": "YulFunctionCall", + "src": "525:23:61" + }, + { + "kind": "number", + "nativeSrc": "550:2:61", + "nodeType": "YulLiteral", + "src": "550:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "521:3:61", + "nodeType": "YulIdentifier", + "src": "521:3:61" + }, + "nativeSrc": "521:32:61", + "nodeType": "YulFunctionCall", + "src": "521:32:61" + }, + "nativeSrc": "518:52:61", + "nodeType": "YulIf", + "src": "518:52:61" + }, + { + "nativeSrc": "579:29:61", + "nodeType": "YulVariableDeclaration", + "src": "579:29:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "598:9:61", + "nodeType": "YulIdentifier", + "src": "598:9:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "592:5:61", + "nodeType": "YulIdentifier", + "src": "592:5:61" + }, + "nativeSrc": "592:16:61", + "nodeType": "YulFunctionCall", + "src": "592:16:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "583:5:61", + "nodeType": "YulTypedName", + "src": "583:5:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "671:16:61", + "nodeType": "YulBlock", + "src": "671:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "680:1:61", + "nodeType": "YulLiteral", + "src": "680:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "683:1:61", + "nodeType": "YulLiteral", + "src": "683:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "673:6:61", + "nodeType": "YulIdentifier", + "src": "673:6:61" + }, + "nativeSrc": "673:12:61", + "nodeType": "YulFunctionCall", + "src": "673:12:61" + }, + "nativeSrc": "673:12:61", + "nodeType": "YulExpressionStatement", + "src": "673:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "630:5:61", + "nodeType": "YulIdentifier", + "src": "630:5:61" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "641:5:61", + "nodeType": "YulIdentifier", + "src": "641:5:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "656:3:61", + "nodeType": "YulLiteral", + "src": "656:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "661:1:61", + "nodeType": "YulLiteral", + "src": "661:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "652:3:61", + "nodeType": "YulIdentifier", + "src": "652:3:61" + }, + "nativeSrc": "652:11:61", + "nodeType": "YulFunctionCall", + "src": "652:11:61" + }, + { + "kind": "number", + "nativeSrc": "665:1:61", + "nodeType": "YulLiteral", + "src": "665:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "648:3:61", + "nodeType": "YulIdentifier", + "src": "648:3:61" + }, + "nativeSrc": "648:19:61", + "nodeType": "YulFunctionCall", + "src": "648:19:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "637:3:61", + "nodeType": "YulIdentifier", + "src": "637:3:61" + }, + "nativeSrc": "637:31:61", + "nodeType": "YulFunctionCall", + "src": "637:31:61" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "627:2:61", + "nodeType": "YulIdentifier", + "src": "627:2:61" + }, + "nativeSrc": "627:42:61", + "nodeType": "YulFunctionCall", + "src": "627:42:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "620:6:61", + "nodeType": "YulIdentifier", + "src": "620:6:61" + }, + "nativeSrc": "620:50:61", + "nodeType": "YulFunctionCall", + "src": "620:50:61" + }, + "nativeSrc": "617:70:61", + "nodeType": "YulIf", + "src": "617:70:61" + }, + { + "nativeSrc": "696:15:61", + "nodeType": "YulAssignment", + "src": "696:15:61", + "value": { + "name": "value", + "nativeSrc": "706:5:61", + "nodeType": "YulIdentifier", + "src": "706:5:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "696:6:61", + "nodeType": "YulIdentifier", + "src": "696:6:61" + } + ] + }, + { + "nativeSrc": "720:39:61", + "nodeType": "YulVariableDeclaration", + "src": "720:39:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "744:9:61", + "nodeType": "YulIdentifier", + "src": "744:9:61" + }, + { + "kind": "number", + "nativeSrc": "755:2:61", + "nodeType": "YulLiteral", + "src": "755:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "740:3:61", + "nodeType": "YulIdentifier", + "src": "740:3:61" + }, + "nativeSrc": "740:18:61", + "nodeType": "YulFunctionCall", + "src": "740:18:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "734:5:61", + "nodeType": "YulIdentifier", + "src": "734:5:61" + }, + "nativeSrc": "734:25:61", + "nodeType": "YulFunctionCall", + "src": "734:25:61" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "724:6:61", + "nodeType": "YulTypedName", + "src": "724:6:61", + "type": "" + } + ] + }, + { + "nativeSrc": "768:28:61", + "nodeType": "YulVariableDeclaration", + "src": "768:28:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "786:2:61", + "nodeType": "YulLiteral", + "src": "786:2:61", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "790:1:61", + "nodeType": "YulLiteral", + "src": "790:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "782:3:61", + "nodeType": "YulIdentifier", + "src": "782:3:61" + }, + "nativeSrc": "782:10:61", + "nodeType": "YulFunctionCall", + "src": "782:10:61" + }, + { + "kind": "number", + "nativeSrc": "794:1:61", + "nodeType": "YulLiteral", + "src": "794:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "778:3:61", + "nodeType": "YulIdentifier", + "src": "778:3:61" + }, + "nativeSrc": "778:18:61", + "nodeType": "YulFunctionCall", + "src": "778:18:61" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "772:2:61", + "nodeType": "YulTypedName", + "src": "772:2:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "823:16:61", + "nodeType": "YulBlock", + "src": "823:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "832:1:61", + "nodeType": "YulLiteral", + "src": "832:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "835:1:61", + "nodeType": "YulLiteral", + "src": "835:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "825:6:61", + "nodeType": "YulIdentifier", + "src": "825:6:61" + }, + "nativeSrc": "825:12:61", + "nodeType": "YulFunctionCall", + "src": "825:12:61" + }, + "nativeSrc": "825:12:61", + "nodeType": "YulExpressionStatement", + "src": "825:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "811:6:61", + "nodeType": "YulIdentifier", + "src": "811:6:61" + }, + { + "name": "_1", + "nativeSrc": "819:2:61", + "nodeType": "YulIdentifier", + "src": "819:2:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "808:2:61", + "nodeType": "YulIdentifier", + "src": "808:2:61" + }, + "nativeSrc": "808:14:61", + "nodeType": "YulFunctionCall", + "src": "808:14:61" + }, + "nativeSrc": "805:34:61", + "nodeType": "YulIf", + "src": "805:34:61" + }, + { + "nativeSrc": "848:32:61", + "nodeType": "YulVariableDeclaration", + "src": "848:32:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "862:9:61", + "nodeType": "YulIdentifier", + "src": "862:9:61" + }, + { + "name": "offset", + "nativeSrc": "873:6:61", + "nodeType": "YulIdentifier", + "src": "873:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "858:3:61", + "nodeType": "YulIdentifier", + "src": "858:3:61" + }, + "nativeSrc": "858:22:61", + "nodeType": "YulFunctionCall", + "src": "858:22:61" + }, + "variables": [ + { + "name": "_2", + "nativeSrc": "852:2:61", + "nodeType": "YulTypedName", + "src": "852:2:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "928:16:61", + "nodeType": "YulBlock", + "src": "928:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "937:1:61", + "nodeType": "YulLiteral", + "src": "937:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "940:1:61", + "nodeType": "YulLiteral", + "src": "940:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "930:6:61", + "nodeType": "YulIdentifier", + "src": "930:6:61" + }, + "nativeSrc": "930:12:61", + "nodeType": "YulFunctionCall", + "src": "930:12:61" + }, + "nativeSrc": "930:12:61", + "nodeType": "YulExpressionStatement", + "src": "930:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nativeSrc": "907:2:61", + "nodeType": "YulIdentifier", + "src": "907:2:61" + }, + { + "kind": "number", + "nativeSrc": "911:4:61", + "nodeType": "YulLiteral", + "src": "911:4:61", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "903:3:61", + "nodeType": "YulIdentifier", + "src": "903:3:61" + }, + "nativeSrc": "903:13:61", + "nodeType": "YulFunctionCall", + "src": "903:13:61" + }, + { + "name": "dataEnd", + "nativeSrc": "918:7:61", + "nodeType": "YulIdentifier", + "src": "918:7:61" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "899:3:61", + "nodeType": "YulIdentifier", + "src": "899:3:61" + }, + "nativeSrc": "899:27:61", + "nodeType": "YulFunctionCall", + "src": "899:27:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "892:6:61", + "nodeType": "YulIdentifier", + "src": "892:6:61" + }, + "nativeSrc": "892:35:61", + "nodeType": "YulFunctionCall", + "src": "892:35:61" + }, + "nativeSrc": "889:55:61", + "nodeType": "YulIf", + "src": "889:55:61" + }, + { + "nativeSrc": "953:19:61", + "nodeType": "YulVariableDeclaration", + "src": "953:19:61", + "value": { + "arguments": [ + { + "name": "_2", + "nativeSrc": "969:2:61", + "nodeType": "YulIdentifier", + "src": "969:2:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "963:5:61", + "nodeType": "YulIdentifier", + "src": "963:5:61" + }, + "nativeSrc": "963:9:61", + "nodeType": "YulFunctionCall", + "src": "963:9:61" + }, + "variables": [ + { + "name": "_3", + "nativeSrc": "957:2:61", + "nodeType": "YulTypedName", + "src": "957:2:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "995:22:61", + "nodeType": "YulBlock", + "src": "995:22:61", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "997:16:61", + "nodeType": "YulIdentifier", + "src": "997:16:61" + }, + "nativeSrc": "997:18:61", + "nodeType": "YulFunctionCall", + "src": "997:18:61" + }, + "nativeSrc": "997:18:61", + "nodeType": "YulExpressionStatement", + "src": "997:18:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "_3", + "nativeSrc": "987:2:61", + "nodeType": "YulIdentifier", + "src": "987:2:61" + }, + { + "name": "_1", + "nativeSrc": "991:2:61", + "nodeType": "YulIdentifier", + "src": "991:2:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "984:2:61", + "nodeType": "YulIdentifier", + "src": "984:2:61" + }, + "nativeSrc": "984:10:61", + "nodeType": "YulFunctionCall", + "src": "984:10:61" + }, + "nativeSrc": "981:36:61", + "nodeType": "YulIf", + "src": "981:36:61" + }, + { + "nativeSrc": "1026:17:61", + "nodeType": "YulVariableDeclaration", + "src": "1026:17:61", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1040:2:61", + "nodeType": "YulLiteral", + "src": "1040:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "1036:3:61", + "nodeType": "YulIdentifier", + "src": "1036:3:61" + }, + "nativeSrc": "1036:7:61", + "nodeType": "YulFunctionCall", + "src": "1036:7:61" + }, + "variables": [ + { + "name": "_4", + "nativeSrc": "1030:2:61", + "nodeType": "YulTypedName", + "src": "1030:2:61", + "type": "" + } + ] + }, + { + "nativeSrc": "1052:23:61", + "nodeType": "YulVariableDeclaration", + "src": "1052:23:61", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1072:2:61", + "nodeType": "YulLiteral", + "src": "1072:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "1066:5:61", + "nodeType": "YulIdentifier", + "src": "1066:5:61" + }, + "nativeSrc": "1066:9:61", + "nodeType": "YulFunctionCall", + "src": "1066:9:61" + }, + "variables": [ + { + "name": "memPtr", + "nativeSrc": "1056:6:61", + "nodeType": "YulTypedName", + "src": "1056:6:61", + "type": "" + } + ] + }, + { + "nativeSrc": "1084:71:61", + "nodeType": "YulVariableDeclaration", + "src": "1084:71:61", + "value": { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "1106:6:61", + "nodeType": "YulIdentifier", + "src": "1106:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_3", + "nativeSrc": "1130:2:61", + "nodeType": "YulIdentifier", + "src": "1130:2:61" + }, + { + "kind": "number", + "nativeSrc": "1134:4:61", + "nodeType": "YulLiteral", + "src": "1134:4:61", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1126:3:61", + "nodeType": "YulIdentifier", + "src": "1126:3:61" + }, + "nativeSrc": "1126:13:61", + "nodeType": "YulFunctionCall", + "src": "1126:13:61" + }, + { + "name": "_4", + "nativeSrc": "1141:2:61", + "nodeType": "YulIdentifier", + "src": "1141:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1122:3:61", + "nodeType": "YulIdentifier", + "src": "1122:3:61" + }, + "nativeSrc": "1122:22:61", + "nodeType": "YulFunctionCall", + "src": "1122:22:61" + }, + { + "kind": "number", + "nativeSrc": "1146:2:61", + "nodeType": "YulLiteral", + "src": "1146:2:61", + "type": "", + "value": "63" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1118:3:61", + "nodeType": "YulIdentifier", + "src": "1118:3:61" + }, + "nativeSrc": "1118:31:61", + "nodeType": "YulFunctionCall", + "src": "1118:31:61" + }, + { + "name": "_4", + "nativeSrc": "1151:2:61", + "nodeType": "YulIdentifier", + "src": "1151:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1114:3:61", + "nodeType": "YulIdentifier", + "src": "1114:3:61" + }, + "nativeSrc": "1114:40:61", + "nodeType": "YulFunctionCall", + "src": "1114:40:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1102:3:61", + "nodeType": "YulIdentifier", + "src": "1102:3:61" + }, + "nativeSrc": "1102:53:61", + "nodeType": "YulFunctionCall", + "src": "1102:53:61" + }, + "variables": [ + { + "name": "newFreePtr", + "nativeSrc": "1088:10:61", + "nodeType": "YulTypedName", + "src": "1088:10:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "1214:22:61", + "nodeType": "YulBlock", + "src": "1214:22:61", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "1216:16:61", + "nodeType": "YulIdentifier", + "src": "1216:16:61" + }, + "nativeSrc": "1216:18:61", + "nodeType": "YulFunctionCall", + "src": "1216:18:61" + }, + "nativeSrc": "1216:18:61", + "nodeType": "YulExpressionStatement", + "src": "1216:18:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nativeSrc": "1173:10:61", + "nodeType": "YulIdentifier", + "src": "1173:10:61" + }, + { + "name": "_1", + "nativeSrc": "1185:2:61", + "nodeType": "YulIdentifier", + "src": "1185:2:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "1170:2:61", + "nodeType": "YulIdentifier", + "src": "1170:2:61" + }, + "nativeSrc": "1170:18:61", + "nodeType": "YulFunctionCall", + "src": "1170:18:61" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nativeSrc": "1193:10:61", + "nodeType": "YulIdentifier", + "src": "1193:10:61" + }, + { + "name": "memPtr", + "nativeSrc": "1205:6:61", + "nodeType": "YulIdentifier", + "src": "1205:6:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "1190:2:61", + "nodeType": "YulIdentifier", + "src": "1190:2:61" + }, + "nativeSrc": "1190:22:61", + "nodeType": "YulFunctionCall", + "src": "1190:22:61" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "1167:2:61", + "nodeType": "YulIdentifier", + "src": "1167:2:61" + }, + "nativeSrc": "1167:46:61", + "nodeType": "YulFunctionCall", + "src": "1167:46:61" + }, + "nativeSrc": "1164:72:61", + "nodeType": "YulIf", + "src": "1164:72:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1252:2:61", + "nodeType": "YulLiteral", + "src": "1252:2:61", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nativeSrc": "1256:10:61", + "nodeType": "YulIdentifier", + "src": "1256:10:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1245:6:61", + "nodeType": "YulIdentifier", + "src": "1245:6:61" + }, + "nativeSrc": "1245:22:61", + "nodeType": "YulFunctionCall", + "src": "1245:22:61" + }, + "nativeSrc": "1245:22:61", + "nodeType": "YulExpressionStatement", + "src": "1245:22:61" + }, + { + "expression": { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "1283:6:61", + "nodeType": "YulIdentifier", + "src": "1283:6:61" + }, + { + "name": "_3", + "nativeSrc": "1291:2:61", + "nodeType": "YulIdentifier", + "src": "1291:2:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1276:6:61", + "nodeType": "YulIdentifier", + "src": "1276:6:61" + }, + "nativeSrc": "1276:18:61", + "nodeType": "YulFunctionCall", + "src": "1276:18:61" + }, + "nativeSrc": "1276:18:61", + "nodeType": "YulExpressionStatement", + "src": "1276:18:61" + }, + { + "body": { + "nativeSrc": "1340:16:61", + "nodeType": "YulBlock", + "src": "1340:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1349:1:61", + "nodeType": "YulLiteral", + "src": "1349:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1352:1:61", + "nodeType": "YulLiteral", + "src": "1352:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1342:6:61", + "nodeType": "YulIdentifier", + "src": "1342:6:61" + }, + "nativeSrc": "1342:12:61", + "nodeType": "YulFunctionCall", + "src": "1342:12:61" + }, + "nativeSrc": "1342:12:61", + "nodeType": "YulExpressionStatement", + "src": "1342:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nativeSrc": "1317:2:61", + "nodeType": "YulIdentifier", + "src": "1317:2:61" + }, + { + "name": "_3", + "nativeSrc": "1321:2:61", + "nodeType": "YulIdentifier", + "src": "1321:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1313:3:61", + "nodeType": "YulIdentifier", + "src": "1313:3:61" + }, + "nativeSrc": "1313:11:61", + "nodeType": "YulFunctionCall", + "src": "1313:11:61" + }, + { + "kind": "number", + "nativeSrc": "1326:2:61", + "nodeType": "YulLiteral", + "src": "1326:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1309:3:61", + "nodeType": "YulIdentifier", + "src": "1309:3:61" + }, + "nativeSrc": "1309:20:61", + "nodeType": "YulFunctionCall", + "src": "1309:20:61" + }, + { + "name": "dataEnd", + "nativeSrc": "1331:7:61", + "nodeType": "YulIdentifier", + "src": "1331:7:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "1306:2:61", + "nodeType": "YulIdentifier", + "src": "1306:2:61" + }, + "nativeSrc": "1306:33:61", + "nodeType": "YulFunctionCall", + "src": "1306:33:61" + }, + "nativeSrc": "1303:53:61", + "nodeType": "YulIf", + "src": "1303:53:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nativeSrc": "1404:2:61", + "nodeType": "YulIdentifier", + "src": "1404:2:61" + }, + { + "kind": "number", + "nativeSrc": "1408:2:61", + "nodeType": "YulLiteral", + "src": "1408:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1400:3:61", + "nodeType": "YulIdentifier", + "src": "1400:3:61" + }, + "nativeSrc": "1400:11:61", + "nodeType": "YulFunctionCall", + "src": "1400:11:61" + }, + { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "1417:6:61", + "nodeType": "YulIdentifier", + "src": "1417:6:61" + }, + { + "kind": "number", + "nativeSrc": "1425:2:61", + "nodeType": "YulLiteral", + "src": "1425:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1413:3:61", + "nodeType": "YulIdentifier", + "src": "1413:3:61" + }, + "nativeSrc": "1413:15:61", + "nodeType": "YulFunctionCall", + "src": "1413:15:61" + }, + { + "name": "_3", + "nativeSrc": "1430:2:61", + "nodeType": "YulIdentifier", + "src": "1430:2:61" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "1365:34:61", + "nodeType": "YulIdentifier", + "src": "1365:34:61" + }, + "nativeSrc": "1365:68:61", + "nodeType": "YulFunctionCall", + "src": "1365:68:61" + }, + "nativeSrc": "1365:68:61", + "nodeType": "YulExpressionStatement", + "src": "1365:68:61" + }, + { + "nativeSrc": "1442:16:61", + "nodeType": "YulAssignment", + "src": "1442:16:61", + "value": { + "name": "memPtr", + "nativeSrc": "1452:6:61", + "nodeType": "YulIdentifier", + "src": "1452:6:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "1442:6:61", + "nodeType": "YulIdentifier", + "src": "1442:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory", + "nativeSrc": "401:1063:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "466:9:61", + "nodeType": "YulTypedName", + "src": "466:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "477:7:61", + "nodeType": "YulTypedName", + "src": "477:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "489:6:61", + "nodeType": "YulTypedName", + "src": "489:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "497:6:61", + "nodeType": "YulTypedName", + "src": "497:6:61", + "type": "" + } + ], + "src": "401:1063:61" + }, + { + "body": { + "nativeSrc": "1570:102:61", + "nodeType": "YulBlock", + "src": "1570:102:61", + "statements": [ + { + "nativeSrc": "1580:26:61", + "nodeType": "YulAssignment", + "src": "1580:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1592:9:61", + "nodeType": "YulIdentifier", + "src": "1592:9:61" + }, + { + "kind": "number", + "nativeSrc": "1603:2:61", + "nodeType": "YulLiteral", + "src": "1603:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1588:3:61", + "nodeType": "YulIdentifier", + "src": "1588:3:61" + }, + "nativeSrc": "1588:18:61", + "nodeType": "YulFunctionCall", + "src": "1588:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "1580:4:61", + "nodeType": "YulIdentifier", + "src": "1580:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1622:9:61", + "nodeType": "YulIdentifier", + "src": "1622:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "1637:6:61", + "nodeType": "YulIdentifier", + "src": "1637:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1653:3:61", + "nodeType": "YulLiteral", + "src": "1653:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "1658:1:61", + "nodeType": "YulLiteral", + "src": "1658:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "1649:3:61", + "nodeType": "YulIdentifier", + "src": "1649:3:61" + }, + "nativeSrc": "1649:11:61", + "nodeType": "YulFunctionCall", + "src": "1649:11:61" + }, + { + "kind": "number", + "nativeSrc": "1662:1:61", + "nodeType": "YulLiteral", + "src": "1662:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "1645:3:61", + "nodeType": "YulIdentifier", + "src": "1645:3:61" + }, + "nativeSrc": "1645:19:61", + "nodeType": "YulFunctionCall", + "src": "1645:19:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1633:3:61", + "nodeType": "YulIdentifier", + "src": "1633:3:61" + }, + "nativeSrc": "1633:32:61", + "nodeType": "YulFunctionCall", + "src": "1633:32:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1615:6:61", + "nodeType": "YulIdentifier", + "src": "1615:6:61" + }, + "nativeSrc": "1615:51:61", + "nodeType": "YulFunctionCall", + "src": "1615:51:61" + }, + "nativeSrc": "1615:51:61", + "nodeType": "YulExpressionStatement", + "src": "1615:51:61" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nativeSrc": "1469:203:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "1539:9:61", + "nodeType": "YulTypedName", + "src": "1539:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "1550:6:61", + "nodeType": "YulTypedName", + "src": "1550:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "1561:4:61", + "nodeType": "YulTypedName", + "src": "1561:4:61", + "type": "" + } + ], + "src": "1469:203:61" + }, + { + "body": { + "nativeSrc": "1814:150:61", + "nodeType": "YulBlock", + "src": "1814:150:61", + "statements": [ + { + "nativeSrc": "1824:27:61", + "nodeType": "YulVariableDeclaration", + "src": "1824:27:61", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "1844:6:61", + "nodeType": "YulIdentifier", + "src": "1844:6:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "1838:5:61", + "nodeType": "YulIdentifier", + "src": "1838:5:61" + }, + "nativeSrc": "1838:13:61", + "nodeType": "YulFunctionCall", + "src": "1838:13:61" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "1828:6:61", + "nodeType": "YulTypedName", + "src": "1828:6:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "1899:6:61", + "nodeType": "YulIdentifier", + "src": "1899:6:61" + }, + { + "kind": "number", + "nativeSrc": "1907:4:61", + "nodeType": "YulLiteral", + "src": "1907:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1895:3:61", + "nodeType": "YulIdentifier", + "src": "1895:3:61" + }, + "nativeSrc": "1895:17:61", + "nodeType": "YulFunctionCall", + "src": "1895:17:61" + }, + { + "name": "pos", + "nativeSrc": "1914:3:61", + "nodeType": "YulIdentifier", + "src": "1914:3:61" + }, + { + "name": "length", + "nativeSrc": "1919:6:61", + "nodeType": "YulIdentifier", + "src": "1919:6:61" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "1860:34:61", + "nodeType": "YulIdentifier", + "src": "1860:34:61" + }, + "nativeSrc": "1860:66:61", + "nodeType": "YulFunctionCall", + "src": "1860:66:61" + }, + "nativeSrc": "1860:66:61", + "nodeType": "YulExpressionStatement", + "src": "1860:66:61" + }, + { + "nativeSrc": "1935:23:61", + "nodeType": "YulAssignment", + "src": "1935:23:61", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "1946:3:61", + "nodeType": "YulIdentifier", + "src": "1946:3:61" + }, + { + "name": "length", + "nativeSrc": "1951:6:61", + "nodeType": "YulIdentifier", + "src": "1951:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1942:3:61", + "nodeType": "YulIdentifier", + "src": "1942:3:61" + }, + "nativeSrc": "1942:16:61", + "nodeType": "YulFunctionCall", + "src": "1942:16:61" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "1935:3:61", + "nodeType": "YulIdentifier", + "src": "1935:3:61" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nativeSrc": "1677:287:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "1790:3:61", + "nodeType": "YulTypedName", + "src": "1790:3:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "1795:6:61", + "nodeType": "YulTypedName", + "src": "1795:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "1806:3:61", + "nodeType": "YulTypedName", + "src": "1806:3:61", + "type": "" + } + ], + "src": "1677:287:61" + } + ] + }, + "contents": "{\n { }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := mload(headStart)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n value0 := value\n let offset := mload(add(headStart, 32))\n let _1 := sub(shl(64, 1), 1)\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := mload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n copy_memory_to_memory_with_cleanup(add(_2, 32), add(memPtr, 32), _3)\n value1 := memPtr\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n}", + "id": 61, + "language": "Yul", + "name": "#utility.yul" + } + ], + "linkReferences": {}, + "object": "60806040526040516104103803806104108339810160408190526100229161025a565b61002c8282610033565b5050610358565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610086576100818282610109565b505050565b61008e610180565b5050565b806001600160a01b03163b6000036100c85780604051634c9c8ce360e01b81526004016100bf9190610328565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610126919061033c565b600060405180830381855af49150503d8060008114610161576040519150601f19603f3d011682016040523d82523d6000602084013e610166565b606091505b5090925090506101778583836101a1565b95945050505050565b341561019f5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b6576101b1826101f7565b6101f0565b81511580156101cd57506001600160a01b0384163b155b156101ed5783604051639996b31560e01b81526004016100bf9190610328565b50805b9392505050565b8051156102075780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b83811015610251578181015183820152602001610239565b50506000910152565b6000806040838503121561026d57600080fd5b82516001600160a01b038116811461028457600080fd5b60208401519092506001600160401b03808211156102a157600080fd5b818501915085601f8301126102b557600080fd5b8151818111156102c7576102c7610220565b604051601f8201601f19908116603f011681019083821181831017156102ef576102ef610220565b8160405282815288602084870101111561030857600080fd5b610319836020830160208801610236565b80955050505050509250929050565b6001600160a01b0391909116815260200190565b6000825161034e818460208701610236565b9190910192915050565b60aa806103666000396000f3fe6080604052600a600c565b005b60186014601a565b6051565b565b6000604c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015606f573d6000f35b3d6000fdfea26469706673582212205010fbd336314ff514e3c3a5ed98aed1c9c96a5210a9df6dc914e2a04bbe772564736f6c63430008180033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x410 CODESIZE SUB DUP1 PUSH2 0x410 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x25A JUMP JUMPDEST PUSH2 0x2C DUP3 DUP3 PUSH2 0x33 JUMP JUMPDEST POP POP PUSH2 0x358 JUMP JUMPDEST PUSH2 0x3C DUP3 PUSH2 0x92 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x86 JUMPI PUSH2 0x81 DUP3 DUP3 PUSH2 0x109 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x8E PUSH2 0x180 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH2 0xC8 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF SWAP2 SWAP1 PUSH2 0x328 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x126 SWAP2 SWAP1 PUSH2 0x33C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x161 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x166 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x177 DUP6 DUP4 DUP4 PUSH2 0x1A1 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x19F JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x1B6 JUMPI PUSH2 0x1B1 DUP3 PUSH2 0x1F7 JUMP JUMPDEST PUSH2 0x1F0 JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x1CD JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x1ED JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF SWAP2 SWAP1 PUSH2 0x328 JUMP JUMPDEST POP DUP1 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x207 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x251 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x239 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x26D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x284 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x2A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x2C7 JUMPI PUSH2 0x2C7 PUSH2 0x220 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x2EF JUMPI PUSH2 0x2EF PUSH2 0x220 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x308 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x319 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x236 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x34E DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x236 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xAA DUP1 PUSH2 0x366 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0xA PUSH1 0xC JUMP JUMPDEST STOP JUMPDEST PUSH1 0x18 PUSH1 0x14 PUSH1 0x1A JUMP JUMPDEST PUSH1 0x51 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4C PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH1 0x6F JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 POP LT 0xFB 0xD3 CALLDATASIZE BALANCE 0x4F CREATE2 EQ 0xE3 0xC3 0xA5 0xED SWAP9 0xAE 0xD1 0xC9 0xC9 PUSH11 0x5210A9DF6DC914E2A04BBE PUSH24 0x2564736F6C63430008180033000000000000000000000000 ", + "sourceMap": "600:1117:21:-:0;;;1081:133;;;;;;;;;;;;;;;;;;:::i;:::-;1155:52;1185:14;1201:5;1155:29;:52::i;:::-;1081:133;;600:1117;;2264:344:22;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:22;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;:::-;;2264:344;;:::o;2454:148::-;2573:18;:16;:18::i;:::-;2264:344;;:::o;1671:281::-;1748:17;-1:-1:-1;;;;;1748:29:22;;1781:1;1748:34;1744:119;;1834:17;1805:47;;-1:-1:-1;;;1805:47:22;;;;;;;;:::i;:::-;;;;;;;;1744:119;811:66;1872:73;;-1:-1:-1;;;;;;1872:73:22;-1:-1:-1;;;;;1872:73:22;;;;;;;;;;1671:281::o;3900:253:34:-;3983:12;4008;4022:23;4049:6;-1:-1:-1;;;;;4049:19:34;4069:4;4049:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4007:67:34;;-1:-1:-1;4007:67:34;-1:-1:-1;4091:55:34;4118:6;4007:67;;4091:26;:55::i;:::-;4084:62;3900:253;-1:-1:-1;;;;;3900:253:34:o;6113:122:22:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:22;;;;;;;;;;;6159:70;6113:122::o;4421:582:34:-;4565:12;4594:7;4589:408;;4617:19;4625:10;4617:7;:19::i;:::-;4589:408;;;4841:17;;:22;:49;;;;-1:-1:-1;;;;;;4867:18:34;;;:23;4841:49;4837:119;;;4934:6;4917:24;;-1:-1:-1;;;4917:24:34;;;;;;;;:::i;4837:119::-;-1:-1:-1;4976:10:34;4589:408;4421:582;;;;;:::o;5543:487::-;5674:17;;:21;5670:354;;5871:10;5865:17;5927:15;5914:10;5910:2;5906:19;5899:44;5670:354;5994:19;;-1:-1:-1;;;5994:19:34;;;;;;;;;;;14:127:61;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:250;231:1;241:113;255:6;252:1;249:13;241:113;;;331:11;;;325:18;312:11;;;305:39;277:2;270:10;241:113;;;-1:-1:-1;;388:1:61;370:16;;363:27;146:250::o;401:1063::-;489:6;497;550:2;538:9;529:7;525:23;521:32;518:52;;;566:1;563;556:12;518:52;592:16;;-1:-1:-1;;;;;637:31:61;;627:42;;617:70;;683:1;680;673:12;617:70;755:2;740:18;;734:25;706:5;;-1:-1:-1;;;;;;808:14:61;;;805:34;;;835:1;832;825:12;805:34;873:6;862:9;858:22;848:32;;918:7;911:4;907:2;903:13;899:27;889:55;;940:1;937;930:12;889:55;969:2;963:9;991:2;987;984:10;981:36;;;997:18;;:::i;:::-;1072:2;1066:9;1040:2;1126:13;;-1:-1:-1;;1122:22:61;;;1146:2;1118:31;1114:40;1102:53;;;1170:18;;;1190:22;;;1167:46;1164:72;;;1216:18;;:::i;:::-;1256:10;1252:2;1245:22;1291:2;1283:6;1276:18;1331:7;1326:2;1321;1317;1313:11;1309:20;1306:33;1303:53;;;1352:1;1349;1342:12;1303:53;1365:68;1430:2;1425;1417:6;1413:15;1408:2;1404;1400:11;1365:68;:::i;:::-;1452:6;1442:16;;;;;;;401:1063;;;;;:::o;1469:203::-;-1:-1:-1;;;;;1633:32:61;;;;1615:51;;1603:2;1588:18;;1469:203::o;1677:287::-;1806:3;1844:6;1838:13;1860:66;1919:6;1914:3;1907:4;1899:6;1895:17;1860:66;:::i;:::-;1942:16;;;;;1677:287;-1:-1:-1;;1677:287:61:o;:::-;600:1117:21;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@_3909": { + "entryPoint": null, + "id": 3909, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_delegate_3885": { + "entryPoint": 81, + "id": 3885, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_fallback_3901": { + "entryPoint": 12, + "id": 3901, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_implementation_3579": { + "entryPoint": 26, + "id": 3579, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getAddressSlot_5620": { + "entryPoint": null, + "id": 5620, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getImplementation_3626": { + "entryPoint": null, + "id": 3626, + "parameterSlots": 0, + "returnSlots": 1 + } + }, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "6080604052600a600c565b005b60186014601a565b6051565b565b6000604c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015606f573d6000f35b3d6000fdfea26469706673582212205010fbd336314ff514e3c3a5ed98aed1c9c96a5210a9df6dc914e2a04bbe772564736f6c63430008180033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0xA PUSH1 0xC JUMP JUMPDEST STOP JUMPDEST PUSH1 0x18 PUSH1 0x14 PUSH1 0x1A JUMP JUMPDEST PUSH1 0x51 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4C PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH1 0x6F JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 POP LT 0xFB 0xD3 CALLDATASIZE BALANCE 0x4F CREATE2 EQ 0xE3 0xC3 0xA5 0xED SWAP9 0xAE 0xD1 0xC9 0xC9 PUSH11 0x5210A9DF6DC914E2A04BBE PUSH24 0x2564736F6C63430008180033000000000000000000000000 ", + "sourceMap": "600:1117:21:-:0;;;2649:11:23;:9;:11::i;:::-;600:1117:21;2323:83:23;2371:28;2381:17;:15;:17::i;:::-;2371:9;:28::i;:::-;2323:83::o;1583:132:21:-;1650:7;1676:32;811:66:22;1519:53;-1:-1:-1;;;;;1519:53:22;;1441:138;1676:32:21;1669:39;;1583:132;:::o;949:895:23:-;1287:14;1284:1;1281;1268:34;1501:1;1498;1482:14;1479:1;1463:14;1456:5;1443:60;1577:16;1574:1;1571;1556:38;1615:6;1682:66;;;;1797:16;1794:1;1787:27;1682:66;1717:16;1714:1;1707:27" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"}],\"devdoc\":{\"details\":\"This contract implements an upgradeable proxy. It is upgradeable because calls are delegated to an implementation address that can be changed. This address is stored in storage in the location specified by https://eips.ethereum.org/EIPS/eip-1967[ERC-1967], so that it doesn't conflict with the storage layout of the implementation behind the proxy.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}]},\"events\":{\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the upgradeable proxy with an initial implementation specified by `implementation`. If `_data` is nonempty, it's used as data in a delegate call to `implementation`. This will typically be an encoded function call, and allows initializing the storage of the proxy like a Solidity constructor. Requirements: - If `data` is empty, `msg.value` must be zero.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":\"ERC1967Proxy\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0x0a8a5b994d4c4da9f61d128945cc8c9e60dcbc72bf532f72ae42a48ea90eed9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e63ae15b6b1079b9d3c73913424d4278139f9e9c9658316675b9c48d5883a50d\",\"dweb:/ipfs/QmWLxBYfp8j1YjNMabWgv75ELTaK2eEYEEGx7qsJbxVZZq\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c\",\"dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR\"]},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol": { + "ERC1967Utils": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "admin", + "type": "address" + } + ], + "name": "ERC1967InvalidAdmin", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "beacon", + "type": "address" + } + ], + "name": "ERC1967InvalidBeacon", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "ERC1967InvalidImplementation", + "type": "error" + }, + { + "inputs": [], + "name": "ERC1967NonPayable", + "type": "error" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122062581d4f8085cf5b6966397d97e6794da84c08f326230d34bfa853fba411efca64736f6c63430008180033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH3 0x581D4F DUP1 DUP6 0xCF JUMPDEST PUSH10 0x66397D97E6794DA84C08 RETURN 0x26 0x23 0xD CALLVALUE 0xBF 0xA8 MSTORE8 0xFB LOG4 GT 0xEF 0xCA PUSH5 0x736F6C6343 STOP ADDMOD XOR STOP CALLER ", + "sourceMap": "496:5741:22:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;496:5741:22;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122062581d4f8085cf5b6966397d97e6794da84c08f326230d34bfa853fba411efca64736f6c63430008180033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH3 0x581D4F DUP1 DUP6 0xCF JUMPDEST PUSH10 0x66397D97E6794DA84C08 RETURN 0x26 0x23 0xD CALLVALUE 0xBF 0xA8 MSTORE8 0xFB LOG4 GT 0xEF 0xCA PUSH5 0x736F6C6343 STOP ADDMOD XOR STOP CALLER ", + "sourceMap": "496:5741:22:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"beacon\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidBeacon\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"This library provides getters and event emitting update functions for https://eips.ethereum.org/EIPS/eip-1967[ERC-1967] slots.\",\"errors\":{\"ERC1967InvalidAdmin(address)\":[{\"details\":\"The `admin` of the proxy is invalid.\"}],\"ERC1967InvalidBeacon(address)\":[{\"details\":\"The `beacon` of the proxy is invalid.\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}]},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"ADMIN_SLOT\":{\"details\":\"Storage slot with the admin of the contract. This is the keccak-256 hash of \\\"eip1967.proxy.admin\\\" subtracted by 1.\"},\"BEACON_SLOT\":{\"details\":\"The storage slot of the UpgradeableBeacon contract which defines the implementation for this proxy. This is the keccak-256 hash of \\\"eip1967.proxy.beacon\\\" subtracted by 1.\"},\"IMPLEMENTATION_SLOT\":{\"details\":\"Storage slot with the address of the current implementation. This is the keccak-256 hash of \\\"eip1967.proxy.implementation\\\" subtracted by 1.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":\"ERC1967Utils\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c\",\"dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/proxy/Proxy.sol": { + "Proxy": { + "abi": [ + { + "stateMutability": "payable", + "type": "fallback" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"stateMutability\":\"payable\",\"type\":\"fallback\"}],\"devdoc\":{\"details\":\"This abstract contract provides a fallback function that delegates all calls to another contract using the EVM instruction `delegatecall`. We refer to the second contract as the _implementation_ behind the proxy, and it has to be specified by overriding the virtual {_implementation} function. Additionally, delegation to the implementation can be triggered manually through the {_fallback} function, or to a different contract through the {_delegate} function. The success and return data of the delegated call will be returned back to the caller of the proxy.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/Proxy.sol\":\"Proxy\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/proxy/beacon/IBeacon.sol": { + "IBeacon": { + "abi": [ + { + "inputs": [], + "name": "implementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "implementation()": "5c60da1b" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"implementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"This is the interface that {BeaconProxy} expects of its beacon.\",\"kind\":\"dev\",\"methods\":{\"implementation()\":{\"details\":\"Must return an address that can be used as a delegate call target. {UpgradeableBeacon} will check that this address is a contract.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":\"IBeacon\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/token/ERC20/ERC20.sol": { + "ERC20": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "allowance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientAllowance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC20InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC20InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC20InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "ERC20InvalidSpender", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "decimals()": "313ce567", + "name()": "06fdde03", + "symbol()": "95d89b41", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the {IERC20} interface. This implementation is agnostic to the way tokens are created. This means that a supply mechanism has to be added in a derived contract using {_mint}. TIP: For a detailed writeup see our guide https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How to implement supply mechanisms]. The default value of {decimals} is 18. To change this, you should override this function so it returns a different value. We have followed general OpenZeppelin Contracts guidelines: functions revert instead returning `false` on failure. This behavior is nonetheless conventional and does not conflict with the expectations of ERC-20 applications.\",\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Sets the values for {name} and {symbol}. All two of these values are immutable: they can only be set once during construction.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xbf61ab2ae1d575a17ea58fbb99ca232baddcc4e0eeea180e84cbc74b0c348b31\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4e0968705bad99747a8e5288aa008678c2be2f471f919dce3925a3cc4f1dee09\",\"dweb:/ipfs/QmbAFnCQfo4tw6ssfQSjhA5LzwHWNNryXN8bX7ty8jiqqn\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 3943, + "contract": "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20", + "label": "_balances", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_address,t_uint256)" + }, + { + "astId": 3949, + "contract": "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20", + "label": "_allowances", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))" + }, + { + "astId": 3951, + "contract": "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20", + "label": "_totalSupply", + "offset": 0, + "slot": "2", + "type": "t_uint256" + }, + { + "astId": 3953, + "contract": "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20", + "label": "_name", + "offset": 0, + "slot": "3", + "type": "t_string_storage" + }, + { + "astId": 3955, + "contract": "@openzeppelin/contracts/token/ERC20/ERC20.sol:ERC20", + "label": "_symbol", + "offset": 0, + "slot": "4", + "type": "t_string_storage" + } + ], + "types": { + "t_address": { + "encoding": "inplace", + "label": "address", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_mapping(t_address,t_uint256))": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => mapping(address => uint256))", + "numberOfBytes": "32", + "value": "t_mapping(t_address,t_uint256)" + }, + "t_mapping(t_address,t_uint256)": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => uint256)", + "numberOfBytes": "32", + "value": "t_uint256" + }, + "t_string_storage": { + "encoding": "bytes", + "label": "string", + "numberOfBytes": "32" + }, + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } + } + } + }, + "@openzeppelin/contracts/token/ERC20/IERC20.sol": { + "IERC20": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-20 standard as defined in the ERC.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": { + "IERC20Metadata": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "decimals()": "313ce567", + "name()": "06fdde03", + "symbol()": "95d89b41", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface for the optional metadata functions from the ERC-20 standard.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"decimals()\":{\"details\":\"Returns the decimals places of the token.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":\"IERC20Metadata\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol": { + "SafeERC20": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "currentAllowance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "requestedDecrease", + "type": "uint256" + } + ], + "name": "SafeERC20FailedDecreaseAllowance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "SafeERC20FailedOperation", + "type": "error" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220aca3f842a774d60d3e39a98d44a94bb9181fc9246cdae2e2d93ecd1bdb68961764736f6c63430008180033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAC LOG3 0xF8 TIMESTAMP 0xA7 PUSH21 0xD60D3E39A98D44A94BB9181FC9246CDAE2E2D93ECD SHL 0xDB PUSH9 0x961764736F6C634300 ADDMOD XOR STOP CALLER ", + "sourceMap": "750:8692:28:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;750:8692:28;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220aca3f842a774d60d3e39a98d44a94bb9181fc9246cdae2e2d93ecd1bdb68961764736f6c63430008180033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAC LOG3 0xF8 TIMESTAMP 0xA7 PUSH21 0xD60D3E39A98D44A94BB9181FC9246CDAE2E2D93ECD SHL 0xDB PUSH9 0x961764736F6C634300 ADDMOD XOR STOP CALLER ", + "sourceMap": "750:8692:28:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentAllowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"requestedDecrease\",\"type\":\"uint256\"}],\"name\":\"SafeERC20FailedDecreaseAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Wrappers around ERC-20 operations that throw on failure (when the token contract returns false). Tokens that return no value (and instead revert or throw on failure) are also supported, non-reverting calls are assumed to be successful. To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract, which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\",\"errors\":{\"SafeERC20FailedDecreaseAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failed `decreaseAllowance` request.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"kind\":\"dev\",\"methods\":{},\"title\":\"SafeERC20\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":\"SafeERC20\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/token/ERC721/IERC721.sol": { + "IERC721": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "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": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "getApproved(uint256)": "081812fc", + "isApprovedForAll(address,address)": "e985e9c5", + "ownerOf(uint256)": "6352211e", + "safeTransferFrom(address,address,uint256)": "42842e0e", + "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde", + "setApprovalForAll(address,bool)": "a22cb465", + "supportsInterface(bytes4)": "01ffc9a7", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"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\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Required interface of an ERC-721 compliant contract.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC-721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":\"IERC721\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol": { + "IERC721Receiver": { + "abi": [ + { + "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" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "onERC721Received(address,address,uint256,bytes)": "150b7a02" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"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\"}],\"devdoc\":{\"details\":\"Interface for any contract that wants to support safeTransfers from ERC-721 asset contracts.\",\"kind\":\"dev\",\"methods\":{\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom} by `operator` from `from`, this function is called. It must return its Solidity selector to confirm the token transfer. If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted. The selector can be obtained in Solidity with `IERC721Receiver.onERC721Received.selector`.\"}},\"title\":\"ERC-721 token receiver interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":\"IERC721Receiver\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xb5afb8e8eebc4d1c6404df2f5e1e6d2c3d24fd01e5dfc855314951ecfaae462d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://78586466c424f076c6a2a551d848cfbe3f7c49e723830807598484a1047b3b34\",\"dweb:/ipfs/Qmb717ovcFxm7qgNKEShiV6M9SPR3v1qnNpAGH84D6w29p\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol": { + "IERC721Enumerable": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "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": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "getApproved(uint256)": "081812fc", + "isApprovedForAll(address,address)": "e985e9c5", + "ownerOf(uint256)": "6352211e", + "safeTransferFrom(address,address,uint256)": "42842e0e", + "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde", + "setApprovalForAll(address,bool)": "a22cb465", + "supportsInterface(bytes4)": "01ffc9a7", + "tokenByIndex(uint256)": "4f6ccce7", + "tokenOfOwnerByIndex(address,uint256)": "2f745c59", + "totalSupply()": "18160ddd", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"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\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC-721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"tokenByIndex(uint256)\":{\"details\":\"Returns a token ID at a given `index` of all the tokens stored by the contract. Use along with {totalSupply} to enumerate all tokens.\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"Returns a token ID owned by `owner` at a given `index` of its token list. Use along with {balanceOf} to enumerate all of ``owner``'s tokens.\"},\"totalSupply()\":{\"details\":\"Returns the total amount of tokens stored by the contract.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional enumeration extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":\"IERC721Enumerable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0x3d6954a93ac198a2ffa384fa58ccf18e7e235263e051a394328002eff4e073de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1f58c799bd939d3951c94893e83ef86acd56989d1d7db7f9d180c515e29e28ff\",\"dweb:/ipfs/QmTgAxHAAys4kq9ZfU9YB24MWYoHLGAKSxnYUigPFrNW7g\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol": { + "IERC721Metadata": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "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": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "getApproved(uint256)": "081812fc", + "isApprovedForAll(address,address)": "e985e9c5", + "name()": "06fdde03", + "ownerOf(uint256)": "6352211e", + "safeTransferFrom(address,address,uint256)": "42842e0e", + "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde", + "setApprovalForAll(address,bool)": "a22cb465", + "supportsInterface(bytes4)": "01ffc9a7", + "symbol()": "95d89b41", + "tokenURI(uint256)": "c87b56dd", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"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\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"See https://eips.ethereum.org/EIPS/eip-721\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"name()\":{\"details\":\"Returns the token collection name.\"},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC-721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"Returns the token collection symbol.\"},\"tokenURI(uint256)\":{\"details\":\"Returns the Uniform Resource Identifier (URI) for `tokenId` token.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC-721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"}},\"title\":\"ERC-721 Non-Fungible Token Standard, optional metadata extension\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":\"IERC721Metadata\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol": { + "ERC721Utils": { + "abi": [], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220706bea8522e02c972e507fcee18bf16677c648acede42e62d1a15d7303f4fcb264736f6c63430008180033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH17 0x6BEA8522E02C972E507FCEE18BF16677C6 BASEFEE 0xAC 0xED 0xE4 0x2E PUSH3 0xD1A15D PUSH20 0x3F4FCB264736F6C634300081800330000000000 ", + "sourceMap": "431:1480:33:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;431:1480:33;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220706bea8522e02c972e507fcee18bf16677c648acede42e62d1a15d7303f4fcb264736f6c63430008180033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH17 0x6BEA8522E02C972E507FCEE18BF16677C6 BASEFEE 0xAC 0xED 0xE4 0x2E PUSH3 0xD1A15D PUSH20 0x3F4FCB264736F6C634300081800330000000000 ", + "sourceMap": "431:1480:33:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library that provide common ERC-721 utility functions. See https://eips.ethereum.org/EIPS/eip-721[ERC-721]. _Available since v5.1._\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol\":\"ERC721Utils\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xb5afb8e8eebc4d1c6404df2f5e1e6d2c3d24fd01e5dfc855314951ecfaae462d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://78586466c424f076c6a2a551d848cfbe3f7c49e723830807598484a1047b3b34\",\"dweb:/ipfs/Qmb717ovcFxm7qgNKEShiV6M9SPR3v1qnNpAGH84D6w29p\"]},\"@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol\":{\"keccak256\":\"0x40399695922383778f9f540a620bec475a2f8e0f08d41f0005682842e28a9855\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://746d295e403931aeb9d6065fd5a0871f43ab5459814a60623611e4b6641a09fd\",\"dweb:/ipfs/QmWrgT8YJrQ9FfD1o3YYArwo57e7MGdpFKuM74qJ4qE34E\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/utils/Address.sol": { + "Address": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + } + ], + "name": "AddressEmptyCode", + "type": "error" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207bf35d562c3a05bce2224c277dc0088e9958ba017a2b65edb31fa4532516e00664736f6c63430008180033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH28 0xF35D562C3A05BCE2224C277DC0088E9958BA017A2B65EDB31FA45325 AND 0xE0 MOD PUSH5 0x736F6C6343 STOP ADDMOD XOR STOP CALLER ", + "sourceMap": "233:5799:34:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;233:5799:34;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207bf35d562c3a05bce2224c277dc0088e9958ba017a2b65edb31fa4532516e00664736f6c63430008180033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH28 0xF35D562C3A05BCE2224C277DC0088E9958BA017A2B65EDB31FA45325 AND 0xE0 MOD PUSH5 0x736F6C6343 STOP ADDMOD XOR STOP CALLER ", + "sourceMap": "233:5799:34:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/utils/Context.sol": { + "Context": { + "abi": [], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/utils/Errors.sol": { + "Errors": { + "abi": [ + { + "inputs": [], + "name": "FailedCall", + "type": "error" + }, + { + "inputs": [], + "name": "FailedDeployment", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "MissingPrecompile", + "type": "error" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207dab556c85a943845f2a7d6fd33f4a344b3f33affc9ccb5209a13f98de2fca1464736f6c63430008180033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH30 0xAB556C85A943845F2A7D6FD33F4A344B3F33AFFC9CCB5209A13F98DE2FCA EQ PUSH5 0x736F6C6343 STOP ADDMOD XOR STOP CALLER ", + "sourceMap": "411:484:36:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;411:484:36;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207dab556c85a943845f2a7d6fd33f4a344b3f33affc9ccb5209a13f98de2fca1464736f6c63430008180033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH30 0xAB556C85A943845F2A7D6FD33F4A344B3F33AFFC9CCB5209A13F98DE2FCA EQ PUSH5 0x736F6C6343 STOP ADDMOD XOR STOP CALLER ", + "sourceMap": "411:484:36:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedDeployment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"MissingPrecompile\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Collection of common custom errors used in multiple contracts IMPORTANT: Backwards compatibility is not guaranteed in future versions of the library. It is recommended to avoid relying on the error API for critical functionality. _Available since v5.1._\",\"errors\":{\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"FailedDeployment()\":[{\"details\":\"The deployment failed.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"MissingPrecompile(address)\":[{\"details\":\"A necessary precompile is missing.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Errors.sol\":\"Errors\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/utils/Panic.sol": { + "Panic": { + "abi": [], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220241a81394c3214aaa316ec7bfbc92d6fbb63eb60ab95419ba2b8b4d7ee2d218964736f6c63430008180033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x24 BYTE DUP2 CODECOPY 0x4C ORIGIN EQ 0xAA LOG3 AND 0xEC PUSH28 0xFBC92D6FBB63EB60AB95419BA2B8B4D7EE2D218964736F6C63430008 XOR STOP CALLER ", + "sourceMap": "657:1315:37:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;657:1315:37;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220241a81394c3214aaa316ec7bfbc92d6fbb63eb60ab95419ba2b8b4d7ee2d218964736f6c63430008180033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x24 BYTE DUP2 CODECOPY 0x4C ORIGIN EQ 0xAA LOG3 AND 0xEC PUSH28 0xFBC92D6FBB63EB60AB95419BA2B8B4D7EE2D218964736F6C63430008 XOR STOP CALLER ", + "sourceMap": "657:1315:37:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Helper library for emitting standardized panic codes. ```solidity contract Example { using Panic for uint256; // Use any of the declared internal constants function foo() { Panic.GENERIC.panic(); } // Alternatively function foo() { Panic.panic(Panic.GENERIC); } } ``` Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil]. _Available since v5.1._\",\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"ARRAY_OUT_OF_BOUNDS\":{\"details\":\"array out of bounds access\"},\"ASSERT\":{\"details\":\"used by the assert() builtin\"},\"DIVISION_BY_ZERO\":{\"details\":\"division or modulo by zero\"},\"EMPTY_ARRAY_POP\":{\"details\":\"empty array pop\"},\"ENUM_CONVERSION_ERROR\":{\"details\":\"enum conversion error\"},\"GENERIC\":{\"details\":\"generic / unspecified error\"},\"INVALID_INTERNAL_FUNCTION\":{\"details\":\"calling invalid internal function\"},\"RESOURCE_ERROR\":{\"details\":\"resource error (too large allocation or too large array)\"},\"STORAGE_ENCODING_ERROR\":{\"details\":\"invalid encoding in storage\"},\"UNDER_OVERFLOW\":{\"details\":\"arithmetic underflow or overflow\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Panic.sol\":\"Panic\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/utils/StorageSlot.sol": { + "StorageSlot": { + "abi": [], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122078b0a50a050af0f4c2d0e8c0b0035811681ce0d00d2033e54a819aee0fe6f6ae64736f6c63430008180033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH25 0xB0A50A050AF0F4C2D0E8C0B0035811681CE0D00D2033E54A81 SWAP11 0xEE 0xF 0xE6 0xF6 0xAE PUSH5 0x736F6C6343 STOP ADDMOD XOR STOP CALLER ", + "sourceMap": "1407:2774:38:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1407:2774:38;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122078b0a50a050af0f4c2d0e8c0b0035811681ce0d00d2033e54a819aee0fe6f6ae64736f6c63430008180033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH25 0xB0A50A050AF0F4C2D0E8C0B0035811681CE0D00D2033E54A81 SWAP11 0xEE 0xF 0xE6 0xF6 0xAE PUSH5 0x736F6C6343 STOP ADDMOD XOR STOP CALLER ", + "sourceMap": "1407:2774:38:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC-1967 implementation slot: ```solidity contract ERC1967 { // Define the slot. Alternatively, use the SlotDerivation library to derive the slot. bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc; function _getImplementation() internal view returns (address) { return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value; } function _setImplementation(address newImplementation) internal { require(newImplementation.code.length > 0); StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation; } } ``` TIP: Consider using this library along with {SlotDerivation}.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":\"StorageSlot\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/utils/Strings.sol": { + "Strings": { + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "length", + "type": "uint256" + } + ], + "name": "StringsInsufficientHexLength", + "type": "error" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122055cb4599f5539fbe6c7f4de143c3dc97a82a3a2349b27442f2f5cbe5f09820c964736f6c63430008180033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SSTORE 0xCB GASLIMIT SWAP10 CREATE2 MSTORE8 SWAP16 0xBE PUSH13 0x7F4DE143C3DC97A82A3A2349B2 PUSH21 0x42F2F5CBE5F09820C964736F6C6343000818003300 ", + "sourceMap": "251:3680:39:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;251:3680:39;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122055cb4599f5539fbe6c7f4de143c3dc97a82a3a2349b27442f2f5cbe5f09820c964736f6c63430008180033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SSTORE 0xCB GASLIMIT SWAP10 CREATE2 MSTORE8 SWAP16 0xBE PUSH13 0x7F4DE143C3DC97A82A3A2349B2 PUSH21 0x42F2F5CBE5F09820C964736F6C6343000818003300 ", + "sourceMap": "251:3680:39:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"StringsInsufficientHexLength\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"String operations.\",\"errors\":{\"StringsInsufficientHexLength(uint256,uint256)\":[{\"details\":\"The `value` string doesn't fit in the specified `length`.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Strings.sol\":\"Strings\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0\",\"dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/utils/cryptography/ECDSA.sol": { + "ECDSA": { + "abi": [ + { + "inputs": [], + "name": "ECDSAInvalidSignature", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "length", + "type": "uint256" + } + ], + "name": "ECDSAInvalidSignatureLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "ECDSAInvalidSignatureS", + "type": "error" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122099f0902cef332e215d647678053949bfbae232c47b36d81b5356d1aa46c08bbf64736f6c63430008180033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP10 CREATE SWAP1 0x2C 0xEF CALLER 0x2E 0x21 TSTORE PUSH5 0x7678053949 0xBF 0xBA 0xE2 ORIGIN 0xC4 PUSH28 0x36D81B5356D1AA46C08BBF64736F6C63430008180033000000000000 ", + "sourceMap": "344:7470:40:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;344:7470:40;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122099f0902cef332e215d647678053949bfbae232c47b36d81b5356d1aa46c08bbf64736f6c63430008180033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP10 CREATE SWAP1 0x2C 0xEF CALLER 0x2E 0x21 TSTORE PUSH5 0x7678053949 0xBF 0xBA 0xE2 ORIGIN 0xC4 PUSH28 0x36D81B5356D1AA46C08BBF64736F6C63430008180033000000000000 ", + "sourceMap": "344:7470:40:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Elliptic Curve Digital Signature Algorithm (ECDSA) operations. These functions can be used to verify that a message was signed by the holder of the private keys of a given address.\",\"errors\":{\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":\"ECDSA\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/utils/introspection/IERC165.sol": { + "IERC165": { + "abi": [ + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "supportsInterface(bytes4)": "01ffc9a7" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[ERC]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/utils/math/Math.sol": { + "Math": { + "abi": [], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c7f3c35b85a26e681e9be7c91cbbb18fd89f912b756e446fb0a36e01f4a65f0464736f6c63430008180033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC7 RETURN 0xC3 JUMPDEST DUP6 LOG2 PUSH15 0x681E9BE7C91CBBB18FD89F912B756E PREVRANDAO PUSH16 0xB0A36E01F4A65F0464736F6C63430008 XOR STOP CALLER ", + "sourceMap": "281:28026:42:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;281:28026:42;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c7f3c35b85a26e681e9be7c91cbbb18fd89f912b756e446fb0a36e01f4a65f0464736f6c63430008180033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC7 RETURN 0xC3 JUMPDEST DUP6 LOG2 PUSH15 0x681E9BE7C91CBBB18FD89F912B756E PREVRANDAO PUSH16 0xB0A36E01F4A65F0464736F6C63430008 XOR STOP CALLER ", + "sourceMap": "281:28026:42:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/Math.sol\":\"Math\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/utils/math/SafeCast.sol": { + "SafeCast": { + "abi": [ + { + "inputs": [ + { + "internalType": "uint8", + "name": "bits", + "type": "uint8" + }, + { + "internalType": "int256", + "name": "value", + "type": "int256" + } + ], + "name": "SafeCastOverflowedIntDowncast", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "int256", + "name": "value", + "type": "int256" + } + ], + "name": "SafeCastOverflowedIntToUint", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "bits", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "SafeCastOverflowedUintDowncast", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "SafeCastOverflowedUintToInt", + "type": "error" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a72476c78c6ccb274a2d3fe41d3774833276a50d711248b98a89bf6fec281a5e64736f6c63430008180033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA7 0x24 PUSH23 0xC78C6CCB274A2D3FE41D3774833276A50D711248B98A89 0xBF PUSH16 0xEC281A5E64736F6C6343000818003300 ", + "sourceMap": "769:34173:43:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;769:34173:43;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a72476c78c6ccb274a2d3fe41d3774833276a50d711248b98a89bf6fec281a5e64736f6c63430008180033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA7 0x24 PUSH23 0xC78C6CCB274A2D3FE41D3774833276A50D711248B98A89 0xBF PUSH16 0xEC281A5E64736F6C6343000818003300 ", + "sourceMap": "769:34173:43:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"SafeCastOverflowedIntDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"value\",\"type\":\"int256\"}],\"name\":\"SafeCastOverflowedIntToUint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"bits\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintDowncast\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SafeCastOverflowedUintToInt\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow checks. Downcasting from uint256/int256 in Solidity does not revert on overflow. This can easily result in undesired exploitation or bugs, since developers usually assume that overflows raise errors. `SafeCast` restores this intuition by reverting the transaction when such an operation overflows. Using this library instead of the unchecked operations eliminates an entire class of bugs, so it's recommended to use it always.\",\"errors\":{\"SafeCastOverflowedIntDowncast(uint8,int256)\":[{\"details\":\"Value doesn't fit in an int of `bits` size.\"}],\"SafeCastOverflowedIntToUint(int256)\":[{\"details\":\"An int value doesn't fit in an uint of `bits` size.\"}],\"SafeCastOverflowedUintDowncast(uint8,uint256)\":[{\"details\":\"Value doesn't fit in an uint of `bits` size.\"}],\"SafeCastOverflowedUintToInt(uint256)\":[{\"details\":\"An uint value doesn't fit in an int of `bits` size.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/SafeCast.sol\":\"SafeCast\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/utils/math/SignedMath.sol": { + "SignedMath": { + "abi": [], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201d9cc161709efe3d35288327f629a4c7c6d5b6be59b1594ed8c920768056a27d64736f6c63430008180033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SAR SWAP13 0xC1 PUSH2 0x709E INVALID RETURNDATASIZE CALLDATALOAD 0x28 DUP4 0x27 0xF6 0x29 LOG4 0xC7 0xC6 0xD5 0xB6 0xBE MSIZE 0xB1 MSIZE 0x4E 0xD8 0xC9 KECCAK256 PUSH23 0x8056A27D64736F6C634300081800330000000000000000 ", + "sourceMap": "258:2354:44:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;258:2354:44;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201d9cc161709efe3d35288327f629a4c7c6d5b6be59b1594ed8c920768056a27d64736f6c63430008180033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SAR SWAP13 0xC1 PUSH2 0x709E INVALID RETURNDATASIZE CALLDATALOAD 0x28 DUP4 0x27 0xF6 0x29 LOG4 0xC7 0xC6 0xD5 0xB6 0xBE MSIZE 0xB1 MSIZE 0x4E 0xD8 0xC9 KECCAK256 PUSH23 0x8056A27D64736F6C634300081800330000000000000000 ", + "sourceMap": "258:2354:44:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Standard signed math utilities missing in the Solidity language.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/math/SignedMath.sol\":\"SignedMath\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "@openzeppelin/contracts/utils/structs/EnumerableSet.sol": { + "EnumerableSet": { + "abi": [], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e869dfddaa3a6de20be2d8c6544d5be1caee18f09364357d3118216bb313c71e64736f6c63430008180033", + "opcodes": "PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE8 PUSH10 0xDFDDAA3A6DE20BE2D8C6 SLOAD 0x4D JUMPDEST 0xE1 0xCA 0xEE XOR CREATE SWAP4 PUSH5 0x357D311821 PUSH12 0xB313C71E64736F6C63430008 XOR STOP CALLER ", + "sourceMap": "1330:11559:45:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;1330:11559:45;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e869dfddaa3a6de20be2d8c6544d5be1caee18f09364357d3118216bb313c71e64736f6c63430008180033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE8 PUSH10 0xDFDDAA3A6DE20BE2D8C6 SLOAD 0x4D JUMPDEST 0xE1 0xCA 0xEE XOR CREATE SWAP4 PUSH5 0x357D311821 PUSH12 0xB313C71E64736F6C63430008 XOR STOP CALLER ", + "sourceMap": "1330:11559:45:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for managing https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive types. Sets have the following properties: - Elements are added, removed, and checked for existence in constant time (O(1)). - Elements are enumerated in O(n). No guarantees are made on the ordering. ```solidity contract Example { // Add the library methods using EnumerableSet for EnumerableSet.AddressSet; // Declare a set state variable EnumerableSet.AddressSet private mySet; } ``` As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`) and `uint256` (`UintSet`) are supported. [WARNING] ==== Trying to delete such a structure from storage will likely result in data corruption, rendering the structure unusable. See https://github.com/ethereum/solidity/pull/11843[ethereum/solidity#11843] for more info. In order to clean an EnumerableSet, you can either remove all elements one by one or create a fresh instance using an array of EnumerableSet. ====\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":\"EnumerableSet\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "contracts/account/CMAccount.sol": { + "CMAccount": { + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + } + ], + "name": "AddressEmptyCode", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "latestImplementation", + "type": "address" + }, + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "CMAccountImplementationMismatch", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "oldImplementation", + "type": "address" + }, + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "CMAccountNoUpgradeNeeded", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "expiresAt", + "type": "uint256" + } + ], + "name": "ChequeExpired", + "type": "error" + }, + { + "inputs": [], + "name": "ECDSAInvalidSignature", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "length", + "type": "uint256" + } + ], + "name": "ECDSAInvalidSignatureLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "ECDSAInvalidSignatureS", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "ERC1967InvalidImplementation", + "type": "error" + }, + { + "inputs": [], + "name": "ERC1967NonPayable", + "type": "error" + }, + { + "inputs": [], + "name": "FailedCall", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "chequeAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastAmount", + "type": "uint256" + } + ], + "name": "InvalidAmount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "chequeCounter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastCounter", + "type": "uint256" + } + ], + "name": "InvalidCounter", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + } + ], + "name": "InvalidFromCMAccount", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "use", + "type": "uint8" + } + ], + "name": "InvalidPublicKeyUseType", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "toCMAccount", + "type": "address" + } + ], + "name": "InvalidToCMAccount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "signer", + "type": "address" + } + ], + "name": "NotAllowedToSignCheques", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "PaymentTokenAlreadyExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "PaymentTokenDoesNotExist", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "withdrawableAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "prefundLeft", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "PrefundNotSpentYet", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "PublicKeyAlreadyExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "PublicKeyDoesNotExist", + "type": "error" + }, + { + "inputs": [], + "name": "ReentrancyGuardReentrantCall", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "SafeERC20FailedOperation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceAlreadyExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceDoesNotExist", + "type": "error" + }, + { + "inputs": [], + "name": "TransferToZeroAddress", + "type": "error" + }, + { + "inputs": [], + "name": "UUPSUnauthorizedCallContext", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "slot", + "type": "bytes32" + } + ], + "name": "UUPSUnsupportedProxiableUUID", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "WantedServiceAlreadyExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "WantedServiceDoesNotExist", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "limit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "WithdrawalLimitExceeded", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "limit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "WithdrawalLimitExceededForPeriod", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldImplementation", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "CMAccountUpgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "toCMAccount", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "fromBot", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "toBot", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "counter", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "paidChequeAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "paidDeveloperFee", + "type": "uint256" + } + ], + "name": "ChequeCashedIn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "withdrawer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "GasMoneyWithdrawal", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "limit", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "period", + "type": "uint256" + } + ], + "name": "GasMoneyWithdrawalUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "bot", + "type": "address" + } + ], + "name": "MessengerBotAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "bot", + "type": "address" + } + ], + "name": "MessengerBotRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "supportsOffChainPayment", + "type": "bool" + } + ], + "name": "OffChainPaymentSupportUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "PaymentTokenAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "PaymentTokenRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "PublicKeyAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "PublicKeyRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "ServiceAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "ServiceCapabilitiesUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "capability", + "type": "string" + } + ], + "name": "ServiceCapabilityAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "capability", + "type": "string" + } + ], + "name": "ServiceCapabilityRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "fee", + "type": "uint256" + } + ], + "name": "ServiceFeeUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "ServiceRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "indexed": false, + "internalType": "bool", + "name": "restrictedRate", + "type": "bool" + } + ], + "name": "ServiceRestrictedRateUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "WantedServiceAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "WantedServiceRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "receiver", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Withdraw", + "type": "event" + }, + { + "inputs": [], + "name": "BOOKING_OPERATOR_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "BOT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "CHEQUE_OPERATOR_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DOMAIN_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "GAS_WITHDRAWER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MESSENGER_CHEQUE_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SERVICE_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UPGRADER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UPGRADE_INTERFACE_VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "WITHDRAWER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "refundAmount", + "type": "uint256" + } + ], + "name": "acceptCancellation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "bot", + "type": "address" + }, + { + "internalType": "uint256", + "name": "gasMoney", + "type": "uint256" + } + ], + "name": "addMessengerBot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "addPublicKey", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "restrictedRate", + "type": "bool" + }, + { + "internalType": "string[]", + "name": "capabilities", + "type": "string[]" + } + ], + "name": "addService", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "internalType": "string", + "name": "capability", + "type": "string" + } + ], + "name": "addServiceCapability", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_supportedToken", + "type": "address" + } + ], + "name": "addSupportedToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string[]", + "name": "serviceNames", + "type": "string[]" + } + ], + "name": "addWantedServices", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expectedPrice", + "type": "uint256" + }, + { + "internalType": "contract IERC20", + "name": "expectedPaymentToken", + "type": "address" + } + ], + "name": "buyBookingToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toBot", + "type": "address" + }, + { + "internalType": "uint256", + "name": "counter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expiresAt", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "cashInCheque", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "refundAmount", + "type": "uint256" + }, + { + "internalType": "uint16", + "name": "counterReason", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "counterReasonVersion", + "type": "uint16" + } + ], + "name": "counterCancellation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "refundAmount", + "type": "uint256" + } + ], + "name": "finalizeCancellation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getAllServiceHashes", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "serviceHashes", + "type": "bytes32[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getBookingTokenAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getDomainSeparator", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getGasMoneyWithdrawal", + "outputs": [ + { + "internalType": "uint256", + "name": "withdrawalLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "withdrawalPeriod", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getGasMoneyWithdrawalForAccount", + "outputs": [ + { + "internalType": "uint256", + "name": "periodStart", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "withdrawnAmount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromBot", + "type": "address" + }, + { + "internalType": "address", + "name": "toBot", + "type": "address" + } + ], + "name": "getLastCashIn", + "outputs": [ + { + "internalType": "uint256", + "name": "lastCounter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastCreatedAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastExpiresAt", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getManagerAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPrefundAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "getPublicKey", + "outputs": [ + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPublicKeysAddresses", + "outputs": [ + { + "internalType": "address[]", + "name": "pubKeyAddresses", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoleMember", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMemberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMembers", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "getService", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "_fee", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "_restrictedRate", + "type": "bool" + }, + { + "internalType": "string[]", + "name": "_capabilities", + "type": "string[]" + } + ], + "internalType": "struct PartnerConfiguration.Service", + "name": "service", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "getServiceCapabilities", + "outputs": [ + { + "internalType": "string[]", + "name": "capabilities", + "type": "string[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "getServiceCapabilities", + "outputs": [ + { + "internalType": "string[]", + "name": "capabilities", + "type": "string[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "getServiceFee", + "outputs": [ + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "getServiceFee", + "outputs": [ + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "getServiceRestrictedRate", + "outputs": [ + { + "internalType": "bool", + "name": "restrictedRate", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "getServiceRestrictedRate", + "outputs": [ + { + "internalType": "bool", + "name": "restrictedRate", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getSupportedServices", + "outputs": [ + { + "internalType": "string[]", + "name": "serviceNames", + "type": "string[]" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "_fee", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "_restrictedRate", + "type": "bool" + }, + { + "internalType": "string[]", + "name": "_capabilities", + "type": "string[]" + } + ], + "internalType": "struct PartnerConfiguration.Service[]", + "name": "services", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getSupportedTokens", + "outputs": [ + { + "internalType": "address[]", + "name": "tokens", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTotalChequePayments", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getWantedServiceHashes", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "serviceHashes", + "type": "bytes32[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getWantedServices", + "outputs": [ + { + "internalType": "string[]", + "name": "serviceNames", + "type": "string[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toBot", + "type": "address" + }, + { + "internalType": "uint256", + "name": "counter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expiresAt", + "type": "uint256" + } + ], + "name": "hashMessengerCheque", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toBot", + "type": "address" + }, + { + "internalType": "uint256", + "name": "counter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expiresAt", + "type": "uint256" + } + ], + "name": "hashTypedDataV4", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "manager", + "type": "address" + }, + { + "internalType": "address", + "name": "bookingToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "prefundAmount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "defaultAdmin", + "type": "address" + }, + { + "internalType": "address", + "name": "upgrader", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "refundAmount", + "type": "uint256" + }, + { + "internalType": "uint16", + "name": "cancellationReason", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "cancellationReasonVersion", + "type": "uint16" + } + ], + "name": "initiateCancellation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "bot", + "type": "address" + } + ], + "name": "isBotAllowed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "reservedFor", + "type": "address" + }, + { + "internalType": "string", + "name": "uri", + "type": "string" + }, + { + "internalType": "uint256", + "name": "expirationTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + }, + { + "internalType": "contract IERC20", + "name": "paymentToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "offchainPaymentCurrency", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "cancellable", + "type": "bool" + } + ], + "name": "mintBookingToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "offChainPaymentSupported", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC721Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "recordExpiration", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint16", + "name": "rejectionReason", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "rejectionReasonVersion", + "type": "uint16" + } + ], + "name": "rejectCancellation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "bot", + "type": "address" + } + ], + "name": "removeMessengerBot", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "removePublicKey", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "removeService", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "internalType": "string", + "name": "capability", + "type": "string" + } + ], + "name": "removeServiceCapability", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_supportedToken", + "type": "address" + } + ], + "name": "removeSupportedToken", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string[]", + "name": "serviceNames", + "type": "string[]" + } + ], + "name": "removeWantedServices", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "callerConfirmation", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "limit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "period", + "type": "uint256" + } + ], + "name": "setGasMoneyWithdrawal", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bool", + "name": "_isSupported", + "type": "bool" + } + ], + "name": "setOffChainPaymentSupported", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "internalType": "string[]", + "name": "capabilities", + "type": "string[]" + } + ], + "name": "setServiceCapabilities", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + } + ], + "name": "setServiceFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "internalType": "bool", + "name": "restrictedRate", + "type": "bool" + } + ], + "name": "setServiceRestrictedRate", + "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": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferERC20", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC721", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferERC721", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toBot", + "type": "address" + }, + { + "internalType": "uint256", + "name": "counter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expiresAt", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "verifyCheque", + "outputs": [ + { + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "internalType": "uint256", + "name": "paymentAmount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address payable", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint16", + "name": "reason", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "reasonVersion", + "type": "uint16" + } + ], + "name": "withdrawCancellation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "withdrawGasMoney", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "evm": { + "bytecode": { + "functionDebugData": { + "@_10743": { + "entryPoint": null, + "id": 10743, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_disableInitializers_808": { + "entryPoint": 38, + "id": 808, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_getInitializableStorage_839": { + "entryPoint": null, + "id": 839, + "parameterSlots": 0, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + } + }, + "generatedSources": [ + { + "ast": { + "nativeSrc": "0:216:61", + "nodeType": "YulBlock", + "src": "0:216:61", + "statements": [ + { + "nativeSrc": "6:3:61", + "nodeType": "YulBlock", + "src": "6:3:61", + "statements": [] + }, + { + "body": { + "nativeSrc": "113:101:61", + "nodeType": "YulBlock", + "src": "113:101:61", + "statements": [ + { + "nativeSrc": "123:26:61", + "nodeType": "YulAssignment", + "src": "123:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "135:9:61", + "nodeType": "YulIdentifier", + "src": "135:9:61" + }, + { + "kind": "number", + "nativeSrc": "146:2:61", + "nodeType": "YulLiteral", + "src": "146:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "131:3:61", + "nodeType": "YulIdentifier", + "src": "131:3:61" + }, + "nativeSrc": "131:18:61", + "nodeType": "YulFunctionCall", + "src": "131:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "123:4:61", + "nodeType": "YulIdentifier", + "src": "123:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "165:9:61", + "nodeType": "YulIdentifier", + "src": "165:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "180:6:61", + "nodeType": "YulIdentifier", + "src": "180:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "196:2:61", + "nodeType": "YulLiteral", + "src": "196:2:61", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "200:1:61", + "nodeType": "YulLiteral", + "src": "200:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "192:3:61", + "nodeType": "YulIdentifier", + "src": "192:3:61" + }, + "nativeSrc": "192:10:61", + "nodeType": "YulFunctionCall", + "src": "192:10:61" + }, + { + "kind": "number", + "nativeSrc": "204:1:61", + "nodeType": "YulLiteral", + "src": "204:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "188:3:61", + "nodeType": "YulIdentifier", + "src": "188:3:61" + }, + "nativeSrc": "188:18:61", + "nodeType": "YulFunctionCall", + "src": "188:18:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "176:3:61", + "nodeType": "YulIdentifier", + "src": "176:3:61" + }, + "nativeSrc": "176:31:61", + "nodeType": "YulFunctionCall", + "src": "176:31:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "158:6:61", + "nodeType": "YulIdentifier", + "src": "158:6:61" + }, + "nativeSrc": "158:50:61", + "nodeType": "YulFunctionCall", + "src": "158:50:61" + }, + "nativeSrc": "158:50:61", + "nodeType": "YulExpressionStatement", + "src": "158:50:61" + } + ] + }, + "name": "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed", + "nativeSrc": "14:200:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "82:9:61", + "nodeType": "YulTypedName", + "src": "82:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "93:6:61", + "nodeType": "YulTypedName", + "src": "93:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "104:4:61", + "nodeType": "YulTypedName", + "src": "104:4:61", + "type": "" + } + ], + "src": "14:200:61" + } + ] + }, + "contents": "{\n { }\n function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(64, 1), 1)))\n }\n}", + "id": 61, + "language": "Yul", + "name": "#utility.yul" + } + ], + "linkReferences": { + "contracts/booking-token/BookingTokenOperator.sol": { + "BookingTokenOperator": [ + { + "length": 20, + "start": 4473 + }, + { + "length": 20, + "start": 5334 + }, + { + "length": 20, + "start": 7805 + }, + { + "length": 20, + "start": 7989 + }, + { + "length": 20, + "start": 9508 + }, + { + "length": 20, + "start": 9908 + }, + { + "length": 20, + "start": 10461 + }, + { + "length": 20, + "start": 10619 + }, + { + "length": 20, + "start": 11304 + } + ] + } + }, + "object": "60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516155896200010460003960008181612f7001528181612f99015261330301526155896000f3fe60806040526004361061039d5760003560e01c806301ffc9a7146103a957806308564c19146103de5780630ede80d614610400578063136f50ca14610430578063150b7a021461045257806318274da4146104965780631aca6376146104b65780631c54f0f7146104d85780631c5db99e146104f857806320606b701461051857806321b9b9291461053a578063241bbbfc14610568578063248a9ca31461057d5780632a1193801461059d5780632f2ff15d146105bd578063319d13f3146105dd57806333746274146105fd57806333e1a2231461061f57806336568abe1461063f578063383aba871461065f57806339e4c7051461068157806341bf7c69146106a157806342072bbd146106c1578063432cf639146106d65780634781ae53146106f65780634f1ef286146107165780634f3f46391461072957806351889d6b1461074b57806352d1902d1461076b5780635c988994146107805780635e07f869146107a057806363e86cc8146107c0578063647d8f6d146107e2578063658db0af146108025780636d69fcaf146108255780636fc22cd11461084557806374aa20481461086557806374fe60e9146108855780637512e55b146108a557806376319190146108c55780637eec56c7146108e5578063852b3ccb14610908578063857cdbb81461092a57806385f438c1146109575780638c20f574146109795780638f69347d146109995780639010d07c146109b957806391d14854146109d9578063930659eb146109f95780639db5dbe414610a29578063a217fddf14610a49578063a31aa03914610a5e578063a3246ad314610a7e578063a7d022f814610aab578063ad3cb1cc14610acb578063b512463514610afc578063be66718814610b1c578063c162d7da14610b3c578063c39409e114610b51578063c6640e6814610b66578063c7b5914f14610b86578063ca15c87314610ba6578063ccde65dc14610bc6578063cd9ef91414610be6578063d09445c214610c06578063d3c7c2c714610c28578063d547741f14610c3d578063da47d85614610c5d578063e0b78add14610c8a578063e26a61bb14610caa578063e5a6725c14610cca578063e7bfce9a14610cea578063e96cf7ad14610d0a578063ea79d07a14610d1f578063eb5ea27314610d34578063ebc20d2014610d54578063ed24911d14610d74578063ee3b641f14610d89578063f3fef3a314610da9578063f51acaea14610dc9578063f72c0d8b14610de9578063f7e45f0914610e0b57600080fd5b366103a457005b600080fd5b3480156103b557600080fd5b506103c96103c4366004614431565b610e2b565b60405190151581526020015b60405180910390f35b3480156103ea57600080fd5b506103f3610e56565b6040516103d59190614505565b34801561040c57600080fd5b506104226000805160206154f483398151915281565b6040519081526020016103d5565b34801561043c57600080fd5b50610445610f80565b6040516103d59190614518565b34801561045e57600080fd5b5061047d61046d366004614634565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020016103d5565b3480156104a257600080fd5b506104226104b136600461469f565b610fa0565b3480156104c257600080fd5b506104d66104d13660046146d3565b610fae565b005b3480156104e457600080fd5b506104d66104f3366004614714565b61105b565b34801561050457600080fd5b506104d66105133660046147d4565b6110ff565b34801561052457600080fd5b5061042260008051602061551483398151915281565b34801561054657600080fd5b5061055a610555366004614808565b6111b7565b6040516103d59291906148a3565b34801561057457600080fd5b506103c9611380565b34801561058957600080fd5b506104226105983660046148bc565b611398565b3480156105a957600080fd5b506104d66105b83660046148ec565b6113b8565b3480156105c957600080fd5b506104d66105d8366004614928565b61145e565b3480156105e957600080fd5b506103f36105f836600461469f565b611480565b34801561060957600080fd5b506104226000805160206154b483398151915281565b34801561062b57600080fd5b506104d661063a366004614958565b61148e565b34801561064b57600080fd5b506104d661065a366004614928565b61164a565b34801561066b57600080fd5b5061042260008051602061541483398151915281565b34801561068d57600080fd5b506104d661069c3660046147d4565b61167d565b3480156106ad57600080fd5b506104d66106bc3660046149c0565b611723565b3480156106cd57600080fd5b5061044561179b565b3480156106e257600080fd5b506104d66106f1366004614a12565b6117b2565b34801561070257600080fd5b50610422610711366004614a87565b611823565b6104d6610724366004614af5565b6118a5565b34801561073557600080fd5b5061073e6118c4565b6040516103d59190614b44565b34801561075757600080fd5b506104d6610766366004614b58565b6118e2565b34801561077757600080fd5b50610422611995565b34801561078c57600080fd5b506104d661079b3660046148bc565b6119b2565b3480156107ac57600080fd5b506103f36107bb3660046148bc565b6119f0565b3480156107cc57600080fd5b5061042260008051602061543483398151915281565b3480156107ee57600080fd5b506104d66107fd366004614808565b611af8565b34801561080e57600080fd5b50610817611cfa565b6040516103d5929190614b84565b34801561083157600080fd5b506104d6610840366004614b92565b611d1c565b34801561085157600080fd5b506104d6610860366004614714565b611d3d565b34801561087157600080fd5b506104d6610880366004614baf565b611d5f565b34801561089157600080fd5b506104d66108a03660046148ec565b611e17565b3480156108b157600080fd5b506104d66108c0366004614bf5565b611e51565b3480156108d157600080fd5b506104d66108e0366004614b92565b611ec0565b3480156108f157600080fd5b506108fa611ee1565b6040516103d5929190614ccc565b34801561091457600080fd5b5061042260008051602061553483398151915281565b34801561093657600080fd5b5061094a610945366004614b92565b6120a6565b6040516103d59190614d3e565b34801561096357600080fd5b506104226000805160206154d483398151915281565b34801561098557600080fd5b506104d6610994366004614bf5565b61218b565b3480156109a557600080fd5b506103c96109b43660046148bc565b6121fa565b3480156109c557600080fd5b5061073e6109d4366004614714565b61222b565b3480156109e557600080fd5b506103c96109f4366004614928565b612259565b348015610a0557600080fd5b50610a19610a14366004614d51565b61228f565b6040516103d59493929190614d7f565b348015610a3557600080fd5b506104d6610a443660046146d3565b6122e6565b348015610a5557600080fd5b50610422600081565b348015610a6a57600080fd5b506104d6610a79366004614d9a565b612339565b348015610a8a57600080fd5b50610a9e610a993660046148bc565b61235a565b6040516103d59190614db7565b348015610ab757600080fd5b506104d6610ac6366004614df8565b612387565b348015610ad757600080fd5b5061094a604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610b0857600080fd5b506103c9610b1736600461469f565b6123f8565b348015610b2857600080fd5b506104d6610b37366004614714565b612406565b348015610b4857600080fd5b5061073e612440565b348015610b5d57600080fd5b5061042261245b565b348015610b7257600080fd5b506104d6610b81366004614b92565b612470565b348015610b9257600080fd5b50610422610ba1366004614a87565b61250b565b348015610bb257600080fd5b50610422610bc13660046148bc565b612547565b348015610bd257600080fd5b506104d6610be1366004614af5565b61256c565b348015610bf257600080fd5b506104d6610c01366004614e3e565b61258e565b348015610c1257600080fd5b5061042260008051602061549483398151915281565b348015610c3457600080fd5b50610a9e612646565b348015610c4957600080fd5b506104d6610c58366004614928565b612660565b348015610c6957600080fd5b50610c7d610c783660046148bc565b61267c565b6040516103d59190614e77565b348015610c9657600080fd5b506103c9610ca5366004614b92565b6127a5565b348015610cb657600080fd5b506104d6610cc5366004614e8a565b6127bf565b348015610cd657600080fd5b506104d6610ce53660046148bc565b61285d565b348015610cf657600080fd5b506104d6610d05366004614b92565b6128e9565b348015610d1657600080fd5b5061042261290a565b348015610d2b57600080fd5b50610a9e61291f565b348015610d4057600080fd5b50610422610d4f3660046148bc565b612939565b348015610d6057600080fd5b506104d6610d6f366004614f1d565b612964565b348015610d8057600080fd5b506104226129d1565b348015610d9557600080fd5b50610817610da4366004614b92565b6129dc565b348015610db557600080fd5b506104d6610dc4366004614b58565b612a17565b348015610dd557600080fd5b506104d6610de436600461469f565b612a9f565b348015610df557600080fd5b5061042260008051602061545483398151915281565b348015610e1757600080fd5b506104d6610e26366004614baf565b612b0a565b60006001600160e01b03198216635a05180f60e01b1480610e505750610e5082612b44565b92915050565b60606000610e62610f80565b9050600081516001600160401b03811115610e7f57610e7f614571565b604051908082528060200260200182016040528015610eb257816020015b6060815260200190600190039081610e9d5790505b50905060005b8251811015610f7957610ec9612440565b6001600160a01b0316635a81a626848381518110610ee957610ee9614f76565b60200260200101516040518263ffffffff1660e01b8152600401610f0f91815260200190565b600060405180830381865afa158015610f2c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f549190810190614f8c565b828281518110610f6657610f66614f76565b6020908102919091010152600101610eb8565b5092915050565b60606000610f8c612b79565b9050610f9a81600901612b9d565b91505090565b6000610e50610d4f83612baa565b6000805160206154d4833981519152610fc681612c20565b6001600160a01b038316610fed57604051633a954ecd60e21b815260040160405180910390fd5b604051632142170760e11b81523060048201526001600160a01b038481166024830152604482018490528516906342842e0e90606401600060405180830381600087803b15801561103d57600080fd5b505af1158015611051573d6000803e3d6000fd5b5050505050505050565b60008051602061553483398151915261107381612c20565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__6321b87f3a6110956118c4565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018690526044810185905260640160006040518083038186803b1580156110e257600080fd5b505af41580156110f6573d6000803e3d6000fd5b50505050505050565b60008051602061549483398151915261111781612c20565b60005b82518110156111b257600061114784838151811061113a5761113a614f76565b6020026020010151612baa565b905061115281612c2a565b83828151811061116457611164614f76565b60200260200101516040516111799190614ff9565b604051908190038120907f50cc5f9d56177aa0de269c136f2d2ffd45d7b66c82f0a82f8f840db54d9801f890600090a25060010161111a565b505050565b6000806001600160a01b038a1630146111ee5789604051637b7d696f60e01b81526004016111e59190614b44565b60405180910390fd5b6111f6612440565b6001600160a01b03166312b357b58a6040518263ffffffff1660e01b81526004016112219190614b44565b602060405180830381865afa15801561123e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112629190615015565b6112815788604051633f2c64af60e01b81526004016111e59190614b44565b8342106112a457604051636453b2e560e01b8152600481018590526024016111e5565b6112b48a8a8a8a8a8a8a8a612c68565b91506112bf826127a5565b6112de578160405163248d101d60e11b81526004016111e59190614b44565b60006112e8612c94565b6001600160a01b03808516600090815260208381526040808320938e1683529290522060018101549192509088101561133b5760018101546040516307c83fcf60e41b81526111e5918a91600401614b84565b80548911611360578054604051632256490160e11b81526111e5918b91600401614b84565b600181015461136f9089615048565b925050509850989650505050505050565b60008061138b612b79565b6003015460ff1692915050565b6000806113a3612cb8565b60009384526020525050604090206001015490565b6000805160206155348339815191526113d081612c20565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__6307e473166113f26118c4565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024810187905261ffff80871660448301528516606482015260840160006040518083038186803b15801561144a57600080fd5b505af4158015611051573d6000803e3d6000fd5b61146782611398565b61147081612c20565b61147a8383612cdc565b50505050565b6060610e506107bb83612baa565b6000611498612d1e565b805490915060ff600160401b82041615906001600160401b03166000811580156114bf5750825b90506000826001600160401b031660011480156114db5750303b155b9050811580156114e9575080155b156115075760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b0319166001178555831561153057845460ff60401b1916600160401b1785555b611538612d42565b611540612d42565b611548612d4c565b611553600088612cdc565b5061156c60008051602061549483398151915288612cdc565b506115856000805160206154b483398151915288612cdc565b5061159e60008051602061545483398151915287612cdc565b5060006115a9612de6565b80546001600160a01b03808e166001600160a01b0319928316178355600183018054918e1691909216179055600281018a90559050678ac7230489e80000620151806115f58282612e0a565b505050831561163e57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b6001600160a01b03811633146116735760405163334bd91960e11b815260040160405180910390fd5b6111b28282612e2d565b60008051602061549483398151915261169581612c20565b60005b82518110156111b25760006116b884838151811061113a5761113a614f76565b90506116c381612e66565b8382815181106116d5576116d5614f76565b60200260200101516040516116ea9190614ff9565b604051908190038120907f0edb7a081e6ff720ad9e97b837c352ef0548c4d09ec421b9b930b1e0c708e39e90600090a250600101611698565b60008051602061549483398151915261173b81612c20565b61174d61174784612baa565b83612ea4565b8260405161175b9190614ff9565b604051908190038120838252907fdd6c54a4503e1d8a1e75d73648f77d8fe66234b437ce30e20edd51563116ec41906020015b60405180910390a2505050565b606060006117a7612b79565b9050610f9a81612b9d565b6000805160206154948339815191526117ca81612c20565b6117de6117d686612baa565b858486612ecd565b846040516117ec9190614ff9565b604051908190038120907f763f2f41e0c407dd0a7067f44e5468a0db74da9fdb6cd1cb20c7b6dae937527990600090a25050505050565b604080516000805160206154f483398151915260208201526001600160a01b03808a16928201929092528188166060820152908616608082015260a0810185905260c0810184905260e081018390526101008101829052600090610120015b604051602081830303815290604052805190602001209050979650505050505050565b6118ad612f65565b6118b682612ff3565b6118c08282613136565b5050565b6000806118cf612de6565b600101546001600160a01b031692915050565b6000805160206154b48339815191526118fa81612c20565b611903826131ea565b61191b60008051602061543483398151915284612cdc565b5061193460008051602061553483398151915284612cdc565b5061194d60008051602061541483398151915284612cdc565b506040516001600160a01b038416907fdb3e11ba26e83d528bf96a2167061674c1ce7777c61376d852d172594a87399490600090a26111b26001600160a01b0384168361325f565b600061199f6132f8565b5060008051602061547483398151915290565b6119ba613341565b6000805160206154148339815191526119d281612c20565b6119db826131ea565b6119e482613377565b506119ed6134a4565b50565b606060006119fc612b79565b9050611a0883826134b5565b806002016000848152602001908152602001600020600201805480602002602001604051908101604052809291908181526020016000905b82821015611aec578382906000526020600020018054611a5f9061505b565b80601f0160208091040260200160405190810160405280929190818152602001828054611a8b9061505b565b8015611ad85780601f10611aad57610100808354040283529160200191611ad8565b820191906000526020600020905b815481529060010190602001808311611abb57829003601f168201915b505050505081526020019060010190611a40565b50505050915050919050565b611b00613341565b600080611b138a8a8a8a8a8a8a8a6111b7565b91509150611b258289898989896134df565b6000612710611b32612440565b6001600160a01b0316633c5559386040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b939190615095565b611b9d90846150ae565b611ba791906150c5565b90506000611bb58284615048565b90508a6001600160a01b03168c6001600160a01b031614611bf7576000611bda612c94565b905083816001016000828254611bf091906150e7565b9091555050505b611c7382611c03612440565b6001600160a01b0316630470d3ac6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6491906150fa565b6001600160a01b03169061325f565b611c866001600160a01b038c168261325f565b604080516001600160a01b0386811682528c811660208301529181018b9052606081018a90526080810183905260a08101849052818d16918e16907f4ebd6343a4ae90ea9a2add4327d0439de765f4b8bbb691caaf0875ef36c54e819060c00160405180910390a3505050506110516134a4565b6000806000611d0761354a565b90508060020154816003015492509250509091565b600080516020615494833981519152611d3481612c20565b6118c08261356e565b6000805160206154b4833981519152611d5581612c20565b6111b283836135e4565b600080516020615534833981519152611d7781612c20565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__63fd13a43e611d996118c4565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018890526044810187905261ffff80871660648301528516608482015260a40160006040518083038186803b158015611df857600080fd5b505af4158015611e0c573d6000803e3d6000fd5b505050505050505050565b600080516020615534833981519152611e2f81612c20565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__63793dddac6113f26118c4565b600080516020615494833981519152611e6981612c20565b611e7b611e7584612baa565b8361363e565b82604051611e899190614ff9565b60405180910390207f498a5f4e6f3921f63e6863032989bdb7bb41e5cf5cbde5437c7322c5c8dc46bf8360405161178e9190614d3e565b600080516020615494833981519152611ed881612c20565b6118c082613682565b6060806000611eee61179b565b9050600081516001600160401b03811115611f0b57611f0b614571565b604051908082528060200260200182016040528015611f3e57816020015b6060815260200190600190039081611f295790505b509050600082516001600160401b03811115611f5c57611f5c614571565b604051908082528060200260200182016040528015611f9557816020015b611f82614332565b815260200190600190039081611f7a5790505b50905060005b835181101561209b57611fac612440565b6001600160a01b0316635a81a626858381518110611fcc57611fcc614f76565b60200260200101516040518263ffffffff1660e01b8152600401611ff291815260200190565b600060405180830381865afa15801561200f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526120379190810190614f8c565b83828151811061204957612049614f76565b602002602001018190525061207684828151811061206957612069614f76565b602002602001015161267c565b82828151811061208857612088614f76565b6020908102919091010152600101611f9b565b509094909350915050565b606060006120b2612b79565b90506120c160068201846136f8565b6120e0578260405163ba650b5f60e01b81526004016111e59190614b44565b6001600160a01b0383166000908152600882016020526040902080546121059061505b565b80601f01602080910402602001604051908101604052809291908181526020018280546121319061505b565b801561217e5780601f106121535761010080835404028352916020019161217e565b820191906000526020600020905b81548152906001019060200180831161216157829003601f168201915b5050505050915050919050565b6000805160206154948339815191526121a381612c20565b6121b56121af84612baa565b8361370d565b826040516121c39190614ff9565b60405180910390207fba851faec9e30a9961f0adb49fe025cda6c8d7d0fb9bad99f89c37d0570232648360405161178e9190614d3e565b600080612205612b79565b905061221183826134b5565b600092835260020160205250604090206001015460ff1690565b60008061223661383c565b60008581526020829052604090209091506122519084613860565b949350505050565b600080612264612cb8565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b600080600080600061229f612c94565b6001600160a01b0397881660009081526020918252604080822098909916815296905250505092909120805460018201546002830154600390930154919590945091925090565b6000805160206154d48339815191526122fe81612c20565b6001600160a01b03831661232557604051633a954ecd60e21b815260040160405180910390fd5b61147a6001600160a01b038516848461386c565b60008051602061549483398151915261235181612c20565b6118c0826138c4565b6060600061236661383c565b600084815260208290526040902090915061238090612b9d565b9392505050565b60008051602061549483398151915261239f81612c20565b6123b16123ab84612baa565b8361391b565b826040516123bf9190614ff9565b6040519081900381208315158252907f23960b931eb4b63e2e47d040f51cc0de6eef2e865639eb674fbb1890ece3a0ab9060200161178e565b6000610e506109b483612baa565b60008051602061553483398151915261241e81612c20565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__63348e06dd6110956118c4565b60008061244b612de6565b546001600160a01b031692915050565b600080612466612de6565b6002015492915050565b6000805160206154b483398151915261248881612c20565b6124a060008051602061543483398151915283612e2d565b506124b960008051602061553483398151915283612e2d565b506124d260008051602061541483398151915283612e2d565b506040516001600160a01b038316907fd124523a9cfa28c5dd01826c4fa56192ec7d56859943082e0ca46c3b9dc6291390600090a25050565b60006125156129d1565b61252489898989898989611823565b60405161190160f01b602082015260228101929092526042820152606201611882565b60008061255261383c565b600084815260208290526040902090915061238090613955565b60008051602061549483398151915261258481612c20565b6111b2838361395f565b612596613341565b6000805160206155348339815191526125ae81612c20565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__637adf63b76125d06118c4565b6040516001600160e01b031960e084901b1681526001600160a01b0391821660048201526024810188905260448101879052908516606482015260840160006040518083038186803b15801561262557600080fd5b505af4158015612639573d6000803e3d6000fd5b50505050506111b26134a4565b60606000612652612b79565b9050610f9a60048201612b9d565b61266982611398565b61267281612c20565b61147a8383612e2d565b612684614332565b600061268e612b79565b905061269a83826134b5565b6000838152600280830160209081526040808420815160608101835281548152600182015460ff161515818501529381018054835181860281018601855281815295969295938701949192909184015b828210156127965783829060005260206000200180546127099061505b565b80601f01602080910402602001604051908101604052809291908181526020018280546127359061505b565b80156127825780601f1061275757610100808354040283529160200191612782565b820191906000526020600020905b81548152906001019060200180831161276557829003601f168201915b5050505050815260200190600101906126ea565b50505091525090949350505050565b6000610e5060008051602061543483398151915283612259565b6000805160206155348339815191526127d781612c20565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__63e4c225696127f96118c4565b8a8a8a8a8a8a8a6040518963ffffffff1660e01b8152600401612823989796959493929190615117565b60006040518083038186803b15801561283b57600080fd5b505af415801561284f573d6000803e3d6000fd5b505050505050505050505050565b60008051602061553483398151915261287581612c20565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__63c7bffa966128976118c4565b846040518363ffffffff1660e01b81526004016128b59291906148a3565b60006040518083038186803b1580156128cd57600080fd5b505af41580156128e1573d6000803e3d6000fd5b505050505050565b60008051602061549483398151915261290181612c20565b6118c0826139fb565b600080612915612c94565b6001015492915050565b6060600061292b612b79565b9050610f9a81600601612b9d565b600080612944612b79565b905061295083826134b5565b600092835260020160205250604090205490565b60008051602061549483398151915261297c81612c20565b61298e61298884612baa565b83613a94565b8260405161299c9190614ff9565b604051908190038120907fd52aef6010d6b6303240865274298b7c5784b14ebf9df788047b34c69c53137190600090a2505050565b600080612466612c94565b60008060006129e961354a565b6001600160a01b03909416600090815260208581526040808320546001909701909152902054939492505050565b612a1f613341565b6000805160206154d4833981519152612a3781612c20565b612a40826131ea565b612a536001600160a01b0384168361325f565b826001600160a01b03167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a942436483604051612a8e91815260200190565b60405180910390a2506118c06134a4565b600080516020615494833981519152612ab781612c20565b612ac8612ac383612baa565b613ad2565b81604051612ad69190614ff9565b604051908190038120907f52f6e0779195109314dfb8cf301d33491c63f136afac4c5d4f35aa934b25481390600090a25050565b600080516020615534833981519152612b2281612c20565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__63b54e72d8611d996118c4565b60006001600160e01b03198216637965db0b60e01b1480610e5057506301ffc9a760e01b6001600160e01b0319831614610e50565b7ff2856e5e1b7689dcde1bb551fd115c3cad8d243ea609d47a46b4d22ee58d300090565b6060600061238083613b3b565b6000612bb4612440565b6001600160a01b031663352af39a836040518263ffffffff1660e01b8152600401612bdf9190614d3e565b602060405180830381865afa158015612bfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e509190615095565b6119ed8133613b97565b6000612c34612b79565b90506000612c456009830184613bc2565b9050806111b257604051631a1e056960e01b8152600481018490526024016111e5565b600080612c7a8a8a8a8a8a8a8a61250b565b9050612c868184613bce565b9a9950505050505050505050565b7f175f7e400d42af44d9ebd24e9efee8a2c4ed78ddf46a83e51a493ae382c8760090565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b600080612ce761383c565b90506000612cf58585613bf8565b90508015612251576000858152602083905260409020612d159085613c99565b50949350505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b612d4a613cae565b565b612d54613cae565b6000612d5e612c94565b604051909150612dc690600080516020615514833981519152907f964f47ba1d5dc0d1184a60039dba40abb2d0eee53398392e97308cb5f4a12f94907fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6904690602001614d7f565b60408051601f198184030181529190528051602090910120600290910155565b7f0c7b73796c7cc89b9f849b9056a93200eba741881e57a1b03b9bedb2c0e0710090565b612e12613cae565b6000612e1c61354a565b600281019390935550600390910155565b600080612e3861383c565b90506000612e468585613cd3565b90508015612251576000858152602083905260409020612d159085613d4b565b6000612e70612b79565b90506000612e816009830184613d60565b9050806111b257604051637eae59f160e11b8152600481018490526024016111e5565b6000612eae612b79565b9050612eba83826134b5565b6000928352600201602052604090912055565b6000612ed7612b79565b90506000612ee58287613bc2565b905080612f07576040516221e3bb60e31b8152600481018790526024016111e5565b60408051606081018252868152841515602080830191825282840188815260008b81526002888101845295902084518155925160018401805460ff191691151591909117905551805193949293611e0c938501929190910190614355565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480612fd557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612fc9613d6c565b6001600160a01b031614155b15612d4a5760405163703e46dd60e11b815260040160405180910390fd5b60008051602061545483398151915261300b81612c20565b6000613015612440565b6001600160a01b0316639d825bc56040518163ffffffff1660e01b8152600401602060405180830381865afa158015613052573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061307691906150fa565b90506000613082613d6c565b9050836001600160a01b0316816001600160a01b0316036130ba5780846040516382afabc160e01b81526004016111e5929190615175565b816001600160a01b0316846001600160a01b0316146130f057818460405163699a021f60e11b81526004016111e5929190615175565b836001600160a01b0316816001600160a01b03167fa3d484f827e1c900ce24494bfdb214bcbad08472a9f0571fb5beac779a682db460405160405180910390a350505050565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015613190575060408051601f3d908101601f1916820190925261318d91810190615095565b60015b6131af5781604051634c9c8ce360e01b81526004016111e59190614b44565b60008051602061547483398151915281146131e057604051632a87526960e21b8152600481018290526024016111e5565b6111b28383613d88565b60006131f461245b565b9050600061320061290a565b9050818110156111b25760006132168284615048565b905060006132248247615048565b905080851115613258576040516344c8760560e11b81526004810182905260248101839052604481018690526064016111e5565b5050505050565b8047101561328457478160405163cf47918160e01b81526004016111e5929190614b84565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146132d1576040519150601f19603f3d011682016040523d82523d6000602084013e6132d6565b606091505b50509050806111b25760405163d6bda27560e01b815260040160405180910390fd5b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612d4a5760405163703e46dd60e11b815260040160405180910390fd5b600061334b613dde565b80549091506001190161337157604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b600061338161354a565b905080600201548211156133b057806002015482604051631728bc5b60e31b81526004016111e5929190614b84565b60038101543360009081526020839052604090205442916133d0916150e7565b8111156133f85733600090815260018301602090815260408083208390559084905290208190555b600282015433600090815260018401602052604090205461341a9085906150e7565b11156134415781600201548360405163d54b188760e01b81526004016111e5929190614b84565b336000908152600183016020526040812080548592906134629084906150e7565b909155506134729050338461325f565b60405183815233907fb9ec638398bbdcd0844ca414d8ce760939fa88b9258b9764b3fc6c12ea2605c29060200161178e565b60006134ae613dde565b6001905550565b6134bf8183613e02565b6118c057604051631e96f6ed60e21b8152600481018390526024016111e5565b60006134e9612c94565b604080516080810182529687526020808801968752878201958652606088019485526001600160a01b03998a166000908152928152818320989099168252969097525093909420915182555160018201559151600283015551600390910155565b7f99a652063088b6badaeb0c7f680676baf720654b4f86f50167944489af637d0090565b6000613578612b79565b905060006135896004830184613c99565b9050806135ab5782604051632872fbf960e11b81526004016111e59190614b44565b6040516001600160a01b038416907fa317c10673baf4f03b3c1041bd5ddbb537d0333a86fec3607c75f9dbb630f48f90600090a2505050565b60006135ee61354a565b60028101849055600381018390556040519091507f8d4925b196ae6b935035a27ed36c6bd9c7a8fbddc7a3f55f493aa8e230be373e906136319085908590614b84565b60405180910390a1505050565b6000613648612b79565b905061365483826134b5565b60008381526002808301602090815260408320909101805460018101825590835291200161147a83826151ec565b600061368c612b79565b9050600061369d6004830184613d4b565b9050806136bf5782604051631532e67160e21b81526004016111e59190614b44565b6040516001600160a01b038416907f85a3e72f8dd6db3794f93109c3c5f5b79d6112f6979431c45f98b26134b42af290600090a2505050565b6000612380836001600160a01b038416613e0a565b6000613717612b79565b905061372383826134b5565b600083815260028083016020526040822001905b815481101561325857836040516020016137519190614ff9565b6040516020818303038152906040528051906020012082828154811061377957613779614f76565b9060005260206000200160405160200161379391906152a5565b604051602081830303815290604052805190602001200361383457815482906137be90600190615048565b815481106137ce576137ce614f76565b906000526020600020018282815481106137ea576137ea614f76565b906000526020600020019081613800919061531b565b5081805480613811576138116153e7565b60019003818190600052602060002001600061382d91906143ab565b9055613258565b600101613737565b7fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200090565b60006123808383613e22565b6111b283846001600160a01b031663a9059cbb85856040516024016138929291906148a3565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613e4c565b60006138ce612b79565b60038101805460ff19168415159081179091556040519081529091507fe93ceb76efb130156c6aa39fa4ac986b3f683b6da926496fca3f95ea7fe715e39060200160405180910390a15050565b6000613925612b79565b905061393183826134b5565b60009283526002016020526040909120600101805460ff1916911515919091179055565b6000610e50825490565b6000613969612b79565b9050600061397a6006830185613c99565b90508061399c5783604051631a6107e360e31b81526004016111e59190614b44565b6001600160a01b038416600090815260088301602052604090206139c084826151ec565b506040516001600160a01b038516907f928ec246afda323bc23c2815ca3f516e9fc6a7b7179772235c221e132545fe8290600090a250505050565b6000613a05612b79565b90506000613a166006830184613d4b565b905080613a38578260405163ba650b5f60e01b81526004016111e59190614b44565b6001600160a01b03831660009081526008830160205260408120613a5b916143ab565b6040516001600160a01b038416907fc5a9b8041ef11732e7dd7043167d8c22db5c7ea99dcd38dce401effacf8a29bf90600090a2505050565b6000613a9e612b79565b9050613aaa83826134b5565b6000838152600280830160209081526040909220845161147a93919092019190850190614355565b6000613adc612b79565b90506000613aea8284613d60565b905080613b0d57604051631e96f6ed60e21b8152600481018490526024016111e5565b600083815260028084016020526040822082815560018101805460ff191690559190613258908301826143e5565b606081600001805480602002602001604051908101604052809291908181526020018280548015613b8b57602002820191906000526020600020905b815481526020019060010190808311613b77575b50505050509050919050565b613ba18282612259565b6118c057808260405163e2517d3f60e01b81526004016111e59291906148a3565b60006123808383613eb4565b600080600080613bde8686613efe565b925092509250613bee8282613f4b565b5090949350505050565b600080613c03612cb8565b9050613c0f8484612259565b613c8f576000848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055613c453390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610e50565b6000915050610e50565b6000612380836001600160a01b038416613eb4565b613cb6614004565b612d4a57604051631afcd79f60e31b815260040160405180910390fd5b600080613cde612cb8565b9050613cea8484612259565b15613c8f576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610e50565b6000612380836001600160a01b03841661401e565b6000612380838361401e565b600080516020615474833981519152546001600160a01b031690565b613d9182614107565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115613dd6576111b28282614163565b6118c06141d9565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b600061238083835b60009081526001919091016020526040902054151590565b6000826000018281548110613e3957613e39614f76565b9060005260206000200154905092915050565b600080602060008451602086016000885af180613e6f576040513d6000823e3d81fd5b50506000513d91508115613e87578060011415613e94565b6001600160a01b0384163b155b1561147a5783604051635274afe760e01b81526004016111e59190614b44565b6000613ec08383613e0a565b613ef657508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610e50565b506000610e50565b60008060008351604103613f385760208401516040850151606086015160001a613f2a888285856141f8565b955095509550505050613f44565b50508151600091506002905b9250925092565b6000826003811115613f5f57613f5f6153fd565b03613f68575050565b6001826003811115613f7c57613f7c6153fd565b03613f9a5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115613fae57613fae6153fd565b03613fcf5760405163fce698f760e01b8152600481018290526024016111e5565b6003826003811115613fe357613fe36153fd565b036118c0576040516335e2f38360e21b8152600481018290526024016111e5565b600061400e612d1e565b54600160401b900460ff16919050565b60008181526001830160205260408120548015613c8f576000614042600183615048565b855490915060009061405690600190615048565b90508082146140bb57600086600001828154811061407657614076614f76565b906000526020600020015490508087600001848154811061409957614099614f76565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806140cc576140cc6153e7565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610e50565b806001600160a01b03163b6000036141345780604051634c9c8ce360e01b81526004016111e59190614b44565b60008051602061547483398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516141809190614ff9565b600060405180830381855af49150503d80600081146141bb576040519150601f19603f3d011682016040523d82523d6000602084013e6141c0565b606091505b50915091506141d08583836142bd565b95945050505050565b3415612d4a5760405163b398979f60e01b815260040160405180910390fd5b600080806fa2a8918ca85bafe22016d0b997e4df60600160ff1b0384111561422957506000915060039050826142b3565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561427d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166142a9575060009250600191508290506142b3565b9250600091508190505b9450945094915050565b6060826142d2576142cd82614309565b612380565b81511580156142e957506001600160a01b0384163b155b15610f795783604051639996b31560e01b81526004016111e59190614b44565b8051156143195780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b604051806060016040528060008152602001600015158152602001606081525090565b82805482825590600052602060002090810192821561439b579160200282015b8281111561439b578251829061438b90826151ec565b5091602001919060010190614375565b506143a79291506143ff565b5090565b5080546143b79061505b565b6000825580601f106143c7575050565b601f0160209004906000526020600020908101906119ed919061441c565b50805460008255906000526020600020908101906119ed91905b808211156143a757600061441382826143ab565b506001016143ff565b5b808211156143a7576000815560010161441d565b60006020828403121561444357600080fd5b81356001600160e01b03198116811461238057600080fd5b60005b8381101561447657818101518382015260200161445e565b50506000910152565b6000815180845261449781602086016020860161445b565b601f01601f19169290920160200192915050565b60008282518085526020808601955060208260051b8401016020860160005b848110156144f857601f198684030189526144e683835161447f565b988401989250908301906001016144ca565b5090979650505050505050565b60208152600061238060208301846144ab565b6020808252825182820181905260009190848201906040850190845b8181101561455057835183529284019291840191600101614534565b50909695505050505050565b6001600160a01b03811681146119ed57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156145af576145af614571565b604052919050565b60006001600160401b038211156145d0576145d0614571565b50601f01601f191660200190565b600082601f8301126145ef57600080fd5b81356146026145fd826145b7565b614587565b81815284602083860101111561461757600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561464a57600080fd5b84356146558161455c565b935060208501356146658161455c565b92506040850135915060608501356001600160401b0381111561468757600080fd5b614693878288016145de565b91505092959194509250565b6000602082840312156146b157600080fd5b81356001600160401b038111156146c757600080fd5b612251848285016145de565b6000806000606084860312156146e857600080fd5b83356146f38161455c565b925060208401356147038161455c565b929592945050506040919091013590565b6000806040838503121561472757600080fd5b50508035926020909101359150565b600082601f83011261474757600080fd5b813560206001600160401b038083111561476357614763614571565b8260051b614772838201614587565b938452858101830193838101908886111561478c57600080fd5b84880192505b858310156147c8578235848111156147aa5760008081fd5b6147b88a87838c01016145de565b8352509184019190840190614792565b98975050505050505050565b6000602082840312156147e657600080fd5b81356001600160401b038111156147fc57600080fd5b61225184828501614736565b600080600080600080600080610100898b03121561482557600080fd5b88356148308161455c565b975060208901356148408161455c565b965060408901356148508161455c565b9550606089013594506080890135935060a0890135925060c0890135915060e08901356001600160401b0381111561488757600080fd5b6148938b828c016145de565b9150509295985092959890939650565b6001600160a01b03929092168252602082015260400190565b6000602082840312156148ce57600080fd5b5035919050565b803561ffff811681146148e757600080fd5b919050565b60008060006060848603121561490157600080fd5b83359250614911602085016148d5565b915061491f604085016148d5565b90509250925092565b6000806040838503121561493b57600080fd5b82359150602083013561494d8161455c565b809150509250929050565b600080600080600060a0868803121561497057600080fd5b853561497b8161455c565b9450602086013561498b8161455c565b93506040860135925060608601356149a28161455c565b915060808601356149b28161455c565b809150509295509295909350565b600080604083850312156149d357600080fd5b82356001600160401b038111156149e957600080fd5b6149f5858286016145de565b95602094909401359450505050565b80151581146119ed57600080fd5b60008060008060808587031215614a2857600080fd5b84356001600160401b0380821115614a3f57600080fd5b614a4b888389016145de565b95506020870135945060408701359150614a6482614a04565b90925060608601359080821115614a7a57600080fd5b5061469387828801614736565b600080600080600080600060e0888a031215614aa257600080fd5b8735614aad8161455c565b96506020880135614abd8161455c565b95506040880135614acd8161455c565b969995985095966060810135965060808101359560a0820135955060c0909101359350915050565b60008060408385031215614b0857600080fd5b8235614b138161455c565b915060208301356001600160401b03811115614b2e57600080fd5b614b3a858286016145de565b9150509250929050565b6001600160a01b0391909116815260200190565b60008060408385031215614b6b57600080fd5b8235614b768161455c565b946020939093013593505050565b918252602082015260400190565b600060208284031215614ba457600080fd5b81356123808161455c565b60008060008060808587031215614bc557600080fd5b8435935060208501359250614bdc604086016148d5565b9150614bea606086016148d5565b905092959194509250565b60008060408385031215614c0857600080fd5b82356001600160401b0380821115614c1f57600080fd5b614c2b868387016145de565b93506020850135915080821115614c4157600080fd5b50614b3a858286016145de565b600060608301825184526020808401511515602086015260408401516060604087015282815180855260808801915060808160051b890101945060208301925060005b81811015614cbf57607f19898703018352614cad86855161447f565b95509284019291840191600101614c91565b5093979650505050505050565b604081526000614cdf60408301856144ab565b6020838203818501528185518084528284019150828160051b85010183880160005b83811015614d2f57601f19878403018552614d1d838351614c4e565b94860194925090850190600101614d01565b50909998505050505050505050565b602081526000612380602083018461447f565b60008060408385031215614d6457600080fd5b8235614d6f8161455c565b9150602083013561494d8161455c565b93845260208401929092526040830152606082015260800190565b600060208284031215614dac57600080fd5b813561238081614a04565b6020808252825182820181905260009190848201906040850190845b818110156145505783516001600160a01b031683529284019291840191600101614dd3565b60008060408385031215614e0b57600080fd5b82356001600160401b03811115614e2157600080fd5b614e2d858286016145de565b925050602083013561494d81614a04565b600080600060608486031215614e5357600080fd5b83359250602084013591506040840135614e6c8161455c565b809150509250925092565b6020815260006123806020830184614c4e565b600080600080600080600060e0888a031215614ea557600080fd5b8735614eb08161455c565b965060208801356001600160401b03811115614ecb57600080fd5b614ed78a828b016145de565b96505060408801359450606088013593506080880135614ef68161455c565b925060a0880135915060c0880135614f0d81614a04565b8091505092959891949750929550565b60008060408385031215614f3057600080fd5b82356001600160401b0380821115614f4757600080fd5b614f53868387016145de565b93506020850135915080821115614f6957600080fd5b50614b3a85828601614736565b634e487b7160e01b600052603260045260246000fd5b600060208284031215614f9e57600080fd5b81516001600160401b03811115614fb457600080fd5b8201601f81018413614fc557600080fd5b8051614fd36145fd826145b7565b818152856020838501011115614fe857600080fd5b6141d082602083016020860161445b565b6000825161500b81846020870161445b565b9190910192915050565b60006020828403121561502757600080fd5b815161238081614a04565b634e487b7160e01b600052601160045260246000fd5b81810381811115610e5057610e50615032565b600181811c9082168061506f57607f821691505b60208210810361508f57634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156150a757600080fd5b5051919050565b8082028115828204841417610e5057610e50615032565b6000826150e257634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610e5057610e50615032565b60006020828403121561510c57600080fd5b81516123808161455c565b6001600160a01b0389811682528881166020830152610100604083018190526000916151458483018b61447f565b6060850199909952608084019790975250509290931660a083015260c082015290151560e0909101529392505050565b6001600160a01b0392831681529116602082015260400190565b601f8211156111b2576000816000526020600020601f850160051c810160208610156151b85750805b601f850160051c820191505b818110156128e1578281556001016151c4565b600019600383901b1c191660019190911b1790565b81516001600160401b0381111561520557615205614571565b61521981615213845461505b565b8461518f565b602080601f83116001811461524857600084156152365750858301515b61524085826151d7565b8655506128e1565b600085815260208120601f198616915b8281101561527757888601518255948401946001909101908401615258565b50858210156152955787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008083546152b38161505b565b600182811680156152cb57600181146152e05761530f565b60ff198416875282151583028701945061530f565b8760005260208060002060005b858110156153065781548a8201529084019082016152ed565b50505082870194505b50929695505050505050565b818103615326575050565b615330825461505b565b6001600160401b0381111561534757615347614571565b61535581615213845461505b565b6000601f82116001811461538357600083156153715750848201545b61537b84826151d7565b855550613258565b600085815260209020601f19841690600086815260209020845b838110156153bd578286015482556001958601959091019060200161539d565b50858310156152955793015460001960f8600387901b161c19169092555050600190811b01905550565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fdfee562760eaa817d85ec1bf58364c4d65adb65d99d113c6785ef9aa66567076c954c1d97560aef1d9626af2ccff8a6ac6e245c44c307e795e9c16f7211c611a315189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc9a95e87c5af084bf5db8491c3a6515da9dd6da39b24b0eb0af08d7b9cd808d91c6ae66da7afbd0becbe49ddf95a9256901d87f1bb5e3d43236030e5e4a585b6d10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e487b38f131334165ac2b361f08966c9fcff3a953fa7d9d9c2861b7f0b50445bcbc2f8787176b8ac6bf7215b4adcc1e069bf4ab82d9ab1df05a57a91d425935b6e3acdf00ba9ef08b5f2c22768276611b9af078bf6c24fa36b34ec5e9f2eb061faa26469706673582212200540b09191ebd8a1004327f6309ecd4316849f0d987f7010a72aeade96f57e0164736f6c63430008180033", + "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x20 PUSH3 0x26 JUMP JUMPDEST PUSH3 0xDA JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 DUP1 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH3 0x77 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND EQ PUSH3 0xD7 JUMPI DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x5589 PUSH3 0x104 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x2F70 ADD MSTORE DUP2 DUP2 PUSH2 0x2F99 ADD MSTORE PUSH2 0x3303 ADD MSTORE PUSH2 0x5589 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x39D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x3A9 JUMPI DUP1 PUSH4 0x8564C19 EQ PUSH2 0x3DE JUMPI DUP1 PUSH4 0xEDE80D6 EQ PUSH2 0x400 JUMPI DUP1 PUSH4 0x136F50CA EQ PUSH2 0x430 JUMPI DUP1 PUSH4 0x150B7A02 EQ PUSH2 0x452 JUMPI DUP1 PUSH4 0x18274DA4 EQ PUSH2 0x496 JUMPI DUP1 PUSH4 0x1ACA6376 EQ PUSH2 0x4B6 JUMPI DUP1 PUSH4 0x1C54F0F7 EQ PUSH2 0x4D8 JUMPI DUP1 PUSH4 0x1C5DB99E EQ PUSH2 0x4F8 JUMPI DUP1 PUSH4 0x20606B70 EQ PUSH2 0x518 JUMPI DUP1 PUSH4 0x21B9B929 EQ PUSH2 0x53A JUMPI DUP1 PUSH4 0x241BBBFC EQ PUSH2 0x568 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x57D JUMPI DUP1 PUSH4 0x2A119380 EQ PUSH2 0x59D JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x5BD JUMPI DUP1 PUSH4 0x319D13F3 EQ PUSH2 0x5DD JUMPI DUP1 PUSH4 0x33746274 EQ PUSH2 0x5FD JUMPI DUP1 PUSH4 0x33E1A223 EQ PUSH2 0x61F JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x63F JUMPI DUP1 PUSH4 0x383ABA87 EQ PUSH2 0x65F JUMPI DUP1 PUSH4 0x39E4C705 EQ PUSH2 0x681 JUMPI DUP1 PUSH4 0x41BF7C69 EQ PUSH2 0x6A1 JUMPI DUP1 PUSH4 0x42072BBD EQ PUSH2 0x6C1 JUMPI DUP1 PUSH4 0x432CF639 EQ PUSH2 0x6D6 JUMPI DUP1 PUSH4 0x4781AE53 EQ PUSH2 0x6F6 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x716 JUMPI DUP1 PUSH4 0x4F3F4639 EQ PUSH2 0x729 JUMPI DUP1 PUSH4 0x51889D6B EQ PUSH2 0x74B JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x76B JUMPI DUP1 PUSH4 0x5C988994 EQ PUSH2 0x780 JUMPI DUP1 PUSH4 0x5E07F869 EQ PUSH2 0x7A0 JUMPI DUP1 PUSH4 0x63E86CC8 EQ PUSH2 0x7C0 JUMPI DUP1 PUSH4 0x647D8F6D EQ PUSH2 0x7E2 JUMPI DUP1 PUSH4 0x658DB0AF EQ PUSH2 0x802 JUMPI DUP1 PUSH4 0x6D69FCAF EQ PUSH2 0x825 JUMPI DUP1 PUSH4 0x6FC22CD1 EQ PUSH2 0x845 JUMPI DUP1 PUSH4 0x74AA2048 EQ PUSH2 0x865 JUMPI DUP1 PUSH4 0x74FE60E9 EQ PUSH2 0x885 JUMPI DUP1 PUSH4 0x7512E55B EQ PUSH2 0x8A5 JUMPI DUP1 PUSH4 0x76319190 EQ PUSH2 0x8C5 JUMPI DUP1 PUSH4 0x7EEC56C7 EQ PUSH2 0x8E5 JUMPI DUP1 PUSH4 0x852B3CCB EQ PUSH2 0x908 JUMPI DUP1 PUSH4 0x857CDBB8 EQ PUSH2 0x92A JUMPI DUP1 PUSH4 0x85F438C1 EQ PUSH2 0x957 JUMPI DUP1 PUSH4 0x8C20F574 EQ PUSH2 0x979 JUMPI DUP1 PUSH4 0x8F69347D EQ PUSH2 0x999 JUMPI DUP1 PUSH4 0x9010D07C EQ PUSH2 0x9B9 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x9D9 JUMPI DUP1 PUSH4 0x930659EB EQ PUSH2 0x9F9 JUMPI DUP1 PUSH4 0x9DB5DBE4 EQ PUSH2 0xA29 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0xA49 JUMPI DUP1 PUSH4 0xA31AA039 EQ PUSH2 0xA5E JUMPI DUP1 PUSH4 0xA3246AD3 EQ PUSH2 0xA7E JUMPI DUP1 PUSH4 0xA7D022F8 EQ PUSH2 0xAAB JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0xACB JUMPI DUP1 PUSH4 0xB5124635 EQ PUSH2 0xAFC JUMPI DUP1 PUSH4 0xBE667188 EQ PUSH2 0xB1C JUMPI DUP1 PUSH4 0xC162D7DA EQ PUSH2 0xB3C JUMPI DUP1 PUSH4 0xC39409E1 EQ PUSH2 0xB51 JUMPI DUP1 PUSH4 0xC6640E68 EQ PUSH2 0xB66 JUMPI DUP1 PUSH4 0xC7B5914F EQ PUSH2 0xB86 JUMPI DUP1 PUSH4 0xCA15C873 EQ PUSH2 0xBA6 JUMPI DUP1 PUSH4 0xCCDE65DC EQ PUSH2 0xBC6 JUMPI DUP1 PUSH4 0xCD9EF914 EQ PUSH2 0xBE6 JUMPI DUP1 PUSH4 0xD09445C2 EQ PUSH2 0xC06 JUMPI DUP1 PUSH4 0xD3C7C2C7 EQ PUSH2 0xC28 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0xC3D JUMPI DUP1 PUSH4 0xDA47D856 EQ PUSH2 0xC5D JUMPI DUP1 PUSH4 0xE0B78ADD EQ PUSH2 0xC8A JUMPI DUP1 PUSH4 0xE26A61BB EQ PUSH2 0xCAA JUMPI DUP1 PUSH4 0xE5A6725C EQ PUSH2 0xCCA JUMPI DUP1 PUSH4 0xE7BFCE9A EQ PUSH2 0xCEA JUMPI DUP1 PUSH4 0xE96CF7AD EQ PUSH2 0xD0A JUMPI DUP1 PUSH4 0xEA79D07A EQ PUSH2 0xD1F JUMPI DUP1 PUSH4 0xEB5EA273 EQ PUSH2 0xD34 JUMPI DUP1 PUSH4 0xEBC20D20 EQ PUSH2 0xD54 JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0xD74 JUMPI DUP1 PUSH4 0xEE3B641F EQ PUSH2 0xD89 JUMPI DUP1 PUSH4 0xF3FEF3A3 EQ PUSH2 0xDA9 JUMPI DUP1 PUSH4 0xF51ACAEA EQ PUSH2 0xDC9 JUMPI DUP1 PUSH4 0xF72C0D8B EQ PUSH2 0xDE9 JUMPI DUP1 PUSH4 0xF7E45F09 EQ PUSH2 0xE0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLDATASIZE PUSH2 0x3A4 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C9 PUSH2 0x3C4 CALLDATASIZE PUSH1 0x4 PUSH2 0x4431 JUMP JUMPDEST PUSH2 0xE2B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F3 PUSH2 0xE56 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3D5 SWAP2 SWAP1 PUSH2 0x4505 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x422 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x54F4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3D5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x43C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x445 PUSH2 0xF80 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3D5 SWAP2 SWAP1 PUSH2 0x4518 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47D PUSH2 0x46D CALLDATASIZE PUSH1 0x4 PUSH2 0x4634 JUMP JUMPDEST PUSH4 0xA85BD01 PUSH1 0xE1 SHL SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3D5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x422 PUSH2 0x4B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x469F JUMP JUMPDEST PUSH2 0xFA0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0x4D1 CALLDATASIZE PUSH1 0x4 PUSH2 0x46D3 JUMP JUMPDEST PUSH2 0xFAE JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0x4F3 CALLDATASIZE PUSH1 0x4 PUSH2 0x4714 JUMP JUMPDEST PUSH2 0x105B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x504 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0x513 CALLDATASIZE PUSH1 0x4 PUSH2 0x47D4 JUMP JUMPDEST PUSH2 0x10FF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x524 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x422 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5514 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x546 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x55A PUSH2 0x555 CALLDATASIZE PUSH1 0x4 PUSH2 0x4808 JUMP JUMPDEST PUSH2 0x11B7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3D5 SWAP3 SWAP2 SWAP1 PUSH2 0x48A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x574 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C9 PUSH2 0x1380 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x589 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x422 PUSH2 0x598 CALLDATASIZE PUSH1 0x4 PUSH2 0x48BC JUMP JUMPDEST PUSH2 0x1398 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0x5B8 CALLDATASIZE PUSH1 0x4 PUSH2 0x48EC JUMP JUMPDEST PUSH2 0x13B8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0x5D8 CALLDATASIZE PUSH1 0x4 PUSH2 0x4928 JUMP JUMPDEST PUSH2 0x145E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F3 PUSH2 0x5F8 CALLDATASIZE PUSH1 0x4 PUSH2 0x469F JUMP JUMPDEST PUSH2 0x1480 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x609 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x422 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x54B4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x62B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0x63A CALLDATASIZE PUSH1 0x4 PUSH2 0x4958 JUMP JUMPDEST PUSH2 0x148E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x64B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0x65A CALLDATASIZE PUSH1 0x4 PUSH2 0x4928 JUMP JUMPDEST PUSH2 0x164A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x66B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x422 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5414 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x68D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0x69C CALLDATASIZE PUSH1 0x4 PUSH2 0x47D4 JUMP JUMPDEST PUSH2 0x167D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0x6BC CALLDATASIZE PUSH1 0x4 PUSH2 0x49C0 JUMP JUMPDEST PUSH2 0x1723 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x445 PUSH2 0x179B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0x6F1 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A12 JUMP JUMPDEST PUSH2 0x17B2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x702 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x422 PUSH2 0x711 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A87 JUMP JUMPDEST PUSH2 0x1823 JUMP JUMPDEST PUSH2 0x4D6 PUSH2 0x724 CALLDATASIZE PUSH1 0x4 PUSH2 0x4AF5 JUMP JUMPDEST PUSH2 0x18A5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x735 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x73E PUSH2 0x18C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3D5 SWAP2 SWAP1 PUSH2 0x4B44 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x757 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0x766 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B58 JUMP JUMPDEST PUSH2 0x18E2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x777 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x422 PUSH2 0x1995 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x78C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0x79B CALLDATASIZE PUSH1 0x4 PUSH2 0x48BC JUMP JUMPDEST PUSH2 0x19B2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F3 PUSH2 0x7BB CALLDATASIZE PUSH1 0x4 PUSH2 0x48BC JUMP JUMPDEST PUSH2 0x19F0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x422 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5434 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0x7FD CALLDATASIZE PUSH1 0x4 PUSH2 0x4808 JUMP JUMPDEST PUSH2 0x1AF8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x80E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x817 PUSH2 0x1CFA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3D5 SWAP3 SWAP2 SWAP1 PUSH2 0x4B84 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x831 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0x840 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B92 JUMP JUMPDEST PUSH2 0x1D1C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x851 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0x860 CALLDATASIZE PUSH1 0x4 PUSH2 0x4714 JUMP JUMPDEST PUSH2 0x1D3D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x871 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0x880 CALLDATASIZE PUSH1 0x4 PUSH2 0x4BAF JUMP JUMPDEST PUSH2 0x1D5F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x891 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0x8A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x48EC JUMP JUMPDEST PUSH2 0x1E17 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0x8C0 CALLDATASIZE PUSH1 0x4 PUSH2 0x4BF5 JUMP JUMPDEST PUSH2 0x1E51 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0x8E0 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B92 JUMP JUMPDEST PUSH2 0x1EC0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8FA PUSH2 0x1EE1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3D5 SWAP3 SWAP2 SWAP1 PUSH2 0x4CCC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x914 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x422 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5534 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x936 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x94A PUSH2 0x945 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B92 JUMP JUMPDEST PUSH2 0x20A6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3D5 SWAP2 SWAP1 PUSH2 0x4D3E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x963 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x422 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x54D4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x985 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0x994 CALLDATASIZE PUSH1 0x4 PUSH2 0x4BF5 JUMP JUMPDEST PUSH2 0x218B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C9 PUSH2 0x9B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x48BC JUMP JUMPDEST PUSH2 0x21FA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x73E PUSH2 0x9D4 CALLDATASIZE PUSH1 0x4 PUSH2 0x4714 JUMP JUMPDEST PUSH2 0x222B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C9 PUSH2 0x9F4 CALLDATASIZE PUSH1 0x4 PUSH2 0x4928 JUMP JUMPDEST PUSH2 0x2259 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA19 PUSH2 0xA14 CALLDATASIZE PUSH1 0x4 PUSH2 0x4D51 JUMP JUMPDEST PUSH2 0x228F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3D5 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4D7F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0xA44 CALLDATASIZE PUSH1 0x4 PUSH2 0x46D3 JUMP JUMPDEST PUSH2 0x22E6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x422 PUSH1 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0xA79 CALLDATASIZE PUSH1 0x4 PUSH2 0x4D9A JUMP JUMPDEST PUSH2 0x2339 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA9E PUSH2 0xA99 CALLDATASIZE PUSH1 0x4 PUSH2 0x48BC JUMP JUMPDEST PUSH2 0x235A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3D5 SWAP2 SWAP1 PUSH2 0x4DB7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0xAC6 CALLDATASIZE PUSH1 0x4 PUSH2 0x4DF8 JUMP JUMPDEST PUSH2 0x2387 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x94A PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x352E302E3 PUSH1 0xDC SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C9 PUSH2 0xB17 CALLDATASIZE PUSH1 0x4 PUSH2 0x469F JUMP JUMPDEST PUSH2 0x23F8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0xB37 CALLDATASIZE PUSH1 0x4 PUSH2 0x4714 JUMP JUMPDEST PUSH2 0x2406 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x73E PUSH2 0x2440 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x422 PUSH2 0x245B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0xB81 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B92 JUMP JUMPDEST PUSH2 0x2470 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x422 PUSH2 0xBA1 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A87 JUMP JUMPDEST PUSH2 0x250B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x422 PUSH2 0xBC1 CALLDATASIZE PUSH1 0x4 PUSH2 0x48BC JUMP JUMPDEST PUSH2 0x2547 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0xBE1 CALLDATASIZE PUSH1 0x4 PUSH2 0x4AF5 JUMP JUMPDEST PUSH2 0x256C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0xC01 CALLDATASIZE PUSH1 0x4 PUSH2 0x4E3E JUMP JUMPDEST PUSH2 0x258E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x422 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5494 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA9E PUSH2 0x2646 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC49 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0xC58 CALLDATASIZE PUSH1 0x4 PUSH2 0x4928 JUMP JUMPDEST PUSH2 0x2660 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC7D PUSH2 0xC78 CALLDATASIZE PUSH1 0x4 PUSH2 0x48BC JUMP JUMPDEST PUSH2 0x267C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3D5 SWAP2 SWAP1 PUSH2 0x4E77 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C9 PUSH2 0xCA5 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B92 JUMP JUMPDEST PUSH2 0x27A5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0xCC5 CALLDATASIZE PUSH1 0x4 PUSH2 0x4E8A JUMP JUMPDEST PUSH2 0x27BF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0xCE5 CALLDATASIZE PUSH1 0x4 PUSH2 0x48BC JUMP JUMPDEST PUSH2 0x285D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0xD05 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B92 JUMP JUMPDEST PUSH2 0x28E9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x422 PUSH2 0x290A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA9E PUSH2 0x291F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x422 PUSH2 0xD4F CALLDATASIZE PUSH1 0x4 PUSH2 0x48BC JUMP JUMPDEST PUSH2 0x2939 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0xD6F CALLDATASIZE PUSH1 0x4 PUSH2 0x4F1D JUMP JUMPDEST PUSH2 0x2964 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x422 PUSH2 0x29D1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x817 PUSH2 0xDA4 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B92 JUMP JUMPDEST PUSH2 0x29DC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0xDC4 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B58 JUMP JUMPDEST PUSH2 0x2A17 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0xDE4 CALLDATASIZE PUSH1 0x4 PUSH2 0x469F JUMP JUMPDEST PUSH2 0x2A9F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x422 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5454 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE17 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0xE26 CALLDATASIZE PUSH1 0x4 PUSH2 0x4BAF JUMP JUMPDEST PUSH2 0x2B0A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5A05180F PUSH1 0xE0 SHL EQ DUP1 PUSH2 0xE50 JUMPI POP PUSH2 0xE50 DUP3 PUSH2 0x2B44 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0xE62 PUSH2 0xF80 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0xE7F JUMPI PUSH2 0xE7F PUSH2 0x4571 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xEB2 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xE9D JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xF79 JUMPI PUSH2 0xEC9 PUSH2 0x2440 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5A81A626 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xEE9 JUMPI PUSH2 0xEE9 PUSH2 0x4F76 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF0F SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF2C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xF54 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4F8C JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xF66 JUMPI PUSH2 0xF66 PUSH2 0x4F76 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xEB8 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0xF8C PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH2 0xF9A DUP2 PUSH1 0x9 ADD PUSH2 0x2B9D JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE50 PUSH2 0xD4F DUP4 PUSH2 0x2BAA JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x54D4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0xFC6 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xFED JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A954ECD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x21421707 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP5 SWAP1 MSTORE DUP6 AND SWAP1 PUSH4 0x42842E0E SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x103D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1051 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5534 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1073 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH20 0x0 PUSH4 0x21B87F3A PUSH2 0x1095 PUSH2 0x18C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP5 SWAP1 SHL AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x10F6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5494 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1117 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x11B2 JUMPI PUSH1 0x0 PUSH2 0x1147 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x113A JUMPI PUSH2 0x113A PUSH2 0x4F76 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2BAA JUMP JUMPDEST SWAP1 POP PUSH2 0x1152 DUP2 PUSH2 0x2C2A JUMP JUMPDEST DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1164 JUMPI PUSH2 0x1164 PUSH2 0x4F76 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH2 0x1179 SWAP2 SWAP1 PUSH2 0x4FF9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB DUP2 KECCAK256 SWAP1 PUSH32 0x50CC5F9D56177AA0DE269C136F2D2FFD45D7B66C82F0A82F8F840DB54D9801F8 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP PUSH1 0x1 ADD PUSH2 0x111A JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND ADDRESS EQ PUSH2 0x11EE JUMPI DUP10 PUSH1 0x40 MLOAD PUSH4 0x7B7D696F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11E5 SWAP2 SWAP1 PUSH2 0x4B44 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x11F6 PUSH2 0x2440 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x12B357B5 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1221 SWAP2 SWAP1 PUSH2 0x4B44 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x123E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1262 SWAP2 SWAP1 PUSH2 0x5015 JUMP JUMPDEST PUSH2 0x1281 JUMPI DUP9 PUSH1 0x40 MLOAD PUSH4 0x3F2C64AF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11E5 SWAP2 SWAP1 PUSH2 0x4B44 JUMP JUMPDEST DUP4 TIMESTAMP LT PUSH2 0x12A4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6453B2E5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x11E5 JUMP JUMPDEST PUSH2 0x12B4 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0x2C68 JUMP JUMPDEST SWAP2 POP PUSH2 0x12BF DUP3 PUSH2 0x27A5 JUMP JUMPDEST PUSH2 0x12DE JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x248D101D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11E5 SWAP2 SWAP1 PUSH2 0x4B44 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12E8 PUSH2 0x2C94 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP4 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP15 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD SWAP2 SWAP3 POP SWAP1 DUP9 LT ISZERO PUSH2 0x133B JUMPI PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x7C83FCF PUSH1 0xE4 SHL DUP2 MSTORE PUSH2 0x11E5 SWAP2 DUP11 SWAP2 PUSH1 0x4 ADD PUSH2 0x4B84 JUMP JUMPDEST DUP1 SLOAD DUP10 GT PUSH2 0x1360 JUMPI DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x22564901 PUSH1 0xE1 SHL DUP2 MSTORE PUSH2 0x11E5 SWAP2 DUP12 SWAP2 PUSH1 0x4 ADD PUSH2 0x4B84 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SLOAD PUSH2 0x136F SWAP1 DUP10 PUSH2 0x5048 JUMP JUMPDEST SWAP3 POP POP POP SWAP9 POP SWAP9 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x138B PUSH2 0x2B79 JUMP JUMPDEST PUSH1 0x3 ADD SLOAD PUSH1 0xFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x13A3 PUSH2 0x2CB8 JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5534 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x13D0 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH20 0x0 PUSH4 0x7E47316 PUSH2 0x13F2 PUSH2 0x18C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP5 SWAP1 SHL AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE PUSH2 0xFFFF DUP1 DUP8 AND PUSH1 0x44 DUP4 ADD MSTORE DUP6 AND PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x144A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x1051 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1467 DUP3 PUSH2 0x1398 JUMP JUMPDEST PUSH2 0x1470 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH2 0x147A DUP4 DUP4 PUSH2 0x2CDC JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xE50 PUSH2 0x7BB DUP4 PUSH2 0x2BAA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1498 PUSH2 0x2D1E JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV AND ISZERO SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x0 DUP2 ISZERO DUP1 ISZERO PUSH2 0x14BF JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0x14DB JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0x14E9 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x1507 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT AND PUSH1 0x1 OR DUP6 SSTORE DUP4 ISZERO PUSH2 0x1530 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR DUP6 SSTORE JUMPDEST PUSH2 0x1538 PUSH2 0x2D42 JUMP JUMPDEST PUSH2 0x1540 PUSH2 0x2D42 JUMP JUMPDEST PUSH2 0x1548 PUSH2 0x2D4C JUMP JUMPDEST PUSH2 0x1553 PUSH1 0x0 DUP9 PUSH2 0x2CDC JUMP JUMPDEST POP PUSH2 0x156C PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5494 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP9 PUSH2 0x2CDC JUMP JUMPDEST POP PUSH2 0x1585 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x54B4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP9 PUSH2 0x2CDC JUMP JUMPDEST POP PUSH2 0x159E PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5454 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP8 PUSH2 0x2CDC JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x15A9 PUSH2 0x2DE6 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP15 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR DUP4 SSTORE PUSH1 0x1 DUP4 ADD DUP1 SLOAD SWAP2 DUP15 AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH1 0x2 DUP2 ADD DUP11 SWAP1 SSTORE SWAP1 POP PUSH8 0x8AC7230489E80000 PUSH3 0x15180 PUSH2 0x15F5 DUP3 DUP3 PUSH2 0x2E0A JUMP JUMPDEST POP POP POP DUP4 ISZERO PUSH2 0x163E JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND DUP6 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0x1673 JUMPI PUSH1 0x40 MLOAD PUSH4 0x334BD919 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x11B2 DUP3 DUP3 PUSH2 0x2E2D JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5494 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1695 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x11B2 JUMPI PUSH1 0x0 PUSH2 0x16B8 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x113A JUMPI PUSH2 0x113A PUSH2 0x4F76 JUMP JUMPDEST SWAP1 POP PUSH2 0x16C3 DUP2 PUSH2 0x2E66 JUMP JUMPDEST DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x16D5 JUMPI PUSH2 0x16D5 PUSH2 0x4F76 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH2 0x16EA SWAP2 SWAP1 PUSH2 0x4FF9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB DUP2 KECCAK256 SWAP1 PUSH32 0xEDB7A081E6FF720AD9E97B837C352EF0548C4D09EC421B9B930B1E0C708E39E SWAP1 PUSH1 0x0 SWAP1 LOG2 POP PUSH1 0x1 ADD PUSH2 0x1698 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5494 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x173B DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH2 0x174D PUSH2 0x1747 DUP5 PUSH2 0x2BAA JUMP JUMPDEST DUP4 PUSH2 0x2EA4 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH2 0x175B SWAP2 SWAP1 PUSH2 0x4FF9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB DUP2 KECCAK256 DUP4 DUP3 MSTORE SWAP1 PUSH32 0xDD6C54A4503E1D8A1E75D73648F77D8FE66234B437CE30E20EDD51563116EC41 SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x17A7 PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH2 0xF9A DUP2 PUSH2 0x2B9D JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5494 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x17CA DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH2 0x17DE PUSH2 0x17D6 DUP7 PUSH2 0x2BAA JUMP JUMPDEST DUP6 DUP5 DUP7 PUSH2 0x2ECD JUMP JUMPDEST DUP5 PUSH1 0x40 MLOAD PUSH2 0x17EC SWAP2 SWAP1 PUSH2 0x4FF9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB DUP2 KECCAK256 SWAP1 PUSH32 0x763F2F41E0C407DD0A7067F44E5468A0DB74DA9FDB6CD1CB20C7B6DAE9375279 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x54F4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 DUP9 AND PUSH1 0x60 DUP3 ADD MSTORE SWAP1 DUP7 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0xC0 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xE0 DUP2 ADD DUP4 SWAP1 MSTORE PUSH2 0x100 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x120 ADD JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x18AD PUSH2 0x2F65 JUMP JUMPDEST PUSH2 0x18B6 DUP3 PUSH2 0x2FF3 JUMP JUMPDEST PUSH2 0x18C0 DUP3 DUP3 PUSH2 0x3136 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x18CF PUSH2 0x2DE6 JUMP JUMPDEST PUSH1 0x1 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x54B4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x18FA DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH2 0x1903 DUP3 PUSH2 0x31EA JUMP JUMPDEST PUSH2 0x191B PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5434 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH2 0x2CDC JUMP JUMPDEST POP PUSH2 0x1934 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5534 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH2 0x2CDC JUMP JUMPDEST POP PUSH2 0x194D PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5414 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH2 0x2CDC JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0xDB3E11BA26E83D528BF96A2167061674C1CE7777C61376D852D172594A873994 SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH2 0x11B2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP4 PUSH2 0x325F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x199F PUSH2 0x32F8 JUMP JUMPDEST POP PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5474 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH2 0x19BA PUSH2 0x3341 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5414 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x19D2 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH2 0x19DB DUP3 PUSH2 0x31EA JUMP JUMPDEST PUSH2 0x19E4 DUP3 PUSH2 0x3377 JUMP JUMPDEST POP PUSH2 0x19ED PUSH2 0x34A4 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x19FC PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH2 0x1A08 DUP4 DUP3 PUSH2 0x34B5 JUMP JUMPDEST DUP1 PUSH1 0x2 ADD PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x1AEC JUMPI DUP4 DUP3 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP1 SLOAD PUSH2 0x1A5F SWAP1 PUSH2 0x505B JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x1A8B SWAP1 PUSH2 0x505B JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1AD8 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1AAD JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1AD8 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1ABB JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1A40 JUMP JUMPDEST POP POP POP POP SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1B00 PUSH2 0x3341 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1B13 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0x11B7 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x1B25 DUP3 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH2 0x34DF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2710 PUSH2 0x1B32 PUSH2 0x2440 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3C555938 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B6F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1B93 SWAP2 SWAP1 PUSH2 0x5095 JUMP JUMPDEST PUSH2 0x1B9D SWAP1 DUP5 PUSH2 0x50AE JUMP JUMPDEST PUSH2 0x1BA7 SWAP2 SWAP1 PUSH2 0x50C5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1BB5 DUP3 DUP5 PUSH2 0x5048 JUMP JUMPDEST SWAP1 POP DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1BF7 JUMPI PUSH1 0x0 PUSH2 0x1BDA PUSH2 0x2C94 JUMP JUMPDEST SWAP1 POP DUP4 DUP2 PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1BF0 SWAP2 SWAP1 PUSH2 0x50E7 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP POP JUMPDEST PUSH2 0x1C73 DUP3 PUSH2 0x1C03 PUSH2 0x2440 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x470D3AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C40 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1C64 SWAP2 SWAP1 PUSH2 0x50FA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x325F JUMP JUMPDEST PUSH2 0x1C86 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP3 PUSH2 0x325F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND DUP3 MSTORE DUP13 DUP2 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP2 DUP2 ADD DUP12 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP11 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 DUP14 AND SWAP2 DUP15 AND SWAP1 PUSH32 0x4EBD6343A4AE90EA9A2ADD4327D0439DE765F4B8BBB691CAAF0875EF36C54E81 SWAP1 PUSH1 0xC0 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP PUSH2 0x1051 PUSH2 0x34A4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1D07 PUSH2 0x354A JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x2 ADD SLOAD DUP2 PUSH1 0x3 ADD SLOAD SWAP3 POP SWAP3 POP POP SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5494 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1D34 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH2 0x18C0 DUP3 PUSH2 0x356E JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x54B4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1D55 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH2 0x11B2 DUP4 DUP4 PUSH2 0x35E4 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5534 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1D77 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH20 0x0 PUSH4 0xFD13A43E PUSH2 0x1D99 PUSH2 0x18C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP5 SWAP1 SHL AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP8 SWAP1 MSTORE PUSH2 0xFFFF DUP1 DUP8 AND PUSH1 0x64 DUP4 ADD MSTORE DUP6 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1DF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x1E0C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5534 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1E2F DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH20 0x0 PUSH4 0x793DDDAC PUSH2 0x13F2 PUSH2 0x18C4 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5494 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1E69 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH2 0x1E7B PUSH2 0x1E75 DUP5 PUSH2 0x2BAA JUMP JUMPDEST DUP4 PUSH2 0x363E JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH2 0x1E89 SWAP2 SWAP1 PUSH2 0x4FF9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH32 0x498A5F4E6F3921F63E6863032989BDB7BB41E5CF5CBDE5437C7322C5C8DC46BF DUP4 PUSH1 0x40 MLOAD PUSH2 0x178E SWAP2 SWAP1 PUSH2 0x4D3E JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5494 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1ED8 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH2 0x18C0 DUP3 PUSH2 0x3682 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 PUSH2 0x1EEE PUSH2 0x179B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1F0B JUMPI PUSH2 0x1F0B PUSH2 0x4571 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1F3E JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1F29 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1F5C JUMPI PUSH2 0x1F5C PUSH2 0x4571 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1F95 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x1F82 PUSH2 0x4332 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1F7A JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x209B JUMPI PUSH2 0x1FAC PUSH2 0x2440 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5A81A626 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1FCC JUMPI PUSH2 0x1FCC PUSH2 0x4F76 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1FF2 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x200F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x2037 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4F8C JUMP JUMPDEST DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2049 JUMPI PUSH2 0x2049 PUSH2 0x4F76 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH2 0x2076 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2069 JUMPI PUSH2 0x2069 PUSH2 0x4F76 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x267C JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2088 JUMPI PUSH2 0x2088 PUSH2 0x4F76 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1F9B JUMP JUMPDEST POP SWAP1 SWAP5 SWAP1 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x20B2 PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH2 0x20C1 PUSH1 0x6 DUP3 ADD DUP5 PUSH2 0x36F8 JUMP JUMPDEST PUSH2 0x20E0 JUMPI DUP3 PUSH1 0x40 MLOAD PUSH4 0xBA650B5F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11E5 SWAP2 SWAP1 PUSH2 0x4B44 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0x2105 SWAP1 PUSH2 0x505B JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x2131 SWAP1 PUSH2 0x505B JUMP JUMPDEST DUP1 ISZERO PUSH2 0x217E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2153 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x217E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2161 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5494 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x21A3 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH2 0x21B5 PUSH2 0x21AF DUP5 PUSH2 0x2BAA JUMP JUMPDEST DUP4 PUSH2 0x370D JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH2 0x21C3 SWAP2 SWAP1 PUSH2 0x4FF9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH32 0xBA851FAEC9E30A9961F0ADB49FE025CDA6C8D7D0FB9BAD99F89C37D057023264 DUP4 PUSH1 0x40 MLOAD PUSH2 0x178E SWAP2 SWAP1 PUSH2 0x4D3E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2205 PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH2 0x2211 DUP4 DUP3 PUSH2 0x34B5 JUMP JUMPDEST PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x2 ADD PUSH1 0x20 MSTORE POP PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2236 PUSH2 0x383C JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH2 0x2251 SWAP1 DUP5 PUSH2 0x3860 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2264 PUSH2 0x2CB8 JUMP JUMPDEST PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP7 MSTORE SWAP4 SWAP1 MSTORE POP POP SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x229F PUSH2 0x2C94 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 DUP3 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP9 SWAP1 SWAP10 AND DUP2 MSTORE SWAP7 SWAP1 MSTORE POP POP POP SWAP3 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 SWAP1 SWAP4 ADD SLOAD SWAP2 SWAP6 SWAP1 SWAP5 POP SWAP2 SWAP3 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x54D4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x22FE DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x2325 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A954ECD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x147A PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 DUP5 PUSH2 0x386C JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5494 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x2351 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH2 0x18C0 DUP3 PUSH2 0x38C4 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x2366 PUSH2 0x383C JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH2 0x2380 SWAP1 PUSH2 0x2B9D JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5494 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x239F DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH2 0x23B1 PUSH2 0x23AB DUP5 PUSH2 0x2BAA JUMP JUMPDEST DUP4 PUSH2 0x391B JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH2 0x23BF SWAP2 SWAP1 PUSH2 0x4FF9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB DUP2 KECCAK256 DUP4 ISZERO ISZERO DUP3 MSTORE SWAP1 PUSH32 0x23960B931EB4B63E2E47D040F51CC0DE6EEF2E865639EB674FBB1890ECE3A0AB SWAP1 PUSH1 0x20 ADD PUSH2 0x178E JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE50 PUSH2 0x9B4 DUP4 PUSH2 0x2BAA JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5534 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x241E DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH20 0x0 PUSH4 0x348E06DD PUSH2 0x1095 PUSH2 0x18C4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x244B PUSH2 0x2DE6 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2466 PUSH2 0x2DE6 JUMP JUMPDEST PUSH1 0x2 ADD SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x54B4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x2488 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH2 0x24A0 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5434 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP4 PUSH2 0x2E2D JUMP JUMPDEST POP PUSH2 0x24B9 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5534 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP4 PUSH2 0x2E2D JUMP JUMPDEST POP PUSH2 0x24D2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5414 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP4 PUSH2 0x2E2D JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xD124523A9CFA28C5DD01826C4FA56192EC7D56859943082E0CA46C3B9DC62913 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2515 PUSH2 0x29D1 JUMP JUMPDEST PUSH2 0x2524 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH2 0x1823 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1901 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x22 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x42 DUP3 ADD MSTORE PUSH1 0x62 ADD PUSH2 0x1882 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2552 PUSH2 0x383C JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH2 0x2380 SWAP1 PUSH2 0x3955 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5494 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x2584 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH2 0x11B2 DUP4 DUP4 PUSH2 0x395F JUMP JUMPDEST PUSH2 0x2596 PUSH2 0x3341 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5534 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x25AE DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH20 0x0 PUSH4 0x7ADF63B7 PUSH2 0x25D0 PUSH2 0x18C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP5 SWAP1 SHL AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP8 SWAP1 MSTORE SWAP1 DUP6 AND PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2625 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x2639 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x11B2 PUSH2 0x34A4 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x2652 PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH2 0xF9A PUSH1 0x4 DUP3 ADD PUSH2 0x2B9D JUMP JUMPDEST PUSH2 0x2669 DUP3 PUSH2 0x1398 JUMP JUMPDEST PUSH2 0x2672 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH2 0x147A DUP4 DUP4 PUSH2 0x2E2D JUMP JUMPDEST PUSH2 0x2684 PUSH2 0x4332 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x268E PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH2 0x269A DUP4 DUP3 PUSH2 0x34B5 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP2 MLOAD PUSH1 0x60 DUP2 ADD DUP4 MSTORE DUP2 SLOAD DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0xFF AND ISZERO ISZERO DUP2 DUP6 ADD MSTORE SWAP4 DUP2 ADD DUP1 SLOAD DUP4 MLOAD DUP2 DUP7 MUL DUP2 ADD DUP7 ADD DUP6 MSTORE DUP2 DUP2 MSTORE SWAP6 SWAP7 SWAP3 SWAP6 SWAP4 DUP8 ADD SWAP5 SWAP2 SWAP3 SWAP1 SWAP2 DUP5 ADD JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x2796 JUMPI DUP4 DUP3 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP1 SLOAD PUSH2 0x2709 SWAP1 PUSH2 0x505B JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x2735 SWAP1 PUSH2 0x505B JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2782 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2757 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2782 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2765 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x26EA JUMP JUMPDEST POP POP POP SWAP2 MSTORE POP SWAP1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE50 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5434 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP4 PUSH2 0x2259 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5534 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x27D7 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH20 0x0 PUSH4 0xE4C22569 PUSH2 0x27F9 PUSH2 0x18C4 JUMP JUMPDEST DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD DUP10 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2823 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5117 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x283B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x284F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5534 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x2875 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH20 0x0 PUSH4 0xC7BFFA96 PUSH2 0x2897 PUSH2 0x18C4 JUMP JUMPDEST DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x28B5 SWAP3 SWAP2 SWAP1 PUSH2 0x48A3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x28CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x28E1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5494 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x2901 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH2 0x18C0 DUP3 PUSH2 0x39FB JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2915 PUSH2 0x2C94 JUMP JUMPDEST PUSH1 0x1 ADD SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x292B PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH2 0xF9A DUP2 PUSH1 0x6 ADD PUSH2 0x2B9D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2944 PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH2 0x2950 DUP4 DUP3 PUSH2 0x34B5 JUMP JUMPDEST PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x2 ADD PUSH1 0x20 MSTORE POP PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5494 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x297C DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH2 0x298E PUSH2 0x2988 DUP5 PUSH2 0x2BAA JUMP JUMPDEST DUP4 PUSH2 0x3A94 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH2 0x299C SWAP2 SWAP1 PUSH2 0x4FF9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB DUP2 KECCAK256 SWAP1 PUSH32 0xD52AEF6010D6B6303240865274298B7C5784B14EBF9DF788047B34C69C531371 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2466 PUSH2 0x2C94 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x29E9 PUSH2 0x354A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP6 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x1 SWAP1 SWAP8 ADD SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP4 SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x2A1F PUSH2 0x3341 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x54D4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x2A37 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH2 0x2A40 DUP3 PUSH2 0x31EA JUMP JUMPDEST PUSH2 0x2A53 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP4 PUSH2 0x325F JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x884EDAD9CE6FA2440D8A54CC123490EB96D2768479D49FF9C7366125A9424364 DUP4 PUSH1 0x40 MLOAD PUSH2 0x2A8E SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP PUSH2 0x18C0 PUSH2 0x34A4 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5494 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x2AB7 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH2 0x2AC8 PUSH2 0x2AC3 DUP4 PUSH2 0x2BAA JUMP JUMPDEST PUSH2 0x3AD2 JUMP JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH2 0x2AD6 SWAP2 SWAP1 PUSH2 0x4FF9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB DUP2 KECCAK256 SWAP1 PUSH32 0x52F6E0779195109314DFB8CF301D33491C63F136AFAC4C5D4F35AA934B254813 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5534 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x2B22 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH20 0x0 PUSH4 0xB54E72D8 PUSH2 0x1D99 PUSH2 0x18C4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x7965DB0B PUSH1 0xE0 SHL EQ DUP1 PUSH2 0xE50 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0xE50 JUMP JUMPDEST PUSH32 0xF2856E5E1B7689DCDE1BB551FD115C3CAD8D243EA609D47A46B4D22EE58D3000 SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x2380 DUP4 PUSH2 0x3B3B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2BB4 PUSH2 0x2440 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x352AF39A DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BDF SWAP2 SWAP1 PUSH2 0x4D3E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2BFC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE50 SWAP2 SWAP1 PUSH2 0x5095 JUMP JUMPDEST PUSH2 0x19ED DUP2 CALLER PUSH2 0x3B97 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C34 PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2C45 PUSH1 0x9 DUP4 ADD DUP5 PUSH2 0x3BC2 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x11B2 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1A1E0569 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x11E5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2C7A DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0x250B JUMP JUMPDEST SWAP1 POP PUSH2 0x2C86 DUP2 DUP5 PUSH2 0x3BCE JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x175F7E400D42AF44D9EBD24E9EFEE8A2C4ED78DDF46A83E51A493AE382C87600 SWAP1 JUMP JUMPDEST PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2CE7 PUSH2 0x383C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2CF5 DUP6 DUP6 PUSH2 0x3BF8 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x2251 JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x2D15 SWAP1 DUP6 PUSH2 0x3C99 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH2 0x2D4A PUSH2 0x3CAE JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2D54 PUSH2 0x3CAE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D5E PUSH2 0x2C94 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 SWAP2 POP PUSH2 0x2DC6 SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5514 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 PUSH32 0x964F47BA1D5DC0D1184A60039DBA40ABB2D0EEE53398392E97308CB5F4A12F94 SWAP1 PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 SWAP1 CHAINID SWAP1 PUSH1 0x20 ADD PUSH2 0x4D7F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x2 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH32 0xC7B73796C7CC89B9F849B9056A93200EBA741881E57A1B03B9BEDB2C0E07100 SWAP1 JUMP JUMPDEST PUSH2 0x2E12 PUSH2 0x3CAE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E1C PUSH2 0x354A JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SWAP4 SWAP1 SWAP4 SSTORE POP PUSH1 0x3 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2E38 PUSH2 0x383C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2E46 DUP6 DUP6 PUSH2 0x3CD3 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x2251 JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x2D15 SWAP1 DUP6 PUSH2 0x3D4B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E70 PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2E81 PUSH1 0x9 DUP4 ADD DUP5 PUSH2 0x3D60 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x11B2 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7EAE59F1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x11E5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2EAE PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH2 0x2EBA DUP4 DUP3 PUSH2 0x34B5 JUMP JUMPDEST PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2ED7 PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2EE5 DUP3 DUP8 PUSH2 0x3BC2 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x2F07 JUMPI PUSH1 0x40 MLOAD PUSH3 0x21E3BB PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x11E5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE DUP7 DUP2 MSTORE DUP5 ISZERO ISZERO PUSH1 0x20 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE DUP3 DUP5 ADD DUP9 DUP2 MSTORE PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0x2 DUP9 DUP2 ADD DUP5 MSTORE SWAP6 SWAP1 KECCAK256 DUP5 MLOAD DUP2 SSTORE SWAP3 MLOAD PUSH1 0x1 DUP5 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE MLOAD DUP1 MLOAD SWAP4 SWAP5 SWAP3 SWAP4 PUSH2 0x1E0C SWAP4 DUP6 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x4355 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH2 0x2FD5 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2FC9 PUSH2 0x3D6C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x2D4A JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5454 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x300B DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3015 PUSH2 0x2440 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x9D825BC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3052 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3076 SWAP2 SWAP1 PUSH2 0x50FA JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3082 PUSH2 0x3D6C JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x30BA JUMPI DUP1 DUP5 PUSH1 0x40 MLOAD PUSH4 0x82AFABC1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11E5 SWAP3 SWAP2 SWAP1 PUSH2 0x5175 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x30F0 JUMPI DUP2 DUP5 PUSH1 0x40 MLOAD PUSH4 0x699A021F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11E5 SWAP3 SWAP2 SWAP1 PUSH2 0x5175 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xA3D484F827E1C900CE24494BFDB214BCBAD08472A9F0571FB5BEAC779A682DB4 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x3190 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x318D SWAP2 DUP2 ADD SWAP1 PUSH2 0x5095 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x31AF JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11E5 SWAP2 SWAP1 PUSH2 0x4B44 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5474 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 EQ PUSH2 0x31E0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x11E5 JUMP JUMPDEST PUSH2 0x11B2 DUP4 DUP4 PUSH2 0x3D88 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x31F4 PUSH2 0x245B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3200 PUSH2 0x290A JUMP JUMPDEST SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0x11B2 JUMPI PUSH1 0x0 PUSH2 0x3216 DUP3 DUP5 PUSH2 0x5048 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3224 DUP3 SELFBALANCE PUSH2 0x5048 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x3258 JUMPI PUSH1 0x40 MLOAD PUSH4 0x44C87605 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x64 ADD PUSH2 0x11E5 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH2 0x3284 JUMPI SELFBALANCE DUP2 PUSH1 0x40 MLOAD PUSH4 0xCF479181 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11E5 SWAP3 SWAP2 SWAP1 PUSH2 0x4B84 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x32D1 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x32D6 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x11B2 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x2D4A JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x334B PUSH2 0x3DDE JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 NOT ADD PUSH2 0x3371 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3EE5AEB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3381 PUSH2 0x354A JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x2 ADD SLOAD DUP3 GT ISZERO PUSH2 0x33B0 JUMPI DUP1 PUSH1 0x2 ADD SLOAD DUP3 PUSH1 0x40 MLOAD PUSH4 0x1728BC5B PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11E5 SWAP3 SWAP2 SWAP1 PUSH2 0x4B84 JUMP JUMPDEST PUSH1 0x3 DUP2 ADD SLOAD CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD TIMESTAMP SWAP2 PUSH2 0x33D0 SWAP2 PUSH2 0x50E7 JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0x33F8 JUMPI CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 SWAP1 SSTORE SWAP1 DUP5 SWAP1 MSTORE SWAP1 KECCAK256 DUP2 SWAP1 SSTORE JUMPDEST PUSH1 0x2 DUP3 ADD SLOAD CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x341A SWAP1 DUP6 SWAP1 PUSH2 0x50E7 JUMP JUMPDEST GT ISZERO PUSH2 0x3441 JUMPI DUP2 PUSH1 0x2 ADD SLOAD DUP4 PUSH1 0x40 MLOAD PUSH4 0xD54B1887 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11E5 SWAP3 SWAP2 SWAP1 PUSH2 0x4B84 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP6 SWAP3 SWAP1 PUSH2 0x3462 SWAP1 DUP5 SWAP1 PUSH2 0x50E7 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x3472 SWAP1 POP CALLER DUP5 PUSH2 0x325F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 DUP2 MSTORE CALLER SWAP1 PUSH32 0xB9EC638398BBDCD0844CA414D8CE760939FA88B9258B9764B3FC6C12EA2605C2 SWAP1 PUSH1 0x20 ADD PUSH2 0x178E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34AE PUSH2 0x3DDE JUMP JUMPDEST PUSH1 0x1 SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0x34BF DUP2 DUP4 PUSH2 0x3E02 JUMP JUMPDEST PUSH2 0x18C0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E96F6ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x11E5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34E9 PUSH2 0x2C94 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP7 DUP8 MSTORE PUSH1 0x20 DUP1 DUP9 ADD SWAP7 DUP8 MSTORE DUP8 DUP3 ADD SWAP6 DUP7 MSTORE PUSH1 0x60 DUP9 ADD SWAP5 DUP6 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP10 DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE SWAP3 DUP2 MSTORE DUP2 DUP4 KECCAK256 SWAP9 SWAP1 SWAP10 AND DUP3 MSTORE SWAP7 SWAP1 SWAP8 MSTORE POP SWAP4 SWAP1 SWAP5 KECCAK256 SWAP2 MLOAD DUP3 SSTORE MLOAD PUSH1 0x1 DUP3 ADD SSTORE SWAP2 MLOAD PUSH1 0x2 DUP4 ADD SSTORE MLOAD PUSH1 0x3 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH32 0x99A652063088B6BADAEB0C7F680676BAF720654B4F86F50167944489AF637D00 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3578 PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3589 PUSH1 0x4 DUP4 ADD DUP5 PUSH2 0x3C99 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x35AB JUMPI DUP3 PUSH1 0x40 MLOAD PUSH4 0x2872FBF9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11E5 SWAP2 SWAP1 PUSH2 0x4B44 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0xA317C10673BAF4F03B3C1041BD5DDBB537D0333A86FEC3607C75F9DBB630F48F SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x35EE PUSH2 0x354A JUMP JUMPDEST PUSH1 0x2 DUP2 ADD DUP5 SWAP1 SSTORE PUSH1 0x3 DUP2 ADD DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 POP PUSH32 0x8D4925B196AE6B935035A27ED36C6BD9C7A8FBDDC7A3F55F493AA8E230BE373E SWAP1 PUSH2 0x3631 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH2 0x4B84 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3648 PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH2 0x3654 DUP4 DUP3 PUSH2 0x34B5 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP4 KECCAK256 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP1 DUP4 MSTORE SWAP2 KECCAK256 ADD PUSH2 0x147A DUP4 DUP3 PUSH2 0x51EC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x368C PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x369D PUSH1 0x4 DUP4 ADD DUP5 PUSH2 0x3D4B JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x36BF JUMPI DUP3 PUSH1 0x40 MLOAD PUSH4 0x1532E671 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11E5 SWAP2 SWAP1 PUSH2 0x4B44 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0x85A3E72F8DD6DB3794F93109C3C5F5B79D6112F6979431C45F98B26134B42AF2 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2380 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x3E0A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3717 PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH2 0x3723 DUP4 DUP3 PUSH2 0x34B5 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP3 KECCAK256 ADD SWAP1 JUMPDEST DUP2 SLOAD DUP2 LT ISZERO PUSH2 0x3258 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3751 SWAP2 SWAP1 PUSH2 0x4FF9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x3779 JUMPI PUSH2 0x3779 PUSH2 0x4F76 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3793 SWAP2 SWAP1 PUSH2 0x52A5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SUB PUSH2 0x3834 JUMPI DUP2 SLOAD DUP3 SWAP1 PUSH2 0x37BE SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x5048 JUMP JUMPDEST DUP2 SLOAD DUP2 LT PUSH2 0x37CE JUMPI PUSH2 0x37CE PUSH2 0x4F76 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x37EA JUMPI PUSH2 0x37EA PUSH2 0x4F76 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SWAP1 DUP2 PUSH2 0x3800 SWAP2 SWAP1 PUSH2 0x531B JUMP JUMPDEST POP DUP2 DUP1 SLOAD DUP1 PUSH2 0x3811 JUMPI PUSH2 0x3811 PUSH2 0x53E7 JUMP JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x382D SWAP2 SWAP1 PUSH2 0x43AB JUMP JUMPDEST SWAP1 SSTORE PUSH2 0x3258 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x3737 JUMP JUMPDEST PUSH32 0xC1F6FE24621CE81EC5827CAF0253CADB74709B061630E6B55E82371705932000 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2380 DUP4 DUP4 PUSH2 0x3E22 JUMP JUMPDEST PUSH2 0x11B2 DUP4 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3892 SWAP3 SWAP2 SWAP1 PUSH2 0x48A3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH2 0x3E4C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x38CE PUSH2 0x2B79 JUMP JUMPDEST PUSH1 0x3 DUP2 ADD DUP1 SLOAD PUSH1 0xFF NOT AND DUP5 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE SWAP1 SWAP2 POP PUSH32 0xE93CEB76EFB130156C6AA39FA4AC986B3F683B6DA926496FCA3F95EA7FE715E3 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3925 PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH2 0x3931 DUP4 DUP3 PUSH2 0x34B5 JUMP JUMPDEST PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE50 DUP3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3969 PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x397A PUSH1 0x6 DUP4 ADD DUP6 PUSH2 0x3C99 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x399C JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x1A6107E3 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11E5 SWAP2 SWAP1 PUSH2 0x4B44 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x39C0 DUP5 DUP3 PUSH2 0x51EC JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH32 0x928EC246AFDA323BC23C2815CA3F516E9FC6A7B7179772235C221E132545FE82 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A05 PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3A16 PUSH1 0x6 DUP4 ADD DUP5 PUSH2 0x3D4B JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x3A38 JUMPI DUP3 PUSH1 0x40 MLOAD PUSH4 0xBA650B5F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11E5 SWAP2 SWAP1 PUSH2 0x4B44 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x3A5B SWAP2 PUSH2 0x43AB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0xC5A9B8041EF11732E7DD7043167D8C22DB5C7EA99DCD38DCE401EFFACF8A29BF SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A9E PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH2 0x3AAA DUP4 DUP3 PUSH2 0x34B5 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP3 KECCAK256 DUP5 MLOAD PUSH2 0x147A SWAP4 SWAP2 SWAP1 SWAP3 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 PUSH2 0x4355 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3ADC PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3AEA DUP3 DUP5 PUSH2 0x3D60 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x3B0D JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E96F6ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x11E5 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP3 KECCAK256 DUP3 DUP2 SSTORE PUSH1 0x1 DUP2 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE SWAP2 SWAP1 PUSH2 0x3258 SWAP1 DUP4 ADD DUP3 PUSH2 0x43E5 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x0 ADD DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x3B8B JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x3B77 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3BA1 DUP3 DUP3 PUSH2 0x2259 JUMP JUMPDEST PUSH2 0x18C0 JUMPI DUP1 DUP3 PUSH1 0x40 MLOAD PUSH4 0xE2517D3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11E5 SWAP3 SWAP2 SWAP1 PUSH2 0x48A3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2380 DUP4 DUP4 PUSH2 0x3EB4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x3BDE DUP7 DUP7 PUSH2 0x3EFE JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0x3BEE DUP3 DUP3 PUSH2 0x3F4B JUMP JUMPDEST POP SWAP1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3C03 PUSH2 0x2CB8 JUMP JUMPDEST SWAP1 POP PUSH2 0x3C0F DUP5 DUP5 PUSH2 0x2259 JUMP JUMPDEST PUSH2 0x3C8F JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x3C45 CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0xE50 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0xE50 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2380 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x3EB4 JUMP JUMPDEST PUSH2 0x3CB6 PUSH2 0x4004 JUMP JUMPDEST PUSH2 0x2D4A JUMPI PUSH1 0x40 MLOAD PUSH4 0x1AFCD79F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3CDE PUSH2 0x2CB8 JUMP JUMPDEST SWAP1 POP PUSH2 0x3CEA DUP5 DUP5 PUSH2 0x2259 JUMP JUMPDEST ISZERO PUSH2 0x3C8F JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP8 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0xE50 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2380 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x401E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2380 DUP4 DUP4 PUSH2 0x401E JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5474 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x3D91 DUP3 PUSH2 0x4107 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x3DD6 JUMPI PUSH2 0x11B2 DUP3 DUP3 PUSH2 0x4163 JUMP JUMPDEST PUSH2 0x18C0 PUSH2 0x41D9 JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2380 DUP4 DUP4 JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x3E39 JUMPI PUSH2 0x3E39 PUSH2 0x4F76 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 PUSH1 0x0 DUP5 MLOAD PUSH1 0x20 DUP7 ADD PUSH1 0x0 DUP9 GAS CALL DUP1 PUSH2 0x3E6F JUMPI PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST POP POP PUSH1 0x0 MLOAD RETURNDATASIZE SWAP2 POP DUP2 ISZERO PUSH2 0x3E87 JUMPI DUP1 PUSH1 0x1 EQ ISZERO PUSH2 0x3E94 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x147A JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11E5 SWAP2 SWAP1 PUSH2 0x4B44 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3EC0 DUP4 DUP4 PUSH2 0x3E0A JUMP JUMPDEST PUSH2 0x3EF6 JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP5 SWAP1 SSTORE DUP5 SLOAD DUP5 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0xE50 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0xE50 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 MLOAD PUSH1 0x41 SUB PUSH2 0x3F38 JUMPI PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x0 BYTE PUSH2 0x3F2A DUP9 DUP3 DUP6 DUP6 PUSH2 0x41F8 JUMP JUMPDEST SWAP6 POP SWAP6 POP SWAP6 POP POP POP POP PUSH2 0x3F44 JUMP JUMPDEST POP POP DUP2 MLOAD PUSH1 0x0 SWAP2 POP PUSH1 0x2 SWAP1 JUMPDEST SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3F5F JUMPI PUSH2 0x3F5F PUSH2 0x53FD JUMP JUMPDEST SUB PUSH2 0x3F68 JUMPI POP POP JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3F7C JUMPI PUSH2 0x3F7C PUSH2 0x53FD JUMP JUMPDEST SUB PUSH2 0x3F9A JUMPI PUSH1 0x40 MLOAD PUSH4 0xF645EEDF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3FAE JUMPI PUSH2 0x3FAE PUSH2 0x53FD JUMP JUMPDEST SUB PUSH2 0x3FCF JUMPI PUSH1 0x40 MLOAD PUSH4 0xFCE698F7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x11E5 JUMP JUMPDEST PUSH1 0x3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3FE3 JUMPI PUSH2 0x3FE3 PUSH2 0x53FD JUMP JUMPDEST SUB PUSH2 0x18C0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x35E2F383 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x11E5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x400E PUSH2 0x2D1E JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x3C8F JUMPI PUSH1 0x0 PUSH2 0x4042 PUSH1 0x1 DUP4 PUSH2 0x5048 JUMP JUMPDEST DUP6 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x4056 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x5048 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 EQ PUSH2 0x40BB JUMPI PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x4076 JUMPI PUSH2 0x4076 PUSH2 0x4F76 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP8 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x4099 JUMPI PUSH2 0x4099 PUSH2 0x4F76 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 DUP3 MSTORE PUSH1 0x1 DUP9 ADD SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP4 SWAP1 SSTORE JUMPDEST DUP6 SLOAD DUP7 SWAP1 DUP1 PUSH2 0x40CC JUMPI PUSH2 0x40CC PUSH2 0x53E7 JUMP JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH1 0x1 SWAP4 POP POP POP POP PUSH2 0xE50 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH2 0x4134 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11E5 SWAP2 SWAP1 PUSH2 0x4B44 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5474 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x4180 SWAP2 SWAP1 PUSH2 0x4FF9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x41BB JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x41C0 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x41D0 DUP6 DUP4 DUP4 PUSH2 0x42BD JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x2D4A JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH16 0xA2A8918CA85BAFE22016D0B997E4DF60 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP5 GT ISZERO PUSH2 0x4229 JUMPI POP PUSH1 0x0 SWAP2 POP PUSH1 0x3 SWAP1 POP DUP3 PUSH2 0x42B3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP11 SWAP1 MSTORE PUSH1 0xFF DUP10 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x427D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x42A9 JUMPI POP PUSH1 0x0 SWAP3 POP PUSH1 0x1 SWAP2 POP DUP3 SWAP1 POP PUSH2 0x42B3 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP DUP2 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x42D2 JUMPI PUSH2 0x42CD DUP3 PUSH2 0x4309 JUMP JUMPDEST PUSH2 0x2380 JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x42E9 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0xF79 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11E5 SWAP2 SWAP1 PUSH2 0x4B44 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x4319 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x439B JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x439B JUMPI DUP3 MLOAD DUP3 SWAP1 PUSH2 0x438B SWAP1 DUP3 PUSH2 0x51EC JUMP JUMPDEST POP SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x4375 JUMP JUMPDEST POP PUSH2 0x43A7 SWAP3 SWAP2 POP PUSH2 0x43FF JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST POP DUP1 SLOAD PUSH2 0x43B7 SWAP1 PUSH2 0x505B JUMP JUMPDEST PUSH1 0x0 DUP3 SSTORE DUP1 PUSH1 0x1F LT PUSH2 0x43C7 JUMPI POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x19ED SWAP2 SWAP1 PUSH2 0x441C JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0x0 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x19ED SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x43A7 JUMPI PUSH1 0x0 PUSH2 0x4413 DUP3 DUP3 PUSH2 0x43AB JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x43FF JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x43A7 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x441D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4443 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x2380 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4476 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x445E JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x4497 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x445B JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MLOAD DUP1 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP6 POP PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP5 ADD ADD PUSH1 0x20 DUP7 ADD PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x44F8 JUMPI PUSH1 0x1F NOT DUP7 DUP5 SUB ADD DUP10 MSTORE PUSH2 0x44E6 DUP4 DUP4 MLOAD PUSH2 0x447F JUMP JUMPDEST SWAP9 DUP5 ADD SWAP9 SWAP3 POP SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x44CA JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2380 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x44AB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4550 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x4534 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x19ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x45AF JUMPI PUSH2 0x45AF PUSH2 0x4571 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x45D0 JUMPI PUSH2 0x45D0 PUSH2 0x4571 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x45EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4602 PUSH2 0x45FD DUP3 PUSH2 0x45B7 JUMP JUMPDEST PUSH2 0x4587 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x4617 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x464A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x4655 DUP2 PUSH2 0x455C JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x4665 DUP2 PUSH2 0x455C JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4687 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4693 DUP8 DUP3 DUP9 ADD PUSH2 0x45DE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x46B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x46C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2251 DUP5 DUP3 DUP6 ADD PUSH2 0x45DE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x46E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x46F3 DUP2 PUSH2 0x455C JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x4703 DUP2 PUSH2 0x455C JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4727 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4747 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP4 GT ISZERO PUSH2 0x4763 JUMPI PUSH2 0x4763 PUSH2 0x4571 JUMP JUMPDEST DUP3 PUSH1 0x5 SHL PUSH2 0x4772 DUP4 DUP3 ADD PUSH2 0x4587 JUMP JUMPDEST SWAP4 DUP5 MSTORE DUP6 DUP2 ADD DUP4 ADD SWAP4 DUP4 DUP2 ADD SWAP1 DUP9 DUP7 GT ISZERO PUSH2 0x478C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 DUP9 ADD SWAP3 POP JUMPDEST DUP6 DUP4 LT ISZERO PUSH2 0x47C8 JUMPI DUP3 CALLDATALOAD DUP5 DUP2 GT ISZERO PUSH2 0x47AA JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x47B8 DUP11 DUP8 DUP4 DUP13 ADD ADD PUSH2 0x45DE JUMP JUMPDEST DUP4 MSTORE POP SWAP2 DUP5 ADD SWAP2 SWAP1 DUP5 ADD SWAP1 PUSH2 0x4792 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x47E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x47FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2251 DUP5 DUP3 DUP6 ADD PUSH2 0x4736 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x4825 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x4830 DUP2 PUSH2 0x455C JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x4840 DUP2 PUSH2 0x455C JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH2 0x4850 DUP2 PUSH2 0x455C JUMP JUMPDEST SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP4 POP PUSH1 0xA0 DUP10 ADD CALLDATALOAD SWAP3 POP PUSH1 0xC0 DUP10 ADD CALLDATALOAD SWAP2 POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4887 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4893 DUP12 DUP3 DUP13 ADD PUSH2 0x45DE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x48CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x48E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4901 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH2 0x4911 PUSH1 0x20 DUP6 ADD PUSH2 0x48D5 JUMP JUMPDEST SWAP2 POP PUSH2 0x491F PUSH1 0x40 DUP6 ADD PUSH2 0x48D5 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x493B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x494D DUP2 PUSH2 0x455C JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x4970 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x497B DUP2 PUSH2 0x455C JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x498B DUP2 PUSH2 0x455C JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0x49A2 DUP2 PUSH2 0x455C JUMP JUMPDEST SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH2 0x49B2 DUP2 PUSH2 0x455C JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x49D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x49E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x49F5 DUP6 DUP3 DUP7 ADD PUSH2 0x45DE JUMP JUMPDEST SWAP6 PUSH1 0x20 SWAP5 SWAP1 SWAP5 ADD CALLDATALOAD SWAP5 POP POP POP POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x19ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4A28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4A3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4A4B DUP9 DUP4 DUP10 ADD PUSH2 0x45DE JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP2 POP PUSH2 0x4A64 DUP3 PUSH2 0x4A04 JUMP JUMPDEST SWAP1 SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x4A7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4693 DUP8 DUP3 DUP9 ADD PUSH2 0x4736 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x4AA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x4AAD DUP2 PUSH2 0x455C JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x4ABD DUP2 PUSH2 0x455C JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD PUSH2 0x4ACD DUP2 PUSH2 0x455C JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP6 SWAP7 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP7 POP PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP6 PUSH1 0xA0 DUP3 ADD CALLDATALOAD SWAP6 POP PUSH1 0xC0 SWAP1 SWAP2 ADD CALLDATALOAD SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4B08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4B13 DUP2 PUSH2 0x455C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4B2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4B3A DUP6 DUP3 DUP7 ADD PUSH2 0x45DE JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4B6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4B76 DUP2 PUSH2 0x455C JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4BA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2380 DUP2 PUSH2 0x455C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4BC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH2 0x4BDC PUSH1 0x40 DUP7 ADD PUSH2 0x48D5 JUMP JUMPDEST SWAP2 POP PUSH2 0x4BEA PUSH1 0x60 DUP7 ADD PUSH2 0x48D5 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4C08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4C1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4C2B DUP7 DUP4 DUP8 ADD PUSH2 0x45DE JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4C41 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4B3A DUP6 DUP3 DUP7 ADD PUSH2 0x45DE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 ADD DUP3 MLOAD DUP5 MSTORE PUSH1 0x20 DUP1 DUP5 ADD MLOAD ISZERO ISZERO PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 PUSH1 0x40 DUP8 ADD MSTORE DUP3 DUP2 MLOAD DUP1 DUP6 MSTORE PUSH1 0x80 DUP9 ADD SWAP2 POP PUSH1 0x80 DUP2 PUSH1 0x5 SHL DUP10 ADD ADD SWAP5 POP PUSH1 0x20 DUP4 ADD SWAP3 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4CBF JUMPI PUSH1 0x7F NOT DUP10 DUP8 SUB ADD DUP4 MSTORE PUSH2 0x4CAD DUP7 DUP6 MLOAD PUSH2 0x447F JUMP JUMPDEST SWAP6 POP SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x4C91 JUMP JUMPDEST POP SWAP4 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x4CDF PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x44AB JUMP JUMPDEST PUSH1 0x20 DUP4 DUP3 SUB DUP2 DUP6 ADD MSTORE DUP2 DUP6 MLOAD DUP1 DUP5 MSTORE DUP3 DUP5 ADD SWAP2 POP DUP3 DUP2 PUSH1 0x5 SHL DUP6 ADD ADD DUP4 DUP9 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4D2F JUMPI PUSH1 0x1F NOT DUP8 DUP5 SUB ADD DUP6 MSTORE PUSH2 0x4D1D DUP4 DUP4 MLOAD PUSH2 0x4C4E JUMP JUMPDEST SWAP5 DUP7 ADD SWAP5 SWAP3 POP SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4D01 JUMP JUMPDEST POP SWAP1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2380 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x447F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4D64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4D6F DUP2 PUSH2 0x455C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x494D DUP2 PUSH2 0x455C JUMP JUMPDEST SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4DAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2380 DUP2 PUSH2 0x4A04 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4550 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x4DD3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4E0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4E21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E2D DUP6 DUP3 DUP7 ADD PUSH2 0x45DE JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x494D DUP2 PUSH2 0x4A04 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4E53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x4E6C DUP2 PUSH2 0x455C JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2380 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4C4E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x4EA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x4EB0 DUP2 PUSH2 0x455C JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4ECB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4ED7 DUP11 DUP3 DUP12 ADD PUSH2 0x45DE JUMP JUMPDEST SWAP7 POP POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH2 0x4EF6 DUP2 PUSH2 0x455C JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD PUSH2 0x4F0D DUP2 PUSH2 0x4A04 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4F30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4F47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4F53 DUP7 DUP4 DUP8 ADD PUSH2 0x45DE JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4F69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4B3A DUP6 DUP3 DUP7 ADD PUSH2 0x4736 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4F9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4FB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x4FC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x4FD3 PUSH2 0x45FD DUP3 PUSH2 0x45B7 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x4FE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x41D0 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x445B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x500B DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x445B JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5027 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2380 DUP2 PUSH2 0x4A04 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0xE50 JUMPI PUSH2 0xE50 PUSH2 0x5032 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x506F JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x508F JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x50A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0xE50 JUMPI PUSH2 0xE50 PUSH2 0x5032 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x50E2 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0xE50 JUMPI PUSH2 0xE50 PUSH2 0x5032 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x510C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2380 DUP2 PUSH2 0x455C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND DUP3 MSTORE DUP9 DUP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x100 PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH2 0x5145 DUP5 DUP4 ADD DUP12 PUSH2 0x447F JUMP JUMPDEST PUSH1 0x60 DUP6 ADD SWAP10 SWAP1 SWAP10 MSTORE PUSH1 0x80 DUP5 ADD SWAP8 SWAP1 SWAP8 MSTORE POP POP SWAP3 SWAP1 SWAP4 AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0xE0 SWAP1 SWAP2 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x11B2 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH2 0x51B8 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x28E1 JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x51C4 JUMP JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP4 SWAP1 SHL SHR NOT AND PUSH1 0x1 SWAP2 SWAP1 SWAP2 SHL OR SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x5205 JUMPI PUSH2 0x5205 PUSH2 0x4571 JUMP JUMPDEST PUSH2 0x5219 DUP2 PUSH2 0x5213 DUP5 SLOAD PUSH2 0x505B JUMP JUMPDEST DUP5 PUSH2 0x518F JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x5248 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x5236 JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH2 0x5240 DUP6 DUP3 PUSH2 0x51D7 JUMP JUMPDEST DUP7 SSTORE POP PUSH2 0x28E1 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x5277 JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH2 0x5258 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH2 0x5295 JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 SLOAD PUSH2 0x52B3 DUP2 PUSH2 0x505B JUMP JUMPDEST PUSH1 0x1 DUP3 DUP2 AND DUP1 ISZERO PUSH2 0x52CB JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x52E0 JUMPI PUSH2 0x530F JUMP JUMPDEST PUSH1 0xFF NOT DUP5 AND DUP8 MSTORE DUP3 ISZERO ISZERO DUP4 MUL DUP8 ADD SWAP5 POP PUSH2 0x530F JUMP JUMPDEST DUP8 PUSH1 0x0 MSTORE PUSH1 0x20 DUP1 PUSH1 0x0 KECCAK256 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x5306 JUMPI DUP2 SLOAD DUP11 DUP3 ADD MSTORE SWAP1 DUP5 ADD SWAP1 DUP3 ADD PUSH2 0x52ED JUMP JUMPDEST POP POP POP DUP3 DUP8 ADD SWAP5 POP JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP2 DUP2 SUB PUSH2 0x5326 JUMPI POP POP JUMP JUMPDEST PUSH2 0x5330 DUP3 SLOAD PUSH2 0x505B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x5347 JUMPI PUSH2 0x5347 PUSH2 0x4571 JUMP JUMPDEST PUSH2 0x5355 DUP2 PUSH2 0x5213 DUP5 SLOAD PUSH2 0x505B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x5383 JUMPI PUSH1 0x0 DUP4 ISZERO PUSH2 0x5371 JUMPI POP DUP5 DUP3 ADD SLOAD JUMPDEST PUSH2 0x537B DUP5 DUP3 PUSH2 0x51D7 JUMP JUMPDEST DUP6 SSTORE POP PUSH2 0x3258 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH1 0x1F NOT DUP5 AND SWAP1 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 DUP5 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x53BD JUMPI DUP3 DUP7 ADD SLOAD DUP3 SSTORE PUSH1 0x1 SWAP6 DUP7 ADD SWAP6 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD PUSH2 0x539D JUMP JUMPDEST POP DUP6 DUP4 LT ISZERO PUSH2 0x5295 JUMPI SWAP4 ADD SLOAD PUSH1 0x0 NOT PUSH1 0xF8 PUSH1 0x3 DUP8 SWAP1 SHL AND SHR NOT AND SWAP1 SWAP3 SSTORE POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID 0xE5 PUSH3 0x760EAA DUP2 PUSH30 0x85EC1BF58364C4D65ADB65D99D113C6785EF9AA66567076C954C1D97560A 0xEF SAR SWAP7 0x26 0xAF 0x2C 0xCF 0xF8 0xA6 0xAC PUSH15 0x245C44C307E795E9C16F7211C611A3 ISZERO XOR SWAP11 0xB7 0xA9 0x24 0x4D CREATE DUP5 DUP2 0x22 ISZERO NUMBER ISZERO 0xAF PUSH18 0xFE140F3DB0FE014031783B0946B8C9D2E336 ADDMOD SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC9A95E87C5AF084BF5DB849 SHR GASPRICE PUSH6 0x15DA9DD6DA39 0xB2 0x4B 0xE 0xB0 0xAF ADDMOD 0xD7 0xB9 0xCD DUP1 DUP14 SWAP2 0xC6 0xAE PUSH7 0xDA7AFBD0BECBE4 SWAP14 0xDF SWAP6 0xA9 0x25 PUSH10 0x1D87F1BB5E3D4323603 0xE MCOPY BLOBBASEFEE PC JUMPDEST PUSH14 0x10DAC8C06A04BEC0B551627DAD28 0xBC STOP 0xD6 MLOAD PUSH12 0xCAACD1C7B345FCDB5211334 0xE4 DUP8 0xB3 DUP16 SGT SGT CALLVALUE AND GAS 0xC2 0xB3 PUSH2 0xF089 PUSH7 0xC9FCFF3A953FA7 0xD9 0xD9 0xC2 DUP7 SHL PUSH32 0xB50445BCBC2F8787176B8AC6BF7215B4ADCC1E069BF4AB82D9AB1DF05A57A91 0xD4 0x25 SWAP4 JUMPDEST PUSH15 0x3ACDF00BA9EF08B5F2C22768276611 0xB9 0xAF SMOD DUP12 0xF6 0xC2 0x4F LOG3 PUSH12 0x34EC5E9F2EB061FAA2646970 PUSH7 0x73582212200540 0xB0 SWAP2 SWAP2 0xEB 0xD8 LOG1 STOP NUMBER 0x27 0xF6 ADDRESS SWAP15 0xCD NUMBER AND DUP5 SWAP16 0xD SWAP9 PUSH32 0x7010A72AEADE96F57E0164736F6C634300081800330000000000000000000000 ", + "sourceMap": "2612:28467:46:-:0;;;1171:4:3;1128:48;;8180:53:46;;;;;;;;;-1:-1:-1;8204:22:46;:20;:22::i;:::-;2612:28467;;7711:422:2;8870:21;7900:15;;;;;;;7896:76;;;7938:23;;-1:-1:-1;;;7938:23:2;;;;;;;;;;;7896:76;7985:14;;-1:-1:-1;;;;;7985:14:2;;;:34;7981:146;;8035:33;;-1:-1:-1;;;;;;8035:33:2;-1:-1:-1;;;;;8035:33:2;;;;;8087:29;;158:50:61;;;8087:29:2;;146:2:61;131:18;8087:29:2;;;;;;;7981:146;7760:373;7711:422::o;14:200:61:-;2612:28467:46;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@BOOKING_OPERATOR_ROLE_10606": { + "entryPoint": null, + "id": 10606, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@BOT_ADMIN_ROLE_10582": { + "entryPoint": null, + "id": 10582, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@CHEQUE_OPERATOR_ROLE_10588": { + "entryPoint": null, + "id": 10588, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@DEFAULT_ADMIN_ROLE_28": { + "entryPoint": null, + "id": 28, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@DOMAIN_TYPEHASH_12007": { + "entryPoint": null, + "id": 12007, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@GAS_WITHDRAWER_ROLE_10594": { + "entryPoint": null, + "id": 10594, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@MESSENGER_CHEQUE_TYPEHASH_12003": { + "entryPoint": null, + "id": 12003, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@SERVICE_ADMIN_ROLE_10612": { + "entryPoint": null, + "id": 10612, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@UPGRADER_ROLE_10576": { + "entryPoint": null, + "id": 10576, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@UPGRADE_INTERFACE_VERSION_864": { + "entryPoint": null, + "id": 864, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@WITHDRAWER_ROLE_10600": { + "entryPoint": null, + "id": 10600, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_10829": { + "entryPoint": null, + "id": 10829, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@__AccessControl_init_63": { + "entryPoint": 11586, + "id": 63, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@__ChequeManager_init_12145": { + "entryPoint": 11596, + "id": 12145, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@__GasMoneyManager_init_12733": { + "entryPoint": 11786, + "id": 12733, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@__UUPSUpgradeable_init_894": { + "entryPoint": null, + "id": 894, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_addPublicKey_17745": { + "entryPoint": 14687, + "id": 17745, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_addServiceCapability_17271": { + "entryPoint": 13886, + "id": 17271, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_addService_17118": { + "entryPoint": 11981, + "id": 17118, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@_addSupportedToken_17606": { + "entryPoint": 13678, + "id": 17606, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_addWantedService_17524": { + "entryPoint": 11306, + "id": 17524, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_add_9957": { + "entryPoint": 16052, + "id": 9957, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_at_10091": { + "entryPoint": 15906, + "id": 10091, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_authorizeUpgrade_10929": { + "entryPoint": 12275, + "id": 10929, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_callOptionalReturn_4908": { + "entryPoint": 15948, + "id": 4908, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_checkInitializing_762": { + "entryPoint": 15534, + "id": 762, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_checkNonPayable_3873": { + "entryPoint": 16857, + "id": 3873, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_checkNotDelegated_970": { + "entryPoint": 13048, + "id": 970, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_checkPrefundSpent_10993": { + "entryPoint": 12778, + "id": 10993, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_checkProxy_954": { + "entryPoint": 12133, + "id": 954, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_checkRole_129": { + "entryPoint": 11296, + "id": 129, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_checkRole_150": { + "entryPoint": 15255, + "id": 150, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_checkServiceExists_17495": { + "entryPoint": 13493, + "id": 17495, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_contains_10060": { + "entryPoint": 15882, + "id": 10060, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_getAccessControlEnumerableStorage_401": { + "entryPoint": 14396, + "id": 401, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getAccessControlStorage_46": { + "entryPoint": 11448, + "id": 46, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getCMAccountStorage_10634": { + "entryPoint": 11750, + "id": 10634, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getChequeManagerStorage_12060": { + "entryPoint": 11412, + "id": 12060, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getGasMoneyStorage_12679": { + "entryPoint": 13642, + "id": 12679, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getInitializableStorage_839": { + "entryPoint": 11550, + "id": 839, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getPartnerConfigurationStorage_17002": { + "entryPoint": 11129, + "id": 17002, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getReentrancyGuardStorage_3006": { + "entryPoint": 15838, + "id": 3006, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_grantRole_315": { + "entryPoint": 15352, + "id": 315, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_grantRole_545": { + "entryPoint": 11484, + "id": 545, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_isInitializing_830": { + "entryPoint": 16388, + "id": 830, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_length_10074": { + "entryPoint": null, + "id": 10074, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@_msgSender_2784": { + "entryPoint": null, + "id": 2784, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_nonReentrantAfter_3088": { + "entryPoint": 13476, + "id": 3088, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_nonReentrantBefore_3072": { + "entryPoint": 13121, + "id": 3072, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_removePublicKey_17784": { + "entryPoint": 14843, + "id": 17784, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_removeServiceCapability_17349": { + "entryPoint": 14093, + "id": 17349, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_removeService_17153": { + "entryPoint": 15058, + "id": 17153, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_removeSupportedToken_17640": { + "entryPoint": 13954, + "id": 17640, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_removeWantedService_17553": { + "entryPoint": 11878, + "id": 17553, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_remove_10041": { + "entryPoint": 16414, + "id": 10041, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_revert_5480": { + "entryPoint": 17161, + "id": 5480, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_revokeRole_361": { + "entryPoint": 15571, + "id": 361, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_revokeRole_585": { + "entryPoint": 11821, + "id": 585, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_setGasMoneyWithdrawal_12867": { + "entryPoint": 13796, + "id": 12867, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_setImplementation_3653": { + "entryPoint": 16647, + "id": 3653, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_setOffChainPaymentSupported_17685": { + "entryPoint": 14532, + "id": 17685, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_setServiceCapabilities_17241": { + "entryPoint": 14996, + "id": 17241, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_setServiceFee_17182": { + "entryPoint": 11940, + "id": 17182, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_setServiceRestrictedRate_17211": { + "entryPoint": 14619, + "id": 17211, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_throwError_6376": { + "entryPoint": 16203, + "id": 6376, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_upgradeToAndCallUUPS_1021": { + "entryPoint": 12598, + "id": 1021, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_values_10105": { + "entryPoint": 15163, + "id": 10105, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@_withdrawGasMoney_12835": { + "entryPoint": 13175, + "id": 12835, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@acceptCancellation_11881": { + "entryPoint": 9222, + "id": 11881, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@addMessengerBot_11769": { + "entryPoint": 6370, + "id": 11769, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@addPublicKey_11712": { + "entryPoint": 9580, + "id": 11712, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@addServiceCapability_11339": { + "entryPoint": 7761, + "id": 11339, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@addService_11223": { + "entryPoint": 6066, + "id": 11223, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@addSupportedToken_11681": { + "entryPoint": 7452, + "id": 11681, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@addWantedServices_11554": { + "entryPoint": 4351, + "id": 11554, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@add_10127": { + "entryPoint": 15298, + "id": 10127, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@add_10257": { + "entryPoint": 15513, + "id": 10257, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@at_10353": { + "entryPoint": 14432, + "id": 10353, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@buyBookingToken_11086": { + "entryPoint": 9614, + "id": 11086, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@cashInCheque_12530": { + "entryPoint": 6904, + "id": 12530, + "parameterSlots": 8, + "returnSlots": 0 + }, + "@contains_10163": { + "entryPoint": 15874, + "id": 10163, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@contains_10311": { + "entryPoint": 14072, + "id": 10311, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@counterCancellation_11930": { + "entryPoint": 7519, + "id": 11930, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@finalizeCancellation_11975": { + "entryPoint": 4187, + "id": 11975, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@functionDelegateCall_5398": { + "entryPoint": 16739, + "id": 5398, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@getAddressSlot_5620": { + "entryPoint": null, + "id": 5620, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getAllServiceHashes_17368": { + "entryPoint": 6043, + "id": 17368, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getBookingTokenAddress_10862": { + "entryPoint": 6340, + "id": 10862, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getDomainSeparator_12161": { + "entryPoint": 10705, + "id": 12161, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getGasMoneyWithdrawalForAccount_12915": { + "entryPoint": 10716, + "id": 12915, + "parameterSlots": 1, + "returnSlots": 2 + }, + "@getGasMoneyWithdrawal_12888": { + "entryPoint": 7418, + "id": 12888, + "parameterSlots": 0, + "returnSlots": 2 + }, + "@getImplementation_3626": { + "entryPoint": 15724, + "id": 3626, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getLastCashIn_12573": { + "entryPoint": 8847, + "id": 12573, + "parameterSlots": 2, + "returnSlots": 4 + }, + "@getManagerAddress_10846": { + "entryPoint": 9280, + "id": 10846, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getPrefundAmount_10878": { + "entryPoint": 9307, + "id": 10878, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getPublicKey_17835": { + "entryPoint": 8358, + "id": 17835, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getPublicKeysAddresses_17803": { + "entryPoint": 10527, + "id": 17803, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getRoleAdmin_171": { + "entryPoint": 5016, + "id": 171, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getRoleMemberCount_482": { + "entryPoint": 9543, + "id": 482, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getRoleMember_460": { + "entryPoint": 8747, + "id": 460, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@getRoleMembers_505": { + "entryPoint": 9050, + "id": 505, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getServiceCapabilities_11512": { + "entryPoint": 5248, + "id": 11512, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getServiceCapabilities_17473": { + "entryPoint": 6640, + "id": 17473, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getServiceFee_11481": { + "entryPoint": 4000, + "id": 11481, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getServiceFee_17420": { + "entryPoint": 10553, + "id": 17420, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getServiceHash_11380": { + "entryPoint": 11178, + "id": 11380, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getServiceRestrictedRate_11496": { + "entryPoint": 9208, + "id": 11496, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getServiceRestrictedRate_17446": { + "entryPoint": 8698, + "id": 17446, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getService_17394": { + "entryPoint": 9852, + "id": 17394, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getSupportedServices_11466": { + "entryPoint": 7905, + "id": 11466, + "parameterSlots": 0, + "returnSlots": 2 + }, + "@getSupportedTokens_17660": { + "entryPoint": 9798, + "id": 17660, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getTotalChequePayments_12627": { + "entryPoint": 10506, + "id": 12627, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getWantedServiceHashes_17572": { + "entryPoint": 3968, + "id": 17572, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getWantedServices_11653": { + "entryPoint": 3670, + "id": 11653, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@grantRole_190": { + "entryPoint": 5214, + "id": 190, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@hasRole_116": { + "entryPoint": 8793, + "id": 116, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@hashMessengerCheque_12196": { + "entryPoint": 6179, + "id": 12196, + "parameterSlots": 7, + "returnSlots": 1 + }, + "@hashTypedDataV4_12235": { + "entryPoint": 9483, + "id": 12235, + "parameterSlots": 7, + "returnSlots": 1 + }, + "@initialize_10825": { + "entryPoint": 5262, + "id": 10825, + "parameterSlots": 5, + "returnSlots": 0 + }, + "@initiateCancellation_11861": { + "entryPoint": 11018, + "id": 11861, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@isBotAllowed_10944": { + "entryPoint": 10149, + "id": 10944, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@length_10326": { + "entryPoint": 14677, + "id": 10326, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@mintBookingToken_11059": { + "entryPoint": 10175, + "id": 11059, + "parameterSlots": 7, + "returnSlots": 0 + }, + "@offChainPaymentSupported_17702": { + "entryPoint": 4992, + "id": 17702, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@onERC721Received_11123": { + "entryPoint": null, + "id": 11123, + "parameterSlots": 4, + "returnSlots": 1 + }, + "@proxiableUUID_912": { + "entryPoint": 6549, + "id": 912, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@recordExpiration_11104": { + "entryPoint": 10333, + "id": 11104, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@recoverSigner_12279": { + "entryPoint": 11368, + "id": 12279, + "parameterSlots": 8, + "returnSlots": 1 + }, + "@recover_6133": { + "entryPoint": 15310, + "id": 6133, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@rejectCancellation_11904": { + "entryPoint": 7703, + "id": 11904, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@removeMessengerBot_11798": { + "entryPoint": 9328, + "id": 11798, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@removePublicKey_11726": { + "entryPoint": 10473, + "id": 11726, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@removeServiceCapability_11363": { + "entryPoint": 8587, + "id": 11363, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@removeService_11243": { + "entryPoint": 10911, + "id": 11243, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@removeSupportedToken_11695": { + "entryPoint": 7872, + "id": 11695, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@removeWantedServices_11596": { + "entryPoint": 5757, + "id": 11596, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@remove_10145": { + "entryPoint": 15712, + "id": 10145, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@remove_10284": { + "entryPoint": 15691, + "id": 10284, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@renounceRole_232": { + "entryPoint": 5706, + "id": 232, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@revokeRole_209": { + "entryPoint": 9824, + "id": 209, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@safeTransfer_4586": { + "entryPoint": 14444, + "id": 4586, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@sendValue_5279": { + "entryPoint": 12895, + "id": 5279, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@setGasMoneyWithdrawal_11835": { + "entryPoint": 7485, + "id": 11835, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@setLastCashIn_12611": { + "entryPoint": 13535, + "id": 12611, + "parameterSlots": 6, + "returnSlots": 0 + }, + "@setOffChainPaymentSupported_11667": { + "entryPoint": 9017, + "id": 11667, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@setServiceCapabilities_11315": { + "entryPoint": 10596, + "id": 11315, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@setServiceFee_11267": { + "entryPoint": 5923, + "id": 11267, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@setServiceRestrictedRate_11291": { + "entryPoint": 9095, + "id": 11291, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@supportsInterface_3146": { + "entryPoint": null, + "id": 3146, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@supportsInterface_435": { + "entryPoint": 3627, + "id": 435, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@supportsInterface_91": { + "entryPoint": 11076, + "id": 91, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@transferERC20_11156": { + "entryPoint": 8934, + "id": 11156, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@transferERC721_11193": { + "entryPoint": 4014, + "id": 11193, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@tryRecover_6103": { + "entryPoint": 16126, + "id": 6103, + "parameterSlots": 2, + "returnSlots": 3 + }, + "@tryRecover_6291": { + "entryPoint": 16888, + "id": 6291, + "parameterSlots": 4, + "returnSlots": 3 + }, + "@upgradeToAndCall_3689": { + "entryPoint": 15752, + "id": 3689, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@upgradeToAndCall_932": { + "entryPoint": 6309, + "id": 932, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@values_10226": { + "entryPoint": 11165, + "id": 10226, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@values_10383": { + "entryPoint": null, + "id": 10383, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@verifyCallResultFromTarget_5438": { + "entryPoint": 17085, + "id": 5438, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@verifyCheque_12414": { + "entryPoint": 4535, + "id": 12414, + "parameterSlots": 8, + "returnSlots": 2 + }, + "@withdrawCancellation_11954": { + "entryPoint": 5048, + "id": 11954, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@withdrawGasMoney_11818": { + "entryPoint": 6578, + "id": 11818, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@withdraw_11022": { + "entryPoint": 10775, + "id": 11022, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_decode_array_string_dyn": { + "entryPoint": 18230, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_bytes": { + "entryPoint": 17886, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address": { + "entryPoint": 19346, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address_fromMemory": { + "entryPoint": 20730, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address_payablet_uint256": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_addresst_address": { + "entryPoint": 19793, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_addresst_addresst_addresst_uint256t_uint256t_uint256t_uint256": { + "entryPoint": 19079, + "id": null, + "parameterSlots": 2, + "returnSlots": 7 + }, + "abi_decode_tuple_t_addresst_addresst_addresst_uint256t_uint256t_uint256t_uint256t_bytes_memory_ptr": { + "entryPoint": 18440, + "id": null, + "parameterSlots": 2, + "returnSlots": 8 + }, + "abi_decode_tuple_t_addresst_addresst_uint256t_addresst_address": { + "entryPoint": 18776, + "id": null, + "parameterSlots": 2, + "returnSlots": 5 + }, + "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr": { + "entryPoint": 17972, + "id": null, + "parameterSlots": 2, + "returnSlots": 4 + }, + "abi_decode_tuple_t_addresst_bytes_memory_ptr": { + "entryPoint": 19189, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_addresst_string_memory_ptrt_uint256t_uint256t_contract$_IERC20_$4513t_uint256t_bool": { + "entryPoint": 20106, + "id": null, + "parameterSlots": 2, + "returnSlots": 7 + }, + "abi_decode_tuple_t_addresst_uint256": { + "entryPoint": 19288, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_array$_t_string_memory_ptr_$dyn_memory_ptr": { + "entryPoint": 18388, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bool": { + "entryPoint": 19866, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bool_fromMemory": { + "entryPoint": 20501, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32": { + "entryPoint": 18620, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32_fromMemory": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32t_address": { + "entryPoint": 18728, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_bytes32t_uint256": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_bytes4": { + "entryPoint": 17457, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_contract$_IERC20_$4513t_addresst_uint256": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_contract$_IERC721_$5067t_addresst_uint256": { + "entryPoint": 18131, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_string_memory_ptr": { + "entryPoint": 18079, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_string_memory_ptr_fromMemory": { + "entryPoint": 20364, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_string_memory_ptrt_array$_t_string_memory_ptr_$dyn_memory_ptr": { + "entryPoint": 20253, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_string_memory_ptrt_bool": { + "entryPoint": 19960, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr": { + "entryPoint": 19445, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_string_memory_ptrt_uint256": { + "entryPoint": 18880, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_string_memory_ptrt_uint256t_boolt_array$_t_string_memory_ptr_$dyn_memory_ptr": { + "entryPoint": 18962, + "id": null, + "parameterSlots": 2, + "returnSlots": 4 + }, + "abi_decode_tuple_t_uint256": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256_fromMemory": { + "entryPoint": 20629, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256t_uint16t_uint16": { + "entryPoint": 18668, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_uint256t_uint256": { + "entryPoint": 18196, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_uint256t_uint256t_contract$_IERC20_$4513": { + "entryPoint": 20030, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_uint256t_uint256t_uint16t_uint16": { + "entryPoint": 19375, + "id": null, + "parameterSlots": 2, + "returnSlots": 4 + }, + "abi_decode_uint16": { + "entryPoint": 18645, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_array_string_dyn": { + "entryPoint": 17579, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_string": { + "entryPoint": 17535, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_struct_Service": { + "entryPoint": 19534, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": 20473, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_string_storage__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": 21157, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": 19268, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed": { + "entryPoint": 20853, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address_t_string_memory_ptr_t_uint256_t_uint256_t_contract$_IERC20_$4513_t_uint256_t_bool__to_t_address_t_address_t_string_memory_ptr_t_uint256_t_uint256_t_address_t_uint256_t_bool__fromStack_library_reversed": { + "entryPoint": 20759, + "id": null, + "parameterSlots": 9, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_uint256_t_uint256__to_t_address_t_address_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 7, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_library_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": { + "entryPoint": 18595, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_uint256_t_uint16_t_uint16__to_t_address_t_uint256_t_uint16_t_uint16__fromStack_library_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 5, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_library_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_uint256_t_uint256_t_contract$_IERC20_$4513__to_t_address_t_uint256_t_uint256_t_address__fromStack_library_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 5, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_uint256_t_uint256_t_uint16_t_uint16__to_t_address_t_uint256_t_uint256_t_uint16_t_uint16__fromStack_library_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 6, + "returnSlots": 1 + }, + "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 19895, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 17688, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_array$_t_string_memory_ptr_$dyn_memory_ptr__to_t_array$_t_string_memory_ptr_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 17669, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_array$_t_string_memory_ptr_$dyn_memory_ptr_t_array$_t_struct$_Service_$16962_memory_ptr_$dyn_memory_ptr__to_t_array$_t_string_memory_ptr_$dyn_memory_ptr_t_array$_t_struct$_Service_$16962_memory_ptr_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 19660, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32_t_address_t_address_t_address_t_uint256_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_address_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 9, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256__to_t_bytes32_t_bytes32_t_bytes32_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 5, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 5, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed": { + "entryPoint": 19774, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_struct$_Service_$16962_memory_ptr__to_t_struct$_Service_$16962_memory_ptr__fromStack_reversed": { + "entryPoint": 20087, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": 19332, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": 19839, + "id": null, + "parameterSlots": 5, + "returnSlots": 1 + }, + "allocate_memory": { + "entryPoint": 17799, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_allocation_size_bytes": { + "entryPoint": 17847, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_dataslot_string_storage": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "checked_add_t_uint256": { + "entryPoint": 20711, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_div_t_uint256": { + "entryPoint": 20677, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_mul_t_uint256": { + "entryPoint": 20654, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_sub_t_uint256": { + "entryPoint": 20552, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "clean_up_bytearray_end_slots_string_storage": { + "entryPoint": 20879, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage": { + "entryPoint": 20972, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "copy_byte_array_to_storage_from_t_string_storage_ptr_to_t_string_storage": { + "entryPoint": 21275, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "copy_memory_to_memory_with_cleanup": { + "entryPoint": 17499, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "extract_byte_array_length": { + "entryPoint": 20571, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "extract_used_part_and_set_length_of_short_byte_array": { + "entryPoint": 20951, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "panic_error_0x11": { + "entryPoint": 20530, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x21": { + "entryPoint": 21501, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x31": { + "entryPoint": 21479, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x32": { + "entryPoint": 20342, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x41": { + "entryPoint": 17777, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "validator_revert_address": { + "entryPoint": 17756, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_bool": { + "entryPoint": 18948, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nativeSrc": "0:39651:61", + "nodeType": "YulBlock", + "src": "0:39651:61", + "statements": [ + { + "nativeSrc": "6:3:61", + "nodeType": "YulBlock", + "src": "6:3:61", + "statements": [] + }, + { + "body": { + "nativeSrc": "83:217:61", + "nodeType": "YulBlock", + "src": "83:217:61", + "statements": [ + { + "body": { + "nativeSrc": "129:16:61", + "nodeType": "YulBlock", + "src": "129:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "138:1:61", + "nodeType": "YulLiteral", + "src": "138:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "141:1:61", + "nodeType": "YulLiteral", + "src": "141:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "131:6:61", + "nodeType": "YulIdentifier", + "src": "131:6:61" + }, + "nativeSrc": "131:12:61", + "nodeType": "YulFunctionCall", + "src": "131:12:61" + }, + "nativeSrc": "131:12:61", + "nodeType": "YulExpressionStatement", + "src": "131:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "104:7:61", + "nodeType": "YulIdentifier", + "src": "104:7:61" + }, + { + "name": "headStart", + "nativeSrc": "113:9:61", + "nodeType": "YulIdentifier", + "src": "113:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "100:3:61", + "nodeType": "YulIdentifier", + "src": "100:3:61" + }, + "nativeSrc": "100:23:61", + "nodeType": "YulFunctionCall", + "src": "100:23:61" + }, + { + "kind": "number", + "nativeSrc": "125:2:61", + "nodeType": "YulLiteral", + "src": "125:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "96:3:61", + "nodeType": "YulIdentifier", + "src": "96:3:61" + }, + "nativeSrc": "96:32:61", + "nodeType": "YulFunctionCall", + "src": "96:32:61" + }, + "nativeSrc": "93:52:61", + "nodeType": "YulIf", + "src": "93:52:61" + }, + { + "nativeSrc": "154:36:61", + "nodeType": "YulVariableDeclaration", + "src": "154:36:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "180:9:61", + "nodeType": "YulIdentifier", + "src": "180:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "167:12:61", + "nodeType": "YulIdentifier", + "src": "167:12:61" + }, + "nativeSrc": "167:23:61", + "nodeType": "YulFunctionCall", + "src": "167:23:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "158:5:61", + "nodeType": "YulTypedName", + "src": "158:5:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "254:16:61", + "nodeType": "YulBlock", + "src": "254:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "263:1:61", + "nodeType": "YulLiteral", + "src": "263:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "266:1:61", + "nodeType": "YulLiteral", + "src": "266:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "256:6:61", + "nodeType": "YulIdentifier", + "src": "256:6:61" + }, + "nativeSrc": "256:12:61", + "nodeType": "YulFunctionCall", + "src": "256:12:61" + }, + "nativeSrc": "256:12:61", + "nodeType": "YulExpressionStatement", + "src": "256:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "212:5:61", + "nodeType": "YulIdentifier", + "src": "212:5:61" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "223:5:61", + "nodeType": "YulIdentifier", + "src": "223:5:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "234:3:61", + "nodeType": "YulLiteral", + "src": "234:3:61", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "239:10:61", + "nodeType": "YulLiteral", + "src": "239:10:61", + "type": "", + "value": "0xffffffff" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "230:3:61", + "nodeType": "YulIdentifier", + "src": "230:3:61" + }, + "nativeSrc": "230:20:61", + "nodeType": "YulFunctionCall", + "src": "230:20:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "219:3:61", + "nodeType": "YulIdentifier", + "src": "219:3:61" + }, + "nativeSrc": "219:32:61", + "nodeType": "YulFunctionCall", + "src": "219:32:61" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "209:2:61", + "nodeType": "YulIdentifier", + "src": "209:2:61" + }, + "nativeSrc": "209:43:61", + "nodeType": "YulFunctionCall", + "src": "209:43:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "202:6:61", + "nodeType": "YulIdentifier", + "src": "202:6:61" + }, + "nativeSrc": "202:51:61", + "nodeType": "YulFunctionCall", + "src": "202:51:61" + }, + "nativeSrc": "199:71:61", + "nodeType": "YulIf", + "src": "199:71:61" + }, + { + "nativeSrc": "279:15:61", + "nodeType": "YulAssignment", + "src": "279:15:61", + "value": { + "name": "value", + "nativeSrc": "289:5:61", + "nodeType": "YulIdentifier", + "src": "289:5:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "279:6:61", + "nodeType": "YulIdentifier", + "src": "279:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes4", + "nativeSrc": "14:286:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "49:9:61", + "nodeType": "YulTypedName", + "src": "49:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "60:7:61", + "nodeType": "YulTypedName", + "src": "60:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "72:6:61", + "nodeType": "YulTypedName", + "src": "72:6:61", + "type": "" + } + ], + "src": "14:286:61" + }, + { + "body": { + "nativeSrc": "400:92:61", + "nodeType": "YulBlock", + "src": "400:92:61", + "statements": [ + { + "nativeSrc": "410:26:61", + "nodeType": "YulAssignment", + "src": "410:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "422:9:61", + "nodeType": "YulIdentifier", + "src": "422:9:61" + }, + { + "kind": "number", + "nativeSrc": "433:2:61", + "nodeType": "YulLiteral", + "src": "433:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "418:3:61", + "nodeType": "YulIdentifier", + "src": "418:3:61" + }, + "nativeSrc": "418:18:61", + "nodeType": "YulFunctionCall", + "src": "418:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "410:4:61", + "nodeType": "YulIdentifier", + "src": "410:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "452:9:61", + "nodeType": "YulIdentifier", + "src": "452:9:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "477:6:61", + "nodeType": "YulIdentifier", + "src": "477:6:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "470:6:61", + "nodeType": "YulIdentifier", + "src": "470:6:61" + }, + "nativeSrc": "470:14:61", + "nodeType": "YulFunctionCall", + "src": "470:14:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "463:6:61", + "nodeType": "YulIdentifier", + "src": "463:6:61" + }, + "nativeSrc": "463:22:61", + "nodeType": "YulFunctionCall", + "src": "463:22:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "445:6:61", + "nodeType": "YulIdentifier", + "src": "445:6:61" + }, + "nativeSrc": "445:41:61", + "nodeType": "YulFunctionCall", + "src": "445:41:61" + }, + "nativeSrc": "445:41:61", + "nodeType": "YulExpressionStatement", + "src": "445:41:61" + } + ] + }, + "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", + "nativeSrc": "305:187:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "369:9:61", + "nodeType": "YulTypedName", + "src": "369:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "380:6:61", + "nodeType": "YulTypedName", + "src": "380:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "391:4:61", + "nodeType": "YulTypedName", + "src": "391:4:61", + "type": "" + } + ], + "src": "305:187:61" + }, + { + "body": { + "nativeSrc": "563:184:61", + "nodeType": "YulBlock", + "src": "563:184:61", + "statements": [ + { + "nativeSrc": "573:10:61", + "nodeType": "YulVariableDeclaration", + "src": "573:10:61", + "value": { + "kind": "number", + "nativeSrc": "582:1:61", + "nodeType": "YulLiteral", + "src": "582:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "577:1:61", + "nodeType": "YulTypedName", + "src": "577:1:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "642:63:61", + "nodeType": "YulBlock", + "src": "642:63:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nativeSrc": "667:3:61", + "nodeType": "YulIdentifier", + "src": "667:3:61" + }, + { + "name": "i", + "nativeSrc": "672:1:61", + "nodeType": "YulIdentifier", + "src": "672:1:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "663:3:61", + "nodeType": "YulIdentifier", + "src": "663:3:61" + }, + "nativeSrc": "663:11:61", + "nodeType": "YulFunctionCall", + "src": "663:11:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "686:3:61", + "nodeType": "YulIdentifier", + "src": "686:3:61" + }, + { + "name": "i", + "nativeSrc": "691:1:61", + "nodeType": "YulIdentifier", + "src": "691:1:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "682:3:61", + "nodeType": "YulIdentifier", + "src": "682:3:61" + }, + "nativeSrc": "682:11:61", + "nodeType": "YulFunctionCall", + "src": "682:11:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "676:5:61", + "nodeType": "YulIdentifier", + "src": "676:5:61" + }, + "nativeSrc": "676:18:61", + "nodeType": "YulFunctionCall", + "src": "676:18:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "656:6:61", + "nodeType": "YulIdentifier", + "src": "656:6:61" + }, + "nativeSrc": "656:39:61", + "nodeType": "YulFunctionCall", + "src": "656:39:61" + }, + "nativeSrc": "656:39:61", + "nodeType": "YulExpressionStatement", + "src": "656:39:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "603:1:61", + "nodeType": "YulIdentifier", + "src": "603:1:61" + }, + { + "name": "length", + "nativeSrc": "606:6:61", + "nodeType": "YulIdentifier", + "src": "606:6:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "600:2:61", + "nodeType": "YulIdentifier", + "src": "600:2:61" + }, + "nativeSrc": "600:13:61", + "nodeType": "YulFunctionCall", + "src": "600:13:61" + }, + "nativeSrc": "592:113:61", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "614:19:61", + "nodeType": "YulBlock", + "src": "614:19:61", + "statements": [ + { + "nativeSrc": "616:15:61", + "nodeType": "YulAssignment", + "src": "616:15:61", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "625:1:61", + "nodeType": "YulIdentifier", + "src": "625:1:61" + }, + { + "kind": "number", + "nativeSrc": "628:2:61", + "nodeType": "YulLiteral", + "src": "628:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "621:3:61", + "nodeType": "YulIdentifier", + "src": "621:3:61" + }, + "nativeSrc": "621:10:61", + "nodeType": "YulFunctionCall", + "src": "621:10:61" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "616:1:61", + "nodeType": "YulIdentifier", + "src": "616:1:61" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "596:3:61", + "nodeType": "YulBlock", + "src": "596:3:61", + "statements": [] + }, + "src": "592:113:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nativeSrc": "725:3:61", + "nodeType": "YulIdentifier", + "src": "725:3:61" + }, + { + "name": "length", + "nativeSrc": "730:6:61", + "nodeType": "YulIdentifier", + "src": "730:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "721:3:61", + "nodeType": "YulIdentifier", + "src": "721:3:61" + }, + "nativeSrc": "721:16:61", + "nodeType": "YulFunctionCall", + "src": "721:16:61" + }, + { + "kind": "number", + "nativeSrc": "739:1:61", + "nodeType": "YulLiteral", + "src": "739:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "714:6:61", + "nodeType": "YulIdentifier", + "src": "714:6:61" + }, + "nativeSrc": "714:27:61", + "nodeType": "YulFunctionCall", + "src": "714:27:61" + }, + "nativeSrc": "714:27:61", + "nodeType": "YulExpressionStatement", + "src": "714:27:61" + } + ] + }, + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "497:250:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nativeSrc": "541:3:61", + "nodeType": "YulTypedName", + "src": "541:3:61", + "type": "" + }, + { + "name": "dst", + "nativeSrc": "546:3:61", + "nodeType": "YulTypedName", + "src": "546:3:61", + "type": "" + }, + { + "name": "length", + "nativeSrc": "551:6:61", + "nodeType": "YulTypedName", + "src": "551:6:61", + "type": "" + } + ], + "src": "497:250:61" + }, + { + "body": { + "nativeSrc": "802:221:61", + "nodeType": "YulBlock", + "src": "802:221:61", + "statements": [ + { + "nativeSrc": "812:26:61", + "nodeType": "YulVariableDeclaration", + "src": "812:26:61", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "832:5:61", + "nodeType": "YulIdentifier", + "src": "832:5:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "826:5:61", + "nodeType": "YulIdentifier", + "src": "826:5:61" + }, + "nativeSrc": "826:12:61", + "nodeType": "YulFunctionCall", + "src": "826:12:61" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "816:6:61", + "nodeType": "YulTypedName", + "src": "816:6:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "854:3:61", + "nodeType": "YulIdentifier", + "src": "854:3:61" + }, + { + "name": "length", + "nativeSrc": "859:6:61", + "nodeType": "YulIdentifier", + "src": "859:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "847:6:61", + "nodeType": "YulIdentifier", + "src": "847:6:61" + }, + "nativeSrc": "847:19:61", + "nodeType": "YulFunctionCall", + "src": "847:19:61" + }, + "nativeSrc": "847:19:61", + "nodeType": "YulExpressionStatement", + "src": "847:19:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "914:5:61", + "nodeType": "YulIdentifier", + "src": "914:5:61" + }, + { + "kind": "number", + "nativeSrc": "921:4:61", + "nodeType": "YulLiteral", + "src": "921:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "910:3:61", + "nodeType": "YulIdentifier", + "src": "910:3:61" + }, + "nativeSrc": "910:16:61", + "nodeType": "YulFunctionCall", + "src": "910:16:61" + }, + { + "arguments": [ + { + "name": "pos", + "nativeSrc": "932:3:61", + "nodeType": "YulIdentifier", + "src": "932:3:61" + }, + { + "kind": "number", + "nativeSrc": "937:4:61", + "nodeType": "YulLiteral", + "src": "937:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "928:3:61", + "nodeType": "YulIdentifier", + "src": "928:3:61" + }, + "nativeSrc": "928:14:61", + "nodeType": "YulFunctionCall", + "src": "928:14:61" + }, + { + "name": "length", + "nativeSrc": "944:6:61", + "nodeType": "YulIdentifier", + "src": "944:6:61" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "875:34:61", + "nodeType": "YulIdentifier", + "src": "875:34:61" + }, + "nativeSrc": "875:76:61", + "nodeType": "YulFunctionCall", + "src": "875:76:61" + }, + "nativeSrc": "875:76:61", + "nodeType": "YulExpressionStatement", + "src": "875:76:61" + }, + { + "nativeSrc": "960:57:61", + "nodeType": "YulAssignment", + "src": "960:57:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nativeSrc": "975:3:61", + "nodeType": "YulIdentifier", + "src": "975:3:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nativeSrc": "988:6:61", + "nodeType": "YulIdentifier", + "src": "988:6:61" + }, + { + "kind": "number", + "nativeSrc": "996:2:61", + "nodeType": "YulLiteral", + "src": "996:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "984:3:61", + "nodeType": "YulIdentifier", + "src": "984:3:61" + }, + "nativeSrc": "984:15:61", + "nodeType": "YulFunctionCall", + "src": "984:15:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1005:2:61", + "nodeType": "YulLiteral", + "src": "1005:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "1001:3:61", + "nodeType": "YulIdentifier", + "src": "1001:3:61" + }, + "nativeSrc": "1001:7:61", + "nodeType": "YulFunctionCall", + "src": "1001:7:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "980:3:61", + "nodeType": "YulIdentifier", + "src": "980:3:61" + }, + "nativeSrc": "980:29:61", + "nodeType": "YulFunctionCall", + "src": "980:29:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "971:3:61", + "nodeType": "YulIdentifier", + "src": "971:3:61" + }, + "nativeSrc": "971:39:61", + "nodeType": "YulFunctionCall", + "src": "971:39:61" + }, + { + "kind": "number", + "nativeSrc": "1012:4:61", + "nodeType": "YulLiteral", + "src": "1012:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "967:3:61", + "nodeType": "YulIdentifier", + "src": "967:3:61" + }, + "nativeSrc": "967:50:61", + "nodeType": "YulFunctionCall", + "src": "967:50:61" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "960:3:61", + "nodeType": "YulIdentifier", + "src": "960:3:61" + } + ] + } + ] + }, + "name": "abi_encode_string", + "nativeSrc": "752:271:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "779:5:61", + "nodeType": "YulTypedName", + "src": "779:5:61", + "type": "" + }, + { + "name": "pos", + "nativeSrc": "786:3:61", + "nodeType": "YulTypedName", + "src": "786:3:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "794:3:61", + "nodeType": "YulTypedName", + "src": "794:3:61", + "type": "" + } + ], + "src": "752:271:61" + }, + { + "body": { + "nativeSrc": "1088:538:61", + "nodeType": "YulBlock", + "src": "1088:538:61", + "statements": [ + { + "nativeSrc": "1098:16:61", + "nodeType": "YulVariableDeclaration", + "src": "1098:16:61", + "value": { + "name": "pos", + "nativeSrc": "1111:3:61", + "nodeType": "YulIdentifier", + "src": "1111:3:61" + }, + "variables": [ + { + "name": "pos_1", + "nativeSrc": "1102:5:61", + "nodeType": "YulTypedName", + "src": "1102:5:61", + "type": "" + } + ] + }, + { + "nativeSrc": "1123:26:61", + "nodeType": "YulVariableDeclaration", + "src": "1123:26:61", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "1143:5:61", + "nodeType": "YulIdentifier", + "src": "1143:5:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "1137:5:61", + "nodeType": "YulIdentifier", + "src": "1137:5:61" + }, + "nativeSrc": "1137:12:61", + "nodeType": "YulFunctionCall", + "src": "1137:12:61" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "1127:6:61", + "nodeType": "YulTypedName", + "src": "1127:6:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "1165:3:61", + "nodeType": "YulIdentifier", + "src": "1165:3:61" + }, + { + "name": "length", + "nativeSrc": "1170:6:61", + "nodeType": "YulIdentifier", + "src": "1170:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1158:6:61", + "nodeType": "YulIdentifier", + "src": "1158:6:61" + }, + "nativeSrc": "1158:19:61", + "nodeType": "YulFunctionCall", + "src": "1158:19:61" + }, + "nativeSrc": "1158:19:61", + "nodeType": "YulExpressionStatement", + "src": "1158:19:61" + }, + { + "nativeSrc": "1186:14:61", + "nodeType": "YulVariableDeclaration", + "src": "1186:14:61", + "value": { + "kind": "number", + "nativeSrc": "1196:4:61", + "nodeType": "YulLiteral", + "src": "1196:4:61", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "1190:2:61", + "nodeType": "YulTypedName", + "src": "1190:2:61", + "type": "" + } + ] + }, + { + "nativeSrc": "1209:21:61", + "nodeType": "YulAssignment", + "src": "1209:21:61", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "1220:3:61", + "nodeType": "YulIdentifier", + "src": "1220:3:61" + }, + { + "kind": "number", + "nativeSrc": "1225:4:61", + "nodeType": "YulLiteral", + "src": "1225:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1216:3:61", + "nodeType": "YulIdentifier", + "src": "1216:3:61" + }, + "nativeSrc": "1216:14:61", + "nodeType": "YulFunctionCall", + "src": "1216:14:61" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "1209:3:61", + "nodeType": "YulIdentifier", + "src": "1209:3:61" + } + ] + }, + { + "nativeSrc": "1239:49:61", + "nodeType": "YulVariableDeclaration", + "src": "1239:49:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "pos_1", + "nativeSrc": "1259:5:61", + "nodeType": "YulIdentifier", + "src": "1259:5:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1270:1:61", + "nodeType": "YulLiteral", + "src": "1270:1:61", + "type": "", + "value": "5" + }, + { + "name": "length", + "nativeSrc": "1273:6:61", + "nodeType": "YulIdentifier", + "src": "1273:6:61" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "1266:3:61", + "nodeType": "YulIdentifier", + "src": "1266:3:61" + }, + "nativeSrc": "1266:14:61", + "nodeType": "YulFunctionCall", + "src": "1266:14:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1255:3:61", + "nodeType": "YulIdentifier", + "src": "1255:3:61" + }, + "nativeSrc": "1255:26:61", + "nodeType": "YulFunctionCall", + "src": "1255:26:61" + }, + { + "kind": "number", + "nativeSrc": "1283:4:61", + "nodeType": "YulLiteral", + "src": "1283:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1251:3:61", + "nodeType": "YulIdentifier", + "src": "1251:3:61" + }, + "nativeSrc": "1251:37:61", + "nodeType": "YulFunctionCall", + "src": "1251:37:61" + }, + "variables": [ + { + "name": "tail", + "nativeSrc": "1243:4:61", + "nodeType": "YulTypedName", + "src": "1243:4:61", + "type": "" + } + ] + }, + { + "nativeSrc": "1297:30:61", + "nodeType": "YulVariableDeclaration", + "src": "1297:30:61", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "1315:5:61", + "nodeType": "YulIdentifier", + "src": "1315:5:61" + }, + { + "kind": "number", + "nativeSrc": "1322:4:61", + "nodeType": "YulLiteral", + "src": "1322:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1311:3:61", + "nodeType": "YulIdentifier", + "src": "1311:3:61" + }, + "nativeSrc": "1311:16:61", + "nodeType": "YulFunctionCall", + "src": "1311:16:61" + }, + "variables": [ + { + "name": "srcPtr", + "nativeSrc": "1301:6:61", + "nodeType": "YulTypedName", + "src": "1301:6:61", + "type": "" + } + ] + }, + { + "nativeSrc": "1336:10:61", + "nodeType": "YulVariableDeclaration", + "src": "1336:10:61", + "value": { + "kind": "number", + "nativeSrc": "1345:1:61", + "nodeType": "YulLiteral", + "src": "1345:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "1340:1:61", + "nodeType": "YulTypedName", + "src": "1340:1:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "1404:196:61", + "nodeType": "YulBlock", + "src": "1404:196:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "1425:3:61", + "nodeType": "YulIdentifier", + "src": "1425:3:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "tail", + "nativeSrc": "1438:4:61", + "nodeType": "YulIdentifier", + "src": "1438:4:61" + }, + { + "name": "pos_1", + "nativeSrc": "1444:5:61", + "nodeType": "YulIdentifier", + "src": "1444:5:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "1434:3:61", + "nodeType": "YulIdentifier", + "src": "1434:3:61" + }, + "nativeSrc": "1434:16:61", + "nodeType": "YulFunctionCall", + "src": "1434:16:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1456:2:61", + "nodeType": "YulLiteral", + "src": "1456:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "1452:3:61", + "nodeType": "YulIdentifier", + "src": "1452:3:61" + }, + "nativeSrc": "1452:7:61", + "nodeType": "YulFunctionCall", + "src": "1452:7:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1430:3:61", + "nodeType": "YulIdentifier", + "src": "1430:3:61" + }, + "nativeSrc": "1430:30:61", + "nodeType": "YulFunctionCall", + "src": "1430:30:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1418:6:61", + "nodeType": "YulIdentifier", + "src": "1418:6:61" + }, + "nativeSrc": "1418:43:61", + "nodeType": "YulFunctionCall", + "src": "1418:43:61" + }, + "nativeSrc": "1418:43:61", + "nodeType": "YulExpressionStatement", + "src": "1418:43:61" + }, + { + "nativeSrc": "1474:46:61", + "nodeType": "YulAssignment", + "src": "1474:46:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "1506:6:61", + "nodeType": "YulIdentifier", + "src": "1506:6:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "1500:5:61", + "nodeType": "YulIdentifier", + "src": "1500:5:61" + }, + "nativeSrc": "1500:13:61", + "nodeType": "YulFunctionCall", + "src": "1500:13:61" + }, + { + "name": "tail", + "nativeSrc": "1515:4:61", + "nodeType": "YulIdentifier", + "src": "1515:4:61" + } + ], + "functionName": { + "name": "abi_encode_string", + "nativeSrc": "1482:17:61", + "nodeType": "YulIdentifier", + "src": "1482:17:61" + }, + "nativeSrc": "1482:38:61", + "nodeType": "YulFunctionCall", + "src": "1482:38:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "1474:4:61", + "nodeType": "YulIdentifier", + "src": "1474:4:61" + } + ] + }, + { + "nativeSrc": "1533:25:61", + "nodeType": "YulAssignment", + "src": "1533:25:61", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "1547:6:61", + "nodeType": "YulIdentifier", + "src": "1547:6:61" + }, + { + "name": "_1", + "nativeSrc": "1555:2:61", + "nodeType": "YulIdentifier", + "src": "1555:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1543:3:61", + "nodeType": "YulIdentifier", + "src": "1543:3:61" + }, + "nativeSrc": "1543:15:61", + "nodeType": "YulFunctionCall", + "src": "1543:15:61" + }, + "variableNames": [ + { + "name": "srcPtr", + "nativeSrc": "1533:6:61", + "nodeType": "YulIdentifier", + "src": "1533:6:61" + } + ] + }, + { + "nativeSrc": "1571:19:61", + "nodeType": "YulAssignment", + "src": "1571:19:61", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "1582:3:61", + "nodeType": "YulIdentifier", + "src": "1582:3:61" + }, + { + "name": "_1", + "nativeSrc": "1587:2:61", + "nodeType": "YulIdentifier", + "src": "1587:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1578:3:61", + "nodeType": "YulIdentifier", + "src": "1578:3:61" + }, + "nativeSrc": "1578:12:61", + "nodeType": "YulFunctionCall", + "src": "1578:12:61" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "1571:3:61", + "nodeType": "YulIdentifier", + "src": "1571:3:61" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "1366:1:61", + "nodeType": "YulIdentifier", + "src": "1366:1:61" + }, + { + "name": "length", + "nativeSrc": "1369:6:61", + "nodeType": "YulIdentifier", + "src": "1369:6:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "1363:2:61", + "nodeType": "YulIdentifier", + "src": "1363:2:61" + }, + "nativeSrc": "1363:13:61", + "nodeType": "YulFunctionCall", + "src": "1363:13:61" + }, + "nativeSrc": "1355:245:61", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "1377:18:61", + "nodeType": "YulBlock", + "src": "1377:18:61", + "statements": [ + { + "nativeSrc": "1379:14:61", + "nodeType": "YulAssignment", + "src": "1379:14:61", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "1388:1:61", + "nodeType": "YulIdentifier", + "src": "1388:1:61" + }, + { + "kind": "number", + "nativeSrc": "1391:1:61", + "nodeType": "YulLiteral", + "src": "1391:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1384:3:61", + "nodeType": "YulIdentifier", + "src": "1384:3:61" + }, + "nativeSrc": "1384:9:61", + "nodeType": "YulFunctionCall", + "src": "1384:9:61" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "1379:1:61", + "nodeType": "YulIdentifier", + "src": "1379:1:61" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "1359:3:61", + "nodeType": "YulBlock", + "src": "1359:3:61", + "statements": [] + }, + "src": "1355:245:61" + }, + { + "nativeSrc": "1609:11:61", + "nodeType": "YulAssignment", + "src": "1609:11:61", + "value": { + "name": "tail", + "nativeSrc": "1616:4:61", + "nodeType": "YulIdentifier", + "src": "1616:4:61" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "1609:3:61", + "nodeType": "YulIdentifier", + "src": "1609:3:61" + } + ] + } + ] + }, + "name": "abi_encode_array_string_dyn", + "nativeSrc": "1028:598:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "1065:5:61", + "nodeType": "YulTypedName", + "src": "1065:5:61", + "type": "" + }, + { + "name": "pos", + "nativeSrc": "1072:3:61", + "nodeType": "YulTypedName", + "src": "1072:3:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "1080:3:61", + "nodeType": "YulTypedName", + "src": "1080:3:61", + "type": "" + } + ], + "src": "1028:598:61" + }, + { + "body": { + "nativeSrc": "1802:109:61", + "nodeType": "YulBlock", + "src": "1802:109:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1819:9:61", + "nodeType": "YulIdentifier", + "src": "1819:9:61" + }, + { + "kind": "number", + "nativeSrc": "1830:2:61", + "nodeType": "YulLiteral", + "src": "1830:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1812:6:61", + "nodeType": "YulIdentifier", + "src": "1812:6:61" + }, + "nativeSrc": "1812:21:61", + "nodeType": "YulFunctionCall", + "src": "1812:21:61" + }, + "nativeSrc": "1812:21:61", + "nodeType": "YulExpressionStatement", + "src": "1812:21:61" + }, + { + "nativeSrc": "1842:63:61", + "nodeType": "YulAssignment", + "src": "1842:63:61", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "1878:6:61", + "nodeType": "YulIdentifier", + "src": "1878:6:61" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1890:9:61", + "nodeType": "YulIdentifier", + "src": "1890:9:61" + }, + { + "kind": "number", + "nativeSrc": "1901:2:61", + "nodeType": "YulLiteral", + "src": "1901:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1886:3:61", + "nodeType": "YulIdentifier", + "src": "1886:3:61" + }, + "nativeSrc": "1886:18:61", + "nodeType": "YulFunctionCall", + "src": "1886:18:61" + } + ], + "functionName": { + "name": "abi_encode_array_string_dyn", + "nativeSrc": "1850:27:61", + "nodeType": "YulIdentifier", + "src": "1850:27:61" + }, + "nativeSrc": "1850:55:61", + "nodeType": "YulFunctionCall", + "src": "1850:55:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "1842:4:61", + "nodeType": "YulIdentifier", + "src": "1842:4:61" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_array$_t_string_memory_ptr_$dyn_memory_ptr__to_t_array$_t_string_memory_ptr_$dyn_memory_ptr__fromStack_reversed", + "nativeSrc": "1631:280:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "1771:9:61", + "nodeType": "YulTypedName", + "src": "1771:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "1782:6:61", + "nodeType": "YulTypedName", + "src": "1782:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "1793:4:61", + "nodeType": "YulTypedName", + "src": "1793:4:61", + "type": "" + } + ], + "src": "1631:280:61" + }, + { + "body": { + "nativeSrc": "2017:76:61", + "nodeType": "YulBlock", + "src": "2017:76:61", + "statements": [ + { + "nativeSrc": "2027:26:61", + "nodeType": "YulAssignment", + "src": "2027:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2039:9:61", + "nodeType": "YulIdentifier", + "src": "2039:9:61" + }, + { + "kind": "number", + "nativeSrc": "2050:2:61", + "nodeType": "YulLiteral", + "src": "2050:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2035:3:61", + "nodeType": "YulIdentifier", + "src": "2035:3:61" + }, + "nativeSrc": "2035:18:61", + "nodeType": "YulFunctionCall", + "src": "2035:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "2027:4:61", + "nodeType": "YulIdentifier", + "src": "2027:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2069:9:61", + "nodeType": "YulIdentifier", + "src": "2069:9:61" + }, + { + "name": "value0", + "nativeSrc": "2080:6:61", + "nodeType": "YulIdentifier", + "src": "2080:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2062:6:61", + "nodeType": "YulIdentifier", + "src": "2062:6:61" + }, + "nativeSrc": "2062:25:61", + "nodeType": "YulFunctionCall", + "src": "2062:25:61" + }, + "nativeSrc": "2062:25:61", + "nodeType": "YulExpressionStatement", + "src": "2062:25:61" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed", + "nativeSrc": "1916:177:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "1986:9:61", + "nodeType": "YulTypedName", + "src": "1986:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "1997:6:61", + "nodeType": "YulTypedName", + "src": "1997:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "2008:4:61", + "nodeType": "YulTypedName", + "src": "2008:4:61", + "type": "" + } + ], + "src": "1916:177:61" + }, + { + "body": { + "nativeSrc": "2249:481:61", + "nodeType": "YulBlock", + "src": "2249:481:61", + "statements": [ + { + "nativeSrc": "2259:12:61", + "nodeType": "YulVariableDeclaration", + "src": "2259:12:61", + "value": { + "kind": "number", + "nativeSrc": "2269:2:61", + "nodeType": "YulLiteral", + "src": "2269:2:61", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "2263:2:61", + "nodeType": "YulTypedName", + "src": "2263:2:61", + "type": "" + } + ] + }, + { + "nativeSrc": "2280:32:61", + "nodeType": "YulVariableDeclaration", + "src": "2280:32:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2298:9:61", + "nodeType": "YulIdentifier", + "src": "2298:9:61" + }, + { + "kind": "number", + "nativeSrc": "2309:2:61", + "nodeType": "YulLiteral", + "src": "2309:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2294:3:61", + "nodeType": "YulIdentifier", + "src": "2294:3:61" + }, + "nativeSrc": "2294:18:61", + "nodeType": "YulFunctionCall", + "src": "2294:18:61" + }, + "variables": [ + { + "name": "tail_1", + "nativeSrc": "2284:6:61", + "nodeType": "YulTypedName", + "src": "2284:6:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2328:9:61", + "nodeType": "YulIdentifier", + "src": "2328:9:61" + }, + { + "kind": "number", + "nativeSrc": "2339:2:61", + "nodeType": "YulLiteral", + "src": "2339:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2321:6:61", + "nodeType": "YulIdentifier", + "src": "2321:6:61" + }, + "nativeSrc": "2321:21:61", + "nodeType": "YulFunctionCall", + "src": "2321:21:61" + }, + "nativeSrc": "2321:21:61", + "nodeType": "YulExpressionStatement", + "src": "2321:21:61" + }, + { + "nativeSrc": "2351:17:61", + "nodeType": "YulVariableDeclaration", + "src": "2351:17:61", + "value": { + "name": "tail_1", + "nativeSrc": "2362:6:61", + "nodeType": "YulIdentifier", + "src": "2362:6:61" + }, + "variables": [ + { + "name": "pos", + "nativeSrc": "2355:3:61", + "nodeType": "YulTypedName", + "src": "2355:3:61", + "type": "" + } + ] + }, + { + "nativeSrc": "2377:27:61", + "nodeType": "YulVariableDeclaration", + "src": "2377:27:61", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "2397:6:61", + "nodeType": "YulIdentifier", + "src": "2397:6:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2391:5:61", + "nodeType": "YulIdentifier", + "src": "2391:5:61" + }, + "nativeSrc": "2391:13:61", + "nodeType": "YulFunctionCall", + "src": "2391:13:61" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "2381:6:61", + "nodeType": "YulTypedName", + "src": "2381:6:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "tail_1", + "nativeSrc": "2420:6:61", + "nodeType": "YulIdentifier", + "src": "2420:6:61" + }, + { + "name": "length", + "nativeSrc": "2428:6:61", + "nodeType": "YulIdentifier", + "src": "2428:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2413:6:61", + "nodeType": "YulIdentifier", + "src": "2413:6:61" + }, + "nativeSrc": "2413:22:61", + "nodeType": "YulFunctionCall", + "src": "2413:22:61" + }, + "nativeSrc": "2413:22:61", + "nodeType": "YulExpressionStatement", + "src": "2413:22:61" + }, + { + "nativeSrc": "2444:25:61", + "nodeType": "YulAssignment", + "src": "2444:25:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2455:9:61", + "nodeType": "YulIdentifier", + "src": "2455:9:61" + }, + { + "kind": "number", + "nativeSrc": "2466:2:61", + "nodeType": "YulLiteral", + "src": "2466:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2451:3:61", + "nodeType": "YulIdentifier", + "src": "2451:3:61" + }, + "nativeSrc": "2451:18:61", + "nodeType": "YulFunctionCall", + "src": "2451:18:61" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "2444:3:61", + "nodeType": "YulIdentifier", + "src": "2444:3:61" + } + ] + }, + { + "nativeSrc": "2478:29:61", + "nodeType": "YulVariableDeclaration", + "src": "2478:29:61", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "2496:6:61", + "nodeType": "YulIdentifier", + "src": "2496:6:61" + }, + { + "kind": "number", + "nativeSrc": "2504:2:61", + "nodeType": "YulLiteral", + "src": "2504:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2492:3:61", + "nodeType": "YulIdentifier", + "src": "2492:3:61" + }, + "nativeSrc": "2492:15:61", + "nodeType": "YulFunctionCall", + "src": "2492:15:61" + }, + "variables": [ + { + "name": "srcPtr", + "nativeSrc": "2482:6:61", + "nodeType": "YulTypedName", + "src": "2482:6:61", + "type": "" + } + ] + }, + { + "nativeSrc": "2516:10:61", + "nodeType": "YulVariableDeclaration", + "src": "2516:10:61", + "value": { + "kind": "number", + "nativeSrc": "2525:1:61", + "nodeType": "YulLiteral", + "src": "2525:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "2520:1:61", + "nodeType": "YulTypedName", + "src": "2520:1:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "2584:120:61", + "nodeType": "YulBlock", + "src": "2584:120:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "2605:3:61", + "nodeType": "YulIdentifier", + "src": "2605:3:61" + }, + { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "2616:6:61", + "nodeType": "YulIdentifier", + "src": "2616:6:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2610:5:61", + "nodeType": "YulIdentifier", + "src": "2610:5:61" + }, + "nativeSrc": "2610:13:61", + "nodeType": "YulFunctionCall", + "src": "2610:13:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2598:6:61", + "nodeType": "YulIdentifier", + "src": "2598:6:61" + }, + "nativeSrc": "2598:26:61", + "nodeType": "YulFunctionCall", + "src": "2598:26:61" + }, + "nativeSrc": "2598:26:61", + "nodeType": "YulExpressionStatement", + "src": "2598:26:61" + }, + { + "nativeSrc": "2637:19:61", + "nodeType": "YulAssignment", + "src": "2637:19:61", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "2648:3:61", + "nodeType": "YulIdentifier", + "src": "2648:3:61" + }, + { + "name": "_1", + "nativeSrc": "2653:2:61", + "nodeType": "YulIdentifier", + "src": "2653:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2644:3:61", + "nodeType": "YulIdentifier", + "src": "2644:3:61" + }, + "nativeSrc": "2644:12:61", + "nodeType": "YulFunctionCall", + "src": "2644:12:61" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "2637:3:61", + "nodeType": "YulIdentifier", + "src": "2637:3:61" + } + ] + }, + { + "nativeSrc": "2669:25:61", + "nodeType": "YulAssignment", + "src": "2669:25:61", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "2683:6:61", + "nodeType": "YulIdentifier", + "src": "2683:6:61" + }, + { + "name": "_1", + "nativeSrc": "2691:2:61", + "nodeType": "YulIdentifier", + "src": "2691:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2679:3:61", + "nodeType": "YulIdentifier", + "src": "2679:3:61" + }, + "nativeSrc": "2679:15:61", + "nodeType": "YulFunctionCall", + "src": "2679:15:61" + }, + "variableNames": [ + { + "name": "srcPtr", + "nativeSrc": "2669:6:61", + "nodeType": "YulIdentifier", + "src": "2669:6:61" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "2546:1:61", + "nodeType": "YulIdentifier", + "src": "2546:1:61" + }, + { + "name": "length", + "nativeSrc": "2549:6:61", + "nodeType": "YulIdentifier", + "src": "2549:6:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "2543:2:61", + "nodeType": "YulIdentifier", + "src": "2543:2:61" + }, + "nativeSrc": "2543:13:61", + "nodeType": "YulFunctionCall", + "src": "2543:13:61" + }, + "nativeSrc": "2535:169:61", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "2557:18:61", + "nodeType": "YulBlock", + "src": "2557:18:61", + "statements": [ + { + "nativeSrc": "2559:14:61", + "nodeType": "YulAssignment", + "src": "2559:14:61", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "2568:1:61", + "nodeType": "YulIdentifier", + "src": "2568:1:61" + }, + { + "kind": "number", + "nativeSrc": "2571:1:61", + "nodeType": "YulLiteral", + "src": "2571:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2564:3:61", + "nodeType": "YulIdentifier", + "src": "2564:3:61" + }, + "nativeSrc": "2564:9:61", + "nodeType": "YulFunctionCall", + "src": "2564:9:61" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "2559:1:61", + "nodeType": "YulIdentifier", + "src": "2559:1:61" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "2539:3:61", + "nodeType": "YulBlock", + "src": "2539:3:61", + "statements": [] + }, + "src": "2535:169:61" + }, + { + "nativeSrc": "2713:11:61", + "nodeType": "YulAssignment", + "src": "2713:11:61", + "value": { + "name": "pos", + "nativeSrc": "2721:3:61", + "nodeType": "YulIdentifier", + "src": "2721:3:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "2713:4:61", + "nodeType": "YulIdentifier", + "src": "2713:4:61" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed", + "nativeSrc": "2098:632:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "2218:9:61", + "nodeType": "YulTypedName", + "src": "2218:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "2229:6:61", + "nodeType": "YulTypedName", + "src": "2229:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "2240:4:61", + "nodeType": "YulTypedName", + "src": "2240:4:61", + "type": "" + } + ], + "src": "2098:632:61" + }, + { + "body": { + "nativeSrc": "2780:86:61", + "nodeType": "YulBlock", + "src": "2780:86:61", + "statements": [ + { + "body": { + "nativeSrc": "2844:16:61", + "nodeType": "YulBlock", + "src": "2844:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2853:1:61", + "nodeType": "YulLiteral", + "src": "2853:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2856:1:61", + "nodeType": "YulLiteral", + "src": "2856:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2846:6:61", + "nodeType": "YulIdentifier", + "src": "2846:6:61" + }, + "nativeSrc": "2846:12:61", + "nodeType": "YulFunctionCall", + "src": "2846:12:61" + }, + "nativeSrc": "2846:12:61", + "nodeType": "YulExpressionStatement", + "src": "2846:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "2803:5:61", + "nodeType": "YulIdentifier", + "src": "2803:5:61" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "2814:5:61", + "nodeType": "YulIdentifier", + "src": "2814:5:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2829:3:61", + "nodeType": "YulLiteral", + "src": "2829:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "2834:1:61", + "nodeType": "YulLiteral", + "src": "2834:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "2825:3:61", + "nodeType": "YulIdentifier", + "src": "2825:3:61" + }, + "nativeSrc": "2825:11:61", + "nodeType": "YulFunctionCall", + "src": "2825:11:61" + }, + { + "kind": "number", + "nativeSrc": "2838:1:61", + "nodeType": "YulLiteral", + "src": "2838:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "2821:3:61", + "nodeType": "YulIdentifier", + "src": "2821:3:61" + }, + "nativeSrc": "2821:19:61", + "nodeType": "YulFunctionCall", + "src": "2821:19:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "2810:3:61", + "nodeType": "YulIdentifier", + "src": "2810:3:61" + }, + "nativeSrc": "2810:31:61", + "nodeType": "YulFunctionCall", + "src": "2810:31:61" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "2800:2:61", + "nodeType": "YulIdentifier", + "src": "2800:2:61" + }, + "nativeSrc": "2800:42:61", + "nodeType": "YulFunctionCall", + "src": "2800:42:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "2793:6:61", + "nodeType": "YulIdentifier", + "src": "2793:6:61" + }, + "nativeSrc": "2793:50:61", + "nodeType": "YulFunctionCall", + "src": "2793:50:61" + }, + "nativeSrc": "2790:70:61", + "nodeType": "YulIf", + "src": "2790:70:61" + } + ] + }, + "name": "validator_revert_address", + "nativeSrc": "2735:131:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "2769:5:61", + "nodeType": "YulTypedName", + "src": "2769:5:61", + "type": "" + } + ], + "src": "2735:131:61" + }, + { + "body": { + "nativeSrc": "2903:95:61", + "nodeType": "YulBlock", + "src": "2903:95:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2920:1:61", + "nodeType": "YulLiteral", + "src": "2920:1:61", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2927:3:61", + "nodeType": "YulLiteral", + "src": "2927:3:61", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "2932:10:61", + "nodeType": "YulLiteral", + "src": "2932:10:61", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "2923:3:61", + "nodeType": "YulIdentifier", + "src": "2923:3:61" + }, + "nativeSrc": "2923:20:61", + "nodeType": "YulFunctionCall", + "src": "2923:20:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2913:6:61", + "nodeType": "YulIdentifier", + "src": "2913:6:61" + }, + "nativeSrc": "2913:31:61", + "nodeType": "YulFunctionCall", + "src": "2913:31:61" + }, + "nativeSrc": "2913:31:61", + "nodeType": "YulExpressionStatement", + "src": "2913:31:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2960:1:61", + "nodeType": "YulLiteral", + "src": "2960:1:61", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "2963:4:61", + "nodeType": "YulLiteral", + "src": "2963:4:61", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2953:6:61", + "nodeType": "YulIdentifier", + "src": "2953:6:61" + }, + "nativeSrc": "2953:15:61", + "nodeType": "YulFunctionCall", + "src": "2953:15:61" + }, + "nativeSrc": "2953:15:61", + "nodeType": "YulExpressionStatement", + "src": "2953:15:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2984:1:61", + "nodeType": "YulLiteral", + "src": "2984:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2987:4:61", + "nodeType": "YulLiteral", + "src": "2987:4:61", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2977:6:61", + "nodeType": "YulIdentifier", + "src": "2977:6:61" + }, + "nativeSrc": "2977:15:61", + "nodeType": "YulFunctionCall", + "src": "2977:15:61" + }, + "nativeSrc": "2977:15:61", + "nodeType": "YulExpressionStatement", + "src": "2977:15:61" + } + ] + }, + "name": "panic_error_0x41", + "nativeSrc": "2871:127:61", + "nodeType": "YulFunctionDefinition", + "src": "2871:127:61" + }, + { + "body": { + "nativeSrc": "3048:230:61", + "nodeType": "YulBlock", + "src": "3048:230:61", + "statements": [ + { + "nativeSrc": "3058:19:61", + "nodeType": "YulAssignment", + "src": "3058:19:61", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3074:2:61", + "nodeType": "YulLiteral", + "src": "3074:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "3068:5:61", + "nodeType": "YulIdentifier", + "src": "3068:5:61" + }, + "nativeSrc": "3068:9:61", + "nodeType": "YulFunctionCall", + "src": "3068:9:61" + }, + "variableNames": [ + { + "name": "memPtr", + "nativeSrc": "3058:6:61", + "nodeType": "YulIdentifier", + "src": "3058:6:61" + } + ] + }, + { + "nativeSrc": "3086:58:61", + "nodeType": "YulVariableDeclaration", + "src": "3086:58:61", + "value": { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "3108:6:61", + "nodeType": "YulIdentifier", + "src": "3108:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "size", + "nativeSrc": "3124:4:61", + "nodeType": "YulIdentifier", + "src": "3124:4:61" + }, + { + "kind": "number", + "nativeSrc": "3130:2:61", + "nodeType": "YulLiteral", + "src": "3130:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3120:3:61", + "nodeType": "YulIdentifier", + "src": "3120:3:61" + }, + "nativeSrc": "3120:13:61", + "nodeType": "YulFunctionCall", + "src": "3120:13:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3139:2:61", + "nodeType": "YulLiteral", + "src": "3139:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "3135:3:61", + "nodeType": "YulIdentifier", + "src": "3135:3:61" + }, + "nativeSrc": "3135:7:61", + "nodeType": "YulFunctionCall", + "src": "3135:7:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "3116:3:61", + "nodeType": "YulIdentifier", + "src": "3116:3:61" + }, + "nativeSrc": "3116:27:61", + "nodeType": "YulFunctionCall", + "src": "3116:27:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3104:3:61", + "nodeType": "YulIdentifier", + "src": "3104:3:61" + }, + "nativeSrc": "3104:40:61", + "nodeType": "YulFunctionCall", + "src": "3104:40:61" + }, + "variables": [ + { + "name": "newFreePtr", + "nativeSrc": "3090:10:61", + "nodeType": "YulTypedName", + "src": "3090:10:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "3219:22:61", + "nodeType": "YulBlock", + "src": "3219:22:61", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "3221:16:61", + "nodeType": "YulIdentifier", + "src": "3221:16:61" + }, + "nativeSrc": "3221:18:61", + "nodeType": "YulFunctionCall", + "src": "3221:18:61" + }, + "nativeSrc": "3221:18:61", + "nodeType": "YulExpressionStatement", + "src": "3221:18:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nativeSrc": "3162:10:61", + "nodeType": "YulIdentifier", + "src": "3162:10:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3182:2:61", + "nodeType": "YulLiteral", + "src": "3182:2:61", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "3186:1:61", + "nodeType": "YulLiteral", + "src": "3186:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "3178:3:61", + "nodeType": "YulIdentifier", + "src": "3178:3:61" + }, + "nativeSrc": "3178:10:61", + "nodeType": "YulFunctionCall", + "src": "3178:10:61" + }, + { + "kind": "number", + "nativeSrc": "3190:1:61", + "nodeType": "YulLiteral", + "src": "3190:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "3174:3:61", + "nodeType": "YulIdentifier", + "src": "3174:3:61" + }, + "nativeSrc": "3174:18:61", + "nodeType": "YulFunctionCall", + "src": "3174:18:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "3159:2:61", + "nodeType": "YulIdentifier", + "src": "3159:2:61" + }, + "nativeSrc": "3159:34:61", + "nodeType": "YulFunctionCall", + "src": "3159:34:61" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nativeSrc": "3198:10:61", + "nodeType": "YulIdentifier", + "src": "3198:10:61" + }, + { + "name": "memPtr", + "nativeSrc": "3210:6:61", + "nodeType": "YulIdentifier", + "src": "3210:6:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "3195:2:61", + "nodeType": "YulIdentifier", + "src": "3195:2:61" + }, + "nativeSrc": "3195:22:61", + "nodeType": "YulFunctionCall", + "src": "3195:22:61" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "3156:2:61", + "nodeType": "YulIdentifier", + "src": "3156:2:61" + }, + "nativeSrc": "3156:62:61", + "nodeType": "YulFunctionCall", + "src": "3156:62:61" + }, + "nativeSrc": "3153:88:61", + "nodeType": "YulIf", + "src": "3153:88:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3257:2:61", + "nodeType": "YulLiteral", + "src": "3257:2:61", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nativeSrc": "3261:10:61", + "nodeType": "YulIdentifier", + "src": "3261:10:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3250:6:61", + "nodeType": "YulIdentifier", + "src": "3250:6:61" + }, + "nativeSrc": "3250:22:61", + "nodeType": "YulFunctionCall", + "src": "3250:22:61" + }, + "nativeSrc": "3250:22:61", + "nodeType": "YulExpressionStatement", + "src": "3250:22:61" + } + ] + }, + "name": "allocate_memory", + "nativeSrc": "3003:275:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "size", + "nativeSrc": "3028:4:61", + "nodeType": "YulTypedName", + "src": "3028:4:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "memPtr", + "nativeSrc": "3037:6:61", + "nodeType": "YulTypedName", + "src": "3037:6:61", + "type": "" + } + ], + "src": "3003:275:61" + }, + { + "body": { + "nativeSrc": "3340:129:61", + "nodeType": "YulBlock", + "src": "3340:129:61", + "statements": [ + { + "body": { + "nativeSrc": "3384:22:61", + "nodeType": "YulBlock", + "src": "3384:22:61", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "3386:16:61", + "nodeType": "YulIdentifier", + "src": "3386:16:61" + }, + "nativeSrc": "3386:18:61", + "nodeType": "YulFunctionCall", + "src": "3386:18:61" + }, + "nativeSrc": "3386:18:61", + "nodeType": "YulExpressionStatement", + "src": "3386:18:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nativeSrc": "3356:6:61", + "nodeType": "YulIdentifier", + "src": "3356:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3372:2:61", + "nodeType": "YulLiteral", + "src": "3372:2:61", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "3376:1:61", + "nodeType": "YulLiteral", + "src": "3376:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "3368:3:61", + "nodeType": "YulIdentifier", + "src": "3368:3:61" + }, + "nativeSrc": "3368:10:61", + "nodeType": "YulFunctionCall", + "src": "3368:10:61" + }, + { + "kind": "number", + "nativeSrc": "3380:1:61", + "nodeType": "YulLiteral", + "src": "3380:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "3364:3:61", + "nodeType": "YulIdentifier", + "src": "3364:3:61" + }, + "nativeSrc": "3364:18:61", + "nodeType": "YulFunctionCall", + "src": "3364:18:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "3353:2:61", + "nodeType": "YulIdentifier", + "src": "3353:2:61" + }, + "nativeSrc": "3353:30:61", + "nodeType": "YulFunctionCall", + "src": "3353:30:61" + }, + "nativeSrc": "3350:56:61", + "nodeType": "YulIf", + "src": "3350:56:61" + }, + { + "nativeSrc": "3415:48:61", + "nodeType": "YulAssignment", + "src": "3415:48:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nativeSrc": "3435:6:61", + "nodeType": "YulIdentifier", + "src": "3435:6:61" + }, + { + "kind": "number", + "nativeSrc": "3443:2:61", + "nodeType": "YulLiteral", + "src": "3443:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3431:3:61", + "nodeType": "YulIdentifier", + "src": "3431:3:61" + }, + "nativeSrc": "3431:15:61", + "nodeType": "YulFunctionCall", + "src": "3431:15:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3452:2:61", + "nodeType": "YulLiteral", + "src": "3452:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "3448:3:61", + "nodeType": "YulIdentifier", + "src": "3448:3:61" + }, + "nativeSrc": "3448:7:61", + "nodeType": "YulFunctionCall", + "src": "3448:7:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "3427:3:61", + "nodeType": "YulIdentifier", + "src": "3427:3:61" + }, + "nativeSrc": "3427:29:61", + "nodeType": "YulFunctionCall", + "src": "3427:29:61" + }, + { + "kind": "number", + "nativeSrc": "3458:4:61", + "nodeType": "YulLiteral", + "src": "3458:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3423:3:61", + "nodeType": "YulIdentifier", + "src": "3423:3:61" + }, + "nativeSrc": "3423:40:61", + "nodeType": "YulFunctionCall", + "src": "3423:40:61" + }, + "variableNames": [ + { + "name": "size", + "nativeSrc": "3415:4:61", + "nodeType": "YulIdentifier", + "src": "3415:4:61" + } + ] + } + ] + }, + "name": "array_allocation_size_bytes", + "nativeSrc": "3283:186:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "length", + "nativeSrc": "3320:6:61", + "nodeType": "YulTypedName", + "src": "3320:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "size", + "nativeSrc": "3331:4:61", + "nodeType": "YulTypedName", + "src": "3331:4:61", + "type": "" + } + ], + "src": "3283:186:61" + }, + { + "body": { + "nativeSrc": "3526:410:61", + "nodeType": "YulBlock", + "src": "3526:410:61", + "statements": [ + { + "body": { + "nativeSrc": "3575:16:61", + "nodeType": "YulBlock", + "src": "3575:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3584:1:61", + "nodeType": "YulLiteral", + "src": "3584:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "3587:1:61", + "nodeType": "YulLiteral", + "src": "3587:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "3577:6:61", + "nodeType": "YulIdentifier", + "src": "3577:6:61" + }, + "nativeSrc": "3577:12:61", + "nodeType": "YulFunctionCall", + "src": "3577:12:61" + }, + "nativeSrc": "3577:12:61", + "nodeType": "YulExpressionStatement", + "src": "3577:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nativeSrc": "3554:6:61", + "nodeType": "YulIdentifier", + "src": "3554:6:61" + }, + { + "kind": "number", + "nativeSrc": "3562:4:61", + "nodeType": "YulLiteral", + "src": "3562:4:61", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3550:3:61", + "nodeType": "YulIdentifier", + "src": "3550:3:61" + }, + "nativeSrc": "3550:17:61", + "nodeType": "YulFunctionCall", + "src": "3550:17:61" + }, + { + "name": "end", + "nativeSrc": "3569:3:61", + "nodeType": "YulIdentifier", + "src": "3569:3:61" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "3546:3:61", + "nodeType": "YulIdentifier", + "src": "3546:3:61" + }, + "nativeSrc": "3546:27:61", + "nodeType": "YulFunctionCall", + "src": "3546:27:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "3539:6:61", + "nodeType": "YulIdentifier", + "src": "3539:6:61" + }, + "nativeSrc": "3539:35:61", + "nodeType": "YulFunctionCall", + "src": "3539:35:61" + }, + "nativeSrc": "3536:55:61", + "nodeType": "YulIf", + "src": "3536:55:61" + }, + { + "nativeSrc": "3600:30:61", + "nodeType": "YulVariableDeclaration", + "src": "3600:30:61", + "value": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "3623:6:61", + "nodeType": "YulIdentifier", + "src": "3623:6:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "3610:12:61", + "nodeType": "YulIdentifier", + "src": "3610:12:61" + }, + "nativeSrc": "3610:20:61", + "nodeType": "YulFunctionCall", + "src": "3610:20:61" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "3604:2:61", + "nodeType": "YulTypedName", + "src": "3604:2:61", + "type": "" + } + ] + }, + { + "nativeSrc": "3639:63:61", + "nodeType": "YulVariableDeclaration", + "src": "3639:63:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nativeSrc": "3698:2:61", + "nodeType": "YulIdentifier", + "src": "3698:2:61" + } + ], + "functionName": { + "name": "array_allocation_size_bytes", + "nativeSrc": "3670:27:61", + "nodeType": "YulIdentifier", + "src": "3670:27:61" + }, + "nativeSrc": "3670:31:61", + "nodeType": "YulFunctionCall", + "src": "3670:31:61" + } + ], + "functionName": { + "name": "allocate_memory", + "nativeSrc": "3654:15:61", + "nodeType": "YulIdentifier", + "src": "3654:15:61" + }, + "nativeSrc": "3654:48:61", + "nodeType": "YulFunctionCall", + "src": "3654:48:61" + }, + "variables": [ + { + "name": "array_1", + "nativeSrc": "3643:7:61", + "nodeType": "YulTypedName", + "src": "3643:7:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "array_1", + "nativeSrc": "3718:7:61", + "nodeType": "YulIdentifier", + "src": "3718:7:61" + }, + { + "name": "_1", + "nativeSrc": "3727:2:61", + "nodeType": "YulIdentifier", + "src": "3727:2:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3711:6:61", + "nodeType": "YulIdentifier", + "src": "3711:6:61" + }, + "nativeSrc": "3711:19:61", + "nodeType": "YulFunctionCall", + "src": "3711:19:61" + }, + "nativeSrc": "3711:19:61", + "nodeType": "YulExpressionStatement", + "src": "3711:19:61" + }, + { + "body": { + "nativeSrc": "3778:16:61", + "nodeType": "YulBlock", + "src": "3778:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3787:1:61", + "nodeType": "YulLiteral", + "src": "3787:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "3790:1:61", + "nodeType": "YulLiteral", + "src": "3790:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "3780:6:61", + "nodeType": "YulIdentifier", + "src": "3780:6:61" + }, + "nativeSrc": "3780:12:61", + "nodeType": "YulFunctionCall", + "src": "3780:12:61" + }, + "nativeSrc": "3780:12:61", + "nodeType": "YulExpressionStatement", + "src": "3780:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nativeSrc": "3753:6:61", + "nodeType": "YulIdentifier", + "src": "3753:6:61" + }, + { + "name": "_1", + "nativeSrc": "3761:2:61", + "nodeType": "YulIdentifier", + "src": "3761:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3749:3:61", + "nodeType": "YulIdentifier", + "src": "3749:3:61" + }, + "nativeSrc": "3749:15:61", + "nodeType": "YulFunctionCall", + "src": "3749:15:61" + }, + { + "kind": "number", + "nativeSrc": "3766:4:61", + "nodeType": "YulLiteral", + "src": "3766:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3745:3:61", + "nodeType": "YulIdentifier", + "src": "3745:3:61" + }, + "nativeSrc": "3745:26:61", + "nodeType": "YulFunctionCall", + "src": "3745:26:61" + }, + { + "name": "end", + "nativeSrc": "3773:3:61", + "nodeType": "YulIdentifier", + "src": "3773:3:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "3742:2:61", + "nodeType": "YulIdentifier", + "src": "3742:2:61" + }, + "nativeSrc": "3742:35:61", + "nodeType": "YulFunctionCall", + "src": "3742:35:61" + }, + "nativeSrc": "3739:55:61", + "nodeType": "YulIf", + "src": "3739:55:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "array_1", + "nativeSrc": "3820:7:61", + "nodeType": "YulIdentifier", + "src": "3820:7:61" + }, + { + "kind": "number", + "nativeSrc": "3829:4:61", + "nodeType": "YulLiteral", + "src": "3829:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3816:3:61", + "nodeType": "YulIdentifier", + "src": "3816:3:61" + }, + "nativeSrc": "3816:18:61", + "nodeType": "YulFunctionCall", + "src": "3816:18:61" + }, + { + "arguments": [ + { + "name": "offset", + "nativeSrc": "3840:6:61", + "nodeType": "YulIdentifier", + "src": "3840:6:61" + }, + { + "kind": "number", + "nativeSrc": "3848:4:61", + "nodeType": "YulLiteral", + "src": "3848:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3836:3:61", + "nodeType": "YulIdentifier", + "src": "3836:3:61" + }, + "nativeSrc": "3836:17:61", + "nodeType": "YulFunctionCall", + "src": "3836:17:61" + }, + { + "name": "_1", + "nativeSrc": "3855:2:61", + "nodeType": "YulIdentifier", + "src": "3855:2:61" + } + ], + "functionName": { + "name": "calldatacopy", + "nativeSrc": "3803:12:61", + "nodeType": "YulIdentifier", + "src": "3803:12:61" + }, + "nativeSrc": "3803:55:61", + "nodeType": "YulFunctionCall", + "src": "3803:55:61" + }, + "nativeSrc": "3803:55:61", + "nodeType": "YulExpressionStatement", + "src": "3803:55:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "array_1", + "nativeSrc": "3882:7:61", + "nodeType": "YulIdentifier", + "src": "3882:7:61" + }, + { + "name": "_1", + "nativeSrc": "3891:2:61", + "nodeType": "YulIdentifier", + "src": "3891:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3878:3:61", + "nodeType": "YulIdentifier", + "src": "3878:3:61" + }, + "nativeSrc": "3878:16:61", + "nodeType": "YulFunctionCall", + "src": "3878:16:61" + }, + { + "kind": "number", + "nativeSrc": "3896:4:61", + "nodeType": "YulLiteral", + "src": "3896:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3874:3:61", + "nodeType": "YulIdentifier", + "src": "3874:3:61" + }, + "nativeSrc": "3874:27:61", + "nodeType": "YulFunctionCall", + "src": "3874:27:61" + }, + { + "kind": "number", + "nativeSrc": "3903:1:61", + "nodeType": "YulLiteral", + "src": "3903:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3867:6:61", + "nodeType": "YulIdentifier", + "src": "3867:6:61" + }, + "nativeSrc": "3867:38:61", + "nodeType": "YulFunctionCall", + "src": "3867:38:61" + }, + "nativeSrc": "3867:38:61", + "nodeType": "YulExpressionStatement", + "src": "3867:38:61" + }, + { + "nativeSrc": "3914:16:61", + "nodeType": "YulAssignment", + "src": "3914:16:61", + "value": { + "name": "array_1", + "nativeSrc": "3923:7:61", + "nodeType": "YulIdentifier", + "src": "3923:7:61" + }, + "variableNames": [ + { + "name": "array", + "nativeSrc": "3914:5:61", + "nodeType": "YulIdentifier", + "src": "3914:5:61" + } + ] + } + ] + }, + "name": "abi_decode_bytes", + "nativeSrc": "3474:462:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nativeSrc": "3500:6:61", + "nodeType": "YulTypedName", + "src": "3500:6:61", + "type": "" + }, + { + "name": "end", + "nativeSrc": "3508:3:61", + "nodeType": "YulTypedName", + "src": "3508:3:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nativeSrc": "3516:5:61", + "nodeType": "YulTypedName", + "src": "3516:5:61", + "type": "" + } + ], + "src": "3474:462:61" + }, + { + "body": { + "nativeSrc": "4071:535:61", + "nodeType": "YulBlock", + "src": "4071:535:61", + "statements": [ + { + "body": { + "nativeSrc": "4118:16:61", + "nodeType": "YulBlock", + "src": "4118:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4127:1:61", + "nodeType": "YulLiteral", + "src": "4127:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "4130:1:61", + "nodeType": "YulLiteral", + "src": "4130:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "4120:6:61", + "nodeType": "YulIdentifier", + "src": "4120:6:61" + }, + "nativeSrc": "4120:12:61", + "nodeType": "YulFunctionCall", + "src": "4120:12:61" + }, + "nativeSrc": "4120:12:61", + "nodeType": "YulExpressionStatement", + "src": "4120:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "4092:7:61", + "nodeType": "YulIdentifier", + "src": "4092:7:61" + }, + { + "name": "headStart", + "nativeSrc": "4101:9:61", + "nodeType": "YulIdentifier", + "src": "4101:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "4088:3:61", + "nodeType": "YulIdentifier", + "src": "4088:3:61" + }, + "nativeSrc": "4088:23:61", + "nodeType": "YulFunctionCall", + "src": "4088:23:61" + }, + { + "kind": "number", + "nativeSrc": "4113:3:61", + "nodeType": "YulLiteral", + "src": "4113:3:61", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "4084:3:61", + "nodeType": "YulIdentifier", + "src": "4084:3:61" + }, + "nativeSrc": "4084:33:61", + "nodeType": "YulFunctionCall", + "src": "4084:33:61" + }, + "nativeSrc": "4081:53:61", + "nodeType": "YulIf", + "src": "4081:53:61" + }, + { + "nativeSrc": "4143:36:61", + "nodeType": "YulVariableDeclaration", + "src": "4143:36:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4169:9:61", + "nodeType": "YulIdentifier", + "src": "4169:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "4156:12:61", + "nodeType": "YulIdentifier", + "src": "4156:12:61" + }, + "nativeSrc": "4156:23:61", + "nodeType": "YulFunctionCall", + "src": "4156:23:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "4147:5:61", + "nodeType": "YulTypedName", + "src": "4147:5:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "4213:5:61", + "nodeType": "YulIdentifier", + "src": "4213:5:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "4188:24:61", + "nodeType": "YulIdentifier", + "src": "4188:24:61" + }, + "nativeSrc": "4188:31:61", + "nodeType": "YulFunctionCall", + "src": "4188:31:61" + }, + "nativeSrc": "4188:31:61", + "nodeType": "YulExpressionStatement", + "src": "4188:31:61" + }, + { + "nativeSrc": "4228:15:61", + "nodeType": "YulAssignment", + "src": "4228:15:61", + "value": { + "name": "value", + "nativeSrc": "4238:5:61", + "nodeType": "YulIdentifier", + "src": "4238:5:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "4228:6:61", + "nodeType": "YulIdentifier", + "src": "4228:6:61" + } + ] + }, + { + "nativeSrc": "4252:47:61", + "nodeType": "YulVariableDeclaration", + "src": "4252:47:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4284:9:61", + "nodeType": "YulIdentifier", + "src": "4284:9:61" + }, + { + "kind": "number", + "nativeSrc": "4295:2:61", + "nodeType": "YulLiteral", + "src": "4295:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4280:3:61", + "nodeType": "YulIdentifier", + "src": "4280:3:61" + }, + "nativeSrc": "4280:18:61", + "nodeType": "YulFunctionCall", + "src": "4280:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "4267:12:61", + "nodeType": "YulIdentifier", + "src": "4267:12:61" + }, + "nativeSrc": "4267:32:61", + "nodeType": "YulFunctionCall", + "src": "4267:32:61" + }, + "variables": [ + { + "name": "value_1", + "nativeSrc": "4256:7:61", + "nodeType": "YulTypedName", + "src": "4256:7:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nativeSrc": "4333:7:61", + "nodeType": "YulIdentifier", + "src": "4333:7:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "4308:24:61", + "nodeType": "YulIdentifier", + "src": "4308:24:61" + }, + "nativeSrc": "4308:33:61", + "nodeType": "YulFunctionCall", + "src": "4308:33:61" + }, + "nativeSrc": "4308:33:61", + "nodeType": "YulExpressionStatement", + "src": "4308:33:61" + }, + { + "nativeSrc": "4350:17:61", + "nodeType": "YulAssignment", + "src": "4350:17:61", + "value": { + "name": "value_1", + "nativeSrc": "4360:7:61", + "nodeType": "YulIdentifier", + "src": "4360:7:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "4350:6:61", + "nodeType": "YulIdentifier", + "src": "4350:6:61" + } + ] + }, + { + "nativeSrc": "4376:42:61", + "nodeType": "YulAssignment", + "src": "4376:42:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4403:9:61", + "nodeType": "YulIdentifier", + "src": "4403:9:61" + }, + { + "kind": "number", + "nativeSrc": "4414:2:61", + "nodeType": "YulLiteral", + "src": "4414:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4399:3:61", + "nodeType": "YulIdentifier", + "src": "4399:3:61" + }, + "nativeSrc": "4399:18:61", + "nodeType": "YulFunctionCall", + "src": "4399:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "4386:12:61", + "nodeType": "YulIdentifier", + "src": "4386:12:61" + }, + "nativeSrc": "4386:32:61", + "nodeType": "YulFunctionCall", + "src": "4386:32:61" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "4376:6:61", + "nodeType": "YulIdentifier", + "src": "4376:6:61" + } + ] + }, + { + "nativeSrc": "4427:46:61", + "nodeType": "YulVariableDeclaration", + "src": "4427:46:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4458:9:61", + "nodeType": "YulIdentifier", + "src": "4458:9:61" + }, + { + "kind": "number", + "nativeSrc": "4469:2:61", + "nodeType": "YulLiteral", + "src": "4469:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4454:3:61", + "nodeType": "YulIdentifier", + "src": "4454:3:61" + }, + "nativeSrc": "4454:18:61", + "nodeType": "YulFunctionCall", + "src": "4454:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "4441:12:61", + "nodeType": "YulIdentifier", + "src": "4441:12:61" + }, + "nativeSrc": "4441:32:61", + "nodeType": "YulFunctionCall", + "src": "4441:32:61" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "4431:6:61", + "nodeType": "YulTypedName", + "src": "4431:6:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "4516:16:61", + "nodeType": "YulBlock", + "src": "4516:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4525:1:61", + "nodeType": "YulLiteral", + "src": "4525:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "4528:1:61", + "nodeType": "YulLiteral", + "src": "4528:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "4518:6:61", + "nodeType": "YulIdentifier", + "src": "4518:6:61" + }, + "nativeSrc": "4518:12:61", + "nodeType": "YulFunctionCall", + "src": "4518:12:61" + }, + "nativeSrc": "4518:12:61", + "nodeType": "YulExpressionStatement", + "src": "4518:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "4488:6:61", + "nodeType": "YulIdentifier", + "src": "4488:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4504:2:61", + "nodeType": "YulLiteral", + "src": "4504:2:61", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "4508:1:61", + "nodeType": "YulLiteral", + "src": "4508:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "4500:3:61", + "nodeType": "YulIdentifier", + "src": "4500:3:61" + }, + "nativeSrc": "4500:10:61", + "nodeType": "YulFunctionCall", + "src": "4500:10:61" + }, + { + "kind": "number", + "nativeSrc": "4512:1:61", + "nodeType": "YulLiteral", + "src": "4512:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "4496:3:61", + "nodeType": "YulIdentifier", + "src": "4496:3:61" + }, + "nativeSrc": "4496:18:61", + "nodeType": "YulFunctionCall", + "src": "4496:18:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "4485:2:61", + "nodeType": "YulIdentifier", + "src": "4485:2:61" + }, + "nativeSrc": "4485:30:61", + "nodeType": "YulFunctionCall", + "src": "4485:30:61" + }, + "nativeSrc": "4482:50:61", + "nodeType": "YulIf", + "src": "4482:50:61" + }, + { + "nativeSrc": "4541:59:61", + "nodeType": "YulAssignment", + "src": "4541:59:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4572:9:61", + "nodeType": "YulIdentifier", + "src": "4572:9:61" + }, + { + "name": "offset", + "nativeSrc": "4583:6:61", + "nodeType": "YulIdentifier", + "src": "4583:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4568:3:61", + "nodeType": "YulIdentifier", + "src": "4568:3:61" + }, + "nativeSrc": "4568:22:61", + "nodeType": "YulFunctionCall", + "src": "4568:22:61" + }, + { + "name": "dataEnd", + "nativeSrc": "4592:7:61", + "nodeType": "YulIdentifier", + "src": "4592:7:61" + } + ], + "functionName": { + "name": "abi_decode_bytes", + "nativeSrc": "4551:16:61", + "nodeType": "YulIdentifier", + "src": "4551:16:61" + }, + "nativeSrc": "4551:49:61", + "nodeType": "YulFunctionCall", + "src": "4551:49:61" + }, + "variableNames": [ + { + "name": "value3", + "nativeSrc": "4541:6:61", + "nodeType": "YulIdentifier", + "src": "4541:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr", + "nativeSrc": "3941:665:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "4013:9:61", + "nodeType": "YulTypedName", + "src": "4013:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "4024:7:61", + "nodeType": "YulTypedName", + "src": "4024:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "4036:6:61", + "nodeType": "YulTypedName", + "src": "4036:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "4044:6:61", + "nodeType": "YulTypedName", + "src": "4044:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "4052:6:61", + "nodeType": "YulTypedName", + "src": "4052:6:61", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "4060:6:61", + "nodeType": "YulTypedName", + "src": "4060:6:61", + "type": "" + } + ], + "src": "3941:665:61" + }, + { + "body": { + "nativeSrc": "4710:103:61", + "nodeType": "YulBlock", + "src": "4710:103:61", + "statements": [ + { + "nativeSrc": "4720:26:61", + "nodeType": "YulAssignment", + "src": "4720:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4732:9:61", + "nodeType": "YulIdentifier", + "src": "4732:9:61" + }, + { + "kind": "number", + "nativeSrc": "4743:2:61", + "nodeType": "YulLiteral", + "src": "4743:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4728:3:61", + "nodeType": "YulIdentifier", + "src": "4728:3:61" + }, + "nativeSrc": "4728:18:61", + "nodeType": "YulFunctionCall", + "src": "4728:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "4720:4:61", + "nodeType": "YulIdentifier", + "src": "4720:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4762:9:61", + "nodeType": "YulIdentifier", + "src": "4762:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "4777:6:61", + "nodeType": "YulIdentifier", + "src": "4777:6:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4789:3:61", + "nodeType": "YulLiteral", + "src": "4789:3:61", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "4794:10:61", + "nodeType": "YulLiteral", + "src": "4794:10:61", + "type": "", + "value": "0xffffffff" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "4785:3:61", + "nodeType": "YulIdentifier", + "src": "4785:3:61" + }, + "nativeSrc": "4785:20:61", + "nodeType": "YulFunctionCall", + "src": "4785:20:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "4773:3:61", + "nodeType": "YulIdentifier", + "src": "4773:3:61" + }, + "nativeSrc": "4773:33:61", + "nodeType": "YulFunctionCall", + "src": "4773:33:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4755:6:61", + "nodeType": "YulIdentifier", + "src": "4755:6:61" + }, + "nativeSrc": "4755:52:61", + "nodeType": "YulFunctionCall", + "src": "4755:52:61" + }, + "nativeSrc": "4755:52:61", + "nodeType": "YulExpressionStatement", + "src": "4755:52:61" + } + ] + }, + "name": "abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed", + "nativeSrc": "4611:202:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "4679:9:61", + "nodeType": "YulTypedName", + "src": "4679:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "4690:6:61", + "nodeType": "YulTypedName", + "src": "4690:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "4701:4:61", + "nodeType": "YulTypedName", + "src": "4701:4:61", + "type": "" + } + ], + "src": "4611:202:61" + }, + { + "body": { + "nativeSrc": "4898:241:61", + "nodeType": "YulBlock", + "src": "4898:241:61", + "statements": [ + { + "body": { + "nativeSrc": "4944:16:61", + "nodeType": "YulBlock", + "src": "4944:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4953:1:61", + "nodeType": "YulLiteral", + "src": "4953:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "4956:1:61", + "nodeType": "YulLiteral", + "src": "4956:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "4946:6:61", + "nodeType": "YulIdentifier", + "src": "4946:6:61" + }, + "nativeSrc": "4946:12:61", + "nodeType": "YulFunctionCall", + "src": "4946:12:61" + }, + "nativeSrc": "4946:12:61", + "nodeType": "YulExpressionStatement", + "src": "4946:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "4919:7:61", + "nodeType": "YulIdentifier", + "src": "4919:7:61" + }, + { + "name": "headStart", + "nativeSrc": "4928:9:61", + "nodeType": "YulIdentifier", + "src": "4928:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "4915:3:61", + "nodeType": "YulIdentifier", + "src": "4915:3:61" + }, + "nativeSrc": "4915:23:61", + "nodeType": "YulFunctionCall", + "src": "4915:23:61" + }, + { + "kind": "number", + "nativeSrc": "4940:2:61", + "nodeType": "YulLiteral", + "src": "4940:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "4911:3:61", + "nodeType": "YulIdentifier", + "src": "4911:3:61" + }, + "nativeSrc": "4911:32:61", + "nodeType": "YulFunctionCall", + "src": "4911:32:61" + }, + "nativeSrc": "4908:52:61", + "nodeType": "YulIf", + "src": "4908:52:61" + }, + { + "nativeSrc": "4969:37:61", + "nodeType": "YulVariableDeclaration", + "src": "4969:37:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4996:9:61", + "nodeType": "YulIdentifier", + "src": "4996:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "4983:12:61", + "nodeType": "YulIdentifier", + "src": "4983:12:61" + }, + "nativeSrc": "4983:23:61", + "nodeType": "YulFunctionCall", + "src": "4983:23:61" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "4973:6:61", + "nodeType": "YulTypedName", + "src": "4973:6:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "5049:16:61", + "nodeType": "YulBlock", + "src": "5049:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5058:1:61", + "nodeType": "YulLiteral", + "src": "5058:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "5061:1:61", + "nodeType": "YulLiteral", + "src": "5061:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "5051:6:61", + "nodeType": "YulIdentifier", + "src": "5051:6:61" + }, + "nativeSrc": "5051:12:61", + "nodeType": "YulFunctionCall", + "src": "5051:12:61" + }, + "nativeSrc": "5051:12:61", + "nodeType": "YulExpressionStatement", + "src": "5051:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "5021:6:61", + "nodeType": "YulIdentifier", + "src": "5021:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5037:2:61", + "nodeType": "YulLiteral", + "src": "5037:2:61", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "5041:1:61", + "nodeType": "YulLiteral", + "src": "5041:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "5033:3:61", + "nodeType": "YulIdentifier", + "src": "5033:3:61" + }, + "nativeSrc": "5033:10:61", + "nodeType": "YulFunctionCall", + "src": "5033:10:61" + }, + { + "kind": "number", + "nativeSrc": "5045:1:61", + "nodeType": "YulLiteral", + "src": "5045:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "5029:3:61", + "nodeType": "YulIdentifier", + "src": "5029:3:61" + }, + "nativeSrc": "5029:18:61", + "nodeType": "YulFunctionCall", + "src": "5029:18:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "5018:2:61", + "nodeType": "YulIdentifier", + "src": "5018:2:61" + }, + "nativeSrc": "5018:30:61", + "nodeType": "YulFunctionCall", + "src": "5018:30:61" + }, + "nativeSrc": "5015:50:61", + "nodeType": "YulIf", + "src": "5015:50:61" + }, + { + "nativeSrc": "5074:59:61", + "nodeType": "YulAssignment", + "src": "5074:59:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5105:9:61", + "nodeType": "YulIdentifier", + "src": "5105:9:61" + }, + { + "name": "offset", + "nativeSrc": "5116:6:61", + "nodeType": "YulIdentifier", + "src": "5116:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5101:3:61", + "nodeType": "YulIdentifier", + "src": "5101:3:61" + }, + "nativeSrc": "5101:22:61", + "nodeType": "YulFunctionCall", + "src": "5101:22:61" + }, + { + "name": "dataEnd", + "nativeSrc": "5125:7:61", + "nodeType": "YulIdentifier", + "src": "5125:7:61" + } + ], + "functionName": { + "name": "abi_decode_bytes", + "nativeSrc": "5084:16:61", + "nodeType": "YulIdentifier", + "src": "5084:16:61" + }, + "nativeSrc": "5084:49:61", + "nodeType": "YulFunctionCall", + "src": "5084:49:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "5074:6:61", + "nodeType": "YulIdentifier", + "src": "5074:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_string_memory_ptr", + "nativeSrc": "4818:321:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "4864:9:61", + "nodeType": "YulTypedName", + "src": "4864:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "4875:7:61", + "nodeType": "YulTypedName", + "src": "4875:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "4887:6:61", + "nodeType": "YulTypedName", + "src": "4887:6:61", + "type": "" + } + ], + "src": "4818:321:61" + }, + { + "body": { + "nativeSrc": "5245:76:61", + "nodeType": "YulBlock", + "src": "5245:76:61", + "statements": [ + { + "nativeSrc": "5255:26:61", + "nodeType": "YulAssignment", + "src": "5255:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5267:9:61", + "nodeType": "YulIdentifier", + "src": "5267:9:61" + }, + { + "kind": "number", + "nativeSrc": "5278:2:61", + "nodeType": "YulLiteral", + "src": "5278:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5263:3:61", + "nodeType": "YulIdentifier", + "src": "5263:3:61" + }, + "nativeSrc": "5263:18:61", + "nodeType": "YulFunctionCall", + "src": "5263:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "5255:4:61", + "nodeType": "YulIdentifier", + "src": "5255:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5297:9:61", + "nodeType": "YulIdentifier", + "src": "5297:9:61" + }, + { + "name": "value0", + "nativeSrc": "5308:6:61", + "nodeType": "YulIdentifier", + "src": "5308:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5290:6:61", + "nodeType": "YulIdentifier", + "src": "5290:6:61" + }, + "nativeSrc": "5290:25:61", + "nodeType": "YulFunctionCall", + "src": "5290:25:61" + }, + "nativeSrc": "5290:25:61", + "nodeType": "YulExpressionStatement", + "src": "5290:25:61" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nativeSrc": "5144:177:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "5214:9:61", + "nodeType": "YulTypedName", + "src": "5214:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "5225:6:61", + "nodeType": "YulTypedName", + "src": "5225:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "5236:4:61", + "nodeType": "YulTypedName", + "src": "5236:4:61", + "type": "" + } + ], + "src": "5144:177:61" + }, + { + "body": { + "nativeSrc": "5446:352:61", + "nodeType": "YulBlock", + "src": "5446:352:61", + "statements": [ + { + "body": { + "nativeSrc": "5492:16:61", + "nodeType": "YulBlock", + "src": "5492:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5501:1:61", + "nodeType": "YulLiteral", + "src": "5501:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "5504:1:61", + "nodeType": "YulLiteral", + "src": "5504:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "5494:6:61", + "nodeType": "YulIdentifier", + "src": "5494:6:61" + }, + "nativeSrc": "5494:12:61", + "nodeType": "YulFunctionCall", + "src": "5494:12:61" + }, + "nativeSrc": "5494:12:61", + "nodeType": "YulExpressionStatement", + "src": "5494:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "5467:7:61", + "nodeType": "YulIdentifier", + "src": "5467:7:61" + }, + { + "name": "headStart", + "nativeSrc": "5476:9:61", + "nodeType": "YulIdentifier", + "src": "5476:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "5463:3:61", + "nodeType": "YulIdentifier", + "src": "5463:3:61" + }, + "nativeSrc": "5463:23:61", + "nodeType": "YulFunctionCall", + "src": "5463:23:61" + }, + { + "kind": "number", + "nativeSrc": "5488:2:61", + "nodeType": "YulLiteral", + "src": "5488:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "5459:3:61", + "nodeType": "YulIdentifier", + "src": "5459:3:61" + }, + "nativeSrc": "5459:32:61", + "nodeType": "YulFunctionCall", + "src": "5459:32:61" + }, + "nativeSrc": "5456:52:61", + "nodeType": "YulIf", + "src": "5456:52:61" + }, + { + "nativeSrc": "5517:36:61", + "nodeType": "YulVariableDeclaration", + "src": "5517:36:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5543:9:61", + "nodeType": "YulIdentifier", + "src": "5543:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "5530:12:61", + "nodeType": "YulIdentifier", + "src": "5530:12:61" + }, + "nativeSrc": "5530:23:61", + "nodeType": "YulFunctionCall", + "src": "5530:23:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "5521:5:61", + "nodeType": "YulTypedName", + "src": "5521:5:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "5587:5:61", + "nodeType": "YulIdentifier", + "src": "5587:5:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "5562:24:61", + "nodeType": "YulIdentifier", + "src": "5562:24:61" + }, + "nativeSrc": "5562:31:61", + "nodeType": "YulFunctionCall", + "src": "5562:31:61" + }, + "nativeSrc": "5562:31:61", + "nodeType": "YulExpressionStatement", + "src": "5562:31:61" + }, + { + "nativeSrc": "5602:15:61", + "nodeType": "YulAssignment", + "src": "5602:15:61", + "value": { + "name": "value", + "nativeSrc": "5612:5:61", + "nodeType": "YulIdentifier", + "src": "5612:5:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "5602:6:61", + "nodeType": "YulIdentifier", + "src": "5602:6:61" + } + ] + }, + { + "nativeSrc": "5626:47:61", + "nodeType": "YulVariableDeclaration", + "src": "5626:47:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5658:9:61", + "nodeType": "YulIdentifier", + "src": "5658:9:61" + }, + { + "kind": "number", + "nativeSrc": "5669:2:61", + "nodeType": "YulLiteral", + "src": "5669:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5654:3:61", + "nodeType": "YulIdentifier", + "src": "5654:3:61" + }, + "nativeSrc": "5654:18:61", + "nodeType": "YulFunctionCall", + "src": "5654:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "5641:12:61", + "nodeType": "YulIdentifier", + "src": "5641:12:61" + }, + "nativeSrc": "5641:32:61", + "nodeType": "YulFunctionCall", + "src": "5641:32:61" + }, + "variables": [ + { + "name": "value_1", + "nativeSrc": "5630:7:61", + "nodeType": "YulTypedName", + "src": "5630:7:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nativeSrc": "5707:7:61", + "nodeType": "YulIdentifier", + "src": "5707:7:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "5682:24:61", + "nodeType": "YulIdentifier", + "src": "5682:24:61" + }, + "nativeSrc": "5682:33:61", + "nodeType": "YulFunctionCall", + "src": "5682:33:61" + }, + "nativeSrc": "5682:33:61", + "nodeType": "YulExpressionStatement", + "src": "5682:33:61" + }, + { + "nativeSrc": "5724:17:61", + "nodeType": "YulAssignment", + "src": "5724:17:61", + "value": { + "name": "value_1", + "nativeSrc": "5734:7:61", + "nodeType": "YulIdentifier", + "src": "5734:7:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "5724:6:61", + "nodeType": "YulIdentifier", + "src": "5724:6:61" + } + ] + }, + { + "nativeSrc": "5750:42:61", + "nodeType": "YulAssignment", + "src": "5750:42:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5777:9:61", + "nodeType": "YulIdentifier", + "src": "5777:9:61" + }, + { + "kind": "number", + "nativeSrc": "5788:2:61", + "nodeType": "YulLiteral", + "src": "5788:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5773:3:61", + "nodeType": "YulIdentifier", + "src": "5773:3:61" + }, + "nativeSrc": "5773:18:61", + "nodeType": "YulFunctionCall", + "src": "5773:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "5760:12:61", + "nodeType": "YulIdentifier", + "src": "5760:12:61" + }, + "nativeSrc": "5760:32:61", + "nodeType": "YulFunctionCall", + "src": "5760:32:61" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "5750:6:61", + "nodeType": "YulIdentifier", + "src": "5750:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_contract$_IERC721_$5067t_addresst_uint256", + "nativeSrc": "5326:472:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "5396:9:61", + "nodeType": "YulTypedName", + "src": "5396:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "5407:7:61", + "nodeType": "YulTypedName", + "src": "5407:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "5419:6:61", + "nodeType": "YulTypedName", + "src": "5419:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "5427:6:61", + "nodeType": "YulTypedName", + "src": "5427:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "5435:6:61", + "nodeType": "YulTypedName", + "src": "5435:6:61", + "type": "" + } + ], + "src": "5326:472:61" + }, + { + "body": { + "nativeSrc": "5890:161:61", + "nodeType": "YulBlock", + "src": "5890:161:61", + "statements": [ + { + "body": { + "nativeSrc": "5936:16:61", + "nodeType": "YulBlock", + "src": "5936:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5945:1:61", + "nodeType": "YulLiteral", + "src": "5945:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "5948:1:61", + "nodeType": "YulLiteral", + "src": "5948:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "5938:6:61", + "nodeType": "YulIdentifier", + "src": "5938:6:61" + }, + "nativeSrc": "5938:12:61", + "nodeType": "YulFunctionCall", + "src": "5938:12:61" + }, + "nativeSrc": "5938:12:61", + "nodeType": "YulExpressionStatement", + "src": "5938:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "5911:7:61", + "nodeType": "YulIdentifier", + "src": "5911:7:61" + }, + { + "name": "headStart", + "nativeSrc": "5920:9:61", + "nodeType": "YulIdentifier", + "src": "5920:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "5907:3:61", + "nodeType": "YulIdentifier", + "src": "5907:3:61" + }, + "nativeSrc": "5907:23:61", + "nodeType": "YulFunctionCall", + "src": "5907:23:61" + }, + { + "kind": "number", + "nativeSrc": "5932:2:61", + "nodeType": "YulLiteral", + "src": "5932:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "5903:3:61", + "nodeType": "YulIdentifier", + "src": "5903:3:61" + }, + "nativeSrc": "5903:32:61", + "nodeType": "YulFunctionCall", + "src": "5903:32:61" + }, + "nativeSrc": "5900:52:61", + "nodeType": "YulIf", + "src": "5900:52:61" + }, + { + "nativeSrc": "5961:33:61", + "nodeType": "YulAssignment", + "src": "5961:33:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5984:9:61", + "nodeType": "YulIdentifier", + "src": "5984:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "5971:12:61", + "nodeType": "YulIdentifier", + "src": "5971:12:61" + }, + "nativeSrc": "5971:23:61", + "nodeType": "YulFunctionCall", + "src": "5971:23:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "5961:6:61", + "nodeType": "YulIdentifier", + "src": "5961:6:61" + } + ] + }, + { + "nativeSrc": "6003:42:61", + "nodeType": "YulAssignment", + "src": "6003:42:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6030:9:61", + "nodeType": "YulIdentifier", + "src": "6030:9:61" + }, + { + "kind": "number", + "nativeSrc": "6041:2:61", + "nodeType": "YulLiteral", + "src": "6041:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6026:3:61", + "nodeType": "YulIdentifier", + "src": "6026:3:61" + }, + "nativeSrc": "6026:18:61", + "nodeType": "YulFunctionCall", + "src": "6026:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "6013:12:61", + "nodeType": "YulIdentifier", + "src": "6013:12:61" + }, + "nativeSrc": "6013:32:61", + "nodeType": "YulFunctionCall", + "src": "6013:32:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "6003:6:61", + "nodeType": "YulIdentifier", + "src": "6003:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_uint256", + "nativeSrc": "5803:248:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "5848:9:61", + "nodeType": "YulTypedName", + "src": "5848:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "5859:7:61", + "nodeType": "YulTypedName", + "src": "5859:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "5871:6:61", + "nodeType": "YulTypedName", + "src": "5871:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "5879:6:61", + "nodeType": "YulTypedName", + "src": "5879:6:61", + "type": "" + } + ], + "src": "5803:248:61" + }, + { + "body": { + "nativeSrc": "6119:879:61", + "nodeType": "YulBlock", + "src": "6119:879:61", + "statements": [ + { + "body": { + "nativeSrc": "6168:16:61", + "nodeType": "YulBlock", + "src": "6168:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6177:1:61", + "nodeType": "YulLiteral", + "src": "6177:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "6180:1:61", + "nodeType": "YulLiteral", + "src": "6180:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "6170:6:61", + "nodeType": "YulIdentifier", + "src": "6170:6:61" + }, + "nativeSrc": "6170:12:61", + "nodeType": "YulFunctionCall", + "src": "6170:12:61" + }, + "nativeSrc": "6170:12:61", + "nodeType": "YulExpressionStatement", + "src": "6170:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nativeSrc": "6147:6:61", + "nodeType": "YulIdentifier", + "src": "6147:6:61" + }, + { + "kind": "number", + "nativeSrc": "6155:4:61", + "nodeType": "YulLiteral", + "src": "6155:4:61", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6143:3:61", + "nodeType": "YulIdentifier", + "src": "6143:3:61" + }, + "nativeSrc": "6143:17:61", + "nodeType": "YulFunctionCall", + "src": "6143:17:61" + }, + { + "name": "end", + "nativeSrc": "6162:3:61", + "nodeType": "YulIdentifier", + "src": "6162:3:61" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "6139:3:61", + "nodeType": "YulIdentifier", + "src": "6139:3:61" + }, + "nativeSrc": "6139:27:61", + "nodeType": "YulFunctionCall", + "src": "6139:27:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "6132:6:61", + "nodeType": "YulIdentifier", + "src": "6132:6:61" + }, + "nativeSrc": "6132:35:61", + "nodeType": "YulFunctionCall", + "src": "6132:35:61" + }, + "nativeSrc": "6129:55:61", + "nodeType": "YulIf", + "src": "6129:55:61" + }, + { + "nativeSrc": "6193:30:61", + "nodeType": "YulVariableDeclaration", + "src": "6193:30:61", + "value": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "6216:6:61", + "nodeType": "YulIdentifier", + "src": "6216:6:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "6203:12:61", + "nodeType": "YulIdentifier", + "src": "6203:12:61" + }, + "nativeSrc": "6203:20:61", + "nodeType": "YulFunctionCall", + "src": "6203:20:61" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "6197:2:61", + "nodeType": "YulTypedName", + "src": "6197:2:61", + "type": "" + } + ] + }, + { + "nativeSrc": "6232:14:61", + "nodeType": "YulVariableDeclaration", + "src": "6232:14:61", + "value": { + "kind": "number", + "nativeSrc": "6242:4:61", + "nodeType": "YulLiteral", + "src": "6242:4:61", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "_2", + "nativeSrc": "6236:2:61", + "nodeType": "YulTypedName", + "src": "6236:2:61", + "type": "" + } + ] + }, + { + "nativeSrc": "6255:28:61", + "nodeType": "YulVariableDeclaration", + "src": "6255:28:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6273:2:61", + "nodeType": "YulLiteral", + "src": "6273:2:61", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "6277:1:61", + "nodeType": "YulLiteral", + "src": "6277:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "6269:3:61", + "nodeType": "YulIdentifier", + "src": "6269:3:61" + }, + "nativeSrc": "6269:10:61", + "nodeType": "YulFunctionCall", + "src": "6269:10:61" + }, + { + "kind": "number", + "nativeSrc": "6281:1:61", + "nodeType": "YulLiteral", + "src": "6281:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "6265:3:61", + "nodeType": "YulIdentifier", + "src": "6265:3:61" + }, + "nativeSrc": "6265:18:61", + "nodeType": "YulFunctionCall", + "src": "6265:18:61" + }, + "variables": [ + { + "name": "_3", + "nativeSrc": "6259:2:61", + "nodeType": "YulTypedName", + "src": "6259:2:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "6306:22:61", + "nodeType": "YulBlock", + "src": "6306:22:61", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "6308:16:61", + "nodeType": "YulIdentifier", + "src": "6308:16:61" + }, + "nativeSrc": "6308:18:61", + "nodeType": "YulFunctionCall", + "src": "6308:18:61" + }, + "nativeSrc": "6308:18:61", + "nodeType": "YulExpressionStatement", + "src": "6308:18:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "_1", + "nativeSrc": "6298:2:61", + "nodeType": "YulIdentifier", + "src": "6298:2:61" + }, + { + "name": "_3", + "nativeSrc": "6302:2:61", + "nodeType": "YulIdentifier", + "src": "6302:2:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "6295:2:61", + "nodeType": "YulIdentifier", + "src": "6295:2:61" + }, + "nativeSrc": "6295:10:61", + "nodeType": "YulFunctionCall", + "src": "6295:10:61" + }, + "nativeSrc": "6292:36:61", + "nodeType": "YulIf", + "src": "6292:36:61" + }, + { + "nativeSrc": "6337:20:61", + "nodeType": "YulVariableDeclaration", + "src": "6337:20:61", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6351:1:61", + "nodeType": "YulLiteral", + "src": "6351:1:61", + "type": "", + "value": "5" + }, + { + "name": "_1", + "nativeSrc": "6354:2:61", + "nodeType": "YulIdentifier", + "src": "6354:2:61" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "6347:3:61", + "nodeType": "YulIdentifier", + "src": "6347:3:61" + }, + "nativeSrc": "6347:10:61", + "nodeType": "YulFunctionCall", + "src": "6347:10:61" + }, + "variables": [ + { + "name": "_4", + "nativeSrc": "6341:2:61", + "nodeType": "YulTypedName", + "src": "6341:2:61", + "type": "" + } + ] + }, + { + "nativeSrc": "6366:39:61", + "nodeType": "YulVariableDeclaration", + "src": "6366:39:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "_4", + "nativeSrc": "6397:2:61", + "nodeType": "YulIdentifier", + "src": "6397:2:61" + }, + { + "name": "_2", + "nativeSrc": "6401:2:61", + "nodeType": "YulIdentifier", + "src": "6401:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6393:3:61", + "nodeType": "YulIdentifier", + "src": "6393:3:61" + }, + "nativeSrc": "6393:11:61", + "nodeType": "YulFunctionCall", + "src": "6393:11:61" + } + ], + "functionName": { + "name": "allocate_memory", + "nativeSrc": "6377:15:61", + "nodeType": "YulIdentifier", + "src": "6377:15:61" + }, + "nativeSrc": "6377:28:61", + "nodeType": "YulFunctionCall", + "src": "6377:28:61" + }, + "variables": [ + { + "name": "dst", + "nativeSrc": "6370:3:61", + "nodeType": "YulTypedName", + "src": "6370:3:61", + "type": "" + } + ] + }, + { + "nativeSrc": "6414:16:61", + "nodeType": "YulVariableDeclaration", + "src": "6414:16:61", + "value": { + "name": "dst", + "nativeSrc": "6427:3:61", + "nodeType": "YulIdentifier", + "src": "6427:3:61" + }, + "variables": [ + { + "name": "dst_1", + "nativeSrc": "6418:5:61", + "nodeType": "YulTypedName", + "src": "6418:5:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dst", + "nativeSrc": "6446:3:61", + "nodeType": "YulIdentifier", + "src": "6446:3:61" + }, + { + "name": "_1", + "nativeSrc": "6451:2:61", + "nodeType": "YulIdentifier", + "src": "6451:2:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6439:6:61", + "nodeType": "YulIdentifier", + "src": "6439:6:61" + }, + "nativeSrc": "6439:15:61", + "nodeType": "YulFunctionCall", + "src": "6439:15:61" + }, + "nativeSrc": "6439:15:61", + "nodeType": "YulExpressionStatement", + "src": "6439:15:61" + }, + { + "nativeSrc": "6463:19:61", + "nodeType": "YulAssignment", + "src": "6463:19:61", + "value": { + "arguments": [ + { + "name": "dst", + "nativeSrc": "6474:3:61", + "nodeType": "YulIdentifier", + "src": "6474:3:61" + }, + { + "name": "_2", + "nativeSrc": "6479:2:61", + "nodeType": "YulIdentifier", + "src": "6479:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6470:3:61", + "nodeType": "YulIdentifier", + "src": "6470:3:61" + }, + "nativeSrc": "6470:12:61", + "nodeType": "YulFunctionCall", + "src": "6470:12:61" + }, + "variableNames": [ + { + "name": "dst", + "nativeSrc": "6463:3:61", + "nodeType": "YulIdentifier", + "src": "6463:3:61" + } + ] + }, + { + "nativeSrc": "6491:38:61", + "nodeType": "YulVariableDeclaration", + "src": "6491:38:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nativeSrc": "6513:6:61", + "nodeType": "YulIdentifier", + "src": "6513:6:61" + }, + { + "name": "_4", + "nativeSrc": "6521:2:61", + "nodeType": "YulIdentifier", + "src": "6521:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6509:3:61", + "nodeType": "YulIdentifier", + "src": "6509:3:61" + }, + "nativeSrc": "6509:15:61", + "nodeType": "YulFunctionCall", + "src": "6509:15:61" + }, + { + "name": "_2", + "nativeSrc": "6526:2:61", + "nodeType": "YulIdentifier", + "src": "6526:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6505:3:61", + "nodeType": "YulIdentifier", + "src": "6505:3:61" + }, + "nativeSrc": "6505:24:61", + "nodeType": "YulFunctionCall", + "src": "6505:24:61" + }, + "variables": [ + { + "name": "srcEnd", + "nativeSrc": "6495:6:61", + "nodeType": "YulTypedName", + "src": "6495:6:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "6557:16:61", + "nodeType": "YulBlock", + "src": "6557:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6566:1:61", + "nodeType": "YulLiteral", + "src": "6566:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "6569:1:61", + "nodeType": "YulLiteral", + "src": "6569:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "6559:6:61", + "nodeType": "YulIdentifier", + "src": "6559:6:61" + }, + "nativeSrc": "6559:12:61", + "nodeType": "YulFunctionCall", + "src": "6559:12:61" + }, + "nativeSrc": "6559:12:61", + "nodeType": "YulExpressionStatement", + "src": "6559:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "srcEnd", + "nativeSrc": "6544:6:61", + "nodeType": "YulIdentifier", + "src": "6544:6:61" + }, + { + "name": "end", + "nativeSrc": "6552:3:61", + "nodeType": "YulIdentifier", + "src": "6552:3:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "6541:2:61", + "nodeType": "YulIdentifier", + "src": "6541:2:61" + }, + "nativeSrc": "6541:15:61", + "nodeType": "YulFunctionCall", + "src": "6541:15:61" + }, + "nativeSrc": "6538:35:61", + "nodeType": "YulIf", + "src": "6538:35:61" + }, + { + "nativeSrc": "6582:26:61", + "nodeType": "YulVariableDeclaration", + "src": "6582:26:61", + "value": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "6597:6:61", + "nodeType": "YulIdentifier", + "src": "6597:6:61" + }, + { + "name": "_2", + "nativeSrc": "6605:2:61", + "nodeType": "YulIdentifier", + "src": "6605:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6593:3:61", + "nodeType": "YulIdentifier", + "src": "6593:3:61" + }, + "nativeSrc": "6593:15:61", + "nodeType": "YulFunctionCall", + "src": "6593:15:61" + }, + "variables": [ + { + "name": "src", + "nativeSrc": "6586:3:61", + "nodeType": "YulTypedName", + "src": "6586:3:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "6673:296:61", + "nodeType": "YulBlock", + "src": "6673:296:61", + "statements": [ + { + "nativeSrc": "6687:36:61", + "nodeType": "YulVariableDeclaration", + "src": "6687:36:61", + "value": { + "arguments": [ + { + "name": "src", + "nativeSrc": "6719:3:61", + "nodeType": "YulIdentifier", + "src": "6719:3:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "6706:12:61", + "nodeType": "YulIdentifier", + "src": "6706:12:61" + }, + "nativeSrc": "6706:17:61", + "nodeType": "YulFunctionCall", + "src": "6706:17:61" + }, + "variables": [ + { + "name": "innerOffset", + "nativeSrc": "6691:11:61", + "nodeType": "YulTypedName", + "src": "6691:11:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "6771:74:61", + "nodeType": "YulBlock", + "src": "6771:74:61", + "statements": [ + { + "nativeSrc": "6789:11:61", + "nodeType": "YulVariableDeclaration", + "src": "6789:11:61", + "value": { + "kind": "number", + "nativeSrc": "6799:1:61", + "nodeType": "YulLiteral", + "src": "6799:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "_5", + "nativeSrc": "6793:2:61", + "nodeType": "YulTypedName", + "src": "6793:2:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "_5", + "nativeSrc": "6824:2:61", + "nodeType": "YulIdentifier", + "src": "6824:2:61" + }, + { + "name": "_5", + "nativeSrc": "6828:2:61", + "nodeType": "YulIdentifier", + "src": "6828:2:61" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "6817:6:61", + "nodeType": "YulIdentifier", + "src": "6817:6:61" + }, + "nativeSrc": "6817:14:61", + "nodeType": "YulFunctionCall", + "src": "6817:14:61" + }, + "nativeSrc": "6817:14:61", + "nodeType": "YulExpressionStatement", + "src": "6817:14:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "innerOffset", + "nativeSrc": "6742:11:61", + "nodeType": "YulIdentifier", + "src": "6742:11:61" + }, + { + "name": "_3", + "nativeSrc": "6755:2:61", + "nodeType": "YulIdentifier", + "src": "6755:2:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "6739:2:61", + "nodeType": "YulIdentifier", + "src": "6739:2:61" + }, + "nativeSrc": "6739:19:61", + "nodeType": "YulFunctionCall", + "src": "6739:19:61" + }, + "nativeSrc": "6736:109:61", + "nodeType": "YulIf", + "src": "6736:109:61" + }, + { + "expression": { + "arguments": [ + { + "name": "dst", + "nativeSrc": "6865:3:61", + "nodeType": "YulIdentifier", + "src": "6865:3:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nativeSrc": "6895:6:61", + "nodeType": "YulIdentifier", + "src": "6895:6:61" + }, + { + "name": "innerOffset", + "nativeSrc": "6903:11:61", + "nodeType": "YulIdentifier", + "src": "6903:11:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6891:3:61", + "nodeType": "YulIdentifier", + "src": "6891:3:61" + }, + "nativeSrc": "6891:24:61", + "nodeType": "YulFunctionCall", + "src": "6891:24:61" + }, + { + "name": "_2", + "nativeSrc": "6917:2:61", + "nodeType": "YulIdentifier", + "src": "6917:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6887:3:61", + "nodeType": "YulIdentifier", + "src": "6887:3:61" + }, + "nativeSrc": "6887:33:61", + "nodeType": "YulFunctionCall", + "src": "6887:33:61" + }, + { + "name": "end", + "nativeSrc": "6922:3:61", + "nodeType": "YulIdentifier", + "src": "6922:3:61" + } + ], + "functionName": { + "name": "abi_decode_bytes", + "nativeSrc": "6870:16:61", + "nodeType": "YulIdentifier", + "src": "6870:16:61" + }, + "nativeSrc": "6870:56:61", + "nodeType": "YulFunctionCall", + "src": "6870:56:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6858:6:61", + "nodeType": "YulIdentifier", + "src": "6858:6:61" + }, + "nativeSrc": "6858:69:61", + "nodeType": "YulFunctionCall", + "src": "6858:69:61" + }, + "nativeSrc": "6858:69:61", + "nodeType": "YulExpressionStatement", + "src": "6858:69:61" + }, + { + "nativeSrc": "6940:19:61", + "nodeType": "YulAssignment", + "src": "6940:19:61", + "value": { + "arguments": [ + { + "name": "dst", + "nativeSrc": "6951:3:61", + "nodeType": "YulIdentifier", + "src": "6951:3:61" + }, + { + "name": "_2", + "nativeSrc": "6956:2:61", + "nodeType": "YulIdentifier", + "src": "6956:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6947:3:61", + "nodeType": "YulIdentifier", + "src": "6947:3:61" + }, + "nativeSrc": "6947:12:61", + "nodeType": "YulFunctionCall", + "src": "6947:12:61" + }, + "variableNames": [ + { + "name": "dst", + "nativeSrc": "6940:3:61", + "nodeType": "YulIdentifier", + "src": "6940:3:61" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "src", + "nativeSrc": "6628:3:61", + "nodeType": "YulIdentifier", + "src": "6628:3:61" + }, + { + "name": "srcEnd", + "nativeSrc": "6633:6:61", + "nodeType": "YulIdentifier", + "src": "6633:6:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "6625:2:61", + "nodeType": "YulIdentifier", + "src": "6625:2:61" + }, + "nativeSrc": "6625:15:61", + "nodeType": "YulFunctionCall", + "src": "6625:15:61" + }, + "nativeSrc": "6617:352:61", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "6641:23:61", + "nodeType": "YulBlock", + "src": "6641:23:61", + "statements": [ + { + "nativeSrc": "6643:19:61", + "nodeType": "YulAssignment", + "src": "6643:19:61", + "value": { + "arguments": [ + { + "name": "src", + "nativeSrc": "6654:3:61", + "nodeType": "YulIdentifier", + "src": "6654:3:61" + }, + { + "name": "_2", + "nativeSrc": "6659:2:61", + "nodeType": "YulIdentifier", + "src": "6659:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6650:3:61", + "nodeType": "YulIdentifier", + "src": "6650:3:61" + }, + "nativeSrc": "6650:12:61", + "nodeType": "YulFunctionCall", + "src": "6650:12:61" + }, + "variableNames": [ + { + "name": "src", + "nativeSrc": "6643:3:61", + "nodeType": "YulIdentifier", + "src": "6643:3:61" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "6621:3:61", + "nodeType": "YulBlock", + "src": "6621:3:61", + "statements": [] + }, + "src": "6617:352:61" + }, + { + "nativeSrc": "6978:14:61", + "nodeType": "YulAssignment", + "src": "6978:14:61", + "value": { + "name": "dst_1", + "nativeSrc": "6987:5:61", + "nodeType": "YulIdentifier", + "src": "6987:5:61" + }, + "variableNames": [ + { + "name": "array", + "nativeSrc": "6978:5:61", + "nodeType": "YulIdentifier", + "src": "6978:5:61" + } + ] + } + ] + }, + "name": "abi_decode_array_string_dyn", + "nativeSrc": "6056:942:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nativeSrc": "6093:6:61", + "nodeType": "YulTypedName", + "src": "6093:6:61", + "type": "" + }, + { + "name": "end", + "nativeSrc": "6101:3:61", + "nodeType": "YulTypedName", + "src": "6101:3:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nativeSrc": "6109:5:61", + "nodeType": "YulTypedName", + "src": "6109:5:61", + "type": "" + } + ], + "src": "6056:942:61" + }, + { + "body": { + "nativeSrc": "7108:252:61", + "nodeType": "YulBlock", + "src": "7108:252:61", + "statements": [ + { + "body": { + "nativeSrc": "7154:16:61", + "nodeType": "YulBlock", + "src": "7154:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7163:1:61", + "nodeType": "YulLiteral", + "src": "7163:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "7166:1:61", + "nodeType": "YulLiteral", + "src": "7166:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "7156:6:61", + "nodeType": "YulIdentifier", + "src": "7156:6:61" + }, + "nativeSrc": "7156:12:61", + "nodeType": "YulFunctionCall", + "src": "7156:12:61" + }, + "nativeSrc": "7156:12:61", + "nodeType": "YulExpressionStatement", + "src": "7156:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "7129:7:61", + "nodeType": "YulIdentifier", + "src": "7129:7:61" + }, + { + "name": "headStart", + "nativeSrc": "7138:9:61", + "nodeType": "YulIdentifier", + "src": "7138:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "7125:3:61", + "nodeType": "YulIdentifier", + "src": "7125:3:61" + }, + "nativeSrc": "7125:23:61", + "nodeType": "YulFunctionCall", + "src": "7125:23:61" + }, + { + "kind": "number", + "nativeSrc": "7150:2:61", + "nodeType": "YulLiteral", + "src": "7150:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "7121:3:61", + "nodeType": "YulIdentifier", + "src": "7121:3:61" + }, + "nativeSrc": "7121:32:61", + "nodeType": "YulFunctionCall", + "src": "7121:32:61" + }, + "nativeSrc": "7118:52:61", + "nodeType": "YulIf", + "src": "7118:52:61" + }, + { + "nativeSrc": "7179:37:61", + "nodeType": "YulVariableDeclaration", + "src": "7179:37:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7206:9:61", + "nodeType": "YulIdentifier", + "src": "7206:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "7193:12:61", + "nodeType": "YulIdentifier", + "src": "7193:12:61" + }, + "nativeSrc": "7193:23:61", + "nodeType": "YulFunctionCall", + "src": "7193:23:61" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "7183:6:61", + "nodeType": "YulTypedName", + "src": "7183:6:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "7259:16:61", + "nodeType": "YulBlock", + "src": "7259:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7268:1:61", + "nodeType": "YulLiteral", + "src": "7268:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "7271:1:61", + "nodeType": "YulLiteral", + "src": "7271:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "7261:6:61", + "nodeType": "YulIdentifier", + "src": "7261:6:61" + }, + "nativeSrc": "7261:12:61", + "nodeType": "YulFunctionCall", + "src": "7261:12:61" + }, + "nativeSrc": "7261:12:61", + "nodeType": "YulExpressionStatement", + "src": "7261:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "7231:6:61", + "nodeType": "YulIdentifier", + "src": "7231:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7247:2:61", + "nodeType": "YulLiteral", + "src": "7247:2:61", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "7251:1:61", + "nodeType": "YulLiteral", + "src": "7251:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "7243:3:61", + "nodeType": "YulIdentifier", + "src": "7243:3:61" + }, + "nativeSrc": "7243:10:61", + "nodeType": "YulFunctionCall", + "src": "7243:10:61" + }, + { + "kind": "number", + "nativeSrc": "7255:1:61", + "nodeType": "YulLiteral", + "src": "7255:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "7239:3:61", + "nodeType": "YulIdentifier", + "src": "7239:3:61" + }, + "nativeSrc": "7239:18:61", + "nodeType": "YulFunctionCall", + "src": "7239:18:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "7228:2:61", + "nodeType": "YulIdentifier", + "src": "7228:2:61" + }, + "nativeSrc": "7228:30:61", + "nodeType": "YulFunctionCall", + "src": "7228:30:61" + }, + "nativeSrc": "7225:50:61", + "nodeType": "YulIf", + "src": "7225:50:61" + }, + { + "nativeSrc": "7284:70:61", + "nodeType": "YulAssignment", + "src": "7284:70:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7326:9:61", + "nodeType": "YulIdentifier", + "src": "7326:9:61" + }, + { + "name": "offset", + "nativeSrc": "7337:6:61", + "nodeType": "YulIdentifier", + "src": "7337:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7322:3:61", + "nodeType": "YulIdentifier", + "src": "7322:3:61" + }, + "nativeSrc": "7322:22:61", + "nodeType": "YulFunctionCall", + "src": "7322:22:61" + }, + { + "name": "dataEnd", + "nativeSrc": "7346:7:61", + "nodeType": "YulIdentifier", + "src": "7346:7:61" + } + ], + "functionName": { + "name": "abi_decode_array_string_dyn", + "nativeSrc": "7294:27:61", + "nodeType": "YulIdentifier", + "src": "7294:27:61" + }, + "nativeSrc": "7294:60:61", + "nodeType": "YulFunctionCall", + "src": "7294:60:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "7284:6:61", + "nodeType": "YulIdentifier", + "src": "7284:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_array$_t_string_memory_ptr_$dyn_memory_ptr", + "nativeSrc": "7003:357:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "7074:9:61", + "nodeType": "YulTypedName", + "src": "7074:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "7085:7:61", + "nodeType": "YulTypedName", + "src": "7085:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "7097:6:61", + "nodeType": "YulTypedName", + "src": "7097:6:61", + "type": "" + } + ], + "src": "7003:357:61" + }, + { + "body": { + "nativeSrc": "7563:816:61", + "nodeType": "YulBlock", + "src": "7563:816:61", + "statements": [ + { + "body": { + "nativeSrc": "7610:16:61", + "nodeType": "YulBlock", + "src": "7610:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7619:1:61", + "nodeType": "YulLiteral", + "src": "7619:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "7622:1:61", + "nodeType": "YulLiteral", + "src": "7622:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "7612:6:61", + "nodeType": "YulIdentifier", + "src": "7612:6:61" + }, + "nativeSrc": "7612:12:61", + "nodeType": "YulFunctionCall", + "src": "7612:12:61" + }, + "nativeSrc": "7612:12:61", + "nodeType": "YulExpressionStatement", + "src": "7612:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "7584:7:61", + "nodeType": "YulIdentifier", + "src": "7584:7:61" + }, + { + "name": "headStart", + "nativeSrc": "7593:9:61", + "nodeType": "YulIdentifier", + "src": "7593:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "7580:3:61", + "nodeType": "YulIdentifier", + "src": "7580:3:61" + }, + "nativeSrc": "7580:23:61", + "nodeType": "YulFunctionCall", + "src": "7580:23:61" + }, + { + "kind": "number", + "nativeSrc": "7605:3:61", + "nodeType": "YulLiteral", + "src": "7605:3:61", + "type": "", + "value": "256" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "7576:3:61", + "nodeType": "YulIdentifier", + "src": "7576:3:61" + }, + "nativeSrc": "7576:33:61", + "nodeType": "YulFunctionCall", + "src": "7576:33:61" + }, + "nativeSrc": "7573:53:61", + "nodeType": "YulIf", + "src": "7573:53:61" + }, + { + "nativeSrc": "7635:36:61", + "nodeType": "YulVariableDeclaration", + "src": "7635:36:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7661:9:61", + "nodeType": "YulIdentifier", + "src": "7661:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "7648:12:61", + "nodeType": "YulIdentifier", + "src": "7648:12:61" + }, + "nativeSrc": "7648:23:61", + "nodeType": "YulFunctionCall", + "src": "7648:23:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "7639:5:61", + "nodeType": "YulTypedName", + "src": "7639:5:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "7705:5:61", + "nodeType": "YulIdentifier", + "src": "7705:5:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "7680:24:61", + "nodeType": "YulIdentifier", + "src": "7680:24:61" + }, + "nativeSrc": "7680:31:61", + "nodeType": "YulFunctionCall", + "src": "7680:31:61" + }, + "nativeSrc": "7680:31:61", + "nodeType": "YulExpressionStatement", + "src": "7680:31:61" + }, + { + "nativeSrc": "7720:15:61", + "nodeType": "YulAssignment", + "src": "7720:15:61", + "value": { + "name": "value", + "nativeSrc": "7730:5:61", + "nodeType": "YulIdentifier", + "src": "7730:5:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "7720:6:61", + "nodeType": "YulIdentifier", + "src": "7720:6:61" + } + ] + }, + { + "nativeSrc": "7744:47:61", + "nodeType": "YulVariableDeclaration", + "src": "7744:47:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7776:9:61", + "nodeType": "YulIdentifier", + "src": "7776:9:61" + }, + { + "kind": "number", + "nativeSrc": "7787:2:61", + "nodeType": "YulLiteral", + "src": "7787:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7772:3:61", + "nodeType": "YulIdentifier", + "src": "7772:3:61" + }, + "nativeSrc": "7772:18:61", + "nodeType": "YulFunctionCall", + "src": "7772:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "7759:12:61", + "nodeType": "YulIdentifier", + "src": "7759:12:61" + }, + "nativeSrc": "7759:32:61", + "nodeType": "YulFunctionCall", + "src": "7759:32:61" + }, + "variables": [ + { + "name": "value_1", + "nativeSrc": "7748:7:61", + "nodeType": "YulTypedName", + "src": "7748:7:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nativeSrc": "7825:7:61", + "nodeType": "YulIdentifier", + "src": "7825:7:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "7800:24:61", + "nodeType": "YulIdentifier", + "src": "7800:24:61" + }, + "nativeSrc": "7800:33:61", + "nodeType": "YulFunctionCall", + "src": "7800:33:61" + }, + "nativeSrc": "7800:33:61", + "nodeType": "YulExpressionStatement", + "src": "7800:33:61" + }, + { + "nativeSrc": "7842:17:61", + "nodeType": "YulAssignment", + "src": "7842:17:61", + "value": { + "name": "value_1", + "nativeSrc": "7852:7:61", + "nodeType": "YulIdentifier", + "src": "7852:7:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "7842:6:61", + "nodeType": "YulIdentifier", + "src": "7842:6:61" + } + ] + }, + { + "nativeSrc": "7868:47:61", + "nodeType": "YulVariableDeclaration", + "src": "7868:47:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7900:9:61", + "nodeType": "YulIdentifier", + "src": "7900:9:61" + }, + { + "kind": "number", + "nativeSrc": "7911:2:61", + "nodeType": "YulLiteral", + "src": "7911:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7896:3:61", + "nodeType": "YulIdentifier", + "src": "7896:3:61" + }, + "nativeSrc": "7896:18:61", + "nodeType": "YulFunctionCall", + "src": "7896:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "7883:12:61", + "nodeType": "YulIdentifier", + "src": "7883:12:61" + }, + "nativeSrc": "7883:32:61", + "nodeType": "YulFunctionCall", + "src": "7883:32:61" + }, + "variables": [ + { + "name": "value_2", + "nativeSrc": "7872:7:61", + "nodeType": "YulTypedName", + "src": "7872:7:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_2", + "nativeSrc": "7949:7:61", + "nodeType": "YulIdentifier", + "src": "7949:7:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "7924:24:61", + "nodeType": "YulIdentifier", + "src": "7924:24:61" + }, + "nativeSrc": "7924:33:61", + "nodeType": "YulFunctionCall", + "src": "7924:33:61" + }, + "nativeSrc": "7924:33:61", + "nodeType": "YulExpressionStatement", + "src": "7924:33:61" + }, + { + "nativeSrc": "7966:17:61", + "nodeType": "YulAssignment", + "src": "7966:17:61", + "value": { + "name": "value_2", + "nativeSrc": "7976:7:61", + "nodeType": "YulIdentifier", + "src": "7976:7:61" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "7966:6:61", + "nodeType": "YulIdentifier", + "src": "7966:6:61" + } + ] + }, + { + "nativeSrc": "7992:42:61", + "nodeType": "YulAssignment", + "src": "7992:42:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8019:9:61", + "nodeType": "YulIdentifier", + "src": "8019:9:61" + }, + { + "kind": "number", + "nativeSrc": "8030:2:61", + "nodeType": "YulLiteral", + "src": "8030:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8015:3:61", + "nodeType": "YulIdentifier", + "src": "8015:3:61" + }, + "nativeSrc": "8015:18:61", + "nodeType": "YulFunctionCall", + "src": "8015:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "8002:12:61", + "nodeType": "YulIdentifier", + "src": "8002:12:61" + }, + "nativeSrc": "8002:32:61", + "nodeType": "YulFunctionCall", + "src": "8002:32:61" + }, + "variableNames": [ + { + "name": "value3", + "nativeSrc": "7992:6:61", + "nodeType": "YulIdentifier", + "src": "7992:6:61" + } + ] + }, + { + "nativeSrc": "8043:43:61", + "nodeType": "YulAssignment", + "src": "8043:43:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8070:9:61", + "nodeType": "YulIdentifier", + "src": "8070:9:61" + }, + { + "kind": "number", + "nativeSrc": "8081:3:61", + "nodeType": "YulLiteral", + "src": "8081:3:61", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8066:3:61", + "nodeType": "YulIdentifier", + "src": "8066:3:61" + }, + "nativeSrc": "8066:19:61", + "nodeType": "YulFunctionCall", + "src": "8066:19:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "8053:12:61", + "nodeType": "YulIdentifier", + "src": "8053:12:61" + }, + "nativeSrc": "8053:33:61", + "nodeType": "YulFunctionCall", + "src": "8053:33:61" + }, + "variableNames": [ + { + "name": "value4", + "nativeSrc": "8043:6:61", + "nodeType": "YulIdentifier", + "src": "8043:6:61" + } + ] + }, + { + "nativeSrc": "8095:43:61", + "nodeType": "YulAssignment", + "src": "8095:43:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8122:9:61", + "nodeType": "YulIdentifier", + "src": "8122:9:61" + }, + { + "kind": "number", + "nativeSrc": "8133:3:61", + "nodeType": "YulLiteral", + "src": "8133:3:61", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8118:3:61", + "nodeType": "YulIdentifier", + "src": "8118:3:61" + }, + "nativeSrc": "8118:19:61", + "nodeType": "YulFunctionCall", + "src": "8118:19:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "8105:12:61", + "nodeType": "YulIdentifier", + "src": "8105:12:61" + }, + "nativeSrc": "8105:33:61", + "nodeType": "YulFunctionCall", + "src": "8105:33:61" + }, + "variableNames": [ + { + "name": "value5", + "nativeSrc": "8095:6:61", + "nodeType": "YulIdentifier", + "src": "8095:6:61" + } + ] + }, + { + "nativeSrc": "8147:43:61", + "nodeType": "YulAssignment", + "src": "8147:43:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8174:9:61", + "nodeType": "YulIdentifier", + "src": "8174:9:61" + }, + { + "kind": "number", + "nativeSrc": "8185:3:61", + "nodeType": "YulLiteral", + "src": "8185:3:61", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8170:3:61", + "nodeType": "YulIdentifier", + "src": "8170:3:61" + }, + "nativeSrc": "8170:19:61", + "nodeType": "YulFunctionCall", + "src": "8170:19:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "8157:12:61", + "nodeType": "YulIdentifier", + "src": "8157:12:61" + }, + "nativeSrc": "8157:33:61", + "nodeType": "YulFunctionCall", + "src": "8157:33:61" + }, + "variableNames": [ + { + "name": "value6", + "nativeSrc": "8147:6:61", + "nodeType": "YulIdentifier", + "src": "8147:6:61" + } + ] + }, + { + "nativeSrc": "8199:47:61", + "nodeType": "YulVariableDeclaration", + "src": "8199:47:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8230:9:61", + "nodeType": "YulIdentifier", + "src": "8230:9:61" + }, + { + "kind": "number", + "nativeSrc": "8241:3:61", + "nodeType": "YulLiteral", + "src": "8241:3:61", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8226:3:61", + "nodeType": "YulIdentifier", + "src": "8226:3:61" + }, + "nativeSrc": "8226:19:61", + "nodeType": "YulFunctionCall", + "src": "8226:19:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "8213:12:61", + "nodeType": "YulIdentifier", + "src": "8213:12:61" + }, + "nativeSrc": "8213:33:61", + "nodeType": "YulFunctionCall", + "src": "8213:33:61" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "8203:6:61", + "nodeType": "YulTypedName", + "src": "8203:6:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "8289:16:61", + "nodeType": "YulBlock", + "src": "8289:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8298:1:61", + "nodeType": "YulLiteral", + "src": "8298:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "8301:1:61", + "nodeType": "YulLiteral", + "src": "8301:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "8291:6:61", + "nodeType": "YulIdentifier", + "src": "8291:6:61" + }, + "nativeSrc": "8291:12:61", + "nodeType": "YulFunctionCall", + "src": "8291:12:61" + }, + "nativeSrc": "8291:12:61", + "nodeType": "YulExpressionStatement", + "src": "8291:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "8261:6:61", + "nodeType": "YulIdentifier", + "src": "8261:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8277:2:61", + "nodeType": "YulLiteral", + "src": "8277:2:61", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "8281:1:61", + "nodeType": "YulLiteral", + "src": "8281:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "8273:3:61", + "nodeType": "YulIdentifier", + "src": "8273:3:61" + }, + "nativeSrc": "8273:10:61", + "nodeType": "YulFunctionCall", + "src": "8273:10:61" + }, + { + "kind": "number", + "nativeSrc": "8285:1:61", + "nodeType": "YulLiteral", + "src": "8285:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "8269:3:61", + "nodeType": "YulIdentifier", + "src": "8269:3:61" + }, + "nativeSrc": "8269:18:61", + "nodeType": "YulFunctionCall", + "src": "8269:18:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "8258:2:61", + "nodeType": "YulIdentifier", + "src": "8258:2:61" + }, + "nativeSrc": "8258:30:61", + "nodeType": "YulFunctionCall", + "src": "8258:30:61" + }, + "nativeSrc": "8255:50:61", + "nodeType": "YulIf", + "src": "8255:50:61" + }, + { + "nativeSrc": "8314:59:61", + "nodeType": "YulAssignment", + "src": "8314:59:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8345:9:61", + "nodeType": "YulIdentifier", + "src": "8345:9:61" + }, + { + "name": "offset", + "nativeSrc": "8356:6:61", + "nodeType": "YulIdentifier", + "src": "8356:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8341:3:61", + "nodeType": "YulIdentifier", + "src": "8341:3:61" + }, + "nativeSrc": "8341:22:61", + "nodeType": "YulFunctionCall", + "src": "8341:22:61" + }, + { + "name": "dataEnd", + "nativeSrc": "8365:7:61", + "nodeType": "YulIdentifier", + "src": "8365:7:61" + } + ], + "functionName": { + "name": "abi_decode_bytes", + "nativeSrc": "8324:16:61", + "nodeType": "YulIdentifier", + "src": "8324:16:61" + }, + "nativeSrc": "8324:49:61", + "nodeType": "YulFunctionCall", + "src": "8324:49:61" + }, + "variableNames": [ + { + "name": "value7", + "nativeSrc": "8314:6:61", + "nodeType": "YulIdentifier", + "src": "8314:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_addresst_uint256t_uint256t_uint256t_uint256t_bytes_memory_ptr", + "nativeSrc": "7365:1014:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "7473:9:61", + "nodeType": "YulTypedName", + "src": "7473:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "7484:7:61", + "nodeType": "YulTypedName", + "src": "7484:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "7496:6:61", + "nodeType": "YulTypedName", + "src": "7496:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "7504:6:61", + "nodeType": "YulTypedName", + "src": "7504:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "7512:6:61", + "nodeType": "YulTypedName", + "src": "7512:6:61", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "7520:6:61", + "nodeType": "YulTypedName", + "src": "7520:6:61", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "7528:6:61", + "nodeType": "YulTypedName", + "src": "7528:6:61", + "type": "" + }, + { + "name": "value5", + "nativeSrc": "7536:6:61", + "nodeType": "YulTypedName", + "src": "7536:6:61", + "type": "" + }, + { + "name": "value6", + "nativeSrc": "7544:6:61", + "nodeType": "YulTypedName", + "src": "7544:6:61", + "type": "" + }, + { + "name": "value7", + "nativeSrc": "7552:6:61", + "nodeType": "YulTypedName", + "src": "7552:6:61", + "type": "" + } + ], + "src": "7365:1014:61" + }, + { + "body": { + "nativeSrc": "8513:145:61", + "nodeType": "YulBlock", + "src": "8513:145:61", + "statements": [ + { + "nativeSrc": "8523:26:61", + "nodeType": "YulAssignment", + "src": "8523:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8535:9:61", + "nodeType": "YulIdentifier", + "src": "8535:9:61" + }, + { + "kind": "number", + "nativeSrc": "8546:2:61", + "nodeType": "YulLiteral", + "src": "8546:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8531:3:61", + "nodeType": "YulIdentifier", + "src": "8531:3:61" + }, + "nativeSrc": "8531:18:61", + "nodeType": "YulFunctionCall", + "src": "8531:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "8523:4:61", + "nodeType": "YulIdentifier", + "src": "8523:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8565:9:61", + "nodeType": "YulIdentifier", + "src": "8565:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "8580:6:61", + "nodeType": "YulIdentifier", + "src": "8580:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8596:3:61", + "nodeType": "YulLiteral", + "src": "8596:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "8601:1:61", + "nodeType": "YulLiteral", + "src": "8601:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "8592:3:61", + "nodeType": "YulIdentifier", + "src": "8592:3:61" + }, + "nativeSrc": "8592:11:61", + "nodeType": "YulFunctionCall", + "src": "8592:11:61" + }, + { + "kind": "number", + "nativeSrc": "8605:1:61", + "nodeType": "YulLiteral", + "src": "8605:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "8588:3:61", + "nodeType": "YulIdentifier", + "src": "8588:3:61" + }, + "nativeSrc": "8588:19:61", + "nodeType": "YulFunctionCall", + "src": "8588:19:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "8576:3:61", + "nodeType": "YulIdentifier", + "src": "8576:3:61" + }, + "nativeSrc": "8576:32:61", + "nodeType": "YulFunctionCall", + "src": "8576:32:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8558:6:61", + "nodeType": "YulIdentifier", + "src": "8558:6:61" + }, + "nativeSrc": "8558:51:61", + "nodeType": "YulFunctionCall", + "src": "8558:51:61" + }, + "nativeSrc": "8558:51:61", + "nodeType": "YulExpressionStatement", + "src": "8558:51:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8629:9:61", + "nodeType": "YulIdentifier", + "src": "8629:9:61" + }, + { + "kind": "number", + "nativeSrc": "8640:2:61", + "nodeType": "YulLiteral", + "src": "8640:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8625:3:61", + "nodeType": "YulIdentifier", + "src": "8625:3:61" + }, + "nativeSrc": "8625:18:61", + "nodeType": "YulFunctionCall", + "src": "8625:18:61" + }, + { + "name": "value1", + "nativeSrc": "8645:6:61", + "nodeType": "YulIdentifier", + "src": "8645:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8618:6:61", + "nodeType": "YulIdentifier", + "src": "8618:6:61" + }, + "nativeSrc": "8618:34:61", + "nodeType": "YulFunctionCall", + "src": "8618:34:61" + }, + "nativeSrc": "8618:34:61", + "nodeType": "YulExpressionStatement", + "src": "8618:34:61" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed", + "nativeSrc": "8384:274:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "8474:9:61", + "nodeType": "YulTypedName", + "src": "8474:9:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "8485:6:61", + "nodeType": "YulTypedName", + "src": "8485:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "8493:6:61", + "nodeType": "YulTypedName", + "src": "8493:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "8504:4:61", + "nodeType": "YulTypedName", + "src": "8504:4:61", + "type": "" + } + ], + "src": "8384:274:61" + }, + { + "body": { + "nativeSrc": "8733:110:61", + "nodeType": "YulBlock", + "src": "8733:110:61", + "statements": [ + { + "body": { + "nativeSrc": "8779:16:61", + "nodeType": "YulBlock", + "src": "8779:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8788:1:61", + "nodeType": "YulLiteral", + "src": "8788:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "8791:1:61", + "nodeType": "YulLiteral", + "src": "8791:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "8781:6:61", + "nodeType": "YulIdentifier", + "src": "8781:6:61" + }, + "nativeSrc": "8781:12:61", + "nodeType": "YulFunctionCall", + "src": "8781:12:61" + }, + "nativeSrc": "8781:12:61", + "nodeType": "YulExpressionStatement", + "src": "8781:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "8754:7:61", + "nodeType": "YulIdentifier", + "src": "8754:7:61" + }, + { + "name": "headStart", + "nativeSrc": "8763:9:61", + "nodeType": "YulIdentifier", + "src": "8763:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "8750:3:61", + "nodeType": "YulIdentifier", + "src": "8750:3:61" + }, + "nativeSrc": "8750:23:61", + "nodeType": "YulFunctionCall", + "src": "8750:23:61" + }, + { + "kind": "number", + "nativeSrc": "8775:2:61", + "nodeType": "YulLiteral", + "src": "8775:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "8746:3:61", + "nodeType": "YulIdentifier", + "src": "8746:3:61" + }, + "nativeSrc": "8746:32:61", + "nodeType": "YulFunctionCall", + "src": "8746:32:61" + }, + "nativeSrc": "8743:52:61", + "nodeType": "YulIf", + "src": "8743:52:61" + }, + { + "nativeSrc": "8804:33:61", + "nodeType": "YulAssignment", + "src": "8804:33:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8827:9:61", + "nodeType": "YulIdentifier", + "src": "8827:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "8814:12:61", + "nodeType": "YulIdentifier", + "src": "8814:12:61" + }, + "nativeSrc": "8814:23:61", + "nodeType": "YulFunctionCall", + "src": "8814:23:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "8804:6:61", + "nodeType": "YulIdentifier", + "src": "8804:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32", + "nativeSrc": "8663:180:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "8699:9:61", + "nodeType": "YulTypedName", + "src": "8699:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "8710:7:61", + "nodeType": "YulTypedName", + "src": "8710:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "8722:6:61", + "nodeType": "YulTypedName", + "src": "8722:6:61", + "type": "" + } + ], + "src": "8663:180:61" + }, + { + "body": { + "nativeSrc": "8896:111:61", + "nodeType": "YulBlock", + "src": "8896:111:61", + "statements": [ + { + "nativeSrc": "8906:29:61", + "nodeType": "YulAssignment", + "src": "8906:29:61", + "value": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "8928:6:61", + "nodeType": "YulIdentifier", + "src": "8928:6:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "8915:12:61", + "nodeType": "YulIdentifier", + "src": "8915:12:61" + }, + "nativeSrc": "8915:20:61", + "nodeType": "YulFunctionCall", + "src": "8915:20:61" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "8906:5:61", + "nodeType": "YulIdentifier", + "src": "8906:5:61" + } + ] + }, + { + "body": { + "nativeSrc": "8985:16:61", + "nodeType": "YulBlock", + "src": "8985:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8994:1:61", + "nodeType": "YulLiteral", + "src": "8994:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "8997:1:61", + "nodeType": "YulLiteral", + "src": "8997:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "8987:6:61", + "nodeType": "YulIdentifier", + "src": "8987:6:61" + }, + "nativeSrc": "8987:12:61", + "nodeType": "YulFunctionCall", + "src": "8987:12:61" + }, + "nativeSrc": "8987:12:61", + "nodeType": "YulExpressionStatement", + "src": "8987:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "8957:5:61", + "nodeType": "YulIdentifier", + "src": "8957:5:61" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "8968:5:61", + "nodeType": "YulIdentifier", + "src": "8968:5:61" + }, + { + "kind": "number", + "nativeSrc": "8975:6:61", + "nodeType": "YulLiteral", + "src": "8975:6:61", + "type": "", + "value": "0xffff" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "8964:3:61", + "nodeType": "YulIdentifier", + "src": "8964:3:61" + }, + "nativeSrc": "8964:18:61", + "nodeType": "YulFunctionCall", + "src": "8964:18:61" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "8954:2:61", + "nodeType": "YulIdentifier", + "src": "8954:2:61" + }, + "nativeSrc": "8954:29:61", + "nodeType": "YulFunctionCall", + "src": "8954:29:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "8947:6:61", + "nodeType": "YulIdentifier", + "src": "8947:6:61" + }, + "nativeSrc": "8947:37:61", + "nodeType": "YulFunctionCall", + "src": "8947:37:61" + }, + "nativeSrc": "8944:57:61", + "nodeType": "YulIf", + "src": "8944:57:61" + } + ] + }, + "name": "abi_decode_uint16", + "nativeSrc": "8848:159:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nativeSrc": "8875:6:61", + "nodeType": "YulTypedName", + "src": "8875:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nativeSrc": "8886:5:61", + "nodeType": "YulTypedName", + "src": "8886:5:61", + "type": "" + } + ], + "src": "8848:159:61" + }, + { + "body": { + "nativeSrc": "9114:222:61", + "nodeType": "YulBlock", + "src": "9114:222:61", + "statements": [ + { + "body": { + "nativeSrc": "9160:16:61", + "nodeType": "YulBlock", + "src": "9160:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9169:1:61", + "nodeType": "YulLiteral", + "src": "9169:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "9172:1:61", + "nodeType": "YulLiteral", + "src": "9172:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "9162:6:61", + "nodeType": "YulIdentifier", + "src": "9162:6:61" + }, + "nativeSrc": "9162:12:61", + "nodeType": "YulFunctionCall", + "src": "9162:12:61" + }, + "nativeSrc": "9162:12:61", + "nodeType": "YulExpressionStatement", + "src": "9162:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "9135:7:61", + "nodeType": "YulIdentifier", + "src": "9135:7:61" + }, + { + "name": "headStart", + "nativeSrc": "9144:9:61", + "nodeType": "YulIdentifier", + "src": "9144:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "9131:3:61", + "nodeType": "YulIdentifier", + "src": "9131:3:61" + }, + "nativeSrc": "9131:23:61", + "nodeType": "YulFunctionCall", + "src": "9131:23:61" + }, + { + "kind": "number", + "nativeSrc": "9156:2:61", + "nodeType": "YulLiteral", + "src": "9156:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "9127:3:61", + "nodeType": "YulIdentifier", + "src": "9127:3:61" + }, + "nativeSrc": "9127:32:61", + "nodeType": "YulFunctionCall", + "src": "9127:32:61" + }, + "nativeSrc": "9124:52:61", + "nodeType": "YulIf", + "src": "9124:52:61" + }, + { + "nativeSrc": "9185:33:61", + "nodeType": "YulAssignment", + "src": "9185:33:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "9208:9:61", + "nodeType": "YulIdentifier", + "src": "9208:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "9195:12:61", + "nodeType": "YulIdentifier", + "src": "9195:12:61" + }, + "nativeSrc": "9195:23:61", + "nodeType": "YulFunctionCall", + "src": "9195:23:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "9185:6:61", + "nodeType": "YulIdentifier", + "src": "9185:6:61" + } + ] + }, + { + "nativeSrc": "9227:47:61", + "nodeType": "YulAssignment", + "src": "9227:47:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "9259:9:61", + "nodeType": "YulIdentifier", + "src": "9259:9:61" + }, + { + "kind": "number", + "nativeSrc": "9270:2:61", + "nodeType": "YulLiteral", + "src": "9270:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9255:3:61", + "nodeType": "YulIdentifier", + "src": "9255:3:61" + }, + "nativeSrc": "9255:18:61", + "nodeType": "YulFunctionCall", + "src": "9255:18:61" + } + ], + "functionName": { + "name": "abi_decode_uint16", + "nativeSrc": "9237:17:61", + "nodeType": "YulIdentifier", + "src": "9237:17:61" + }, + "nativeSrc": "9237:37:61", + "nodeType": "YulFunctionCall", + "src": "9237:37:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "9227:6:61", + "nodeType": "YulIdentifier", + "src": "9227:6:61" + } + ] + }, + { + "nativeSrc": "9283:47:61", + "nodeType": "YulAssignment", + "src": "9283:47:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "9315:9:61", + "nodeType": "YulIdentifier", + "src": "9315:9:61" + }, + { + "kind": "number", + "nativeSrc": "9326:2:61", + "nodeType": "YulLiteral", + "src": "9326:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9311:3:61", + "nodeType": "YulIdentifier", + "src": "9311:3:61" + }, + "nativeSrc": "9311:18:61", + "nodeType": "YulFunctionCall", + "src": "9311:18:61" + } + ], + "functionName": { + "name": "abi_decode_uint16", + "nativeSrc": "9293:17:61", + "nodeType": "YulIdentifier", + "src": "9293:17:61" + }, + "nativeSrc": "9293:37:61", + "nodeType": "YulFunctionCall", + "src": "9293:37:61" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "9283:6:61", + "nodeType": "YulIdentifier", + "src": "9283:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_uint16t_uint16", + "nativeSrc": "9012:324:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "9064:9:61", + "nodeType": "YulTypedName", + "src": "9064:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "9075:7:61", + "nodeType": "YulTypedName", + "src": "9075:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "9087:6:61", + "nodeType": "YulTypedName", + "src": "9087:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "9095:6:61", + "nodeType": "YulTypedName", + "src": "9095:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "9103:6:61", + "nodeType": "YulTypedName", + "src": "9103:6:61", + "type": "" + } + ], + "src": "9012:324:61" + }, + { + "body": { + "nativeSrc": "9428:228:61", + "nodeType": "YulBlock", + "src": "9428:228:61", + "statements": [ + { + "body": { + "nativeSrc": "9474:16:61", + "nodeType": "YulBlock", + "src": "9474:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9483:1:61", + "nodeType": "YulLiteral", + "src": "9483:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "9486:1:61", + "nodeType": "YulLiteral", + "src": "9486:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "9476:6:61", + "nodeType": "YulIdentifier", + "src": "9476:6:61" + }, + "nativeSrc": "9476:12:61", + "nodeType": "YulFunctionCall", + "src": "9476:12:61" + }, + "nativeSrc": "9476:12:61", + "nodeType": "YulExpressionStatement", + "src": "9476:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "9449:7:61", + "nodeType": "YulIdentifier", + "src": "9449:7:61" + }, + { + "name": "headStart", + "nativeSrc": "9458:9:61", + "nodeType": "YulIdentifier", + "src": "9458:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "9445:3:61", + "nodeType": "YulIdentifier", + "src": "9445:3:61" + }, + "nativeSrc": "9445:23:61", + "nodeType": "YulFunctionCall", + "src": "9445:23:61" + }, + { + "kind": "number", + "nativeSrc": "9470:2:61", + "nodeType": "YulLiteral", + "src": "9470:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "9441:3:61", + "nodeType": "YulIdentifier", + "src": "9441:3:61" + }, + "nativeSrc": "9441:32:61", + "nodeType": "YulFunctionCall", + "src": "9441:32:61" + }, + "nativeSrc": "9438:52:61", + "nodeType": "YulIf", + "src": "9438:52:61" + }, + { + "nativeSrc": "9499:33:61", + "nodeType": "YulAssignment", + "src": "9499:33:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "9522:9:61", + "nodeType": "YulIdentifier", + "src": "9522:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "9509:12:61", + "nodeType": "YulIdentifier", + "src": "9509:12:61" + }, + "nativeSrc": "9509:23:61", + "nodeType": "YulFunctionCall", + "src": "9509:23:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "9499:6:61", + "nodeType": "YulIdentifier", + "src": "9499:6:61" + } + ] + }, + { + "nativeSrc": "9541:45:61", + "nodeType": "YulVariableDeclaration", + "src": "9541:45:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "9571:9:61", + "nodeType": "YulIdentifier", + "src": "9571:9:61" + }, + { + "kind": "number", + "nativeSrc": "9582:2:61", + "nodeType": "YulLiteral", + "src": "9582:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9567:3:61", + "nodeType": "YulIdentifier", + "src": "9567:3:61" + }, + "nativeSrc": "9567:18:61", + "nodeType": "YulFunctionCall", + "src": "9567:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "9554:12:61", + "nodeType": "YulIdentifier", + "src": "9554:12:61" + }, + "nativeSrc": "9554:32:61", + "nodeType": "YulFunctionCall", + "src": "9554:32:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "9545:5:61", + "nodeType": "YulTypedName", + "src": "9545:5:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "9620:5:61", + "nodeType": "YulIdentifier", + "src": "9620:5:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "9595:24:61", + "nodeType": "YulIdentifier", + "src": "9595:24:61" + }, + "nativeSrc": "9595:31:61", + "nodeType": "YulFunctionCall", + "src": "9595:31:61" + }, + "nativeSrc": "9595:31:61", + "nodeType": "YulExpressionStatement", + "src": "9595:31:61" + }, + { + "nativeSrc": "9635:15:61", + "nodeType": "YulAssignment", + "src": "9635:15:61", + "value": { + "name": "value", + "nativeSrc": "9645:5:61", + "nodeType": "YulIdentifier", + "src": "9645:5:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "9635:6:61", + "nodeType": "YulIdentifier", + "src": "9635:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_address", + "nativeSrc": "9341:315:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "9386:9:61", + "nodeType": "YulTypedName", + "src": "9386:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "9397:7:61", + "nodeType": "YulTypedName", + "src": "9397:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "9409:6:61", + "nodeType": "YulTypedName", + "src": "9409:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "9417:6:61", + "nodeType": "YulTypedName", + "src": "9417:6:61", + "type": "" + } + ], + "src": "9341:315:61" + }, + { + "body": { + "nativeSrc": "9799:602:61", + "nodeType": "YulBlock", + "src": "9799:602:61", + "statements": [ + { + "body": { + "nativeSrc": "9846:16:61", + "nodeType": "YulBlock", + "src": "9846:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9855:1:61", + "nodeType": "YulLiteral", + "src": "9855:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "9858:1:61", + "nodeType": "YulLiteral", + "src": "9858:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "9848:6:61", + "nodeType": "YulIdentifier", + "src": "9848:6:61" + }, + "nativeSrc": "9848:12:61", + "nodeType": "YulFunctionCall", + "src": "9848:12:61" + }, + "nativeSrc": "9848:12:61", + "nodeType": "YulExpressionStatement", + "src": "9848:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "9820:7:61", + "nodeType": "YulIdentifier", + "src": "9820:7:61" + }, + { + "name": "headStart", + "nativeSrc": "9829:9:61", + "nodeType": "YulIdentifier", + "src": "9829:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "9816:3:61", + "nodeType": "YulIdentifier", + "src": "9816:3:61" + }, + "nativeSrc": "9816:23:61", + "nodeType": "YulFunctionCall", + "src": "9816:23:61" + }, + { + "kind": "number", + "nativeSrc": "9841:3:61", + "nodeType": "YulLiteral", + "src": "9841:3:61", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "9812:3:61", + "nodeType": "YulIdentifier", + "src": "9812:3:61" + }, + "nativeSrc": "9812:33:61", + "nodeType": "YulFunctionCall", + "src": "9812:33:61" + }, + "nativeSrc": "9809:53:61", + "nodeType": "YulIf", + "src": "9809:53:61" + }, + { + "nativeSrc": "9871:36:61", + "nodeType": "YulVariableDeclaration", + "src": "9871:36:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "9897:9:61", + "nodeType": "YulIdentifier", + "src": "9897:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "9884:12:61", + "nodeType": "YulIdentifier", + "src": "9884:12:61" + }, + "nativeSrc": "9884:23:61", + "nodeType": "YulFunctionCall", + "src": "9884:23:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "9875:5:61", + "nodeType": "YulTypedName", + "src": "9875:5:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "9941:5:61", + "nodeType": "YulIdentifier", + "src": "9941:5:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "9916:24:61", + "nodeType": "YulIdentifier", + "src": "9916:24:61" + }, + "nativeSrc": "9916:31:61", + "nodeType": "YulFunctionCall", + "src": "9916:31:61" + }, + "nativeSrc": "9916:31:61", + "nodeType": "YulExpressionStatement", + "src": "9916:31:61" + }, + { + "nativeSrc": "9956:15:61", + "nodeType": "YulAssignment", + "src": "9956:15:61", + "value": { + "name": "value", + "nativeSrc": "9966:5:61", + "nodeType": "YulIdentifier", + "src": "9966:5:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "9956:6:61", + "nodeType": "YulIdentifier", + "src": "9956:6:61" + } + ] + }, + { + "nativeSrc": "9980:47:61", + "nodeType": "YulVariableDeclaration", + "src": "9980:47:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10012:9:61", + "nodeType": "YulIdentifier", + "src": "10012:9:61" + }, + { + "kind": "number", + "nativeSrc": "10023:2:61", + "nodeType": "YulLiteral", + "src": "10023:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10008:3:61", + "nodeType": "YulIdentifier", + "src": "10008:3:61" + }, + "nativeSrc": "10008:18:61", + "nodeType": "YulFunctionCall", + "src": "10008:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "9995:12:61", + "nodeType": "YulIdentifier", + "src": "9995:12:61" + }, + "nativeSrc": "9995:32:61", + "nodeType": "YulFunctionCall", + "src": "9995:32:61" + }, + "variables": [ + { + "name": "value_1", + "nativeSrc": "9984:7:61", + "nodeType": "YulTypedName", + "src": "9984:7:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nativeSrc": "10061:7:61", + "nodeType": "YulIdentifier", + "src": "10061:7:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "10036:24:61", + "nodeType": "YulIdentifier", + "src": "10036:24:61" + }, + "nativeSrc": "10036:33:61", + "nodeType": "YulFunctionCall", + "src": "10036:33:61" + }, + "nativeSrc": "10036:33:61", + "nodeType": "YulExpressionStatement", + "src": "10036:33:61" + }, + { + "nativeSrc": "10078:17:61", + "nodeType": "YulAssignment", + "src": "10078:17:61", + "value": { + "name": "value_1", + "nativeSrc": "10088:7:61", + "nodeType": "YulIdentifier", + "src": "10088:7:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "10078:6:61", + "nodeType": "YulIdentifier", + "src": "10078:6:61" + } + ] + }, + { + "nativeSrc": "10104:42:61", + "nodeType": "YulAssignment", + "src": "10104:42:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10131:9:61", + "nodeType": "YulIdentifier", + "src": "10131:9:61" + }, + { + "kind": "number", + "nativeSrc": "10142:2:61", + "nodeType": "YulLiteral", + "src": "10142:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10127:3:61", + "nodeType": "YulIdentifier", + "src": "10127:3:61" + }, + "nativeSrc": "10127:18:61", + "nodeType": "YulFunctionCall", + "src": "10127:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "10114:12:61", + "nodeType": "YulIdentifier", + "src": "10114:12:61" + }, + "nativeSrc": "10114:32:61", + "nodeType": "YulFunctionCall", + "src": "10114:32:61" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "10104:6:61", + "nodeType": "YulIdentifier", + "src": "10104:6:61" + } + ] + }, + { + "nativeSrc": "10155:47:61", + "nodeType": "YulVariableDeclaration", + "src": "10155:47:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10187:9:61", + "nodeType": "YulIdentifier", + "src": "10187:9:61" + }, + { + "kind": "number", + "nativeSrc": "10198:2:61", + "nodeType": "YulLiteral", + "src": "10198:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10183:3:61", + "nodeType": "YulIdentifier", + "src": "10183:3:61" + }, + "nativeSrc": "10183:18:61", + "nodeType": "YulFunctionCall", + "src": "10183:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "10170:12:61", + "nodeType": "YulIdentifier", + "src": "10170:12:61" + }, + "nativeSrc": "10170:32:61", + "nodeType": "YulFunctionCall", + "src": "10170:32:61" + }, + "variables": [ + { + "name": "value_2", + "nativeSrc": "10159:7:61", + "nodeType": "YulTypedName", + "src": "10159:7:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_2", + "nativeSrc": "10236:7:61", + "nodeType": "YulIdentifier", + "src": "10236:7:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "10211:24:61", + "nodeType": "YulIdentifier", + "src": "10211:24:61" + }, + "nativeSrc": "10211:33:61", + "nodeType": "YulFunctionCall", + "src": "10211:33:61" + }, + "nativeSrc": "10211:33:61", + "nodeType": "YulExpressionStatement", + "src": "10211:33:61" + }, + { + "nativeSrc": "10253:17:61", + "nodeType": "YulAssignment", + "src": "10253:17:61", + "value": { + "name": "value_2", + "nativeSrc": "10263:7:61", + "nodeType": "YulIdentifier", + "src": "10263:7:61" + }, + "variableNames": [ + { + "name": "value3", + "nativeSrc": "10253:6:61", + "nodeType": "YulIdentifier", + "src": "10253:6:61" + } + ] + }, + { + "nativeSrc": "10279:48:61", + "nodeType": "YulVariableDeclaration", + "src": "10279:48:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10311:9:61", + "nodeType": "YulIdentifier", + "src": "10311:9:61" + }, + { + "kind": "number", + "nativeSrc": "10322:3:61", + "nodeType": "YulLiteral", + "src": "10322:3:61", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10307:3:61", + "nodeType": "YulIdentifier", + "src": "10307:3:61" + }, + "nativeSrc": "10307:19:61", + "nodeType": "YulFunctionCall", + "src": "10307:19:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "10294:12:61", + "nodeType": "YulIdentifier", + "src": "10294:12:61" + }, + "nativeSrc": "10294:33:61", + "nodeType": "YulFunctionCall", + "src": "10294:33:61" + }, + "variables": [ + { + "name": "value_3", + "nativeSrc": "10283:7:61", + "nodeType": "YulTypedName", + "src": "10283:7:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_3", + "nativeSrc": "10361:7:61", + "nodeType": "YulIdentifier", + "src": "10361:7:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "10336:24:61", + "nodeType": "YulIdentifier", + "src": "10336:24:61" + }, + "nativeSrc": "10336:33:61", + "nodeType": "YulFunctionCall", + "src": "10336:33:61" + }, + "nativeSrc": "10336:33:61", + "nodeType": "YulExpressionStatement", + "src": "10336:33:61" + }, + { + "nativeSrc": "10378:17:61", + "nodeType": "YulAssignment", + "src": "10378:17:61", + "value": { + "name": "value_3", + "nativeSrc": "10388:7:61", + "nodeType": "YulIdentifier", + "src": "10388:7:61" + }, + "variableNames": [ + { + "name": "value4", + "nativeSrc": "10378:6:61", + "nodeType": "YulIdentifier", + "src": "10378:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_uint256t_addresst_address", + "nativeSrc": "9661:740:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "9733:9:61", + "nodeType": "YulTypedName", + "src": "9733:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "9744:7:61", + "nodeType": "YulTypedName", + "src": "9744:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "9756:6:61", + "nodeType": "YulTypedName", + "src": "9756:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "9764:6:61", + "nodeType": "YulTypedName", + "src": "9764:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "9772:6:61", + "nodeType": "YulTypedName", + "src": "9772:6:61", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "9780:6:61", + "nodeType": "YulTypedName", + "src": "9780:6:61", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "9788:6:61", + "nodeType": "YulTypedName", + "src": "9788:6:61", + "type": "" + } + ], + "src": "9661:740:61" + }, + { + "body": { + "nativeSrc": "10503:292:61", + "nodeType": "YulBlock", + "src": "10503:292:61", + "statements": [ + { + "body": { + "nativeSrc": "10549:16:61", + "nodeType": "YulBlock", + "src": "10549:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10558:1:61", + "nodeType": "YulLiteral", + "src": "10558:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "10561:1:61", + "nodeType": "YulLiteral", + "src": "10561:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "10551:6:61", + "nodeType": "YulIdentifier", + "src": "10551:6:61" + }, + "nativeSrc": "10551:12:61", + "nodeType": "YulFunctionCall", + "src": "10551:12:61" + }, + "nativeSrc": "10551:12:61", + "nodeType": "YulExpressionStatement", + "src": "10551:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "10524:7:61", + "nodeType": "YulIdentifier", + "src": "10524:7:61" + }, + { + "name": "headStart", + "nativeSrc": "10533:9:61", + "nodeType": "YulIdentifier", + "src": "10533:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "10520:3:61", + "nodeType": "YulIdentifier", + "src": "10520:3:61" + }, + "nativeSrc": "10520:23:61", + "nodeType": "YulFunctionCall", + "src": "10520:23:61" + }, + { + "kind": "number", + "nativeSrc": "10545:2:61", + "nodeType": "YulLiteral", + "src": "10545:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "10516:3:61", + "nodeType": "YulIdentifier", + "src": "10516:3:61" + }, + "nativeSrc": "10516:32:61", + "nodeType": "YulFunctionCall", + "src": "10516:32:61" + }, + "nativeSrc": "10513:52:61", + "nodeType": "YulIf", + "src": "10513:52:61" + }, + { + "nativeSrc": "10574:37:61", + "nodeType": "YulVariableDeclaration", + "src": "10574:37:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10601:9:61", + "nodeType": "YulIdentifier", + "src": "10601:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "10588:12:61", + "nodeType": "YulIdentifier", + "src": "10588:12:61" + }, + "nativeSrc": "10588:23:61", + "nodeType": "YulFunctionCall", + "src": "10588:23:61" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "10578:6:61", + "nodeType": "YulTypedName", + "src": "10578:6:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "10654:16:61", + "nodeType": "YulBlock", + "src": "10654:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10663:1:61", + "nodeType": "YulLiteral", + "src": "10663:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "10666:1:61", + "nodeType": "YulLiteral", + "src": "10666:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "10656:6:61", + "nodeType": "YulIdentifier", + "src": "10656:6:61" + }, + "nativeSrc": "10656:12:61", + "nodeType": "YulFunctionCall", + "src": "10656:12:61" + }, + "nativeSrc": "10656:12:61", + "nodeType": "YulExpressionStatement", + "src": "10656:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "10626:6:61", + "nodeType": "YulIdentifier", + "src": "10626:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10642:2:61", + "nodeType": "YulLiteral", + "src": "10642:2:61", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "10646:1:61", + "nodeType": "YulLiteral", + "src": "10646:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "10638:3:61", + "nodeType": "YulIdentifier", + "src": "10638:3:61" + }, + "nativeSrc": "10638:10:61", + "nodeType": "YulFunctionCall", + "src": "10638:10:61" + }, + { + "kind": "number", + "nativeSrc": "10650:1:61", + "nodeType": "YulLiteral", + "src": "10650:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "10634:3:61", + "nodeType": "YulIdentifier", + "src": "10634:3:61" + }, + "nativeSrc": "10634:18:61", + "nodeType": "YulFunctionCall", + "src": "10634:18:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "10623:2:61", + "nodeType": "YulIdentifier", + "src": "10623:2:61" + }, + "nativeSrc": "10623:30:61", + "nodeType": "YulFunctionCall", + "src": "10623:30:61" + }, + "nativeSrc": "10620:50:61", + "nodeType": "YulIf", + "src": "10620:50:61" + }, + { + "nativeSrc": "10679:59:61", + "nodeType": "YulAssignment", + "src": "10679:59:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10710:9:61", + "nodeType": "YulIdentifier", + "src": "10710:9:61" + }, + { + "name": "offset", + "nativeSrc": "10721:6:61", + "nodeType": "YulIdentifier", + "src": "10721:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10706:3:61", + "nodeType": "YulIdentifier", + "src": "10706:3:61" + }, + "nativeSrc": "10706:22:61", + "nodeType": "YulFunctionCall", + "src": "10706:22:61" + }, + { + "name": "dataEnd", + "nativeSrc": "10730:7:61", + "nodeType": "YulIdentifier", + "src": "10730:7:61" + } + ], + "functionName": { + "name": "abi_decode_bytes", + "nativeSrc": "10689:16:61", + "nodeType": "YulIdentifier", + "src": "10689:16:61" + }, + "nativeSrc": "10689:49:61", + "nodeType": "YulFunctionCall", + "src": "10689:49:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "10679:6:61", + "nodeType": "YulIdentifier", + "src": "10679:6:61" + } + ] + }, + { + "nativeSrc": "10747:42:61", + "nodeType": "YulAssignment", + "src": "10747:42:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10774:9:61", + "nodeType": "YulIdentifier", + "src": "10774:9:61" + }, + { + "kind": "number", + "nativeSrc": "10785:2:61", + "nodeType": "YulLiteral", + "src": "10785:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10770:3:61", + "nodeType": "YulIdentifier", + "src": "10770:3:61" + }, + "nativeSrc": "10770:18:61", + "nodeType": "YulFunctionCall", + "src": "10770:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "10757:12:61", + "nodeType": "YulIdentifier", + "src": "10757:12:61" + }, + "nativeSrc": "10757:32:61", + "nodeType": "YulFunctionCall", + "src": "10757:32:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "10747:6:61", + "nodeType": "YulIdentifier", + "src": "10747:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_string_memory_ptrt_uint256", + "nativeSrc": "10406:389:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "10461:9:61", + "nodeType": "YulTypedName", + "src": "10461:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "10472:7:61", + "nodeType": "YulTypedName", + "src": "10472:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "10484:6:61", + "nodeType": "YulTypedName", + "src": "10484:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "10492:6:61", + "nodeType": "YulTypedName", + "src": "10492:6:61", + "type": "" + } + ], + "src": "10406:389:61" + }, + { + "body": { + "nativeSrc": "10842:76:61", + "nodeType": "YulBlock", + "src": "10842:76:61", + "statements": [ + { + "body": { + "nativeSrc": "10896:16:61", + "nodeType": "YulBlock", + "src": "10896:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10905:1:61", + "nodeType": "YulLiteral", + "src": "10905:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "10908:1:61", + "nodeType": "YulLiteral", + "src": "10908:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "10898:6:61", + "nodeType": "YulIdentifier", + "src": "10898:6:61" + }, + "nativeSrc": "10898:12:61", + "nodeType": "YulFunctionCall", + "src": "10898:12:61" + }, + "nativeSrc": "10898:12:61", + "nodeType": "YulExpressionStatement", + "src": "10898:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "10865:5:61", + "nodeType": "YulIdentifier", + "src": "10865:5:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "10886:5:61", + "nodeType": "YulIdentifier", + "src": "10886:5:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "10879:6:61", + "nodeType": "YulIdentifier", + "src": "10879:6:61" + }, + "nativeSrc": "10879:13:61", + "nodeType": "YulFunctionCall", + "src": "10879:13:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "10872:6:61", + "nodeType": "YulIdentifier", + "src": "10872:6:61" + }, + "nativeSrc": "10872:21:61", + "nodeType": "YulFunctionCall", + "src": "10872:21:61" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "10862:2:61", + "nodeType": "YulIdentifier", + "src": "10862:2:61" + }, + "nativeSrc": "10862:32:61", + "nodeType": "YulFunctionCall", + "src": "10862:32:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "10855:6:61", + "nodeType": "YulIdentifier", + "src": "10855:6:61" + }, + "nativeSrc": "10855:40:61", + "nodeType": "YulFunctionCall", + "src": "10855:40:61" + }, + "nativeSrc": "10852:60:61", + "nodeType": "YulIf", + "src": "10852:60:61" + } + ] + }, + "name": "validator_revert_bool", + "nativeSrc": "10800:118:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "10831:5:61", + "nodeType": "YulTypedName", + "src": "10831:5:61", + "type": "" + } + ], + "src": "10800:118:61" + }, + { + "body": { + "nativeSrc": "11086:612:61", + "nodeType": "YulBlock", + "src": "11086:612:61", + "statements": [ + { + "body": { + "nativeSrc": "11133:16:61", + "nodeType": "YulBlock", + "src": "11133:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "11142:1:61", + "nodeType": "YulLiteral", + "src": "11142:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "11145:1:61", + "nodeType": "YulLiteral", + "src": "11145:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "11135:6:61", + "nodeType": "YulIdentifier", + "src": "11135:6:61" + }, + "nativeSrc": "11135:12:61", + "nodeType": "YulFunctionCall", + "src": "11135:12:61" + }, + "nativeSrc": "11135:12:61", + "nodeType": "YulExpressionStatement", + "src": "11135:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "11107:7:61", + "nodeType": "YulIdentifier", + "src": "11107:7:61" + }, + { + "name": "headStart", + "nativeSrc": "11116:9:61", + "nodeType": "YulIdentifier", + "src": "11116:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "11103:3:61", + "nodeType": "YulIdentifier", + "src": "11103:3:61" + }, + "nativeSrc": "11103:23:61", + "nodeType": "YulFunctionCall", + "src": "11103:23:61" + }, + { + "kind": "number", + "nativeSrc": "11128:3:61", + "nodeType": "YulLiteral", + "src": "11128:3:61", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "11099:3:61", + "nodeType": "YulIdentifier", + "src": "11099:3:61" + }, + "nativeSrc": "11099:33:61", + "nodeType": "YulFunctionCall", + "src": "11099:33:61" + }, + "nativeSrc": "11096:53:61", + "nodeType": "YulIf", + "src": "11096:53:61" + }, + { + "nativeSrc": "11158:37:61", + "nodeType": "YulVariableDeclaration", + "src": "11158:37:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11185:9:61", + "nodeType": "YulIdentifier", + "src": "11185:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "11172:12:61", + "nodeType": "YulIdentifier", + "src": "11172:12:61" + }, + "nativeSrc": "11172:23:61", + "nodeType": "YulFunctionCall", + "src": "11172:23:61" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "11162:6:61", + "nodeType": "YulTypedName", + "src": "11162:6:61", + "type": "" + } + ] + }, + { + "nativeSrc": "11204:28:61", + "nodeType": "YulVariableDeclaration", + "src": "11204:28:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "11222:2:61", + "nodeType": "YulLiteral", + "src": "11222:2:61", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "11226:1:61", + "nodeType": "YulLiteral", + "src": "11226:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "11218:3:61", + "nodeType": "YulIdentifier", + "src": "11218:3:61" + }, + "nativeSrc": "11218:10:61", + "nodeType": "YulFunctionCall", + "src": "11218:10:61" + }, + { + "kind": "number", + "nativeSrc": "11230:1:61", + "nodeType": "YulLiteral", + "src": "11230:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "11214:3:61", + "nodeType": "YulIdentifier", + "src": "11214:3:61" + }, + "nativeSrc": "11214:18:61", + "nodeType": "YulFunctionCall", + "src": "11214:18:61" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "11208:2:61", + "nodeType": "YulTypedName", + "src": "11208:2:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "11259:16:61", + "nodeType": "YulBlock", + "src": "11259:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "11268:1:61", + "nodeType": "YulLiteral", + "src": "11268:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "11271:1:61", + "nodeType": "YulLiteral", + "src": "11271:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "11261:6:61", + "nodeType": "YulIdentifier", + "src": "11261:6:61" + }, + "nativeSrc": "11261:12:61", + "nodeType": "YulFunctionCall", + "src": "11261:12:61" + }, + "nativeSrc": "11261:12:61", + "nodeType": "YulExpressionStatement", + "src": "11261:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "11247:6:61", + "nodeType": "YulIdentifier", + "src": "11247:6:61" + }, + { + "name": "_1", + "nativeSrc": "11255:2:61", + "nodeType": "YulIdentifier", + "src": "11255:2:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "11244:2:61", + "nodeType": "YulIdentifier", + "src": "11244:2:61" + }, + "nativeSrc": "11244:14:61", + "nodeType": "YulFunctionCall", + "src": "11244:14:61" + }, + "nativeSrc": "11241:34:61", + "nodeType": "YulIf", + "src": "11241:34:61" + }, + { + "nativeSrc": "11284:59:61", + "nodeType": "YulAssignment", + "src": "11284:59:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11315:9:61", + "nodeType": "YulIdentifier", + "src": "11315:9:61" + }, + { + "name": "offset", + "nativeSrc": "11326:6:61", + "nodeType": "YulIdentifier", + "src": "11326:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11311:3:61", + "nodeType": "YulIdentifier", + "src": "11311:3:61" + }, + "nativeSrc": "11311:22:61", + "nodeType": "YulFunctionCall", + "src": "11311:22:61" + }, + { + "name": "dataEnd", + "nativeSrc": "11335:7:61", + "nodeType": "YulIdentifier", + "src": "11335:7:61" + } + ], + "functionName": { + "name": "abi_decode_bytes", + "nativeSrc": "11294:16:61", + "nodeType": "YulIdentifier", + "src": "11294:16:61" + }, + "nativeSrc": "11294:49:61", + "nodeType": "YulFunctionCall", + "src": "11294:49:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "11284:6:61", + "nodeType": "YulIdentifier", + "src": "11284:6:61" + } + ] + }, + { + "nativeSrc": "11352:42:61", + "nodeType": "YulAssignment", + "src": "11352:42:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11379:9:61", + "nodeType": "YulIdentifier", + "src": "11379:9:61" + }, + { + "kind": "number", + "nativeSrc": "11390:2:61", + "nodeType": "YulLiteral", + "src": "11390:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11375:3:61", + "nodeType": "YulIdentifier", + "src": "11375:3:61" + }, + "nativeSrc": "11375:18:61", + "nodeType": "YulFunctionCall", + "src": "11375:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "11362:12:61", + "nodeType": "YulIdentifier", + "src": "11362:12:61" + }, + "nativeSrc": "11362:32:61", + "nodeType": "YulFunctionCall", + "src": "11362:32:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "11352:6:61", + "nodeType": "YulIdentifier", + "src": "11352:6:61" + } + ] + }, + { + "nativeSrc": "11403:45:61", + "nodeType": "YulVariableDeclaration", + "src": "11403:45:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11433:9:61", + "nodeType": "YulIdentifier", + "src": "11433:9:61" + }, + { + "kind": "number", + "nativeSrc": "11444:2:61", + "nodeType": "YulLiteral", + "src": "11444:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11429:3:61", + "nodeType": "YulIdentifier", + "src": "11429:3:61" + }, + "nativeSrc": "11429:18:61", + "nodeType": "YulFunctionCall", + "src": "11429:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "11416:12:61", + "nodeType": "YulIdentifier", + "src": "11416:12:61" + }, + "nativeSrc": "11416:32:61", + "nodeType": "YulFunctionCall", + "src": "11416:32:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "11407:5:61", + "nodeType": "YulTypedName", + "src": "11407:5:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "11479:5:61", + "nodeType": "YulIdentifier", + "src": "11479:5:61" + } + ], + "functionName": { + "name": "validator_revert_bool", + "nativeSrc": "11457:21:61", + "nodeType": "YulIdentifier", + "src": "11457:21:61" + }, + "nativeSrc": "11457:28:61", + "nodeType": "YulFunctionCall", + "src": "11457:28:61" + }, + "nativeSrc": "11457:28:61", + "nodeType": "YulExpressionStatement", + "src": "11457:28:61" + }, + { + "nativeSrc": "11494:15:61", + "nodeType": "YulAssignment", + "src": "11494:15:61", + "value": { + "name": "value", + "nativeSrc": "11504:5:61", + "nodeType": "YulIdentifier", + "src": "11504:5:61" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "11494:6:61", + "nodeType": "YulIdentifier", + "src": "11494:6:61" + } + ] + }, + { + "nativeSrc": "11518:48:61", + "nodeType": "YulVariableDeclaration", + "src": "11518:48:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11551:9:61", + "nodeType": "YulIdentifier", + "src": "11551:9:61" + }, + { + "kind": "number", + "nativeSrc": "11562:2:61", + "nodeType": "YulLiteral", + "src": "11562:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11547:3:61", + "nodeType": "YulIdentifier", + "src": "11547:3:61" + }, + "nativeSrc": "11547:18:61", + "nodeType": "YulFunctionCall", + "src": "11547:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "11534:12:61", + "nodeType": "YulIdentifier", + "src": "11534:12:61" + }, + "nativeSrc": "11534:32:61", + "nodeType": "YulFunctionCall", + "src": "11534:32:61" + }, + "variables": [ + { + "name": "offset_1", + "nativeSrc": "11522:8:61", + "nodeType": "YulTypedName", + "src": "11522:8:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "11595:16:61", + "nodeType": "YulBlock", + "src": "11595:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "11604:1:61", + "nodeType": "YulLiteral", + "src": "11604:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "11607:1:61", + "nodeType": "YulLiteral", + "src": "11607:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "11597:6:61", + "nodeType": "YulIdentifier", + "src": "11597:6:61" + }, + "nativeSrc": "11597:12:61", + "nodeType": "YulFunctionCall", + "src": "11597:12:61" + }, + "nativeSrc": "11597:12:61", + "nodeType": "YulExpressionStatement", + "src": "11597:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset_1", + "nativeSrc": "11581:8:61", + "nodeType": "YulIdentifier", + "src": "11581:8:61" + }, + { + "name": "_1", + "nativeSrc": "11591:2:61", + "nodeType": "YulIdentifier", + "src": "11591:2:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "11578:2:61", + "nodeType": "YulIdentifier", + "src": "11578:2:61" + }, + "nativeSrc": "11578:16:61", + "nodeType": "YulFunctionCall", + "src": "11578:16:61" + }, + "nativeSrc": "11575:36:61", + "nodeType": "YulIf", + "src": "11575:36:61" + }, + { + "nativeSrc": "11620:72:61", + "nodeType": "YulAssignment", + "src": "11620:72:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11662:9:61", + "nodeType": "YulIdentifier", + "src": "11662:9:61" + }, + { + "name": "offset_1", + "nativeSrc": "11673:8:61", + "nodeType": "YulIdentifier", + "src": "11673:8:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11658:3:61", + "nodeType": "YulIdentifier", + "src": "11658:3:61" + }, + "nativeSrc": "11658:24:61", + "nodeType": "YulFunctionCall", + "src": "11658:24:61" + }, + { + "name": "dataEnd", + "nativeSrc": "11684:7:61", + "nodeType": "YulIdentifier", + "src": "11684:7:61" + } + ], + "functionName": { + "name": "abi_decode_array_string_dyn", + "nativeSrc": "11630:27:61", + "nodeType": "YulIdentifier", + "src": "11630:27:61" + }, + "nativeSrc": "11630:62:61", + "nodeType": "YulFunctionCall", + "src": "11630:62:61" + }, + "variableNames": [ + { + "name": "value3", + "nativeSrc": "11620:6:61", + "nodeType": "YulIdentifier", + "src": "11620:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_string_memory_ptrt_uint256t_boolt_array$_t_string_memory_ptr_$dyn_memory_ptr", + "nativeSrc": "10923:775:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "11028:9:61", + "nodeType": "YulTypedName", + "src": "11028:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "11039:7:61", + "nodeType": "YulTypedName", + "src": "11039:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "11051:6:61", + "nodeType": "YulTypedName", + "src": "11051:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "11059:6:61", + "nodeType": "YulTypedName", + "src": "11059:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "11067:6:61", + "nodeType": "YulTypedName", + "src": "11067:6:61", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "11075:6:61", + "nodeType": "YulTypedName", + "src": "11075:6:61", + "type": "" + } + ], + "src": "10923:775:61" + }, + { + "body": { + "nativeSrc": "11875:633:61", + "nodeType": "YulBlock", + "src": "11875:633:61", + "statements": [ + { + "body": { + "nativeSrc": "11922:16:61", + "nodeType": "YulBlock", + "src": "11922:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "11931:1:61", + "nodeType": "YulLiteral", + "src": "11931:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "11934:1:61", + "nodeType": "YulLiteral", + "src": "11934:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "11924:6:61", + "nodeType": "YulIdentifier", + "src": "11924:6:61" + }, + "nativeSrc": "11924:12:61", + "nodeType": "YulFunctionCall", + "src": "11924:12:61" + }, + "nativeSrc": "11924:12:61", + "nodeType": "YulExpressionStatement", + "src": "11924:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "11896:7:61", + "nodeType": "YulIdentifier", + "src": "11896:7:61" + }, + { + "name": "headStart", + "nativeSrc": "11905:9:61", + "nodeType": "YulIdentifier", + "src": "11905:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "11892:3:61", + "nodeType": "YulIdentifier", + "src": "11892:3:61" + }, + "nativeSrc": "11892:23:61", + "nodeType": "YulFunctionCall", + "src": "11892:23:61" + }, + { + "kind": "number", + "nativeSrc": "11917:3:61", + "nodeType": "YulLiteral", + "src": "11917:3:61", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "11888:3:61", + "nodeType": "YulIdentifier", + "src": "11888:3:61" + }, + "nativeSrc": "11888:33:61", + "nodeType": "YulFunctionCall", + "src": "11888:33:61" + }, + "nativeSrc": "11885:53:61", + "nodeType": "YulIf", + "src": "11885:53:61" + }, + { + "nativeSrc": "11947:36:61", + "nodeType": "YulVariableDeclaration", + "src": "11947:36:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11973:9:61", + "nodeType": "YulIdentifier", + "src": "11973:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "11960:12:61", + "nodeType": "YulIdentifier", + "src": "11960:12:61" + }, + "nativeSrc": "11960:23:61", + "nodeType": "YulFunctionCall", + "src": "11960:23:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "11951:5:61", + "nodeType": "YulTypedName", + "src": "11951:5:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "12017:5:61", + "nodeType": "YulIdentifier", + "src": "12017:5:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "11992:24:61", + "nodeType": "YulIdentifier", + "src": "11992:24:61" + }, + "nativeSrc": "11992:31:61", + "nodeType": "YulFunctionCall", + "src": "11992:31:61" + }, + "nativeSrc": "11992:31:61", + "nodeType": "YulExpressionStatement", + "src": "11992:31:61" + }, + { + "nativeSrc": "12032:15:61", + "nodeType": "YulAssignment", + "src": "12032:15:61", + "value": { + "name": "value", + "nativeSrc": "12042:5:61", + "nodeType": "YulIdentifier", + "src": "12042:5:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "12032:6:61", + "nodeType": "YulIdentifier", + "src": "12032:6:61" + } + ] + }, + { + "nativeSrc": "12056:47:61", + "nodeType": "YulVariableDeclaration", + "src": "12056:47:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12088:9:61", + "nodeType": "YulIdentifier", + "src": "12088:9:61" + }, + { + "kind": "number", + "nativeSrc": "12099:2:61", + "nodeType": "YulLiteral", + "src": "12099:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12084:3:61", + "nodeType": "YulIdentifier", + "src": "12084:3:61" + }, + "nativeSrc": "12084:18:61", + "nodeType": "YulFunctionCall", + "src": "12084:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "12071:12:61", + "nodeType": "YulIdentifier", + "src": "12071:12:61" + }, + "nativeSrc": "12071:32:61", + "nodeType": "YulFunctionCall", + "src": "12071:32:61" + }, + "variables": [ + { + "name": "value_1", + "nativeSrc": "12060:7:61", + "nodeType": "YulTypedName", + "src": "12060:7:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nativeSrc": "12137:7:61", + "nodeType": "YulIdentifier", + "src": "12137:7:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "12112:24:61", + "nodeType": "YulIdentifier", + "src": "12112:24:61" + }, + "nativeSrc": "12112:33:61", + "nodeType": "YulFunctionCall", + "src": "12112:33:61" + }, + "nativeSrc": "12112:33:61", + "nodeType": "YulExpressionStatement", + "src": "12112:33:61" + }, + { + "nativeSrc": "12154:17:61", + "nodeType": "YulAssignment", + "src": "12154:17:61", + "value": { + "name": "value_1", + "nativeSrc": "12164:7:61", + "nodeType": "YulIdentifier", + "src": "12164:7:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "12154:6:61", + "nodeType": "YulIdentifier", + "src": "12154:6:61" + } + ] + }, + { + "nativeSrc": "12180:47:61", + "nodeType": "YulVariableDeclaration", + "src": "12180:47:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12212:9:61", + "nodeType": "YulIdentifier", + "src": "12212:9:61" + }, + { + "kind": "number", + "nativeSrc": "12223:2:61", + "nodeType": "YulLiteral", + "src": "12223:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12208:3:61", + "nodeType": "YulIdentifier", + "src": "12208:3:61" + }, + "nativeSrc": "12208:18:61", + "nodeType": "YulFunctionCall", + "src": "12208:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "12195:12:61", + "nodeType": "YulIdentifier", + "src": "12195:12:61" + }, + "nativeSrc": "12195:32:61", + "nodeType": "YulFunctionCall", + "src": "12195:32:61" + }, + "variables": [ + { + "name": "value_2", + "nativeSrc": "12184:7:61", + "nodeType": "YulTypedName", + "src": "12184:7:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_2", + "nativeSrc": "12261:7:61", + "nodeType": "YulIdentifier", + "src": "12261:7:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "12236:24:61", + "nodeType": "YulIdentifier", + "src": "12236:24:61" + }, + "nativeSrc": "12236:33:61", + "nodeType": "YulFunctionCall", + "src": "12236:33:61" + }, + "nativeSrc": "12236:33:61", + "nodeType": "YulExpressionStatement", + "src": "12236:33:61" + }, + { + "nativeSrc": "12278:17:61", + "nodeType": "YulAssignment", + "src": "12278:17:61", + "value": { + "name": "value_2", + "nativeSrc": "12288:7:61", + "nodeType": "YulIdentifier", + "src": "12288:7:61" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "12278:6:61", + "nodeType": "YulIdentifier", + "src": "12278:6:61" + } + ] + }, + { + "nativeSrc": "12304:42:61", + "nodeType": "YulAssignment", + "src": "12304:42:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12331:9:61", + "nodeType": "YulIdentifier", + "src": "12331:9:61" + }, + { + "kind": "number", + "nativeSrc": "12342:2:61", + "nodeType": "YulLiteral", + "src": "12342:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12327:3:61", + "nodeType": "YulIdentifier", + "src": "12327:3:61" + }, + "nativeSrc": "12327:18:61", + "nodeType": "YulFunctionCall", + "src": "12327:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "12314:12:61", + "nodeType": "YulIdentifier", + "src": "12314:12:61" + }, + "nativeSrc": "12314:32:61", + "nodeType": "YulFunctionCall", + "src": "12314:32:61" + }, + "variableNames": [ + { + "name": "value3", + "nativeSrc": "12304:6:61", + "nodeType": "YulIdentifier", + "src": "12304:6:61" + } + ] + }, + { + "nativeSrc": "12355:43:61", + "nodeType": "YulAssignment", + "src": "12355:43:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12382:9:61", + "nodeType": "YulIdentifier", + "src": "12382:9:61" + }, + { + "kind": "number", + "nativeSrc": "12393:3:61", + "nodeType": "YulLiteral", + "src": "12393:3:61", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12378:3:61", + "nodeType": "YulIdentifier", + "src": "12378:3:61" + }, + "nativeSrc": "12378:19:61", + "nodeType": "YulFunctionCall", + "src": "12378:19:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "12365:12:61", + "nodeType": "YulIdentifier", + "src": "12365:12:61" + }, + "nativeSrc": "12365:33:61", + "nodeType": "YulFunctionCall", + "src": "12365:33:61" + }, + "variableNames": [ + { + "name": "value4", + "nativeSrc": "12355:6:61", + "nodeType": "YulIdentifier", + "src": "12355:6:61" + } + ] + }, + { + "nativeSrc": "12407:43:61", + "nodeType": "YulAssignment", + "src": "12407:43:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12434:9:61", + "nodeType": "YulIdentifier", + "src": "12434:9:61" + }, + { + "kind": "number", + "nativeSrc": "12445:3:61", + "nodeType": "YulLiteral", + "src": "12445:3:61", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12430:3:61", + "nodeType": "YulIdentifier", + "src": "12430:3:61" + }, + "nativeSrc": "12430:19:61", + "nodeType": "YulFunctionCall", + "src": "12430:19:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "12417:12:61", + "nodeType": "YulIdentifier", + "src": "12417:12:61" + }, + "nativeSrc": "12417:33:61", + "nodeType": "YulFunctionCall", + "src": "12417:33:61" + }, + "variableNames": [ + { + "name": "value5", + "nativeSrc": "12407:6:61", + "nodeType": "YulIdentifier", + "src": "12407:6:61" + } + ] + }, + { + "nativeSrc": "12459:43:61", + "nodeType": "YulAssignment", + "src": "12459:43:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12486:9:61", + "nodeType": "YulIdentifier", + "src": "12486:9:61" + }, + { + "kind": "number", + "nativeSrc": "12497:3:61", + "nodeType": "YulLiteral", + "src": "12497:3:61", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12482:3:61", + "nodeType": "YulIdentifier", + "src": "12482:3:61" + }, + "nativeSrc": "12482:19:61", + "nodeType": "YulFunctionCall", + "src": "12482:19:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "12469:12:61", + "nodeType": "YulIdentifier", + "src": "12469:12:61" + }, + "nativeSrc": "12469:33:61", + "nodeType": "YulFunctionCall", + "src": "12469:33:61" + }, + "variableNames": [ + { + "name": "value6", + "nativeSrc": "12459:6:61", + "nodeType": "YulIdentifier", + "src": "12459:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_addresst_uint256t_uint256t_uint256t_uint256", + "nativeSrc": "11703:805:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "11793:9:61", + "nodeType": "YulTypedName", + "src": "11793:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "11804:7:61", + "nodeType": "YulTypedName", + "src": "11804:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "11816:6:61", + "nodeType": "YulTypedName", + "src": "11816:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "11824:6:61", + "nodeType": "YulTypedName", + "src": "11824:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "11832:6:61", + "nodeType": "YulTypedName", + "src": "11832:6:61", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "11840:6:61", + "nodeType": "YulTypedName", + "src": "11840:6:61", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "11848:6:61", + "nodeType": "YulTypedName", + "src": "11848:6:61", + "type": "" + }, + { + "name": "value5", + "nativeSrc": "11856:6:61", + "nodeType": "YulTypedName", + "src": "11856:6:61", + "type": "" + }, + { + "name": "value6", + "nativeSrc": "11864:6:61", + "nodeType": "YulTypedName", + "src": "11864:6:61", + "type": "" + } + ], + "src": "11703:805:61" + }, + { + "body": { + "nativeSrc": "12609:359:61", + "nodeType": "YulBlock", + "src": "12609:359:61", + "statements": [ + { + "body": { + "nativeSrc": "12655:16:61", + "nodeType": "YulBlock", + "src": "12655:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12664:1:61", + "nodeType": "YulLiteral", + "src": "12664:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "12667:1:61", + "nodeType": "YulLiteral", + "src": "12667:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "12657:6:61", + "nodeType": "YulIdentifier", + "src": "12657:6:61" + }, + "nativeSrc": "12657:12:61", + "nodeType": "YulFunctionCall", + "src": "12657:12:61" + }, + "nativeSrc": "12657:12:61", + "nodeType": "YulExpressionStatement", + "src": "12657:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "12630:7:61", + "nodeType": "YulIdentifier", + "src": "12630:7:61" + }, + { + "name": "headStart", + "nativeSrc": "12639:9:61", + "nodeType": "YulIdentifier", + "src": "12639:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "12626:3:61", + "nodeType": "YulIdentifier", + "src": "12626:3:61" + }, + "nativeSrc": "12626:23:61", + "nodeType": "YulFunctionCall", + "src": "12626:23:61" + }, + { + "kind": "number", + "nativeSrc": "12651:2:61", + "nodeType": "YulLiteral", + "src": "12651:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "12622:3:61", + "nodeType": "YulIdentifier", + "src": "12622:3:61" + }, + "nativeSrc": "12622:32:61", + "nodeType": "YulFunctionCall", + "src": "12622:32:61" + }, + "nativeSrc": "12619:52:61", + "nodeType": "YulIf", + "src": "12619:52:61" + }, + { + "nativeSrc": "12680:36:61", + "nodeType": "YulVariableDeclaration", + "src": "12680:36:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12706:9:61", + "nodeType": "YulIdentifier", + "src": "12706:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "12693:12:61", + "nodeType": "YulIdentifier", + "src": "12693:12:61" + }, + "nativeSrc": "12693:23:61", + "nodeType": "YulFunctionCall", + "src": "12693:23:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "12684:5:61", + "nodeType": "YulTypedName", + "src": "12684:5:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "12750:5:61", + "nodeType": "YulIdentifier", + "src": "12750:5:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "12725:24:61", + "nodeType": "YulIdentifier", + "src": "12725:24:61" + }, + "nativeSrc": "12725:31:61", + "nodeType": "YulFunctionCall", + "src": "12725:31:61" + }, + "nativeSrc": "12725:31:61", + "nodeType": "YulExpressionStatement", + "src": "12725:31:61" + }, + { + "nativeSrc": "12765:15:61", + "nodeType": "YulAssignment", + "src": "12765:15:61", + "value": { + "name": "value", + "nativeSrc": "12775:5:61", + "nodeType": "YulIdentifier", + "src": "12775:5:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "12765:6:61", + "nodeType": "YulIdentifier", + "src": "12765:6:61" + } + ] + }, + { + "nativeSrc": "12789:46:61", + "nodeType": "YulVariableDeclaration", + "src": "12789:46:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12820:9:61", + "nodeType": "YulIdentifier", + "src": "12820:9:61" + }, + { + "kind": "number", + "nativeSrc": "12831:2:61", + "nodeType": "YulLiteral", + "src": "12831:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12816:3:61", + "nodeType": "YulIdentifier", + "src": "12816:3:61" + }, + "nativeSrc": "12816:18:61", + "nodeType": "YulFunctionCall", + "src": "12816:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "12803:12:61", + "nodeType": "YulIdentifier", + "src": "12803:12:61" + }, + "nativeSrc": "12803:32:61", + "nodeType": "YulFunctionCall", + "src": "12803:32:61" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "12793:6:61", + "nodeType": "YulTypedName", + "src": "12793:6:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "12878:16:61", + "nodeType": "YulBlock", + "src": "12878:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12887:1:61", + "nodeType": "YulLiteral", + "src": "12887:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "12890:1:61", + "nodeType": "YulLiteral", + "src": "12890:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "12880:6:61", + "nodeType": "YulIdentifier", + "src": "12880:6:61" + }, + "nativeSrc": "12880:12:61", + "nodeType": "YulFunctionCall", + "src": "12880:12:61" + }, + "nativeSrc": "12880:12:61", + "nodeType": "YulExpressionStatement", + "src": "12880:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "12850:6:61", + "nodeType": "YulIdentifier", + "src": "12850:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12866:2:61", + "nodeType": "YulLiteral", + "src": "12866:2:61", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "12870:1:61", + "nodeType": "YulLiteral", + "src": "12870:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "12862:3:61", + "nodeType": "YulIdentifier", + "src": "12862:3:61" + }, + "nativeSrc": "12862:10:61", + "nodeType": "YulFunctionCall", + "src": "12862:10:61" + }, + { + "kind": "number", + "nativeSrc": "12874:1:61", + "nodeType": "YulLiteral", + "src": "12874:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "12858:3:61", + "nodeType": "YulIdentifier", + "src": "12858:3:61" + }, + "nativeSrc": "12858:18:61", + "nodeType": "YulFunctionCall", + "src": "12858:18:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "12847:2:61", + "nodeType": "YulIdentifier", + "src": "12847:2:61" + }, + "nativeSrc": "12847:30:61", + "nodeType": "YulFunctionCall", + "src": "12847:30:61" + }, + "nativeSrc": "12844:50:61", + "nodeType": "YulIf", + "src": "12844:50:61" + }, + { + "nativeSrc": "12903:59:61", + "nodeType": "YulAssignment", + "src": "12903:59:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12934:9:61", + "nodeType": "YulIdentifier", + "src": "12934:9:61" + }, + { + "name": "offset", + "nativeSrc": "12945:6:61", + "nodeType": "YulIdentifier", + "src": "12945:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12930:3:61", + "nodeType": "YulIdentifier", + "src": "12930:3:61" + }, + "nativeSrc": "12930:22:61", + "nodeType": "YulFunctionCall", + "src": "12930:22:61" + }, + { + "name": "dataEnd", + "nativeSrc": "12954:7:61", + "nodeType": "YulIdentifier", + "src": "12954:7:61" + } + ], + "functionName": { + "name": "abi_decode_bytes", + "nativeSrc": "12913:16:61", + "nodeType": "YulIdentifier", + "src": "12913:16:61" + }, + "nativeSrc": "12913:49:61", + "nodeType": "YulFunctionCall", + "src": "12913:49:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "12903:6:61", + "nodeType": "YulIdentifier", + "src": "12903:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_bytes_memory_ptr", + "nativeSrc": "12513:455:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "12567:9:61", + "nodeType": "YulTypedName", + "src": "12567:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "12578:7:61", + "nodeType": "YulTypedName", + "src": "12578:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "12590:6:61", + "nodeType": "YulTypedName", + "src": "12590:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "12598:6:61", + "nodeType": "YulTypedName", + "src": "12598:6:61", + "type": "" + } + ], + "src": "12513:455:61" + }, + { + "body": { + "nativeSrc": "13074:102:61", + "nodeType": "YulBlock", + "src": "13074:102:61", + "statements": [ + { + "nativeSrc": "13084:26:61", + "nodeType": "YulAssignment", + "src": "13084:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "13096:9:61", + "nodeType": "YulIdentifier", + "src": "13096:9:61" + }, + { + "kind": "number", + "nativeSrc": "13107:2:61", + "nodeType": "YulLiteral", + "src": "13107:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13092:3:61", + "nodeType": "YulIdentifier", + "src": "13092:3:61" + }, + "nativeSrc": "13092:18:61", + "nodeType": "YulFunctionCall", + "src": "13092:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "13084:4:61", + "nodeType": "YulIdentifier", + "src": "13084:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "13126:9:61", + "nodeType": "YulIdentifier", + "src": "13126:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "13141:6:61", + "nodeType": "YulIdentifier", + "src": "13141:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13157:3:61", + "nodeType": "YulLiteral", + "src": "13157:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "13162:1:61", + "nodeType": "YulLiteral", + "src": "13162:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "13153:3:61", + "nodeType": "YulIdentifier", + "src": "13153:3:61" + }, + "nativeSrc": "13153:11:61", + "nodeType": "YulFunctionCall", + "src": "13153:11:61" + }, + { + "kind": "number", + "nativeSrc": "13166:1:61", + "nodeType": "YulLiteral", + "src": "13166:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "13149:3:61", + "nodeType": "YulIdentifier", + "src": "13149:3:61" + }, + "nativeSrc": "13149:19:61", + "nodeType": "YulFunctionCall", + "src": "13149:19:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "13137:3:61", + "nodeType": "YulIdentifier", + "src": "13137:3:61" + }, + "nativeSrc": "13137:32:61", + "nodeType": "YulFunctionCall", + "src": "13137:32:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13119:6:61", + "nodeType": "YulIdentifier", + "src": "13119:6:61" + }, + "nativeSrc": "13119:51:61", + "nodeType": "YulFunctionCall", + "src": "13119:51:61" + }, + "nativeSrc": "13119:51:61", + "nodeType": "YulExpressionStatement", + "src": "13119:51:61" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nativeSrc": "12973:203:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "13043:9:61", + "nodeType": "YulTypedName", + "src": "13043:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "13054:6:61", + "nodeType": "YulTypedName", + "src": "13054:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "13065:4:61", + "nodeType": "YulTypedName", + "src": "13065:4:61", + "type": "" + } + ], + "src": "12973:203:61" + }, + { + "body": { + "nativeSrc": "13268:228:61", + "nodeType": "YulBlock", + "src": "13268:228:61", + "statements": [ + { + "body": { + "nativeSrc": "13314:16:61", + "nodeType": "YulBlock", + "src": "13314:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13323:1:61", + "nodeType": "YulLiteral", + "src": "13323:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "13326:1:61", + "nodeType": "YulLiteral", + "src": "13326:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "13316:6:61", + "nodeType": "YulIdentifier", + "src": "13316:6:61" + }, + "nativeSrc": "13316:12:61", + "nodeType": "YulFunctionCall", + "src": "13316:12:61" + }, + "nativeSrc": "13316:12:61", + "nodeType": "YulExpressionStatement", + "src": "13316:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "13289:7:61", + "nodeType": "YulIdentifier", + "src": "13289:7:61" + }, + { + "name": "headStart", + "nativeSrc": "13298:9:61", + "nodeType": "YulIdentifier", + "src": "13298:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "13285:3:61", + "nodeType": "YulIdentifier", + "src": "13285:3:61" + }, + "nativeSrc": "13285:23:61", + "nodeType": "YulFunctionCall", + "src": "13285:23:61" + }, + { + "kind": "number", + "nativeSrc": "13310:2:61", + "nodeType": "YulLiteral", + "src": "13310:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "13281:3:61", + "nodeType": "YulIdentifier", + "src": "13281:3:61" + }, + "nativeSrc": "13281:32:61", + "nodeType": "YulFunctionCall", + "src": "13281:32:61" + }, + "nativeSrc": "13278:52:61", + "nodeType": "YulIf", + "src": "13278:52:61" + }, + { + "nativeSrc": "13339:36:61", + "nodeType": "YulVariableDeclaration", + "src": "13339:36:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "13365:9:61", + "nodeType": "YulIdentifier", + "src": "13365:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "13352:12:61", + "nodeType": "YulIdentifier", + "src": "13352:12:61" + }, + "nativeSrc": "13352:23:61", + "nodeType": "YulFunctionCall", + "src": "13352:23:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "13343:5:61", + "nodeType": "YulTypedName", + "src": "13343:5:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "13409:5:61", + "nodeType": "YulIdentifier", + "src": "13409:5:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "13384:24:61", + "nodeType": "YulIdentifier", + "src": "13384:24:61" + }, + "nativeSrc": "13384:31:61", + "nodeType": "YulFunctionCall", + "src": "13384:31:61" + }, + "nativeSrc": "13384:31:61", + "nodeType": "YulExpressionStatement", + "src": "13384:31:61" + }, + { + "nativeSrc": "13424:15:61", + "nodeType": "YulAssignment", + "src": "13424:15:61", + "value": { + "name": "value", + "nativeSrc": "13434:5:61", + "nodeType": "YulIdentifier", + "src": "13434:5:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "13424:6:61", + "nodeType": "YulIdentifier", + "src": "13424:6:61" + } + ] + }, + { + "nativeSrc": "13448:42:61", + "nodeType": "YulAssignment", + "src": "13448:42:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "13475:9:61", + "nodeType": "YulIdentifier", + "src": "13475:9:61" + }, + { + "kind": "number", + "nativeSrc": "13486:2:61", + "nodeType": "YulLiteral", + "src": "13486:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13471:3:61", + "nodeType": "YulIdentifier", + "src": "13471:3:61" + }, + "nativeSrc": "13471:18:61", + "nodeType": "YulFunctionCall", + "src": "13471:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "13458:12:61", + "nodeType": "YulIdentifier", + "src": "13458:12:61" + }, + "nativeSrc": "13458:32:61", + "nodeType": "YulFunctionCall", + "src": "13458:32:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "13448:6:61", + "nodeType": "YulIdentifier", + "src": "13448:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_uint256", + "nativeSrc": "13181:315:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "13226:9:61", + "nodeType": "YulTypedName", + "src": "13226:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "13237:7:61", + "nodeType": "YulTypedName", + "src": "13237:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "13249:6:61", + "nodeType": "YulTypedName", + "src": "13249:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "13257:6:61", + "nodeType": "YulTypedName", + "src": "13257:6:61", + "type": "" + } + ], + "src": "13181:315:61" + }, + { + "body": { + "nativeSrc": "13571:110:61", + "nodeType": "YulBlock", + "src": "13571:110:61", + "statements": [ + { + "body": { + "nativeSrc": "13617:16:61", + "nodeType": "YulBlock", + "src": "13617:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13626:1:61", + "nodeType": "YulLiteral", + "src": "13626:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "13629:1:61", + "nodeType": "YulLiteral", + "src": "13629:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "13619:6:61", + "nodeType": "YulIdentifier", + "src": "13619:6:61" + }, + "nativeSrc": "13619:12:61", + "nodeType": "YulFunctionCall", + "src": "13619:12:61" + }, + "nativeSrc": "13619:12:61", + "nodeType": "YulExpressionStatement", + "src": "13619:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "13592:7:61", + "nodeType": "YulIdentifier", + "src": "13592:7:61" + }, + { + "name": "headStart", + "nativeSrc": "13601:9:61", + "nodeType": "YulIdentifier", + "src": "13601:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "13588:3:61", + "nodeType": "YulIdentifier", + "src": "13588:3:61" + }, + "nativeSrc": "13588:23:61", + "nodeType": "YulFunctionCall", + "src": "13588:23:61" + }, + { + "kind": "number", + "nativeSrc": "13613:2:61", + "nodeType": "YulLiteral", + "src": "13613:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "13584:3:61", + "nodeType": "YulIdentifier", + "src": "13584:3:61" + }, + "nativeSrc": "13584:32:61", + "nodeType": "YulFunctionCall", + "src": "13584:32:61" + }, + "nativeSrc": "13581:52:61", + "nodeType": "YulIf", + "src": "13581:52:61" + }, + { + "nativeSrc": "13642:33:61", + "nodeType": "YulAssignment", + "src": "13642:33:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "13665:9:61", + "nodeType": "YulIdentifier", + "src": "13665:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "13652:12:61", + "nodeType": "YulIdentifier", + "src": "13652:12:61" + }, + "nativeSrc": "13652:23:61", + "nodeType": "YulFunctionCall", + "src": "13652:23:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "13642:6:61", + "nodeType": "YulIdentifier", + "src": "13642:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256", + "nativeSrc": "13501:180:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "13537:9:61", + "nodeType": "YulTypedName", + "src": "13537:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "13548:7:61", + "nodeType": "YulTypedName", + "src": "13548:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "13560:6:61", + "nodeType": "YulTypedName", + "src": "13560:6:61", + "type": "" + } + ], + "src": "13501:180:61" + }, + { + "body": { + "nativeSrc": "13815:119:61", + "nodeType": "YulBlock", + "src": "13815:119:61", + "statements": [ + { + "nativeSrc": "13825:26:61", + "nodeType": "YulAssignment", + "src": "13825:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "13837:9:61", + "nodeType": "YulIdentifier", + "src": "13837:9:61" + }, + { + "kind": "number", + "nativeSrc": "13848:2:61", + "nodeType": "YulLiteral", + "src": "13848:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13833:3:61", + "nodeType": "YulIdentifier", + "src": "13833:3:61" + }, + "nativeSrc": "13833:18:61", + "nodeType": "YulFunctionCall", + "src": "13833:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "13825:4:61", + "nodeType": "YulIdentifier", + "src": "13825:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "13867:9:61", + "nodeType": "YulIdentifier", + "src": "13867:9:61" + }, + { + "name": "value0", + "nativeSrc": "13878:6:61", + "nodeType": "YulIdentifier", + "src": "13878:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13860:6:61", + "nodeType": "YulIdentifier", + "src": "13860:6:61" + }, + "nativeSrc": "13860:25:61", + "nodeType": "YulFunctionCall", + "src": "13860:25:61" + }, + "nativeSrc": "13860:25:61", + "nodeType": "YulExpressionStatement", + "src": "13860:25:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "13905:9:61", + "nodeType": "YulIdentifier", + "src": "13905:9:61" + }, + { + "kind": "number", + "nativeSrc": "13916:2:61", + "nodeType": "YulLiteral", + "src": "13916:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13901:3:61", + "nodeType": "YulIdentifier", + "src": "13901:3:61" + }, + "nativeSrc": "13901:18:61", + "nodeType": "YulFunctionCall", + "src": "13901:18:61" + }, + { + "name": "value1", + "nativeSrc": "13921:6:61", + "nodeType": "YulIdentifier", + "src": "13921:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13894:6:61", + "nodeType": "YulIdentifier", + "src": "13894:6:61" + }, + "nativeSrc": "13894:34:61", + "nodeType": "YulFunctionCall", + "src": "13894:34:61" + }, + "nativeSrc": "13894:34:61", + "nodeType": "YulExpressionStatement", + "src": "13894:34:61" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed", + "nativeSrc": "13686:248:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "13776:9:61", + "nodeType": "YulTypedName", + "src": "13776:9:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "13787:6:61", + "nodeType": "YulTypedName", + "src": "13787:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "13795:6:61", + "nodeType": "YulTypedName", + "src": "13795:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "13806:4:61", + "nodeType": "YulTypedName", + "src": "13806:4:61", + "type": "" + } + ], + "src": "13686:248:61" + }, + { + "body": { + "nativeSrc": "14009:177:61", + "nodeType": "YulBlock", + "src": "14009:177:61", + "statements": [ + { + "body": { + "nativeSrc": "14055:16:61", + "nodeType": "YulBlock", + "src": "14055:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14064:1:61", + "nodeType": "YulLiteral", + "src": "14064:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "14067:1:61", + "nodeType": "YulLiteral", + "src": "14067:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "14057:6:61", + "nodeType": "YulIdentifier", + "src": "14057:6:61" + }, + "nativeSrc": "14057:12:61", + "nodeType": "YulFunctionCall", + "src": "14057:12:61" + }, + "nativeSrc": "14057:12:61", + "nodeType": "YulExpressionStatement", + "src": "14057:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "14030:7:61", + "nodeType": "YulIdentifier", + "src": "14030:7:61" + }, + { + "name": "headStart", + "nativeSrc": "14039:9:61", + "nodeType": "YulIdentifier", + "src": "14039:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "14026:3:61", + "nodeType": "YulIdentifier", + "src": "14026:3:61" + }, + "nativeSrc": "14026:23:61", + "nodeType": "YulFunctionCall", + "src": "14026:23:61" + }, + { + "kind": "number", + "nativeSrc": "14051:2:61", + "nodeType": "YulLiteral", + "src": "14051:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "14022:3:61", + "nodeType": "YulIdentifier", + "src": "14022:3:61" + }, + "nativeSrc": "14022:32:61", + "nodeType": "YulFunctionCall", + "src": "14022:32:61" + }, + "nativeSrc": "14019:52:61", + "nodeType": "YulIf", + "src": "14019:52:61" + }, + { + "nativeSrc": "14080:36:61", + "nodeType": "YulVariableDeclaration", + "src": "14080:36:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "14106:9:61", + "nodeType": "YulIdentifier", + "src": "14106:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "14093:12:61", + "nodeType": "YulIdentifier", + "src": "14093:12:61" + }, + "nativeSrc": "14093:23:61", + "nodeType": "YulFunctionCall", + "src": "14093:23:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "14084:5:61", + "nodeType": "YulTypedName", + "src": "14084:5:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "14150:5:61", + "nodeType": "YulIdentifier", + "src": "14150:5:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "14125:24:61", + "nodeType": "YulIdentifier", + "src": "14125:24:61" + }, + "nativeSrc": "14125:31:61", + "nodeType": "YulFunctionCall", + "src": "14125:31:61" + }, + "nativeSrc": "14125:31:61", + "nodeType": "YulExpressionStatement", + "src": "14125:31:61" + }, + { + "nativeSrc": "14165:15:61", + "nodeType": "YulAssignment", + "src": "14165:15:61", + "value": { + "name": "value", + "nativeSrc": "14175:5:61", + "nodeType": "YulIdentifier", + "src": "14175:5:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "14165:6:61", + "nodeType": "YulIdentifier", + "src": "14165:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nativeSrc": "13939:247:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "13975:9:61", + "nodeType": "YulTypedName", + "src": "13975:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "13986:7:61", + "nodeType": "YulTypedName", + "src": "13986:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "13998:6:61", + "nodeType": "YulTypedName", + "src": "13998:6:61", + "type": "" + } + ], + "src": "13939:247:61" + }, + { + "body": { + "nativeSrc": "14310:274:61", + "nodeType": "YulBlock", + "src": "14310:274:61", + "statements": [ + { + "body": { + "nativeSrc": "14357:16:61", + "nodeType": "YulBlock", + "src": "14357:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14366:1:61", + "nodeType": "YulLiteral", + "src": "14366:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "14369:1:61", + "nodeType": "YulLiteral", + "src": "14369:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "14359:6:61", + "nodeType": "YulIdentifier", + "src": "14359:6:61" + }, + "nativeSrc": "14359:12:61", + "nodeType": "YulFunctionCall", + "src": "14359:12:61" + }, + "nativeSrc": "14359:12:61", + "nodeType": "YulExpressionStatement", + "src": "14359:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "14331:7:61", + "nodeType": "YulIdentifier", + "src": "14331:7:61" + }, + { + "name": "headStart", + "nativeSrc": "14340:9:61", + "nodeType": "YulIdentifier", + "src": "14340:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "14327:3:61", + "nodeType": "YulIdentifier", + "src": "14327:3:61" + }, + "nativeSrc": "14327:23:61", + "nodeType": "YulFunctionCall", + "src": "14327:23:61" + }, + { + "kind": "number", + "nativeSrc": "14352:3:61", + "nodeType": "YulLiteral", + "src": "14352:3:61", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "14323:3:61", + "nodeType": "YulIdentifier", + "src": "14323:3:61" + }, + "nativeSrc": "14323:33:61", + "nodeType": "YulFunctionCall", + "src": "14323:33:61" + }, + "nativeSrc": "14320:53:61", + "nodeType": "YulIf", + "src": "14320:53:61" + }, + { + "nativeSrc": "14382:33:61", + "nodeType": "YulAssignment", + "src": "14382:33:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "14405:9:61", + "nodeType": "YulIdentifier", + "src": "14405:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "14392:12:61", + "nodeType": "YulIdentifier", + "src": "14392:12:61" + }, + "nativeSrc": "14392:23:61", + "nodeType": "YulFunctionCall", + "src": "14392:23:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "14382:6:61", + "nodeType": "YulIdentifier", + "src": "14382:6:61" + } + ] + }, + { + "nativeSrc": "14424:42:61", + "nodeType": "YulAssignment", + "src": "14424:42:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "14451:9:61", + "nodeType": "YulIdentifier", + "src": "14451:9:61" + }, + { + "kind": "number", + "nativeSrc": "14462:2:61", + "nodeType": "YulLiteral", + "src": "14462:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14447:3:61", + "nodeType": "YulIdentifier", + "src": "14447:3:61" + }, + "nativeSrc": "14447:18:61", + "nodeType": "YulFunctionCall", + "src": "14447:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "14434:12:61", + "nodeType": "YulIdentifier", + "src": "14434:12:61" + }, + "nativeSrc": "14434:32:61", + "nodeType": "YulFunctionCall", + "src": "14434:32:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "14424:6:61", + "nodeType": "YulIdentifier", + "src": "14424:6:61" + } + ] + }, + { + "nativeSrc": "14475:47:61", + "nodeType": "YulAssignment", + "src": "14475:47:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "14507:9:61", + "nodeType": "YulIdentifier", + "src": "14507:9:61" + }, + { + "kind": "number", + "nativeSrc": "14518:2:61", + "nodeType": "YulLiteral", + "src": "14518:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14503:3:61", + "nodeType": "YulIdentifier", + "src": "14503:3:61" + }, + "nativeSrc": "14503:18:61", + "nodeType": "YulFunctionCall", + "src": "14503:18:61" + } + ], + "functionName": { + "name": "abi_decode_uint16", + "nativeSrc": "14485:17:61", + "nodeType": "YulIdentifier", + "src": "14485:17:61" + }, + "nativeSrc": "14485:37:61", + "nodeType": "YulFunctionCall", + "src": "14485:37:61" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "14475:6:61", + "nodeType": "YulIdentifier", + "src": "14475:6:61" + } + ] + }, + { + "nativeSrc": "14531:47:61", + "nodeType": "YulAssignment", + "src": "14531:47:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "14563:9:61", + "nodeType": "YulIdentifier", + "src": "14563:9:61" + }, + { + "kind": "number", + "nativeSrc": "14574:2:61", + "nodeType": "YulLiteral", + "src": "14574:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14559:3:61", + "nodeType": "YulIdentifier", + "src": "14559:3:61" + }, + "nativeSrc": "14559:18:61", + "nodeType": "YulFunctionCall", + "src": "14559:18:61" + } + ], + "functionName": { + "name": "abi_decode_uint16", + "nativeSrc": "14541:17:61", + "nodeType": "YulIdentifier", + "src": "14541:17:61" + }, + "nativeSrc": "14541:37:61", + "nodeType": "YulFunctionCall", + "src": "14541:37:61" + }, + "variableNames": [ + { + "name": "value3", + "nativeSrc": "14531:6:61", + "nodeType": "YulIdentifier", + "src": "14531:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_uint256t_uint16t_uint16", + "nativeSrc": "14191:393:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "14252:9:61", + "nodeType": "YulTypedName", + "src": "14252:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "14263:7:61", + "nodeType": "YulTypedName", + "src": "14263:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "14275:6:61", + "nodeType": "YulTypedName", + "src": "14275:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "14283:6:61", + "nodeType": "YulTypedName", + "src": "14283:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "14291:6:61", + "nodeType": "YulTypedName", + "src": "14291:6:61", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "14299:6:61", + "nodeType": "YulTypedName", + "src": "14299:6:61", + "type": "" + } + ], + "src": "14191:393:61" + }, + { + "body": { + "nativeSrc": "14696:434:61", + "nodeType": "YulBlock", + "src": "14696:434:61", + "statements": [ + { + "body": { + "nativeSrc": "14742:16:61", + "nodeType": "YulBlock", + "src": "14742:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14751:1:61", + "nodeType": "YulLiteral", + "src": "14751:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "14754:1:61", + "nodeType": "YulLiteral", + "src": "14754:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "14744:6:61", + "nodeType": "YulIdentifier", + "src": "14744:6:61" + }, + "nativeSrc": "14744:12:61", + "nodeType": "YulFunctionCall", + "src": "14744:12:61" + }, + "nativeSrc": "14744:12:61", + "nodeType": "YulExpressionStatement", + "src": "14744:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "14717:7:61", + "nodeType": "YulIdentifier", + "src": "14717:7:61" + }, + { + "name": "headStart", + "nativeSrc": "14726:9:61", + "nodeType": "YulIdentifier", + "src": "14726:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "14713:3:61", + "nodeType": "YulIdentifier", + "src": "14713:3:61" + }, + "nativeSrc": "14713:23:61", + "nodeType": "YulFunctionCall", + "src": "14713:23:61" + }, + { + "kind": "number", + "nativeSrc": "14738:2:61", + "nodeType": "YulLiteral", + "src": "14738:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "14709:3:61", + "nodeType": "YulIdentifier", + "src": "14709:3:61" + }, + "nativeSrc": "14709:32:61", + "nodeType": "YulFunctionCall", + "src": "14709:32:61" + }, + "nativeSrc": "14706:52:61", + "nodeType": "YulIf", + "src": "14706:52:61" + }, + { + "nativeSrc": "14767:37:61", + "nodeType": "YulVariableDeclaration", + "src": "14767:37:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "14794:9:61", + "nodeType": "YulIdentifier", + "src": "14794:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "14781:12:61", + "nodeType": "YulIdentifier", + "src": "14781:12:61" + }, + "nativeSrc": "14781:23:61", + "nodeType": "YulFunctionCall", + "src": "14781:23:61" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "14771:6:61", + "nodeType": "YulTypedName", + "src": "14771:6:61", + "type": "" + } + ] + }, + { + "nativeSrc": "14813:28:61", + "nodeType": "YulVariableDeclaration", + "src": "14813:28:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14831:2:61", + "nodeType": "YulLiteral", + "src": "14831:2:61", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "14835:1:61", + "nodeType": "YulLiteral", + "src": "14835:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "14827:3:61", + "nodeType": "YulIdentifier", + "src": "14827:3:61" + }, + "nativeSrc": "14827:10:61", + "nodeType": "YulFunctionCall", + "src": "14827:10:61" + }, + { + "kind": "number", + "nativeSrc": "14839:1:61", + "nodeType": "YulLiteral", + "src": "14839:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "14823:3:61", + "nodeType": "YulIdentifier", + "src": "14823:3:61" + }, + "nativeSrc": "14823:18:61", + "nodeType": "YulFunctionCall", + "src": "14823:18:61" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "14817:2:61", + "nodeType": "YulTypedName", + "src": "14817:2:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "14868:16:61", + "nodeType": "YulBlock", + "src": "14868:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14877:1:61", + "nodeType": "YulLiteral", + "src": "14877:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "14880:1:61", + "nodeType": "YulLiteral", + "src": "14880:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "14870:6:61", + "nodeType": "YulIdentifier", + "src": "14870:6:61" + }, + "nativeSrc": "14870:12:61", + "nodeType": "YulFunctionCall", + "src": "14870:12:61" + }, + "nativeSrc": "14870:12:61", + "nodeType": "YulExpressionStatement", + "src": "14870:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "14856:6:61", + "nodeType": "YulIdentifier", + "src": "14856:6:61" + }, + { + "name": "_1", + "nativeSrc": "14864:2:61", + "nodeType": "YulIdentifier", + "src": "14864:2:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "14853:2:61", + "nodeType": "YulIdentifier", + "src": "14853:2:61" + }, + "nativeSrc": "14853:14:61", + "nodeType": "YulFunctionCall", + "src": "14853:14:61" + }, + "nativeSrc": "14850:34:61", + "nodeType": "YulIf", + "src": "14850:34:61" + }, + { + "nativeSrc": "14893:59:61", + "nodeType": "YulAssignment", + "src": "14893:59:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "14924:9:61", + "nodeType": "YulIdentifier", + "src": "14924:9:61" + }, + { + "name": "offset", + "nativeSrc": "14935:6:61", + "nodeType": "YulIdentifier", + "src": "14935:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14920:3:61", + "nodeType": "YulIdentifier", + "src": "14920:3:61" + }, + "nativeSrc": "14920:22:61", + "nodeType": "YulFunctionCall", + "src": "14920:22:61" + }, + { + "name": "dataEnd", + "nativeSrc": "14944:7:61", + "nodeType": "YulIdentifier", + "src": "14944:7:61" + } + ], + "functionName": { + "name": "abi_decode_bytes", + "nativeSrc": "14903:16:61", + "nodeType": "YulIdentifier", + "src": "14903:16:61" + }, + "nativeSrc": "14903:49:61", + "nodeType": "YulFunctionCall", + "src": "14903:49:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "14893:6:61", + "nodeType": "YulIdentifier", + "src": "14893:6:61" + } + ] + }, + { + "nativeSrc": "14961:48:61", + "nodeType": "YulVariableDeclaration", + "src": "14961:48:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "14994:9:61", + "nodeType": "YulIdentifier", + "src": "14994:9:61" + }, + { + "kind": "number", + "nativeSrc": "15005:2:61", + "nodeType": "YulLiteral", + "src": "15005:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14990:3:61", + "nodeType": "YulIdentifier", + "src": "14990:3:61" + }, + "nativeSrc": "14990:18:61", + "nodeType": "YulFunctionCall", + "src": "14990:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "14977:12:61", + "nodeType": "YulIdentifier", + "src": "14977:12:61" + }, + "nativeSrc": "14977:32:61", + "nodeType": "YulFunctionCall", + "src": "14977:32:61" + }, + "variables": [ + { + "name": "offset_1", + "nativeSrc": "14965:8:61", + "nodeType": "YulTypedName", + "src": "14965:8:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "15038:16:61", + "nodeType": "YulBlock", + "src": "15038:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "15047:1:61", + "nodeType": "YulLiteral", + "src": "15047:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "15050:1:61", + "nodeType": "YulLiteral", + "src": "15050:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "15040:6:61", + "nodeType": "YulIdentifier", + "src": "15040:6:61" + }, + "nativeSrc": "15040:12:61", + "nodeType": "YulFunctionCall", + "src": "15040:12:61" + }, + "nativeSrc": "15040:12:61", + "nodeType": "YulExpressionStatement", + "src": "15040:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset_1", + "nativeSrc": "15024:8:61", + "nodeType": "YulIdentifier", + "src": "15024:8:61" + }, + { + "name": "_1", + "nativeSrc": "15034:2:61", + "nodeType": "YulIdentifier", + "src": "15034:2:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "15021:2:61", + "nodeType": "YulIdentifier", + "src": "15021:2:61" + }, + "nativeSrc": "15021:16:61", + "nodeType": "YulFunctionCall", + "src": "15021:16:61" + }, + "nativeSrc": "15018:36:61", + "nodeType": "YulIf", + "src": "15018:36:61" + }, + { + "nativeSrc": "15063:61:61", + "nodeType": "YulAssignment", + "src": "15063:61:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "15094:9:61", + "nodeType": "YulIdentifier", + "src": "15094:9:61" + }, + { + "name": "offset_1", + "nativeSrc": "15105:8:61", + "nodeType": "YulIdentifier", + "src": "15105:8:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15090:3:61", + "nodeType": "YulIdentifier", + "src": "15090:3:61" + }, + "nativeSrc": "15090:24:61", + "nodeType": "YulFunctionCall", + "src": "15090:24:61" + }, + { + "name": "dataEnd", + "nativeSrc": "15116:7:61", + "nodeType": "YulIdentifier", + "src": "15116:7:61" + } + ], + "functionName": { + "name": "abi_decode_bytes", + "nativeSrc": "15073:16:61", + "nodeType": "YulIdentifier", + "src": "15073:16:61" + }, + "nativeSrc": "15073:51:61", + "nodeType": "YulFunctionCall", + "src": "15073:51:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "15063:6:61", + "nodeType": "YulIdentifier", + "src": "15063:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr", + "nativeSrc": "14589:541:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "14654:9:61", + "nodeType": "YulTypedName", + "src": "14654:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "14665:7:61", + "nodeType": "YulTypedName", + "src": "14665:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "14677:6:61", + "nodeType": "YulTypedName", + "src": "14677:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "14685:6:61", + "nodeType": "YulTypedName", + "src": "14685:6:61", + "type": "" + } + ], + "src": "14589:541:61" + }, + { + "body": { + "nativeSrc": "15193:797:61", + "nodeType": "YulBlock", + "src": "15193:797:61", + "statements": [ + { + "nativeSrc": "15203:26:61", + "nodeType": "YulVariableDeclaration", + "src": "15203:26:61", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "15219:3:61", + "nodeType": "YulIdentifier", + "src": "15219:3:61" + }, + { + "kind": "number", + "nativeSrc": "15224:4:61", + "nodeType": "YulLiteral", + "src": "15224:4:61", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15215:3:61", + "nodeType": "YulIdentifier", + "src": "15215:3:61" + }, + "nativeSrc": "15215:14:61", + "nodeType": "YulFunctionCall", + "src": "15215:14:61" + }, + "variables": [ + { + "name": "tail", + "nativeSrc": "15207:4:61", + "nodeType": "YulTypedName", + "src": "15207:4:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "15245:3:61", + "nodeType": "YulIdentifier", + "src": "15245:3:61" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "15256:5:61", + "nodeType": "YulIdentifier", + "src": "15256:5:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "15250:5:61", + "nodeType": "YulIdentifier", + "src": "15250:5:61" + }, + "nativeSrc": "15250:12:61", + "nodeType": "YulFunctionCall", + "src": "15250:12:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "15238:6:61", + "nodeType": "YulIdentifier", + "src": "15238:6:61" + }, + "nativeSrc": "15238:25:61", + "nodeType": "YulFunctionCall", + "src": "15238:25:61" + }, + "nativeSrc": "15238:25:61", + "nodeType": "YulExpressionStatement", + "src": "15238:25:61" + }, + { + "nativeSrc": "15272:14:61", + "nodeType": "YulVariableDeclaration", + "src": "15272:14:61", + "value": { + "kind": "number", + "nativeSrc": "15282:4:61", + "nodeType": "YulLiteral", + "src": "15282:4:61", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "15276:2:61", + "nodeType": "YulTypedName", + "src": "15276:2:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nativeSrc": "15306:3:61", + "nodeType": "YulIdentifier", + "src": "15306:3:61" + }, + { + "kind": "number", + "nativeSrc": "15311:4:61", + "nodeType": "YulLiteral", + "src": "15311:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15302:3:61", + "nodeType": "YulIdentifier", + "src": "15302:3:61" + }, + "nativeSrc": "15302:14:61", + "nodeType": "YulFunctionCall", + "src": "15302:14:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "15342:5:61", + "nodeType": "YulIdentifier", + "src": "15342:5:61" + }, + { + "kind": "number", + "nativeSrc": "15349:4:61", + "nodeType": "YulLiteral", + "src": "15349:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15338:3:61", + "nodeType": "YulIdentifier", + "src": "15338:3:61" + }, + "nativeSrc": "15338:16:61", + "nodeType": "YulFunctionCall", + "src": "15338:16:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "15332:5:61", + "nodeType": "YulIdentifier", + "src": "15332:5:61" + }, + "nativeSrc": "15332:23:61", + "nodeType": "YulFunctionCall", + "src": "15332:23:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "15325:6:61", + "nodeType": "YulIdentifier", + "src": "15325:6:61" + }, + "nativeSrc": "15325:31:61", + "nodeType": "YulFunctionCall", + "src": "15325:31:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "15318:6:61", + "nodeType": "YulIdentifier", + "src": "15318:6:61" + }, + "nativeSrc": "15318:39:61", + "nodeType": "YulFunctionCall", + "src": "15318:39:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "15295:6:61", + "nodeType": "YulIdentifier", + "src": "15295:6:61" + }, + "nativeSrc": "15295:63:61", + "nodeType": "YulFunctionCall", + "src": "15295:63:61" + }, + "nativeSrc": "15295:63:61", + "nodeType": "YulExpressionStatement", + "src": "15295:63:61" + }, + { + "nativeSrc": "15367:43:61", + "nodeType": "YulVariableDeclaration", + "src": "15367:43:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "15397:5:61", + "nodeType": "YulIdentifier", + "src": "15397:5:61" + }, + { + "kind": "number", + "nativeSrc": "15404:4:61", + "nodeType": "YulLiteral", + "src": "15404:4:61", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15393:3:61", + "nodeType": "YulIdentifier", + "src": "15393:3:61" + }, + "nativeSrc": "15393:16:61", + "nodeType": "YulFunctionCall", + "src": "15393:16:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "15387:5:61", + "nodeType": "YulIdentifier", + "src": "15387:5:61" + }, + "nativeSrc": "15387:23:61", + "nodeType": "YulFunctionCall", + "src": "15387:23:61" + }, + "variables": [ + { + "name": "memberValue0", + "nativeSrc": "15371:12:61", + "nodeType": "YulTypedName", + "src": "15371:12:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nativeSrc": "15430:3:61", + "nodeType": "YulIdentifier", + "src": "15430:3:61" + }, + { + "kind": "number", + "nativeSrc": "15435:4:61", + "nodeType": "YulLiteral", + "src": "15435:4:61", + "type": "", + "value": "0x40" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15426:3:61", + "nodeType": "YulIdentifier", + "src": "15426:3:61" + }, + "nativeSrc": "15426:14:61", + "nodeType": "YulFunctionCall", + "src": "15426:14:61" + }, + { + "kind": "number", + "nativeSrc": "15442:4:61", + "nodeType": "YulLiteral", + "src": "15442:4:61", + "type": "", + "value": "0x60" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "15419:6:61", + "nodeType": "YulIdentifier", + "src": "15419:6:61" + }, + "nativeSrc": "15419:28:61", + "nodeType": "YulFunctionCall", + "src": "15419:28:61" + }, + "nativeSrc": "15419:28:61", + "nodeType": "YulExpressionStatement", + "src": "15419:28:61" + }, + { + "nativeSrc": "15456:17:61", + "nodeType": "YulVariableDeclaration", + "src": "15456:17:61", + "value": { + "name": "tail", + "nativeSrc": "15469:4:61", + "nodeType": "YulIdentifier", + "src": "15469:4:61" + }, + "variables": [ + { + "name": "pos_1", + "nativeSrc": "15460:5:61", + "nodeType": "YulTypedName", + "src": "15460:5:61", + "type": "" + } + ] + }, + { + "nativeSrc": "15482:33:61", + "nodeType": "YulVariableDeclaration", + "src": "15482:33:61", + "value": { + "arguments": [ + { + "name": "memberValue0", + "nativeSrc": "15502:12:61", + "nodeType": "YulIdentifier", + "src": "15502:12:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "15496:5:61", + "nodeType": "YulIdentifier", + "src": "15496:5:61" + }, + "nativeSrc": "15496:19:61", + "nodeType": "YulFunctionCall", + "src": "15496:19:61" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "15486:6:61", + "nodeType": "YulTypedName", + "src": "15486:6:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "tail", + "nativeSrc": "15531:4:61", + "nodeType": "YulIdentifier", + "src": "15531:4:61" + }, + { + "name": "length", + "nativeSrc": "15537:6:61", + "nodeType": "YulIdentifier", + "src": "15537:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "15524:6:61", + "nodeType": "YulIdentifier", + "src": "15524:6:61" + }, + "nativeSrc": "15524:20:61", + "nodeType": "YulFunctionCall", + "src": "15524:20:61" + }, + "nativeSrc": "15524:20:61", + "nodeType": "YulExpressionStatement", + "src": "15524:20:61" + }, + { + "nativeSrc": "15553:22:61", + "nodeType": "YulAssignment", + "src": "15553:22:61", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "15566:3:61", + "nodeType": "YulIdentifier", + "src": "15566:3:61" + }, + { + "kind": "number", + "nativeSrc": "15571:3:61", + "nodeType": "YulLiteral", + "src": "15571:3:61", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15562:3:61", + "nodeType": "YulIdentifier", + "src": "15562:3:61" + }, + "nativeSrc": "15562:13:61", + "nodeType": "YulFunctionCall", + "src": "15562:13:61" + }, + "variableNames": [ + { + "name": "pos_1", + "nativeSrc": "15553:5:61", + "nodeType": "YulIdentifier", + "src": "15553:5:61" + } + ] + }, + { + "nativeSrc": "15584:48:61", + "nodeType": "YulVariableDeclaration", + "src": "15584:48:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nativeSrc": "15606:3:61", + "nodeType": "YulIdentifier", + "src": "15606:3:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "15615:1:61", + "nodeType": "YulLiteral", + "src": "15615:1:61", + "type": "", + "value": "5" + }, + { + "name": "length", + "nativeSrc": "15618:6:61", + "nodeType": "YulIdentifier", + "src": "15618:6:61" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "15611:3:61", + "nodeType": "YulIdentifier", + "src": "15611:3:61" + }, + "nativeSrc": "15611:14:61", + "nodeType": "YulFunctionCall", + "src": "15611:14:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15602:3:61", + "nodeType": "YulIdentifier", + "src": "15602:3:61" + }, + "nativeSrc": "15602:24:61", + "nodeType": "YulFunctionCall", + "src": "15602:24:61" + }, + { + "kind": "number", + "nativeSrc": "15628:3:61", + "nodeType": "YulLiteral", + "src": "15628:3:61", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15598:3:61", + "nodeType": "YulIdentifier", + "src": "15598:3:61" + }, + "nativeSrc": "15598:34:61", + "nodeType": "YulFunctionCall", + "src": "15598:34:61" + }, + "variables": [ + { + "name": "tail_1", + "nativeSrc": "15588:6:61", + "nodeType": "YulTypedName", + "src": "15588:6:61", + "type": "" + } + ] + }, + { + "nativeSrc": "15641:37:61", + "nodeType": "YulVariableDeclaration", + "src": "15641:37:61", + "value": { + "arguments": [ + { + "name": "memberValue0", + "nativeSrc": "15659:12:61", + "nodeType": "YulIdentifier", + "src": "15659:12:61" + }, + { + "kind": "number", + "nativeSrc": "15673:4:61", + "nodeType": "YulLiteral", + "src": "15673:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15655:3:61", + "nodeType": "YulIdentifier", + "src": "15655:3:61" + }, + "nativeSrc": "15655:23:61", + "nodeType": "YulFunctionCall", + "src": "15655:23:61" + }, + "variables": [ + { + "name": "srcPtr", + "nativeSrc": "15645:6:61", + "nodeType": "YulTypedName", + "src": "15645:6:61", + "type": "" + } + ] + }, + { + "nativeSrc": "15687:10:61", + "nodeType": "YulVariableDeclaration", + "src": "15687:10:61", + "value": { + "kind": "number", + "nativeSrc": "15696:1:61", + "nodeType": "YulLiteral", + "src": "15696:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "15691:1:61", + "nodeType": "YulTypedName", + "src": "15691:1:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "15755:207:61", + "nodeType": "YulBlock", + "src": "15755:207:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos_1", + "nativeSrc": "15776:5:61", + "nodeType": "YulIdentifier", + "src": "15776:5:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "tail_1", + "nativeSrc": "15791:6:61", + "nodeType": "YulIdentifier", + "src": "15791:6:61" + }, + { + "name": "pos", + "nativeSrc": "15799:3:61", + "nodeType": "YulIdentifier", + "src": "15799:3:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "15787:3:61", + "nodeType": "YulIdentifier", + "src": "15787:3:61" + }, + "nativeSrc": "15787:16:61", + "nodeType": "YulFunctionCall", + "src": "15787:16:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "15809:3:61", + "nodeType": "YulLiteral", + "src": "15809:3:61", + "type": "", + "value": "127" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "15805:3:61", + "nodeType": "YulIdentifier", + "src": "15805:3:61" + }, + "nativeSrc": "15805:8:61", + "nodeType": "YulFunctionCall", + "src": "15805:8:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15783:3:61", + "nodeType": "YulIdentifier", + "src": "15783:3:61" + }, + "nativeSrc": "15783:31:61", + "nodeType": "YulFunctionCall", + "src": "15783:31:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "15769:6:61", + "nodeType": "YulIdentifier", + "src": "15769:6:61" + }, + "nativeSrc": "15769:46:61", + "nodeType": "YulFunctionCall", + "src": "15769:46:61" + }, + "nativeSrc": "15769:46:61", + "nodeType": "YulExpressionStatement", + "src": "15769:46:61" + }, + { + "nativeSrc": "15828:50:61", + "nodeType": "YulAssignment", + "src": "15828:50:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "15862:6:61", + "nodeType": "YulIdentifier", + "src": "15862:6:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "15856:5:61", + "nodeType": "YulIdentifier", + "src": "15856:5:61" + }, + "nativeSrc": "15856:13:61", + "nodeType": "YulFunctionCall", + "src": "15856:13:61" + }, + { + "name": "tail_1", + "nativeSrc": "15871:6:61", + "nodeType": "YulIdentifier", + "src": "15871:6:61" + } + ], + "functionName": { + "name": "abi_encode_string", + "nativeSrc": "15838:17:61", + "nodeType": "YulIdentifier", + "src": "15838:17:61" + }, + "nativeSrc": "15838:40:61", + "nodeType": "YulFunctionCall", + "src": "15838:40:61" + }, + "variableNames": [ + { + "name": "tail_1", + "nativeSrc": "15828:6:61", + "nodeType": "YulIdentifier", + "src": "15828:6:61" + } + ] + }, + { + "nativeSrc": "15891:25:61", + "nodeType": "YulAssignment", + "src": "15891:25:61", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "15905:6:61", + "nodeType": "YulIdentifier", + "src": "15905:6:61" + }, + { + "name": "_1", + "nativeSrc": "15913:2:61", + "nodeType": "YulIdentifier", + "src": "15913:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15901:3:61", + "nodeType": "YulIdentifier", + "src": "15901:3:61" + }, + "nativeSrc": "15901:15:61", + "nodeType": "YulFunctionCall", + "src": "15901:15:61" + }, + "variableNames": [ + { + "name": "srcPtr", + "nativeSrc": "15891:6:61", + "nodeType": "YulIdentifier", + "src": "15891:6:61" + } + ] + }, + { + "nativeSrc": "15929:23:61", + "nodeType": "YulAssignment", + "src": "15929:23:61", + "value": { + "arguments": [ + { + "name": "pos_1", + "nativeSrc": "15942:5:61", + "nodeType": "YulIdentifier", + "src": "15942:5:61" + }, + { + "name": "_1", + "nativeSrc": "15949:2:61", + "nodeType": "YulIdentifier", + "src": "15949:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15938:3:61", + "nodeType": "YulIdentifier", + "src": "15938:3:61" + }, + "nativeSrc": "15938:14:61", + "nodeType": "YulFunctionCall", + "src": "15938:14:61" + }, + "variableNames": [ + { + "name": "pos_1", + "nativeSrc": "15929:5:61", + "nodeType": "YulIdentifier", + "src": "15929:5:61" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "15717:1:61", + "nodeType": "YulIdentifier", + "src": "15717:1:61" + }, + { + "name": "length", + "nativeSrc": "15720:6:61", + "nodeType": "YulIdentifier", + "src": "15720:6:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "15714:2:61", + "nodeType": "YulIdentifier", + "src": "15714:2:61" + }, + "nativeSrc": "15714:13:61", + "nodeType": "YulFunctionCall", + "src": "15714:13:61" + }, + "nativeSrc": "15706:256:61", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "15728:18:61", + "nodeType": "YulBlock", + "src": "15728:18:61", + "statements": [ + { + "nativeSrc": "15730:14:61", + "nodeType": "YulAssignment", + "src": "15730:14:61", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "15739:1:61", + "nodeType": "YulIdentifier", + "src": "15739:1:61" + }, + { + "kind": "number", + "nativeSrc": "15742:1:61", + "nodeType": "YulLiteral", + "src": "15742:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15735:3:61", + "nodeType": "YulIdentifier", + "src": "15735:3:61" + }, + "nativeSrc": "15735:9:61", + "nodeType": "YulFunctionCall", + "src": "15735:9:61" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "15730:1:61", + "nodeType": "YulIdentifier", + "src": "15730:1:61" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "15710:3:61", + "nodeType": "YulBlock", + "src": "15710:3:61", + "statements": [] + }, + "src": "15706:256:61" + }, + { + "nativeSrc": "15971:13:61", + "nodeType": "YulAssignment", + "src": "15971:13:61", + "value": { + "name": "tail_1", + "nativeSrc": "15978:6:61", + "nodeType": "YulIdentifier", + "src": "15978:6:61" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "15971:3:61", + "nodeType": "YulIdentifier", + "src": "15971:3:61" + } + ] + } + ] + }, + "name": "abi_encode_struct_Service", + "nativeSrc": "15135:855:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "15170:5:61", + "nodeType": "YulTypedName", + "src": "15170:5:61", + "type": "" + }, + { + "name": "pos", + "nativeSrc": "15177:3:61", + "nodeType": "YulTypedName", + "src": "15177:3:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "15185:3:61", + "nodeType": "YulTypedName", + "src": "15185:3:61", + "type": "" + } + ], + "src": "15135:855:61" + }, + { + "body": { + "nativeSrc": "16296:727:61", + "nodeType": "YulBlock", + "src": "16296:727:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "16313:9:61", + "nodeType": "YulIdentifier", + "src": "16313:9:61" + }, + { + "kind": "number", + "nativeSrc": "16324:2:61", + "nodeType": "YulLiteral", + "src": "16324:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "16306:6:61", + "nodeType": "YulIdentifier", + "src": "16306:6:61" + }, + "nativeSrc": "16306:21:61", + "nodeType": "YulFunctionCall", + "src": "16306:21:61" + }, + "nativeSrc": "16306:21:61", + "nodeType": "YulExpressionStatement", + "src": "16306:21:61" + }, + { + "nativeSrc": "16336:69:61", + "nodeType": "YulVariableDeclaration", + "src": "16336:69:61", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "16378:6:61", + "nodeType": "YulIdentifier", + "src": "16378:6:61" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "16390:9:61", + "nodeType": "YulIdentifier", + "src": "16390:9:61" + }, + { + "kind": "number", + "nativeSrc": "16401:2:61", + "nodeType": "YulLiteral", + "src": "16401:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16386:3:61", + "nodeType": "YulIdentifier", + "src": "16386:3:61" + }, + "nativeSrc": "16386:18:61", + "nodeType": "YulFunctionCall", + "src": "16386:18:61" + } + ], + "functionName": { + "name": "abi_encode_array_string_dyn", + "nativeSrc": "16350:27:61", + "nodeType": "YulIdentifier", + "src": "16350:27:61" + }, + "nativeSrc": "16350:55:61", + "nodeType": "YulFunctionCall", + "src": "16350:55:61" + }, + "variables": [ + { + "name": "tail_1", + "nativeSrc": "16340:6:61", + "nodeType": "YulTypedName", + "src": "16340:6:61", + "type": "" + } + ] + }, + { + "nativeSrc": "16414:12:61", + "nodeType": "YulVariableDeclaration", + "src": "16414:12:61", + "value": { + "kind": "number", + "nativeSrc": "16424:2:61", + "nodeType": "YulLiteral", + "src": "16424:2:61", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "16418:2:61", + "nodeType": "YulTypedName", + "src": "16418:2:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "16446:9:61", + "nodeType": "YulIdentifier", + "src": "16446:9:61" + }, + { + "name": "_1", + "nativeSrc": "16457:2:61", + "nodeType": "YulIdentifier", + "src": "16457:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16442:3:61", + "nodeType": "YulIdentifier", + "src": "16442:3:61" + }, + "nativeSrc": "16442:18:61", + "nodeType": "YulFunctionCall", + "src": "16442:18:61" + }, + { + "arguments": [ + { + "name": "tail_1", + "nativeSrc": "16466:6:61", + "nodeType": "YulIdentifier", + "src": "16466:6:61" + }, + { + "name": "headStart", + "nativeSrc": "16474:9:61", + "nodeType": "YulIdentifier", + "src": "16474:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "16462:3:61", + "nodeType": "YulIdentifier", + "src": "16462:3:61" + }, + "nativeSrc": "16462:22:61", + "nodeType": "YulFunctionCall", + "src": "16462:22:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "16435:6:61", + "nodeType": "YulIdentifier", + "src": "16435:6:61" + }, + "nativeSrc": "16435:50:61", + "nodeType": "YulFunctionCall", + "src": "16435:50:61" + }, + "nativeSrc": "16435:50:61", + "nodeType": "YulExpressionStatement", + "src": "16435:50:61" + }, + { + "nativeSrc": "16494:17:61", + "nodeType": "YulVariableDeclaration", + "src": "16494:17:61", + "value": { + "name": "tail_1", + "nativeSrc": "16505:6:61", + "nodeType": "YulIdentifier", + "src": "16505:6:61" + }, + "variables": [ + { + "name": "pos", + "nativeSrc": "16498:3:61", + "nodeType": "YulTypedName", + "src": "16498:3:61", + "type": "" + } + ] + }, + { + "nativeSrc": "16520:27:61", + "nodeType": "YulVariableDeclaration", + "src": "16520:27:61", + "value": { + "arguments": [ + { + "name": "value1", + "nativeSrc": "16540:6:61", + "nodeType": "YulIdentifier", + "src": "16540:6:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "16534:5:61", + "nodeType": "YulIdentifier", + "src": "16534:5:61" + }, + "nativeSrc": "16534:13:61", + "nodeType": "YulFunctionCall", + "src": "16534:13:61" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "16524:6:61", + "nodeType": "YulTypedName", + "src": "16524:6:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "tail_1", + "nativeSrc": "16563:6:61", + "nodeType": "YulIdentifier", + "src": "16563:6:61" + }, + { + "name": "length", + "nativeSrc": "16571:6:61", + "nodeType": "YulIdentifier", + "src": "16571:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "16556:6:61", + "nodeType": "YulIdentifier", + "src": "16556:6:61" + }, + "nativeSrc": "16556:22:61", + "nodeType": "YulFunctionCall", + "src": "16556:22:61" + }, + "nativeSrc": "16556:22:61", + "nodeType": "YulExpressionStatement", + "src": "16556:22:61" + }, + { + "nativeSrc": "16587:22:61", + "nodeType": "YulAssignment", + "src": "16587:22:61", + "value": { + "arguments": [ + { + "name": "tail_1", + "nativeSrc": "16598:6:61", + "nodeType": "YulIdentifier", + "src": "16598:6:61" + }, + { + "name": "_1", + "nativeSrc": "16606:2:61", + "nodeType": "YulIdentifier", + "src": "16606:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16594:3:61", + "nodeType": "YulIdentifier", + "src": "16594:3:61" + }, + "nativeSrc": "16594:15:61", + "nodeType": "YulFunctionCall", + "src": "16594:15:61" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "16587:3:61", + "nodeType": "YulIdentifier", + "src": "16587:3:61" + } + ] + }, + { + "nativeSrc": "16618:50:61", + "nodeType": "YulVariableDeclaration", + "src": "16618:50:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "tail_1", + "nativeSrc": "16640:6:61", + "nodeType": "YulIdentifier", + "src": "16640:6:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "16652:1:61", + "nodeType": "YulLiteral", + "src": "16652:1:61", + "type": "", + "value": "5" + }, + { + "name": "length", + "nativeSrc": "16655:6:61", + "nodeType": "YulIdentifier", + "src": "16655:6:61" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "16648:3:61", + "nodeType": "YulIdentifier", + "src": "16648:3:61" + }, + "nativeSrc": "16648:14:61", + "nodeType": "YulFunctionCall", + "src": "16648:14:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16636:3:61", + "nodeType": "YulIdentifier", + "src": "16636:3:61" + }, + "nativeSrc": "16636:27:61", + "nodeType": "YulFunctionCall", + "src": "16636:27:61" + }, + { + "name": "_1", + "nativeSrc": "16665:2:61", + "nodeType": "YulIdentifier", + "src": "16665:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16632:3:61", + "nodeType": "YulIdentifier", + "src": "16632:3:61" + }, + "nativeSrc": "16632:36:61", + "nodeType": "YulFunctionCall", + "src": "16632:36:61" + }, + "variables": [ + { + "name": "tail_2", + "nativeSrc": "16622:6:61", + "nodeType": "YulTypedName", + "src": "16622:6:61", + "type": "" + } + ] + }, + { + "nativeSrc": "16677:29:61", + "nodeType": "YulVariableDeclaration", + "src": "16677:29:61", + "value": { + "arguments": [ + { + "name": "value1", + "nativeSrc": "16695:6:61", + "nodeType": "YulIdentifier", + "src": "16695:6:61" + }, + { + "name": "_1", + "nativeSrc": "16703:2:61", + "nodeType": "YulIdentifier", + "src": "16703:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16691:3:61", + "nodeType": "YulIdentifier", + "src": "16691:3:61" + }, + "nativeSrc": "16691:15:61", + "nodeType": "YulFunctionCall", + "src": "16691:15:61" + }, + "variables": [ + { + "name": "srcPtr", + "nativeSrc": "16681:6:61", + "nodeType": "YulTypedName", + "src": "16681:6:61", + "type": "" + } + ] + }, + { + "nativeSrc": "16715:10:61", + "nodeType": "YulVariableDeclaration", + "src": "16715:10:61", + "value": { + "kind": "number", + "nativeSrc": "16724:1:61", + "nodeType": "YulLiteral", + "src": "16724:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "16719:1:61", + "nodeType": "YulTypedName", + "src": "16719:1:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "16783:211:61", + "nodeType": "YulBlock", + "src": "16783:211:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "16804:3:61", + "nodeType": "YulIdentifier", + "src": "16804:3:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "tail_2", + "nativeSrc": "16817:6:61", + "nodeType": "YulIdentifier", + "src": "16817:6:61" + }, + { + "name": "tail_1", + "nativeSrc": "16825:6:61", + "nodeType": "YulIdentifier", + "src": "16825:6:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "16813:3:61", + "nodeType": "YulIdentifier", + "src": "16813:3:61" + }, + "nativeSrc": "16813:19:61", + "nodeType": "YulFunctionCall", + "src": "16813:19:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "16838:2:61", + "nodeType": "YulLiteral", + "src": "16838:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "16834:3:61", + "nodeType": "YulIdentifier", + "src": "16834:3:61" + }, + "nativeSrc": "16834:7:61", + "nodeType": "YulFunctionCall", + "src": "16834:7:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16809:3:61", + "nodeType": "YulIdentifier", + "src": "16809:3:61" + }, + "nativeSrc": "16809:33:61", + "nodeType": "YulFunctionCall", + "src": "16809:33:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "16797:6:61", + "nodeType": "YulIdentifier", + "src": "16797:6:61" + }, + "nativeSrc": "16797:46:61", + "nodeType": "YulFunctionCall", + "src": "16797:46:61" + }, + "nativeSrc": "16797:46:61", + "nodeType": "YulExpressionStatement", + "src": "16797:46:61" + }, + { + "nativeSrc": "16856:58:61", + "nodeType": "YulAssignment", + "src": "16856:58:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "16898:6:61", + "nodeType": "YulIdentifier", + "src": "16898:6:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "16892:5:61", + "nodeType": "YulIdentifier", + "src": "16892:5:61" + }, + "nativeSrc": "16892:13:61", + "nodeType": "YulFunctionCall", + "src": "16892:13:61" + }, + { + "name": "tail_2", + "nativeSrc": "16907:6:61", + "nodeType": "YulIdentifier", + "src": "16907:6:61" + } + ], + "functionName": { + "name": "abi_encode_struct_Service", + "nativeSrc": "16866:25:61", + "nodeType": "YulIdentifier", + "src": "16866:25:61" + }, + "nativeSrc": "16866:48:61", + "nodeType": "YulFunctionCall", + "src": "16866:48:61" + }, + "variableNames": [ + { + "name": "tail_2", + "nativeSrc": "16856:6:61", + "nodeType": "YulIdentifier", + "src": "16856:6:61" + } + ] + }, + { + "nativeSrc": "16927:25:61", + "nodeType": "YulAssignment", + "src": "16927:25:61", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "16941:6:61", + "nodeType": "YulIdentifier", + "src": "16941:6:61" + }, + { + "name": "_1", + "nativeSrc": "16949:2:61", + "nodeType": "YulIdentifier", + "src": "16949:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16937:3:61", + "nodeType": "YulIdentifier", + "src": "16937:3:61" + }, + "nativeSrc": "16937:15:61", + "nodeType": "YulFunctionCall", + "src": "16937:15:61" + }, + "variableNames": [ + { + "name": "srcPtr", + "nativeSrc": "16927:6:61", + "nodeType": "YulIdentifier", + "src": "16927:6:61" + } + ] + }, + { + "nativeSrc": "16965:19:61", + "nodeType": "YulAssignment", + "src": "16965:19:61", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "16976:3:61", + "nodeType": "YulIdentifier", + "src": "16976:3:61" + }, + { + "name": "_1", + "nativeSrc": "16981:2:61", + "nodeType": "YulIdentifier", + "src": "16981:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16972:3:61", + "nodeType": "YulIdentifier", + "src": "16972:3:61" + }, + "nativeSrc": "16972:12:61", + "nodeType": "YulFunctionCall", + "src": "16972:12:61" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "16965:3:61", + "nodeType": "YulIdentifier", + "src": "16965:3:61" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "16745:1:61", + "nodeType": "YulIdentifier", + "src": "16745:1:61" + }, + { + "name": "length", + "nativeSrc": "16748:6:61", + "nodeType": "YulIdentifier", + "src": "16748:6:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "16742:2:61", + "nodeType": "YulIdentifier", + "src": "16742:2:61" + }, + "nativeSrc": "16742:13:61", + "nodeType": "YulFunctionCall", + "src": "16742:13:61" + }, + "nativeSrc": "16734:260:61", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "16756:18:61", + "nodeType": "YulBlock", + "src": "16756:18:61", + "statements": [ + { + "nativeSrc": "16758:14:61", + "nodeType": "YulAssignment", + "src": "16758:14:61", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "16767:1:61", + "nodeType": "YulIdentifier", + "src": "16767:1:61" + }, + { + "kind": "number", + "nativeSrc": "16770:1:61", + "nodeType": "YulLiteral", + "src": "16770:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16763:3:61", + "nodeType": "YulIdentifier", + "src": "16763:3:61" + }, + "nativeSrc": "16763:9:61", + "nodeType": "YulFunctionCall", + "src": "16763:9:61" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "16758:1:61", + "nodeType": "YulIdentifier", + "src": "16758:1:61" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "16738:3:61", + "nodeType": "YulBlock", + "src": "16738:3:61", + "statements": [] + }, + "src": "16734:260:61" + }, + { + "nativeSrc": "17003:14:61", + "nodeType": "YulAssignment", + "src": "17003:14:61", + "value": { + "name": "tail_2", + "nativeSrc": "17011:6:61", + "nodeType": "YulIdentifier", + "src": "17011:6:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "17003:4:61", + "nodeType": "YulIdentifier", + "src": "17003:4:61" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_array$_t_string_memory_ptr_$dyn_memory_ptr_t_array$_t_struct$_Service_$16962_memory_ptr_$dyn_memory_ptr__to_t_array$_t_string_memory_ptr_$dyn_memory_ptr_t_array$_t_struct$_Service_$16962_memory_ptr_$dyn_memory_ptr__fromStack_reversed", + "nativeSrc": "15995:1028:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "16257:9:61", + "nodeType": "YulTypedName", + "src": "16257:9:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "16268:6:61", + "nodeType": "YulTypedName", + "src": "16268:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "16276:6:61", + "nodeType": "YulTypedName", + "src": "16276:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "16287:4:61", + "nodeType": "YulTypedName", + "src": "16287:4:61", + "type": "" + } + ], + "src": "15995:1028:61" + }, + { + "body": { + "nativeSrc": "17147:99:61", + "nodeType": "YulBlock", + "src": "17147:99:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "17164:9:61", + "nodeType": "YulIdentifier", + "src": "17164:9:61" + }, + { + "kind": "number", + "nativeSrc": "17175:2:61", + "nodeType": "YulLiteral", + "src": "17175:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "17157:6:61", + "nodeType": "YulIdentifier", + "src": "17157:6:61" + }, + "nativeSrc": "17157:21:61", + "nodeType": "YulFunctionCall", + "src": "17157:21:61" + }, + "nativeSrc": "17157:21:61", + "nodeType": "YulExpressionStatement", + "src": "17157:21:61" + }, + { + "nativeSrc": "17187:53:61", + "nodeType": "YulAssignment", + "src": "17187:53:61", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "17213:6:61", + "nodeType": "YulIdentifier", + "src": "17213:6:61" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "17225:9:61", + "nodeType": "YulIdentifier", + "src": "17225:9:61" + }, + { + "kind": "number", + "nativeSrc": "17236:2:61", + "nodeType": "YulLiteral", + "src": "17236:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17221:3:61", + "nodeType": "YulIdentifier", + "src": "17221:3:61" + }, + "nativeSrc": "17221:18:61", + "nodeType": "YulFunctionCall", + "src": "17221:18:61" + } + ], + "functionName": { + "name": "abi_encode_string", + "nativeSrc": "17195:17:61", + "nodeType": "YulIdentifier", + "src": "17195:17:61" + }, + "nativeSrc": "17195:45:61", + "nodeType": "YulFunctionCall", + "src": "17195:45:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "17187:4:61", + "nodeType": "YulIdentifier", + "src": "17187:4:61" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed", + "nativeSrc": "17028:218:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "17116:9:61", + "nodeType": "YulTypedName", + "src": "17116:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "17127:6:61", + "nodeType": "YulTypedName", + "src": "17127:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "17138:4:61", + "nodeType": "YulTypedName", + "src": "17138:4:61", + "type": "" + } + ], + "src": "17028:218:61" + }, + { + "body": { + "nativeSrc": "17338:161:61", + "nodeType": "YulBlock", + "src": "17338:161:61", + "statements": [ + { + "body": { + "nativeSrc": "17384:16:61", + "nodeType": "YulBlock", + "src": "17384:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "17393:1:61", + "nodeType": "YulLiteral", + "src": "17393:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "17396:1:61", + "nodeType": "YulLiteral", + "src": "17396:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "17386:6:61", + "nodeType": "YulIdentifier", + "src": "17386:6:61" + }, + "nativeSrc": "17386:12:61", + "nodeType": "YulFunctionCall", + "src": "17386:12:61" + }, + "nativeSrc": "17386:12:61", + "nodeType": "YulExpressionStatement", + "src": "17386:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "17359:7:61", + "nodeType": "YulIdentifier", + "src": "17359:7:61" + }, + { + "name": "headStart", + "nativeSrc": "17368:9:61", + "nodeType": "YulIdentifier", + "src": "17368:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "17355:3:61", + "nodeType": "YulIdentifier", + "src": "17355:3:61" + }, + "nativeSrc": "17355:23:61", + "nodeType": "YulFunctionCall", + "src": "17355:23:61" + }, + { + "kind": "number", + "nativeSrc": "17380:2:61", + "nodeType": "YulLiteral", + "src": "17380:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "17351:3:61", + "nodeType": "YulIdentifier", + "src": "17351:3:61" + }, + "nativeSrc": "17351:32:61", + "nodeType": "YulFunctionCall", + "src": "17351:32:61" + }, + "nativeSrc": "17348:52:61", + "nodeType": "YulIf", + "src": "17348:52:61" + }, + { + "nativeSrc": "17409:33:61", + "nodeType": "YulAssignment", + "src": "17409:33:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "17432:9:61", + "nodeType": "YulIdentifier", + "src": "17432:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "17419:12:61", + "nodeType": "YulIdentifier", + "src": "17419:12:61" + }, + "nativeSrc": "17419:23:61", + "nodeType": "YulFunctionCall", + "src": "17419:23:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "17409:6:61", + "nodeType": "YulIdentifier", + "src": "17409:6:61" + } + ] + }, + { + "nativeSrc": "17451:42:61", + "nodeType": "YulAssignment", + "src": "17451:42:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "17478:9:61", + "nodeType": "YulIdentifier", + "src": "17478:9:61" + }, + { + "kind": "number", + "nativeSrc": "17489:2:61", + "nodeType": "YulLiteral", + "src": "17489:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17474:3:61", + "nodeType": "YulIdentifier", + "src": "17474:3:61" + }, + "nativeSrc": "17474:18:61", + "nodeType": "YulFunctionCall", + "src": "17474:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "17461:12:61", + "nodeType": "YulIdentifier", + "src": "17461:12:61" + }, + "nativeSrc": "17461:32:61", + "nodeType": "YulFunctionCall", + "src": "17461:32:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "17451:6:61", + "nodeType": "YulIdentifier", + "src": "17451:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_uint256", + "nativeSrc": "17251:248:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "17296:9:61", + "nodeType": "YulTypedName", + "src": "17296:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "17307:7:61", + "nodeType": "YulTypedName", + "src": "17307:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "17319:6:61", + "nodeType": "YulTypedName", + "src": "17319:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "17327:6:61", + "nodeType": "YulTypedName", + "src": "17327:6:61", + "type": "" + } + ], + "src": "17251:248:61" + }, + { + "body": { + "nativeSrc": "17591:301:61", + "nodeType": "YulBlock", + "src": "17591:301:61", + "statements": [ + { + "body": { + "nativeSrc": "17637:16:61", + "nodeType": "YulBlock", + "src": "17637:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "17646:1:61", + "nodeType": "YulLiteral", + "src": "17646:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "17649:1:61", + "nodeType": "YulLiteral", + "src": "17649:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "17639:6:61", + "nodeType": "YulIdentifier", + "src": "17639:6:61" + }, + "nativeSrc": "17639:12:61", + "nodeType": "YulFunctionCall", + "src": "17639:12:61" + }, + "nativeSrc": "17639:12:61", + "nodeType": "YulExpressionStatement", + "src": "17639:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "17612:7:61", + "nodeType": "YulIdentifier", + "src": "17612:7:61" + }, + { + "name": "headStart", + "nativeSrc": "17621:9:61", + "nodeType": "YulIdentifier", + "src": "17621:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "17608:3:61", + "nodeType": "YulIdentifier", + "src": "17608:3:61" + }, + "nativeSrc": "17608:23:61", + "nodeType": "YulFunctionCall", + "src": "17608:23:61" + }, + { + "kind": "number", + "nativeSrc": "17633:2:61", + "nodeType": "YulLiteral", + "src": "17633:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "17604:3:61", + "nodeType": "YulIdentifier", + "src": "17604:3:61" + }, + "nativeSrc": "17604:32:61", + "nodeType": "YulFunctionCall", + "src": "17604:32:61" + }, + "nativeSrc": "17601:52:61", + "nodeType": "YulIf", + "src": "17601:52:61" + }, + { + "nativeSrc": "17662:36:61", + "nodeType": "YulVariableDeclaration", + "src": "17662:36:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "17688:9:61", + "nodeType": "YulIdentifier", + "src": "17688:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "17675:12:61", + "nodeType": "YulIdentifier", + "src": "17675:12:61" + }, + "nativeSrc": "17675:23:61", + "nodeType": "YulFunctionCall", + "src": "17675:23:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "17666:5:61", + "nodeType": "YulTypedName", + "src": "17666:5:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "17732:5:61", + "nodeType": "YulIdentifier", + "src": "17732:5:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "17707:24:61", + "nodeType": "YulIdentifier", + "src": "17707:24:61" + }, + "nativeSrc": "17707:31:61", + "nodeType": "YulFunctionCall", + "src": "17707:31:61" + }, + "nativeSrc": "17707:31:61", + "nodeType": "YulExpressionStatement", + "src": "17707:31:61" + }, + { + "nativeSrc": "17747:15:61", + "nodeType": "YulAssignment", + "src": "17747:15:61", + "value": { + "name": "value", + "nativeSrc": "17757:5:61", + "nodeType": "YulIdentifier", + "src": "17757:5:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "17747:6:61", + "nodeType": "YulIdentifier", + "src": "17747:6:61" + } + ] + }, + { + "nativeSrc": "17771:47:61", + "nodeType": "YulVariableDeclaration", + "src": "17771:47:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "17803:9:61", + "nodeType": "YulIdentifier", + "src": "17803:9:61" + }, + { + "kind": "number", + "nativeSrc": "17814:2:61", + "nodeType": "YulLiteral", + "src": "17814:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17799:3:61", + "nodeType": "YulIdentifier", + "src": "17799:3:61" + }, + "nativeSrc": "17799:18:61", + "nodeType": "YulFunctionCall", + "src": "17799:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "17786:12:61", + "nodeType": "YulIdentifier", + "src": "17786:12:61" + }, + "nativeSrc": "17786:32:61", + "nodeType": "YulFunctionCall", + "src": "17786:32:61" + }, + "variables": [ + { + "name": "value_1", + "nativeSrc": "17775:7:61", + "nodeType": "YulTypedName", + "src": "17775:7:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nativeSrc": "17852:7:61", + "nodeType": "YulIdentifier", + "src": "17852:7:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "17827:24:61", + "nodeType": "YulIdentifier", + "src": "17827:24:61" + }, + "nativeSrc": "17827:33:61", + "nodeType": "YulFunctionCall", + "src": "17827:33:61" + }, + "nativeSrc": "17827:33:61", + "nodeType": "YulExpressionStatement", + "src": "17827:33:61" + }, + { + "nativeSrc": "17869:17:61", + "nodeType": "YulAssignment", + "src": "17869:17:61", + "value": { + "name": "value_1", + "nativeSrc": "17879:7:61", + "nodeType": "YulIdentifier", + "src": "17879:7:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "17869:6:61", + "nodeType": "YulIdentifier", + "src": "17869:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_address", + "nativeSrc": "17504:388:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "17549:9:61", + "nodeType": "YulTypedName", + "src": "17549:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "17560:7:61", + "nodeType": "YulTypedName", + "src": "17560:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "17572:6:61", + "nodeType": "YulTypedName", + "src": "17572:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "17580:6:61", + "nodeType": "YulTypedName", + "src": "17580:6:61", + "type": "" + } + ], + "src": "17504:388:61" + }, + { + "body": { + "nativeSrc": "18082:206:61", + "nodeType": "YulBlock", + "src": "18082:206:61", + "statements": [ + { + "nativeSrc": "18092:27:61", + "nodeType": "YulAssignment", + "src": "18092:27:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "18104:9:61", + "nodeType": "YulIdentifier", + "src": "18104:9:61" + }, + { + "kind": "number", + "nativeSrc": "18115:3:61", + "nodeType": "YulLiteral", + "src": "18115:3:61", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18100:3:61", + "nodeType": "YulIdentifier", + "src": "18100:3:61" + }, + "nativeSrc": "18100:19:61", + "nodeType": "YulFunctionCall", + "src": "18100:19:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "18092:4:61", + "nodeType": "YulIdentifier", + "src": "18092:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "18135:9:61", + "nodeType": "YulIdentifier", + "src": "18135:9:61" + }, + { + "name": "value0", + "nativeSrc": "18146:6:61", + "nodeType": "YulIdentifier", + "src": "18146:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18128:6:61", + "nodeType": "YulIdentifier", + "src": "18128:6:61" + }, + "nativeSrc": "18128:25:61", + "nodeType": "YulFunctionCall", + "src": "18128:25:61" + }, + "nativeSrc": "18128:25:61", + "nodeType": "YulExpressionStatement", + "src": "18128:25:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "18173:9:61", + "nodeType": "YulIdentifier", + "src": "18173:9:61" + }, + { + "kind": "number", + "nativeSrc": "18184:2:61", + "nodeType": "YulLiteral", + "src": "18184:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18169:3:61", + "nodeType": "YulIdentifier", + "src": "18169:3:61" + }, + "nativeSrc": "18169:18:61", + "nodeType": "YulFunctionCall", + "src": "18169:18:61" + }, + { + "name": "value1", + "nativeSrc": "18189:6:61", + "nodeType": "YulIdentifier", + "src": "18189:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18162:6:61", + "nodeType": "YulIdentifier", + "src": "18162:6:61" + }, + "nativeSrc": "18162:34:61", + "nodeType": "YulFunctionCall", + "src": "18162:34:61" + }, + "nativeSrc": "18162:34:61", + "nodeType": "YulExpressionStatement", + "src": "18162:34:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "18216:9:61", + "nodeType": "YulIdentifier", + "src": "18216:9:61" + }, + { + "kind": "number", + "nativeSrc": "18227:2:61", + "nodeType": "YulLiteral", + "src": "18227:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18212:3:61", + "nodeType": "YulIdentifier", + "src": "18212:3:61" + }, + "nativeSrc": "18212:18:61", + "nodeType": "YulFunctionCall", + "src": "18212:18:61" + }, + { + "name": "value2", + "nativeSrc": "18232:6:61", + "nodeType": "YulIdentifier", + "src": "18232:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18205:6:61", + "nodeType": "YulIdentifier", + "src": "18205:6:61" + }, + "nativeSrc": "18205:34:61", + "nodeType": "YulFunctionCall", + "src": "18205:34:61" + }, + "nativeSrc": "18205:34:61", + "nodeType": "YulExpressionStatement", + "src": "18205:34:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "18259:9:61", + "nodeType": "YulIdentifier", + "src": "18259:9:61" + }, + { + "kind": "number", + "nativeSrc": "18270:2:61", + "nodeType": "YulLiteral", + "src": "18270:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18255:3:61", + "nodeType": "YulIdentifier", + "src": "18255:3:61" + }, + "nativeSrc": "18255:18:61", + "nodeType": "YulFunctionCall", + "src": "18255:18:61" + }, + { + "name": "value3", + "nativeSrc": "18275:6:61", + "nodeType": "YulIdentifier", + "src": "18275:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18248:6:61", + "nodeType": "YulIdentifier", + "src": "18248:6:61" + }, + "nativeSrc": "18248:34:61", + "nodeType": "YulFunctionCall", + "src": "18248:34:61" + }, + "nativeSrc": "18248:34:61", + "nodeType": "YulExpressionStatement", + "src": "18248:34:61" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed", + "nativeSrc": "17897:391:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "18027:9:61", + "nodeType": "YulTypedName", + "src": "18027:9:61", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "18038:6:61", + "nodeType": "YulTypedName", + "src": "18038:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "18046:6:61", + "nodeType": "YulTypedName", + "src": "18046:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "18054:6:61", + "nodeType": "YulTypedName", + "src": "18054:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "18062:6:61", + "nodeType": "YulTypedName", + "src": "18062:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "18073:4:61", + "nodeType": "YulTypedName", + "src": "18073:4:61", + "type": "" + } + ], + "src": "17897:391:61" + }, + { + "body": { + "nativeSrc": "18412:352:61", + "nodeType": "YulBlock", + "src": "18412:352:61", + "statements": [ + { + "body": { + "nativeSrc": "18458:16:61", + "nodeType": "YulBlock", + "src": "18458:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18467:1:61", + "nodeType": "YulLiteral", + "src": "18467:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "18470:1:61", + "nodeType": "YulLiteral", + "src": "18470:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "18460:6:61", + "nodeType": "YulIdentifier", + "src": "18460:6:61" + }, + "nativeSrc": "18460:12:61", + "nodeType": "YulFunctionCall", + "src": "18460:12:61" + }, + "nativeSrc": "18460:12:61", + "nodeType": "YulExpressionStatement", + "src": "18460:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "18433:7:61", + "nodeType": "YulIdentifier", + "src": "18433:7:61" + }, + { + "name": "headStart", + "nativeSrc": "18442:9:61", + "nodeType": "YulIdentifier", + "src": "18442:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "18429:3:61", + "nodeType": "YulIdentifier", + "src": "18429:3:61" + }, + "nativeSrc": "18429:23:61", + "nodeType": "YulFunctionCall", + "src": "18429:23:61" + }, + { + "kind": "number", + "nativeSrc": "18454:2:61", + "nodeType": "YulLiteral", + "src": "18454:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "18425:3:61", + "nodeType": "YulIdentifier", + "src": "18425:3:61" + }, + "nativeSrc": "18425:32:61", + "nodeType": "YulFunctionCall", + "src": "18425:32:61" + }, + "nativeSrc": "18422:52:61", + "nodeType": "YulIf", + "src": "18422:52:61" + }, + { + "nativeSrc": "18483:36:61", + "nodeType": "YulVariableDeclaration", + "src": "18483:36:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "18509:9:61", + "nodeType": "YulIdentifier", + "src": "18509:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "18496:12:61", + "nodeType": "YulIdentifier", + "src": "18496:12:61" + }, + "nativeSrc": "18496:23:61", + "nodeType": "YulFunctionCall", + "src": "18496:23:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "18487:5:61", + "nodeType": "YulTypedName", + "src": "18487:5:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "18553:5:61", + "nodeType": "YulIdentifier", + "src": "18553:5:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "18528:24:61", + "nodeType": "YulIdentifier", + "src": "18528:24:61" + }, + "nativeSrc": "18528:31:61", + "nodeType": "YulFunctionCall", + "src": "18528:31:61" + }, + "nativeSrc": "18528:31:61", + "nodeType": "YulExpressionStatement", + "src": "18528:31:61" + }, + { + "nativeSrc": "18568:15:61", + "nodeType": "YulAssignment", + "src": "18568:15:61", + "value": { + "name": "value", + "nativeSrc": "18578:5:61", + "nodeType": "YulIdentifier", + "src": "18578:5:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "18568:6:61", + "nodeType": "YulIdentifier", + "src": "18568:6:61" + } + ] + }, + { + "nativeSrc": "18592:47:61", + "nodeType": "YulVariableDeclaration", + "src": "18592:47:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "18624:9:61", + "nodeType": "YulIdentifier", + "src": "18624:9:61" + }, + { + "kind": "number", + "nativeSrc": "18635:2:61", + "nodeType": "YulLiteral", + "src": "18635:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18620:3:61", + "nodeType": "YulIdentifier", + "src": "18620:3:61" + }, + "nativeSrc": "18620:18:61", + "nodeType": "YulFunctionCall", + "src": "18620:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "18607:12:61", + "nodeType": "YulIdentifier", + "src": "18607:12:61" + }, + "nativeSrc": "18607:32:61", + "nodeType": "YulFunctionCall", + "src": "18607:32:61" + }, + "variables": [ + { + "name": "value_1", + "nativeSrc": "18596:7:61", + "nodeType": "YulTypedName", + "src": "18596:7:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nativeSrc": "18673:7:61", + "nodeType": "YulIdentifier", + "src": "18673:7:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "18648:24:61", + "nodeType": "YulIdentifier", + "src": "18648:24:61" + }, + "nativeSrc": "18648:33:61", + "nodeType": "YulFunctionCall", + "src": "18648:33:61" + }, + "nativeSrc": "18648:33:61", + "nodeType": "YulExpressionStatement", + "src": "18648:33:61" + }, + { + "nativeSrc": "18690:17:61", + "nodeType": "YulAssignment", + "src": "18690:17:61", + "value": { + "name": "value_1", + "nativeSrc": "18700:7:61", + "nodeType": "YulIdentifier", + "src": "18700:7:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "18690:6:61", + "nodeType": "YulIdentifier", + "src": "18690:6:61" + } + ] + }, + { + "nativeSrc": "18716:42:61", + "nodeType": "YulAssignment", + "src": "18716:42:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "18743:9:61", + "nodeType": "YulIdentifier", + "src": "18743:9:61" + }, + { + "kind": "number", + "nativeSrc": "18754:2:61", + "nodeType": "YulLiteral", + "src": "18754:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18739:3:61", + "nodeType": "YulIdentifier", + "src": "18739:3:61" + }, + "nativeSrc": "18739:18:61", + "nodeType": "YulFunctionCall", + "src": "18739:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "18726:12:61", + "nodeType": "YulIdentifier", + "src": "18726:12:61" + }, + "nativeSrc": "18726:32:61", + "nodeType": "YulFunctionCall", + "src": "18726:32:61" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "18716:6:61", + "nodeType": "YulIdentifier", + "src": "18716:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_contract$_IERC20_$4513t_addresst_uint256", + "nativeSrc": "18293:471:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "18362:9:61", + "nodeType": "YulTypedName", + "src": "18362:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "18373:7:61", + "nodeType": "YulTypedName", + "src": "18373:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "18385:6:61", + "nodeType": "YulTypedName", + "src": "18385:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "18393:6:61", + "nodeType": "YulTypedName", + "src": "18393:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "18401:6:61", + "nodeType": "YulTypedName", + "src": "18401:6:61", + "type": "" + } + ], + "src": "18293:471:61" + }, + { + "body": { + "nativeSrc": "18836:174:61", + "nodeType": "YulBlock", + "src": "18836:174:61", + "statements": [ + { + "body": { + "nativeSrc": "18882:16:61", + "nodeType": "YulBlock", + "src": "18882:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18891:1:61", + "nodeType": "YulLiteral", + "src": "18891:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "18894:1:61", + "nodeType": "YulLiteral", + "src": "18894:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "18884:6:61", + "nodeType": "YulIdentifier", + "src": "18884:6:61" + }, + "nativeSrc": "18884:12:61", + "nodeType": "YulFunctionCall", + "src": "18884:12:61" + }, + "nativeSrc": "18884:12:61", + "nodeType": "YulExpressionStatement", + "src": "18884:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "18857:7:61", + "nodeType": "YulIdentifier", + "src": "18857:7:61" + }, + { + "name": "headStart", + "nativeSrc": "18866:9:61", + "nodeType": "YulIdentifier", + "src": "18866:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "18853:3:61", + "nodeType": "YulIdentifier", + "src": "18853:3:61" + }, + "nativeSrc": "18853:23:61", + "nodeType": "YulFunctionCall", + "src": "18853:23:61" + }, + { + "kind": "number", + "nativeSrc": "18878:2:61", + "nodeType": "YulLiteral", + "src": "18878:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "18849:3:61", + "nodeType": "YulIdentifier", + "src": "18849:3:61" + }, + "nativeSrc": "18849:32:61", + "nodeType": "YulFunctionCall", + "src": "18849:32:61" + }, + "nativeSrc": "18846:52:61", + "nodeType": "YulIf", + "src": "18846:52:61" + }, + { + "nativeSrc": "18907:36:61", + "nodeType": "YulVariableDeclaration", + "src": "18907:36:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "18933:9:61", + "nodeType": "YulIdentifier", + "src": "18933:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "18920:12:61", + "nodeType": "YulIdentifier", + "src": "18920:12:61" + }, + "nativeSrc": "18920:23:61", + "nodeType": "YulFunctionCall", + "src": "18920:23:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "18911:5:61", + "nodeType": "YulTypedName", + "src": "18911:5:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "18974:5:61", + "nodeType": "YulIdentifier", + "src": "18974:5:61" + } + ], + "functionName": { + "name": "validator_revert_bool", + "nativeSrc": "18952:21:61", + "nodeType": "YulIdentifier", + "src": "18952:21:61" + }, + "nativeSrc": "18952:28:61", + "nodeType": "YulFunctionCall", + "src": "18952:28:61" + }, + "nativeSrc": "18952:28:61", + "nodeType": "YulExpressionStatement", + "src": "18952:28:61" + }, + { + "nativeSrc": "18989:15:61", + "nodeType": "YulAssignment", + "src": "18989:15:61", + "value": { + "name": "value", + "nativeSrc": "18999:5:61", + "nodeType": "YulIdentifier", + "src": "18999:5:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "18989:6:61", + "nodeType": "YulIdentifier", + "src": "18989:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bool", + "nativeSrc": "18769:241:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "18802:9:61", + "nodeType": "YulTypedName", + "src": "18802:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "18813:7:61", + "nodeType": "YulTypedName", + "src": "18813:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "18825:6:61", + "nodeType": "YulTypedName", + "src": "18825:6:61", + "type": "" + } + ], + "src": "18769:241:61" + }, + { + "body": { + "nativeSrc": "19166:507:61", + "nodeType": "YulBlock", + "src": "19166:507:61", + "statements": [ + { + "nativeSrc": "19176:12:61", + "nodeType": "YulVariableDeclaration", + "src": "19176:12:61", + "value": { + "kind": "number", + "nativeSrc": "19186:2:61", + "nodeType": "YulLiteral", + "src": "19186:2:61", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "19180:2:61", + "nodeType": "YulTypedName", + "src": "19180:2:61", + "type": "" + } + ] + }, + { + "nativeSrc": "19197:32:61", + "nodeType": "YulVariableDeclaration", + "src": "19197:32:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "19215:9:61", + "nodeType": "YulIdentifier", + "src": "19215:9:61" + }, + { + "kind": "number", + "nativeSrc": "19226:2:61", + "nodeType": "YulLiteral", + "src": "19226:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19211:3:61", + "nodeType": "YulIdentifier", + "src": "19211:3:61" + }, + "nativeSrc": "19211:18:61", + "nodeType": "YulFunctionCall", + "src": "19211:18:61" + }, + "variables": [ + { + "name": "tail_1", + "nativeSrc": "19201:6:61", + "nodeType": "YulTypedName", + "src": "19201:6:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "19245:9:61", + "nodeType": "YulIdentifier", + "src": "19245:9:61" + }, + { + "kind": "number", + "nativeSrc": "19256:2:61", + "nodeType": "YulLiteral", + "src": "19256:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "19238:6:61", + "nodeType": "YulIdentifier", + "src": "19238:6:61" + }, + "nativeSrc": "19238:21:61", + "nodeType": "YulFunctionCall", + "src": "19238:21:61" + }, + "nativeSrc": "19238:21:61", + "nodeType": "YulExpressionStatement", + "src": "19238:21:61" + }, + { + "nativeSrc": "19268:17:61", + "nodeType": "YulVariableDeclaration", + "src": "19268:17:61", + "value": { + "name": "tail_1", + "nativeSrc": "19279:6:61", + "nodeType": "YulIdentifier", + "src": "19279:6:61" + }, + "variables": [ + { + "name": "pos", + "nativeSrc": "19272:3:61", + "nodeType": "YulTypedName", + "src": "19272:3:61", + "type": "" + } + ] + }, + { + "nativeSrc": "19294:27:61", + "nodeType": "YulVariableDeclaration", + "src": "19294:27:61", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "19314:6:61", + "nodeType": "YulIdentifier", + "src": "19314:6:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "19308:5:61", + "nodeType": "YulIdentifier", + "src": "19308:5:61" + }, + "nativeSrc": "19308:13:61", + "nodeType": "YulFunctionCall", + "src": "19308:13:61" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "19298:6:61", + "nodeType": "YulTypedName", + "src": "19298:6:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "tail_1", + "nativeSrc": "19337:6:61", + "nodeType": "YulIdentifier", + "src": "19337:6:61" + }, + { + "name": "length", + "nativeSrc": "19345:6:61", + "nodeType": "YulIdentifier", + "src": "19345:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "19330:6:61", + "nodeType": "YulIdentifier", + "src": "19330:6:61" + }, + "nativeSrc": "19330:22:61", + "nodeType": "YulFunctionCall", + "src": "19330:22:61" + }, + "nativeSrc": "19330:22:61", + "nodeType": "YulExpressionStatement", + "src": "19330:22:61" + }, + { + "nativeSrc": "19361:25:61", + "nodeType": "YulAssignment", + "src": "19361:25:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "19372:9:61", + "nodeType": "YulIdentifier", + "src": "19372:9:61" + }, + { + "kind": "number", + "nativeSrc": "19383:2:61", + "nodeType": "YulLiteral", + "src": "19383:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19368:3:61", + "nodeType": "YulIdentifier", + "src": "19368:3:61" + }, + "nativeSrc": "19368:18:61", + "nodeType": "YulFunctionCall", + "src": "19368:18:61" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "19361:3:61", + "nodeType": "YulIdentifier", + "src": "19361:3:61" + } + ] + }, + { + "nativeSrc": "19395:29:61", + "nodeType": "YulVariableDeclaration", + "src": "19395:29:61", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "19413:6:61", + "nodeType": "YulIdentifier", + "src": "19413:6:61" + }, + { + "kind": "number", + "nativeSrc": "19421:2:61", + "nodeType": "YulLiteral", + "src": "19421:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19409:3:61", + "nodeType": "YulIdentifier", + "src": "19409:3:61" + }, + "nativeSrc": "19409:15:61", + "nodeType": "YulFunctionCall", + "src": "19409:15:61" + }, + "variables": [ + { + "name": "srcPtr", + "nativeSrc": "19399:6:61", + "nodeType": "YulTypedName", + "src": "19399:6:61", + "type": "" + } + ] + }, + { + "nativeSrc": "19433:10:61", + "nodeType": "YulVariableDeclaration", + "src": "19433:10:61", + "value": { + "kind": "number", + "nativeSrc": "19442:1:61", + "nodeType": "YulLiteral", + "src": "19442:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "19437:1:61", + "nodeType": "YulTypedName", + "src": "19437:1:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "19501:146:61", + "nodeType": "YulBlock", + "src": "19501:146:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "19522:3:61", + "nodeType": "YulIdentifier", + "src": "19522:3:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "19537:6:61", + "nodeType": "YulIdentifier", + "src": "19537:6:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "19531:5:61", + "nodeType": "YulIdentifier", + "src": "19531:5:61" + }, + "nativeSrc": "19531:13:61", + "nodeType": "YulFunctionCall", + "src": "19531:13:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "19554:3:61", + "nodeType": "YulLiteral", + "src": "19554:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "19559:1:61", + "nodeType": "YulLiteral", + "src": "19559:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "19550:3:61", + "nodeType": "YulIdentifier", + "src": "19550:3:61" + }, + "nativeSrc": "19550:11:61", + "nodeType": "YulFunctionCall", + "src": "19550:11:61" + }, + { + "kind": "number", + "nativeSrc": "19563:1:61", + "nodeType": "YulLiteral", + "src": "19563:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "19546:3:61", + "nodeType": "YulIdentifier", + "src": "19546:3:61" + }, + "nativeSrc": "19546:19:61", + "nodeType": "YulFunctionCall", + "src": "19546:19:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "19527:3:61", + "nodeType": "YulIdentifier", + "src": "19527:3:61" + }, + "nativeSrc": "19527:39:61", + "nodeType": "YulFunctionCall", + "src": "19527:39:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "19515:6:61", + "nodeType": "YulIdentifier", + "src": "19515:6:61" + }, + "nativeSrc": "19515:52:61", + "nodeType": "YulFunctionCall", + "src": "19515:52:61" + }, + "nativeSrc": "19515:52:61", + "nodeType": "YulExpressionStatement", + "src": "19515:52:61" + }, + { + "nativeSrc": "19580:19:61", + "nodeType": "YulAssignment", + "src": "19580:19:61", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "19591:3:61", + "nodeType": "YulIdentifier", + "src": "19591:3:61" + }, + { + "name": "_1", + "nativeSrc": "19596:2:61", + "nodeType": "YulIdentifier", + "src": "19596:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19587:3:61", + "nodeType": "YulIdentifier", + "src": "19587:3:61" + }, + "nativeSrc": "19587:12:61", + "nodeType": "YulFunctionCall", + "src": "19587:12:61" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "19580:3:61", + "nodeType": "YulIdentifier", + "src": "19580:3:61" + } + ] + }, + { + "nativeSrc": "19612:25:61", + "nodeType": "YulAssignment", + "src": "19612:25:61", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "19626:6:61", + "nodeType": "YulIdentifier", + "src": "19626:6:61" + }, + { + "name": "_1", + "nativeSrc": "19634:2:61", + "nodeType": "YulIdentifier", + "src": "19634:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19622:3:61", + "nodeType": "YulIdentifier", + "src": "19622:3:61" + }, + "nativeSrc": "19622:15:61", + "nodeType": "YulFunctionCall", + "src": "19622:15:61" + }, + "variableNames": [ + { + "name": "srcPtr", + "nativeSrc": "19612:6:61", + "nodeType": "YulIdentifier", + "src": "19612:6:61" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "19463:1:61", + "nodeType": "YulIdentifier", + "src": "19463:1:61" + }, + { + "name": "length", + "nativeSrc": "19466:6:61", + "nodeType": "YulIdentifier", + "src": "19466:6:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "19460:2:61", + "nodeType": "YulIdentifier", + "src": "19460:2:61" + }, + "nativeSrc": "19460:13:61", + "nodeType": "YulFunctionCall", + "src": "19460:13:61" + }, + "nativeSrc": "19452:195:61", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "19474:18:61", + "nodeType": "YulBlock", + "src": "19474:18:61", + "statements": [ + { + "nativeSrc": "19476:14:61", + "nodeType": "YulAssignment", + "src": "19476:14:61", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "19485:1:61", + "nodeType": "YulIdentifier", + "src": "19485:1:61" + }, + { + "kind": "number", + "nativeSrc": "19488:1:61", + "nodeType": "YulLiteral", + "src": "19488:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19481:3:61", + "nodeType": "YulIdentifier", + "src": "19481:3:61" + }, + "nativeSrc": "19481:9:61", + "nodeType": "YulFunctionCall", + "src": "19481:9:61" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "19476:1:61", + "nodeType": "YulIdentifier", + "src": "19476:1:61" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "19456:3:61", + "nodeType": "YulBlock", + "src": "19456:3:61", + "statements": [] + }, + "src": "19452:195:61" + }, + { + "nativeSrc": "19656:11:61", + "nodeType": "YulAssignment", + "src": "19656:11:61", + "value": { + "name": "pos", + "nativeSrc": "19664:3:61", + "nodeType": "YulIdentifier", + "src": "19664:3:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "19656:4:61", + "nodeType": "YulIdentifier", + "src": "19656:4:61" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed", + "nativeSrc": "19015:658:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "19135:9:61", + "nodeType": "YulTypedName", + "src": "19135:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "19146:6:61", + "nodeType": "YulTypedName", + "src": "19146:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "19157:4:61", + "nodeType": "YulTypedName", + "src": "19157:4:61", + "type": "" + } + ], + "src": "19015:658:61" + }, + { + "body": { + "nativeSrc": "19772:356:61", + "nodeType": "YulBlock", + "src": "19772:356:61", + "statements": [ + { + "body": { + "nativeSrc": "19818:16:61", + "nodeType": "YulBlock", + "src": "19818:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "19827:1:61", + "nodeType": "YulLiteral", + "src": "19827:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "19830:1:61", + "nodeType": "YulLiteral", + "src": "19830:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "19820:6:61", + "nodeType": "YulIdentifier", + "src": "19820:6:61" + }, + "nativeSrc": "19820:12:61", + "nodeType": "YulFunctionCall", + "src": "19820:12:61" + }, + "nativeSrc": "19820:12:61", + "nodeType": "YulExpressionStatement", + "src": "19820:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "19793:7:61", + "nodeType": "YulIdentifier", + "src": "19793:7:61" + }, + { + "name": "headStart", + "nativeSrc": "19802:9:61", + "nodeType": "YulIdentifier", + "src": "19802:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "19789:3:61", + "nodeType": "YulIdentifier", + "src": "19789:3:61" + }, + "nativeSrc": "19789:23:61", + "nodeType": "YulFunctionCall", + "src": "19789:23:61" + }, + { + "kind": "number", + "nativeSrc": "19814:2:61", + "nodeType": "YulLiteral", + "src": "19814:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "19785:3:61", + "nodeType": "YulIdentifier", + "src": "19785:3:61" + }, + "nativeSrc": "19785:32:61", + "nodeType": "YulFunctionCall", + "src": "19785:32:61" + }, + "nativeSrc": "19782:52:61", + "nodeType": "YulIf", + "src": "19782:52:61" + }, + { + "nativeSrc": "19843:37:61", + "nodeType": "YulVariableDeclaration", + "src": "19843:37:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "19870:9:61", + "nodeType": "YulIdentifier", + "src": "19870:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "19857:12:61", + "nodeType": "YulIdentifier", + "src": "19857:12:61" + }, + "nativeSrc": "19857:23:61", + "nodeType": "YulFunctionCall", + "src": "19857:23:61" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "19847:6:61", + "nodeType": "YulTypedName", + "src": "19847:6:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "19923:16:61", + "nodeType": "YulBlock", + "src": "19923:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "19932:1:61", + "nodeType": "YulLiteral", + "src": "19932:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "19935:1:61", + "nodeType": "YulLiteral", + "src": "19935:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "19925:6:61", + "nodeType": "YulIdentifier", + "src": "19925:6:61" + }, + "nativeSrc": "19925:12:61", + "nodeType": "YulFunctionCall", + "src": "19925:12:61" + }, + "nativeSrc": "19925:12:61", + "nodeType": "YulExpressionStatement", + "src": "19925:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "19895:6:61", + "nodeType": "YulIdentifier", + "src": "19895:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "19911:2:61", + "nodeType": "YulLiteral", + "src": "19911:2:61", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "19915:1:61", + "nodeType": "YulLiteral", + "src": "19915:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "19907:3:61", + "nodeType": "YulIdentifier", + "src": "19907:3:61" + }, + "nativeSrc": "19907:10:61", + "nodeType": "YulFunctionCall", + "src": "19907:10:61" + }, + { + "kind": "number", + "nativeSrc": "19919:1:61", + "nodeType": "YulLiteral", + "src": "19919:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "19903:3:61", + "nodeType": "YulIdentifier", + "src": "19903:3:61" + }, + "nativeSrc": "19903:18:61", + "nodeType": "YulFunctionCall", + "src": "19903:18:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "19892:2:61", + "nodeType": "YulIdentifier", + "src": "19892:2:61" + }, + "nativeSrc": "19892:30:61", + "nodeType": "YulFunctionCall", + "src": "19892:30:61" + }, + "nativeSrc": "19889:50:61", + "nodeType": "YulIf", + "src": "19889:50:61" + }, + { + "nativeSrc": "19948:59:61", + "nodeType": "YulAssignment", + "src": "19948:59:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "19979:9:61", + "nodeType": "YulIdentifier", + "src": "19979:9:61" + }, + { + "name": "offset", + "nativeSrc": "19990:6:61", + "nodeType": "YulIdentifier", + "src": "19990:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19975:3:61", + "nodeType": "YulIdentifier", + "src": "19975:3:61" + }, + "nativeSrc": "19975:22:61", + "nodeType": "YulFunctionCall", + "src": "19975:22:61" + }, + { + "name": "dataEnd", + "nativeSrc": "19999:7:61", + "nodeType": "YulIdentifier", + "src": "19999:7:61" + } + ], + "functionName": { + "name": "abi_decode_bytes", + "nativeSrc": "19958:16:61", + "nodeType": "YulIdentifier", + "src": "19958:16:61" + }, + "nativeSrc": "19958:49:61", + "nodeType": "YulFunctionCall", + "src": "19958:49:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "19948:6:61", + "nodeType": "YulIdentifier", + "src": "19948:6:61" + } + ] + }, + { + "nativeSrc": "20016:45:61", + "nodeType": "YulVariableDeclaration", + "src": "20016:45:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "20046:9:61", + "nodeType": "YulIdentifier", + "src": "20046:9:61" + }, + { + "kind": "number", + "nativeSrc": "20057:2:61", + "nodeType": "YulLiteral", + "src": "20057:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20042:3:61", + "nodeType": "YulIdentifier", + "src": "20042:3:61" + }, + "nativeSrc": "20042:18:61", + "nodeType": "YulFunctionCall", + "src": "20042:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "20029:12:61", + "nodeType": "YulIdentifier", + "src": "20029:12:61" + }, + "nativeSrc": "20029:32:61", + "nodeType": "YulFunctionCall", + "src": "20029:32:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "20020:5:61", + "nodeType": "YulTypedName", + "src": "20020:5:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "20092:5:61", + "nodeType": "YulIdentifier", + "src": "20092:5:61" + } + ], + "functionName": { + "name": "validator_revert_bool", + "nativeSrc": "20070:21:61", + "nodeType": "YulIdentifier", + "src": "20070:21:61" + }, + "nativeSrc": "20070:28:61", + "nodeType": "YulFunctionCall", + "src": "20070:28:61" + }, + "nativeSrc": "20070:28:61", + "nodeType": "YulExpressionStatement", + "src": "20070:28:61" + }, + { + "nativeSrc": "20107:15:61", + "nodeType": "YulAssignment", + "src": "20107:15:61", + "value": { + "name": "value", + "nativeSrc": "20117:5:61", + "nodeType": "YulIdentifier", + "src": "20117:5:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "20107:6:61", + "nodeType": "YulIdentifier", + "src": "20107:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_string_memory_ptrt_bool", + "nativeSrc": "19678:450:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "19730:9:61", + "nodeType": "YulTypedName", + "src": "19730:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "19741:7:61", + "nodeType": "YulTypedName", + "src": "19741:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "19753:6:61", + "nodeType": "YulTypedName", + "src": "19753:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "19761:6:61", + "nodeType": "YulTypedName", + "src": "19761:6:61", + "type": "" + } + ], + "src": "19678:450:61" + }, + { + "body": { + "nativeSrc": "20254:99:61", + "nodeType": "YulBlock", + "src": "20254:99:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "20271:9:61", + "nodeType": "YulIdentifier", + "src": "20271:9:61" + }, + { + "kind": "number", + "nativeSrc": "20282:2:61", + "nodeType": "YulLiteral", + "src": "20282:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "20264:6:61", + "nodeType": "YulIdentifier", + "src": "20264:6:61" + }, + "nativeSrc": "20264:21:61", + "nodeType": "YulFunctionCall", + "src": "20264:21:61" + }, + "nativeSrc": "20264:21:61", + "nodeType": "YulExpressionStatement", + "src": "20264:21:61" + }, + { + "nativeSrc": "20294:53:61", + "nodeType": "YulAssignment", + "src": "20294:53:61", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "20320:6:61", + "nodeType": "YulIdentifier", + "src": "20320:6:61" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "20332:9:61", + "nodeType": "YulIdentifier", + "src": "20332:9:61" + }, + { + "kind": "number", + "nativeSrc": "20343:2:61", + "nodeType": "YulLiteral", + "src": "20343:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20328:3:61", + "nodeType": "YulIdentifier", + "src": "20328:3:61" + }, + "nativeSrc": "20328:18:61", + "nodeType": "YulFunctionCall", + "src": "20328:18:61" + } + ], + "functionName": { + "name": "abi_encode_string", + "nativeSrc": "20302:17:61", + "nodeType": "YulIdentifier", + "src": "20302:17:61" + }, + "nativeSrc": "20302:45:61", + "nodeType": "YulFunctionCall", + "src": "20302:45:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "20294:4:61", + "nodeType": "YulIdentifier", + "src": "20294:4:61" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed", + "nativeSrc": "20133:220:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "20223:9:61", + "nodeType": "YulTypedName", + "src": "20223:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "20234:6:61", + "nodeType": "YulTypedName", + "src": "20234:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "20245:4:61", + "nodeType": "YulTypedName", + "src": "20245:4:61", + "type": "" + } + ], + "src": "20133:220:61" + }, + { + "body": { + "nativeSrc": "20477:279:61", + "nodeType": "YulBlock", + "src": "20477:279:61", + "statements": [ + { + "body": { + "nativeSrc": "20523:16:61", + "nodeType": "YulBlock", + "src": "20523:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20532:1:61", + "nodeType": "YulLiteral", + "src": "20532:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "20535:1:61", + "nodeType": "YulLiteral", + "src": "20535:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "20525:6:61", + "nodeType": "YulIdentifier", + "src": "20525:6:61" + }, + "nativeSrc": "20525:12:61", + "nodeType": "YulFunctionCall", + "src": "20525:12:61" + }, + "nativeSrc": "20525:12:61", + "nodeType": "YulExpressionStatement", + "src": "20525:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "20498:7:61", + "nodeType": "YulIdentifier", + "src": "20498:7:61" + }, + { + "name": "headStart", + "nativeSrc": "20507:9:61", + "nodeType": "YulIdentifier", + "src": "20507:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "20494:3:61", + "nodeType": "YulIdentifier", + "src": "20494:3:61" + }, + "nativeSrc": "20494:23:61", + "nodeType": "YulFunctionCall", + "src": "20494:23:61" + }, + { + "kind": "number", + "nativeSrc": "20519:2:61", + "nodeType": "YulLiteral", + "src": "20519:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "20490:3:61", + "nodeType": "YulIdentifier", + "src": "20490:3:61" + }, + "nativeSrc": "20490:32:61", + "nodeType": "YulFunctionCall", + "src": "20490:32:61" + }, + "nativeSrc": "20487:52:61", + "nodeType": "YulIf", + "src": "20487:52:61" + }, + { + "nativeSrc": "20548:33:61", + "nodeType": "YulAssignment", + "src": "20548:33:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "20571:9:61", + "nodeType": "YulIdentifier", + "src": "20571:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "20558:12:61", + "nodeType": "YulIdentifier", + "src": "20558:12:61" + }, + "nativeSrc": "20558:23:61", + "nodeType": "YulFunctionCall", + "src": "20558:23:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "20548:6:61", + "nodeType": "YulIdentifier", + "src": "20548:6:61" + } + ] + }, + { + "nativeSrc": "20590:42:61", + "nodeType": "YulAssignment", + "src": "20590:42:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "20617:9:61", + "nodeType": "YulIdentifier", + "src": "20617:9:61" + }, + { + "kind": "number", + "nativeSrc": "20628:2:61", + "nodeType": "YulLiteral", + "src": "20628:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20613:3:61", + "nodeType": "YulIdentifier", + "src": "20613:3:61" + }, + "nativeSrc": "20613:18:61", + "nodeType": "YulFunctionCall", + "src": "20613:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "20600:12:61", + "nodeType": "YulIdentifier", + "src": "20600:12:61" + }, + "nativeSrc": "20600:32:61", + "nodeType": "YulFunctionCall", + "src": "20600:32:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "20590:6:61", + "nodeType": "YulIdentifier", + "src": "20590:6:61" + } + ] + }, + { + "nativeSrc": "20641:45:61", + "nodeType": "YulVariableDeclaration", + "src": "20641:45:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "20671:9:61", + "nodeType": "YulIdentifier", + "src": "20671:9:61" + }, + { + "kind": "number", + "nativeSrc": "20682:2:61", + "nodeType": "YulLiteral", + "src": "20682:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20667:3:61", + "nodeType": "YulIdentifier", + "src": "20667:3:61" + }, + "nativeSrc": "20667:18:61", + "nodeType": "YulFunctionCall", + "src": "20667:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "20654:12:61", + "nodeType": "YulIdentifier", + "src": "20654:12:61" + }, + "nativeSrc": "20654:32:61", + "nodeType": "YulFunctionCall", + "src": "20654:32:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "20645:5:61", + "nodeType": "YulTypedName", + "src": "20645:5:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "20720:5:61", + "nodeType": "YulIdentifier", + "src": "20720:5:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "20695:24:61", + "nodeType": "YulIdentifier", + "src": "20695:24:61" + }, + "nativeSrc": "20695:31:61", + "nodeType": "YulFunctionCall", + "src": "20695:31:61" + }, + "nativeSrc": "20695:31:61", + "nodeType": "YulExpressionStatement", + "src": "20695:31:61" + }, + { + "nativeSrc": "20735:15:61", + "nodeType": "YulAssignment", + "src": "20735:15:61", + "value": { + "name": "value", + "nativeSrc": "20745:5:61", + "nodeType": "YulIdentifier", + "src": "20745:5:61" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "20735:6:61", + "nodeType": "YulIdentifier", + "src": "20735:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_uint256t_contract$_IERC20_$4513", + "nativeSrc": "20358:398:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "20427:9:61", + "nodeType": "YulTypedName", + "src": "20427:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "20438:7:61", + "nodeType": "YulTypedName", + "src": "20438:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "20450:6:61", + "nodeType": "YulTypedName", + "src": "20450:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "20458:6:61", + "nodeType": "YulTypedName", + "src": "20458:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "20466:6:61", + "nodeType": "YulTypedName", + "src": "20466:6:61", + "type": "" + } + ], + "src": "20358:398:61" + }, + { + "body": { + "nativeSrc": "20914:107:61", + "nodeType": "YulBlock", + "src": "20914:107:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "20931:9:61", + "nodeType": "YulIdentifier", + "src": "20931:9:61" + }, + { + "kind": "number", + "nativeSrc": "20942:2:61", + "nodeType": "YulLiteral", + "src": "20942:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "20924:6:61", + "nodeType": "YulIdentifier", + "src": "20924:6:61" + }, + "nativeSrc": "20924:21:61", + "nodeType": "YulFunctionCall", + "src": "20924:21:61" + }, + "nativeSrc": "20924:21:61", + "nodeType": "YulExpressionStatement", + "src": "20924:21:61" + }, + { + "nativeSrc": "20954:61:61", + "nodeType": "YulAssignment", + "src": "20954:61:61", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "20988:6:61", + "nodeType": "YulIdentifier", + "src": "20988:6:61" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "21000:9:61", + "nodeType": "YulIdentifier", + "src": "21000:9:61" + }, + { + "kind": "number", + "nativeSrc": "21011:2:61", + "nodeType": "YulLiteral", + "src": "21011:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20996:3:61", + "nodeType": "YulIdentifier", + "src": "20996:3:61" + }, + "nativeSrc": "20996:18:61", + "nodeType": "YulFunctionCall", + "src": "20996:18:61" + } + ], + "functionName": { + "name": "abi_encode_struct_Service", + "nativeSrc": "20962:25:61", + "nodeType": "YulIdentifier", + "src": "20962:25:61" + }, + "nativeSrc": "20962:53:61", + "nodeType": "YulFunctionCall", + "src": "20962:53:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "20954:4:61", + "nodeType": "YulIdentifier", + "src": "20954:4:61" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_struct$_Service_$16962_memory_ptr__to_t_struct$_Service_$16962_memory_ptr__fromStack_reversed", + "nativeSrc": "20761:260:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "20883:9:61", + "nodeType": "YulTypedName", + "src": "20883:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "20894:6:61", + "nodeType": "YulTypedName", + "src": "20894:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "20905:4:61", + "nodeType": "YulTypedName", + "src": "20905:4:61", + "type": "" + } + ], + "src": "20761:260:61" + }, + { + "body": { + "nativeSrc": "21220:761:61", + "nodeType": "YulBlock", + "src": "21220:761:61", + "statements": [ + { + "body": { + "nativeSrc": "21267:16:61", + "nodeType": "YulBlock", + "src": "21267:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21276:1:61", + "nodeType": "YulLiteral", + "src": "21276:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "21279:1:61", + "nodeType": "YulLiteral", + "src": "21279:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "21269:6:61", + "nodeType": "YulIdentifier", + "src": "21269:6:61" + }, + "nativeSrc": "21269:12:61", + "nodeType": "YulFunctionCall", + "src": "21269:12:61" + }, + "nativeSrc": "21269:12:61", + "nodeType": "YulExpressionStatement", + "src": "21269:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "21241:7:61", + "nodeType": "YulIdentifier", + "src": "21241:7:61" + }, + { + "name": "headStart", + "nativeSrc": "21250:9:61", + "nodeType": "YulIdentifier", + "src": "21250:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "21237:3:61", + "nodeType": "YulIdentifier", + "src": "21237:3:61" + }, + "nativeSrc": "21237:23:61", + "nodeType": "YulFunctionCall", + "src": "21237:23:61" + }, + { + "kind": "number", + "nativeSrc": "21262:3:61", + "nodeType": "YulLiteral", + "src": "21262:3:61", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "21233:3:61", + "nodeType": "YulIdentifier", + "src": "21233:3:61" + }, + "nativeSrc": "21233:33:61", + "nodeType": "YulFunctionCall", + "src": "21233:33:61" + }, + "nativeSrc": "21230:53:61", + "nodeType": "YulIf", + "src": "21230:53:61" + }, + { + "nativeSrc": "21292:36:61", + "nodeType": "YulVariableDeclaration", + "src": "21292:36:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "21318:9:61", + "nodeType": "YulIdentifier", + "src": "21318:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "21305:12:61", + "nodeType": "YulIdentifier", + "src": "21305:12:61" + }, + "nativeSrc": "21305:23:61", + "nodeType": "YulFunctionCall", + "src": "21305:23:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "21296:5:61", + "nodeType": "YulTypedName", + "src": "21296:5:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "21362:5:61", + "nodeType": "YulIdentifier", + "src": "21362:5:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "21337:24:61", + "nodeType": "YulIdentifier", + "src": "21337:24:61" + }, + "nativeSrc": "21337:31:61", + "nodeType": "YulFunctionCall", + "src": "21337:31:61" + }, + "nativeSrc": "21337:31:61", + "nodeType": "YulExpressionStatement", + "src": "21337:31:61" + }, + { + "nativeSrc": "21377:15:61", + "nodeType": "YulAssignment", + "src": "21377:15:61", + "value": { + "name": "value", + "nativeSrc": "21387:5:61", + "nodeType": "YulIdentifier", + "src": "21387:5:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "21377:6:61", + "nodeType": "YulIdentifier", + "src": "21377:6:61" + } + ] + }, + { + "nativeSrc": "21401:46:61", + "nodeType": "YulVariableDeclaration", + "src": "21401:46:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "21432:9:61", + "nodeType": "YulIdentifier", + "src": "21432:9:61" + }, + { + "kind": "number", + "nativeSrc": "21443:2:61", + "nodeType": "YulLiteral", + "src": "21443:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21428:3:61", + "nodeType": "YulIdentifier", + "src": "21428:3:61" + }, + "nativeSrc": "21428:18:61", + "nodeType": "YulFunctionCall", + "src": "21428:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "21415:12:61", + "nodeType": "YulIdentifier", + "src": "21415:12:61" + }, + "nativeSrc": "21415:32:61", + "nodeType": "YulFunctionCall", + "src": "21415:32:61" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "21405:6:61", + "nodeType": "YulTypedName", + "src": "21405:6:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "21490:16:61", + "nodeType": "YulBlock", + "src": "21490:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21499:1:61", + "nodeType": "YulLiteral", + "src": "21499:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "21502:1:61", + "nodeType": "YulLiteral", + "src": "21502:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "21492:6:61", + "nodeType": "YulIdentifier", + "src": "21492:6:61" + }, + "nativeSrc": "21492:12:61", + "nodeType": "YulFunctionCall", + "src": "21492:12:61" + }, + "nativeSrc": "21492:12:61", + "nodeType": "YulExpressionStatement", + "src": "21492:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "21462:6:61", + "nodeType": "YulIdentifier", + "src": "21462:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21478:2:61", + "nodeType": "YulLiteral", + "src": "21478:2:61", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "21482:1:61", + "nodeType": "YulLiteral", + "src": "21482:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "21474:3:61", + "nodeType": "YulIdentifier", + "src": "21474:3:61" + }, + "nativeSrc": "21474:10:61", + "nodeType": "YulFunctionCall", + "src": "21474:10:61" + }, + { + "kind": "number", + "nativeSrc": "21486:1:61", + "nodeType": "YulLiteral", + "src": "21486:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "21470:3:61", + "nodeType": "YulIdentifier", + "src": "21470:3:61" + }, + "nativeSrc": "21470:18:61", + "nodeType": "YulFunctionCall", + "src": "21470:18:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "21459:2:61", + "nodeType": "YulIdentifier", + "src": "21459:2:61" + }, + "nativeSrc": "21459:30:61", + "nodeType": "YulFunctionCall", + "src": "21459:30:61" + }, + "nativeSrc": "21456:50:61", + "nodeType": "YulIf", + "src": "21456:50:61" + }, + { + "nativeSrc": "21515:59:61", + "nodeType": "YulAssignment", + "src": "21515:59:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "21546:9:61", + "nodeType": "YulIdentifier", + "src": "21546:9:61" + }, + { + "name": "offset", + "nativeSrc": "21557:6:61", + "nodeType": "YulIdentifier", + "src": "21557:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21542:3:61", + "nodeType": "YulIdentifier", + "src": "21542:3:61" + }, + "nativeSrc": "21542:22:61", + "nodeType": "YulFunctionCall", + "src": "21542:22:61" + }, + { + "name": "dataEnd", + "nativeSrc": "21566:7:61", + "nodeType": "YulIdentifier", + "src": "21566:7:61" + } + ], + "functionName": { + "name": "abi_decode_bytes", + "nativeSrc": "21525:16:61", + "nodeType": "YulIdentifier", + "src": "21525:16:61" + }, + "nativeSrc": "21525:49:61", + "nodeType": "YulFunctionCall", + "src": "21525:49:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "21515:6:61", + "nodeType": "YulIdentifier", + "src": "21515:6:61" + } + ] + }, + { + "nativeSrc": "21583:42:61", + "nodeType": "YulAssignment", + "src": "21583:42:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "21610:9:61", + "nodeType": "YulIdentifier", + "src": "21610:9:61" + }, + { + "kind": "number", + "nativeSrc": "21621:2:61", + "nodeType": "YulLiteral", + "src": "21621:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21606:3:61", + "nodeType": "YulIdentifier", + "src": "21606:3:61" + }, + "nativeSrc": "21606:18:61", + "nodeType": "YulFunctionCall", + "src": "21606:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "21593:12:61", + "nodeType": "YulIdentifier", + "src": "21593:12:61" + }, + "nativeSrc": "21593:32:61", + "nodeType": "YulFunctionCall", + "src": "21593:32:61" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "21583:6:61", + "nodeType": "YulIdentifier", + "src": "21583:6:61" + } + ] + }, + { + "nativeSrc": "21634:42:61", + "nodeType": "YulAssignment", + "src": "21634:42:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "21661:9:61", + "nodeType": "YulIdentifier", + "src": "21661:9:61" + }, + { + "kind": "number", + "nativeSrc": "21672:2:61", + "nodeType": "YulLiteral", + "src": "21672:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21657:3:61", + "nodeType": "YulIdentifier", + "src": "21657:3:61" + }, + "nativeSrc": "21657:18:61", + "nodeType": "YulFunctionCall", + "src": "21657:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "21644:12:61", + "nodeType": "YulIdentifier", + "src": "21644:12:61" + }, + "nativeSrc": "21644:32:61", + "nodeType": "YulFunctionCall", + "src": "21644:32:61" + }, + "variableNames": [ + { + "name": "value3", + "nativeSrc": "21634:6:61", + "nodeType": "YulIdentifier", + "src": "21634:6:61" + } + ] + }, + { + "nativeSrc": "21685:48:61", + "nodeType": "YulVariableDeclaration", + "src": "21685:48:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "21717:9:61", + "nodeType": "YulIdentifier", + "src": "21717:9:61" + }, + { + "kind": "number", + "nativeSrc": "21728:3:61", + "nodeType": "YulLiteral", + "src": "21728:3:61", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21713:3:61", + "nodeType": "YulIdentifier", + "src": "21713:3:61" + }, + "nativeSrc": "21713:19:61", + "nodeType": "YulFunctionCall", + "src": "21713:19:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "21700:12:61", + "nodeType": "YulIdentifier", + "src": "21700:12:61" + }, + "nativeSrc": "21700:33:61", + "nodeType": "YulFunctionCall", + "src": "21700:33:61" + }, + "variables": [ + { + "name": "value_1", + "nativeSrc": "21689:7:61", + "nodeType": "YulTypedName", + "src": "21689:7:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nativeSrc": "21767:7:61", + "nodeType": "YulIdentifier", + "src": "21767:7:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "21742:24:61", + "nodeType": "YulIdentifier", + "src": "21742:24:61" + }, + "nativeSrc": "21742:33:61", + "nodeType": "YulFunctionCall", + "src": "21742:33:61" + }, + "nativeSrc": "21742:33:61", + "nodeType": "YulExpressionStatement", + "src": "21742:33:61" + }, + { + "nativeSrc": "21784:17:61", + "nodeType": "YulAssignment", + "src": "21784:17:61", + "value": { + "name": "value_1", + "nativeSrc": "21794:7:61", + "nodeType": "YulIdentifier", + "src": "21794:7:61" + }, + "variableNames": [ + { + "name": "value4", + "nativeSrc": "21784:6:61", + "nodeType": "YulIdentifier", + "src": "21784:6:61" + } + ] + }, + { + "nativeSrc": "21810:43:61", + "nodeType": "YulAssignment", + "src": "21810:43:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "21837:9:61", + "nodeType": "YulIdentifier", + "src": "21837:9:61" + }, + { + "kind": "number", + "nativeSrc": "21848:3:61", + "nodeType": "YulLiteral", + "src": "21848:3:61", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21833:3:61", + "nodeType": "YulIdentifier", + "src": "21833:3:61" + }, + "nativeSrc": "21833:19:61", + "nodeType": "YulFunctionCall", + "src": "21833:19:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "21820:12:61", + "nodeType": "YulIdentifier", + "src": "21820:12:61" + }, + "nativeSrc": "21820:33:61", + "nodeType": "YulFunctionCall", + "src": "21820:33:61" + }, + "variableNames": [ + { + "name": "value5", + "nativeSrc": "21810:6:61", + "nodeType": "YulIdentifier", + "src": "21810:6:61" + } + ] + }, + { + "nativeSrc": "21862:48:61", + "nodeType": "YulVariableDeclaration", + "src": "21862:48:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "21894:9:61", + "nodeType": "YulIdentifier", + "src": "21894:9:61" + }, + { + "kind": "number", + "nativeSrc": "21905:3:61", + "nodeType": "YulLiteral", + "src": "21905:3:61", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21890:3:61", + "nodeType": "YulIdentifier", + "src": "21890:3:61" + }, + "nativeSrc": "21890:19:61", + "nodeType": "YulFunctionCall", + "src": "21890:19:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "21877:12:61", + "nodeType": "YulIdentifier", + "src": "21877:12:61" + }, + "nativeSrc": "21877:33:61", + "nodeType": "YulFunctionCall", + "src": "21877:33:61" + }, + "variables": [ + { + "name": "value_2", + "nativeSrc": "21866:7:61", + "nodeType": "YulTypedName", + "src": "21866:7:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_2", + "nativeSrc": "21941:7:61", + "nodeType": "YulIdentifier", + "src": "21941:7:61" + } + ], + "functionName": { + "name": "validator_revert_bool", + "nativeSrc": "21919:21:61", + "nodeType": "YulIdentifier", + "src": "21919:21:61" + }, + "nativeSrc": "21919:30:61", + "nodeType": "YulFunctionCall", + "src": "21919:30:61" + }, + "nativeSrc": "21919:30:61", + "nodeType": "YulExpressionStatement", + "src": "21919:30:61" + }, + { + "nativeSrc": "21958:17:61", + "nodeType": "YulAssignment", + "src": "21958:17:61", + "value": { + "name": "value_2", + "nativeSrc": "21968:7:61", + "nodeType": "YulIdentifier", + "src": "21968:7:61" + }, + "variableNames": [ + { + "name": "value6", + "nativeSrc": "21958:6:61", + "nodeType": "YulIdentifier", + "src": "21958:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_string_memory_ptrt_uint256t_uint256t_contract$_IERC20_$4513t_uint256t_bool", + "nativeSrc": "21026:955:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "21138:9:61", + "nodeType": "YulTypedName", + "src": "21138:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "21149:7:61", + "nodeType": "YulTypedName", + "src": "21149:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "21161:6:61", + "nodeType": "YulTypedName", + "src": "21161:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "21169:6:61", + "nodeType": "YulTypedName", + "src": "21169:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "21177:6:61", + "nodeType": "YulTypedName", + "src": "21177:6:61", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "21185:6:61", + "nodeType": "YulTypedName", + "src": "21185:6:61", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "21193:6:61", + "nodeType": "YulTypedName", + "src": "21193:6:61", + "type": "" + }, + { + "name": "value5", + "nativeSrc": "21201:6:61", + "nodeType": "YulTypedName", + "src": "21201:6:61", + "type": "" + }, + { + "name": "value6", + "nativeSrc": "21209:6:61", + "nodeType": "YulTypedName", + "src": "21209:6:61", + "type": "" + } + ], + "src": "21026:955:61" + }, + { + "body": { + "nativeSrc": "22118:445:61", + "nodeType": "YulBlock", + "src": "22118:445:61", + "statements": [ + { + "body": { + "nativeSrc": "22164:16:61", + "nodeType": "YulBlock", + "src": "22164:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22173:1:61", + "nodeType": "YulLiteral", + "src": "22173:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "22176:1:61", + "nodeType": "YulLiteral", + "src": "22176:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "22166:6:61", + "nodeType": "YulIdentifier", + "src": "22166:6:61" + }, + "nativeSrc": "22166:12:61", + "nodeType": "YulFunctionCall", + "src": "22166:12:61" + }, + "nativeSrc": "22166:12:61", + "nodeType": "YulExpressionStatement", + "src": "22166:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "22139:7:61", + "nodeType": "YulIdentifier", + "src": "22139:7:61" + }, + { + "name": "headStart", + "nativeSrc": "22148:9:61", + "nodeType": "YulIdentifier", + "src": "22148:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "22135:3:61", + "nodeType": "YulIdentifier", + "src": "22135:3:61" + }, + "nativeSrc": "22135:23:61", + "nodeType": "YulFunctionCall", + "src": "22135:23:61" + }, + { + "kind": "number", + "nativeSrc": "22160:2:61", + "nodeType": "YulLiteral", + "src": "22160:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "22131:3:61", + "nodeType": "YulIdentifier", + "src": "22131:3:61" + }, + "nativeSrc": "22131:32:61", + "nodeType": "YulFunctionCall", + "src": "22131:32:61" + }, + "nativeSrc": "22128:52:61", + "nodeType": "YulIf", + "src": "22128:52:61" + }, + { + "nativeSrc": "22189:37:61", + "nodeType": "YulVariableDeclaration", + "src": "22189:37:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "22216:9:61", + "nodeType": "YulIdentifier", + "src": "22216:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "22203:12:61", + "nodeType": "YulIdentifier", + "src": "22203:12:61" + }, + "nativeSrc": "22203:23:61", + "nodeType": "YulFunctionCall", + "src": "22203:23:61" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "22193:6:61", + "nodeType": "YulTypedName", + "src": "22193:6:61", + "type": "" + } + ] + }, + { + "nativeSrc": "22235:28:61", + "nodeType": "YulVariableDeclaration", + "src": "22235:28:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22253:2:61", + "nodeType": "YulLiteral", + "src": "22253:2:61", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "22257:1:61", + "nodeType": "YulLiteral", + "src": "22257:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "22249:3:61", + "nodeType": "YulIdentifier", + "src": "22249:3:61" + }, + "nativeSrc": "22249:10:61", + "nodeType": "YulFunctionCall", + "src": "22249:10:61" + }, + { + "kind": "number", + "nativeSrc": "22261:1:61", + "nodeType": "YulLiteral", + "src": "22261:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "22245:3:61", + "nodeType": "YulIdentifier", + "src": "22245:3:61" + }, + "nativeSrc": "22245:18:61", + "nodeType": "YulFunctionCall", + "src": "22245:18:61" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "22239:2:61", + "nodeType": "YulTypedName", + "src": "22239:2:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "22290:16:61", + "nodeType": "YulBlock", + "src": "22290:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22299:1:61", + "nodeType": "YulLiteral", + "src": "22299:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "22302:1:61", + "nodeType": "YulLiteral", + "src": "22302:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "22292:6:61", + "nodeType": "YulIdentifier", + "src": "22292:6:61" + }, + "nativeSrc": "22292:12:61", + "nodeType": "YulFunctionCall", + "src": "22292:12:61" + }, + "nativeSrc": "22292:12:61", + "nodeType": "YulExpressionStatement", + "src": "22292:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "22278:6:61", + "nodeType": "YulIdentifier", + "src": "22278:6:61" + }, + { + "name": "_1", + "nativeSrc": "22286:2:61", + "nodeType": "YulIdentifier", + "src": "22286:2:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "22275:2:61", + "nodeType": "YulIdentifier", + "src": "22275:2:61" + }, + "nativeSrc": "22275:14:61", + "nodeType": "YulFunctionCall", + "src": "22275:14:61" + }, + "nativeSrc": "22272:34:61", + "nodeType": "YulIf", + "src": "22272:34:61" + }, + { + "nativeSrc": "22315:59:61", + "nodeType": "YulAssignment", + "src": "22315:59:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "22346:9:61", + "nodeType": "YulIdentifier", + "src": "22346:9:61" + }, + { + "name": "offset", + "nativeSrc": "22357:6:61", + "nodeType": "YulIdentifier", + "src": "22357:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22342:3:61", + "nodeType": "YulIdentifier", + "src": "22342:3:61" + }, + "nativeSrc": "22342:22:61", + "nodeType": "YulFunctionCall", + "src": "22342:22:61" + }, + { + "name": "dataEnd", + "nativeSrc": "22366:7:61", + "nodeType": "YulIdentifier", + "src": "22366:7:61" + } + ], + "functionName": { + "name": "abi_decode_bytes", + "nativeSrc": "22325:16:61", + "nodeType": "YulIdentifier", + "src": "22325:16:61" + }, + "nativeSrc": "22325:49:61", + "nodeType": "YulFunctionCall", + "src": "22325:49:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "22315:6:61", + "nodeType": "YulIdentifier", + "src": "22315:6:61" + } + ] + }, + { + "nativeSrc": "22383:48:61", + "nodeType": "YulVariableDeclaration", + "src": "22383:48:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "22416:9:61", + "nodeType": "YulIdentifier", + "src": "22416:9:61" + }, + { + "kind": "number", + "nativeSrc": "22427:2:61", + "nodeType": "YulLiteral", + "src": "22427:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22412:3:61", + "nodeType": "YulIdentifier", + "src": "22412:3:61" + }, + "nativeSrc": "22412:18:61", + "nodeType": "YulFunctionCall", + "src": "22412:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "22399:12:61", + "nodeType": "YulIdentifier", + "src": "22399:12:61" + }, + "nativeSrc": "22399:32:61", + "nodeType": "YulFunctionCall", + "src": "22399:32:61" + }, + "variables": [ + { + "name": "offset_1", + "nativeSrc": "22387:8:61", + "nodeType": "YulTypedName", + "src": "22387:8:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "22460:16:61", + "nodeType": "YulBlock", + "src": "22460:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22469:1:61", + "nodeType": "YulLiteral", + "src": "22469:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "22472:1:61", + "nodeType": "YulLiteral", + "src": "22472:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "22462:6:61", + "nodeType": "YulIdentifier", + "src": "22462:6:61" + }, + "nativeSrc": "22462:12:61", + "nodeType": "YulFunctionCall", + "src": "22462:12:61" + }, + "nativeSrc": "22462:12:61", + "nodeType": "YulExpressionStatement", + "src": "22462:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset_1", + "nativeSrc": "22446:8:61", + "nodeType": "YulIdentifier", + "src": "22446:8:61" + }, + { + "name": "_1", + "nativeSrc": "22456:2:61", + "nodeType": "YulIdentifier", + "src": "22456:2:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "22443:2:61", + "nodeType": "YulIdentifier", + "src": "22443:2:61" + }, + "nativeSrc": "22443:16:61", + "nodeType": "YulFunctionCall", + "src": "22443:16:61" + }, + "nativeSrc": "22440:36:61", + "nodeType": "YulIf", + "src": "22440:36:61" + }, + { + "nativeSrc": "22485:72:61", + "nodeType": "YulAssignment", + "src": "22485:72:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "22527:9:61", + "nodeType": "YulIdentifier", + "src": "22527:9:61" + }, + { + "name": "offset_1", + "nativeSrc": "22538:8:61", + "nodeType": "YulIdentifier", + "src": "22538:8:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22523:3:61", + "nodeType": "YulIdentifier", + "src": "22523:3:61" + }, + "nativeSrc": "22523:24:61", + "nodeType": "YulFunctionCall", + "src": "22523:24:61" + }, + { + "name": "dataEnd", + "nativeSrc": "22549:7:61", + "nodeType": "YulIdentifier", + "src": "22549:7:61" + } + ], + "functionName": { + "name": "abi_decode_array_string_dyn", + "nativeSrc": "22495:27:61", + "nodeType": "YulIdentifier", + "src": "22495:27:61" + }, + "nativeSrc": "22495:62:61", + "nodeType": "YulFunctionCall", + "src": "22495:62:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "22485:6:61", + "nodeType": "YulIdentifier", + "src": "22485:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_string_memory_ptrt_array$_t_string_memory_ptr_$dyn_memory_ptr", + "nativeSrc": "21986:577:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "22076:9:61", + "nodeType": "YulTypedName", + "src": "22076:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "22087:7:61", + "nodeType": "YulTypedName", + "src": "22087:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "22099:6:61", + "nodeType": "YulTypedName", + "src": "22099:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "22107:6:61", + "nodeType": "YulTypedName", + "src": "22107:6:61", + "type": "" + } + ], + "src": "21986:577:61" + }, + { + "body": { + "nativeSrc": "22663:228:61", + "nodeType": "YulBlock", + "src": "22663:228:61", + "statements": [ + { + "body": { + "nativeSrc": "22709:16:61", + "nodeType": "YulBlock", + "src": "22709:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22718:1:61", + "nodeType": "YulLiteral", + "src": "22718:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "22721:1:61", + "nodeType": "YulLiteral", + "src": "22721:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "22711:6:61", + "nodeType": "YulIdentifier", + "src": "22711:6:61" + }, + "nativeSrc": "22711:12:61", + "nodeType": "YulFunctionCall", + "src": "22711:12:61" + }, + "nativeSrc": "22711:12:61", + "nodeType": "YulExpressionStatement", + "src": "22711:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "22684:7:61", + "nodeType": "YulIdentifier", + "src": "22684:7:61" + }, + { + "name": "headStart", + "nativeSrc": "22693:9:61", + "nodeType": "YulIdentifier", + "src": "22693:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "22680:3:61", + "nodeType": "YulIdentifier", + "src": "22680:3:61" + }, + "nativeSrc": "22680:23:61", + "nodeType": "YulFunctionCall", + "src": "22680:23:61" + }, + { + "kind": "number", + "nativeSrc": "22705:2:61", + "nodeType": "YulLiteral", + "src": "22705:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "22676:3:61", + "nodeType": "YulIdentifier", + "src": "22676:3:61" + }, + "nativeSrc": "22676:32:61", + "nodeType": "YulFunctionCall", + "src": "22676:32:61" + }, + "nativeSrc": "22673:52:61", + "nodeType": "YulIf", + "src": "22673:52:61" + }, + { + "nativeSrc": "22734:36:61", + "nodeType": "YulVariableDeclaration", + "src": "22734:36:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "22760:9:61", + "nodeType": "YulIdentifier", + "src": "22760:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "22747:12:61", + "nodeType": "YulIdentifier", + "src": "22747:12:61" + }, + "nativeSrc": "22747:23:61", + "nodeType": "YulFunctionCall", + "src": "22747:23:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "22738:5:61", + "nodeType": "YulTypedName", + "src": "22738:5:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "22804:5:61", + "nodeType": "YulIdentifier", + "src": "22804:5:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "22779:24:61", + "nodeType": "YulIdentifier", + "src": "22779:24:61" + }, + "nativeSrc": "22779:31:61", + "nodeType": "YulFunctionCall", + "src": "22779:31:61" + }, + "nativeSrc": "22779:31:61", + "nodeType": "YulExpressionStatement", + "src": "22779:31:61" + }, + { + "nativeSrc": "22819:15:61", + "nodeType": "YulAssignment", + "src": "22819:15:61", + "value": { + "name": "value", + "nativeSrc": "22829:5:61", + "nodeType": "YulIdentifier", + "src": "22829:5:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "22819:6:61", + "nodeType": "YulIdentifier", + "src": "22819:6:61" + } + ] + }, + { + "nativeSrc": "22843:42:61", + "nodeType": "YulAssignment", + "src": "22843:42:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "22870:9:61", + "nodeType": "YulIdentifier", + "src": "22870:9:61" + }, + { + "kind": "number", + "nativeSrc": "22881:2:61", + "nodeType": "YulLiteral", + "src": "22881:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22866:3:61", + "nodeType": "YulIdentifier", + "src": "22866:3:61" + }, + "nativeSrc": "22866:18:61", + "nodeType": "YulFunctionCall", + "src": "22866:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "22853:12:61", + "nodeType": "YulIdentifier", + "src": "22853:12:61" + }, + "nativeSrc": "22853:32:61", + "nodeType": "YulFunctionCall", + "src": "22853:32:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "22843:6:61", + "nodeType": "YulIdentifier", + "src": "22843:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address_payablet_uint256", + "nativeSrc": "22568:323:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "22621:9:61", + "nodeType": "YulTypedName", + "src": "22621:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "22632:7:61", + "nodeType": "YulTypedName", + "src": "22632:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "22644:6:61", + "nodeType": "YulTypedName", + "src": "22644:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "22652:6:61", + "nodeType": "YulTypedName", + "src": "22652:6:61", + "type": "" + } + ], + "src": "22568:323:61" + }, + { + "body": { + "nativeSrc": "22928:95:61", + "nodeType": "YulBlock", + "src": "22928:95:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22945:1:61", + "nodeType": "YulLiteral", + "src": "22945:1:61", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22952:3:61", + "nodeType": "YulLiteral", + "src": "22952:3:61", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "22957:10:61", + "nodeType": "YulLiteral", + "src": "22957:10:61", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "22948:3:61", + "nodeType": "YulIdentifier", + "src": "22948:3:61" + }, + "nativeSrc": "22948:20:61", + "nodeType": "YulFunctionCall", + "src": "22948:20:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22938:6:61", + "nodeType": "YulIdentifier", + "src": "22938:6:61" + }, + "nativeSrc": "22938:31:61", + "nodeType": "YulFunctionCall", + "src": "22938:31:61" + }, + "nativeSrc": "22938:31:61", + "nodeType": "YulExpressionStatement", + "src": "22938:31:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22985:1:61", + "nodeType": "YulLiteral", + "src": "22985:1:61", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "22988:4:61", + "nodeType": "YulLiteral", + "src": "22988:4:61", + "type": "", + "value": "0x32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22978:6:61", + "nodeType": "YulIdentifier", + "src": "22978:6:61" + }, + "nativeSrc": "22978:15:61", + "nodeType": "YulFunctionCall", + "src": "22978:15:61" + }, + "nativeSrc": "22978:15:61", + "nodeType": "YulExpressionStatement", + "src": "22978:15:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23009:1:61", + "nodeType": "YulLiteral", + "src": "23009:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "23012:4:61", + "nodeType": "YulLiteral", + "src": "23012:4:61", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "23002:6:61", + "nodeType": "YulIdentifier", + "src": "23002:6:61" + }, + "nativeSrc": "23002:15:61", + "nodeType": "YulFunctionCall", + "src": "23002:15:61" + }, + "nativeSrc": "23002:15:61", + "nodeType": "YulExpressionStatement", + "src": "23002:15:61" + } + ] + }, + "name": "panic_error_0x32", + "nativeSrc": "22896:127:61", + "nodeType": "YulFunctionDefinition", + "src": "22896:127:61" + }, + { + "body": { + "nativeSrc": "23119:557:61", + "nodeType": "YulBlock", + "src": "23119:557:61", + "statements": [ + { + "body": { + "nativeSrc": "23165:16:61", + "nodeType": "YulBlock", + "src": "23165:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23174:1:61", + "nodeType": "YulLiteral", + "src": "23174:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "23177:1:61", + "nodeType": "YulLiteral", + "src": "23177:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "23167:6:61", + "nodeType": "YulIdentifier", + "src": "23167:6:61" + }, + "nativeSrc": "23167:12:61", + "nodeType": "YulFunctionCall", + "src": "23167:12:61" + }, + "nativeSrc": "23167:12:61", + "nodeType": "YulExpressionStatement", + "src": "23167:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "23140:7:61", + "nodeType": "YulIdentifier", + "src": "23140:7:61" + }, + { + "name": "headStart", + "nativeSrc": "23149:9:61", + "nodeType": "YulIdentifier", + "src": "23149:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "23136:3:61", + "nodeType": "YulIdentifier", + "src": "23136:3:61" + }, + "nativeSrc": "23136:23:61", + "nodeType": "YulFunctionCall", + "src": "23136:23:61" + }, + { + "kind": "number", + "nativeSrc": "23161:2:61", + "nodeType": "YulLiteral", + "src": "23161:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "23132:3:61", + "nodeType": "YulIdentifier", + "src": "23132:3:61" + }, + "nativeSrc": "23132:32:61", + "nodeType": "YulFunctionCall", + "src": "23132:32:61" + }, + "nativeSrc": "23129:52:61", + "nodeType": "YulIf", + "src": "23129:52:61" + }, + { + "nativeSrc": "23190:30:61", + "nodeType": "YulVariableDeclaration", + "src": "23190:30:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "23210:9:61", + "nodeType": "YulIdentifier", + "src": "23210:9:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "23204:5:61", + "nodeType": "YulIdentifier", + "src": "23204:5:61" + }, + "nativeSrc": "23204:16:61", + "nodeType": "YulFunctionCall", + "src": "23204:16:61" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "23194:6:61", + "nodeType": "YulTypedName", + "src": "23194:6:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "23263:16:61", + "nodeType": "YulBlock", + "src": "23263:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23272:1:61", + "nodeType": "YulLiteral", + "src": "23272:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "23275:1:61", + "nodeType": "YulLiteral", + "src": "23275:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "23265:6:61", + "nodeType": "YulIdentifier", + "src": "23265:6:61" + }, + "nativeSrc": "23265:12:61", + "nodeType": "YulFunctionCall", + "src": "23265:12:61" + }, + "nativeSrc": "23265:12:61", + "nodeType": "YulExpressionStatement", + "src": "23265:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "23235:6:61", + "nodeType": "YulIdentifier", + "src": "23235:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23251:2:61", + "nodeType": "YulLiteral", + "src": "23251:2:61", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "23255:1:61", + "nodeType": "YulLiteral", + "src": "23255:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "23247:3:61", + "nodeType": "YulIdentifier", + "src": "23247:3:61" + }, + "nativeSrc": "23247:10:61", + "nodeType": "YulFunctionCall", + "src": "23247:10:61" + }, + { + "kind": "number", + "nativeSrc": "23259:1:61", + "nodeType": "YulLiteral", + "src": "23259:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "23243:3:61", + "nodeType": "YulIdentifier", + "src": "23243:3:61" + }, + "nativeSrc": "23243:18:61", + "nodeType": "YulFunctionCall", + "src": "23243:18:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "23232:2:61", + "nodeType": "YulIdentifier", + "src": "23232:2:61" + }, + "nativeSrc": "23232:30:61", + "nodeType": "YulFunctionCall", + "src": "23232:30:61" + }, + "nativeSrc": "23229:50:61", + "nodeType": "YulIf", + "src": "23229:50:61" + }, + { + "nativeSrc": "23288:32:61", + "nodeType": "YulVariableDeclaration", + "src": "23288:32:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "23302:9:61", + "nodeType": "YulIdentifier", + "src": "23302:9:61" + }, + { + "name": "offset", + "nativeSrc": "23313:6:61", + "nodeType": "YulIdentifier", + "src": "23313:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23298:3:61", + "nodeType": "YulIdentifier", + "src": "23298:3:61" + }, + "nativeSrc": "23298:22:61", + "nodeType": "YulFunctionCall", + "src": "23298:22:61" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "23292:2:61", + "nodeType": "YulTypedName", + "src": "23292:2:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "23368:16:61", + "nodeType": "YulBlock", + "src": "23368:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23377:1:61", + "nodeType": "YulLiteral", + "src": "23377:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "23380:1:61", + "nodeType": "YulLiteral", + "src": "23380:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "23370:6:61", + "nodeType": "YulIdentifier", + "src": "23370:6:61" + }, + "nativeSrc": "23370:12:61", + "nodeType": "YulFunctionCall", + "src": "23370:12:61" + }, + "nativeSrc": "23370:12:61", + "nodeType": "YulExpressionStatement", + "src": "23370:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nativeSrc": "23347:2:61", + "nodeType": "YulIdentifier", + "src": "23347:2:61" + }, + { + "kind": "number", + "nativeSrc": "23351:4:61", + "nodeType": "YulLiteral", + "src": "23351:4:61", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23343:3:61", + "nodeType": "YulIdentifier", + "src": "23343:3:61" + }, + "nativeSrc": "23343:13:61", + "nodeType": "YulFunctionCall", + "src": "23343:13:61" + }, + { + "name": "dataEnd", + "nativeSrc": "23358:7:61", + "nodeType": "YulIdentifier", + "src": "23358:7:61" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "23339:3:61", + "nodeType": "YulIdentifier", + "src": "23339:3:61" + }, + "nativeSrc": "23339:27:61", + "nodeType": "YulFunctionCall", + "src": "23339:27:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "23332:6:61", + "nodeType": "YulIdentifier", + "src": "23332:6:61" + }, + "nativeSrc": "23332:35:61", + "nodeType": "YulFunctionCall", + "src": "23332:35:61" + }, + "nativeSrc": "23329:55:61", + "nodeType": "YulIf", + "src": "23329:55:61" + }, + { + "nativeSrc": "23393:19:61", + "nodeType": "YulVariableDeclaration", + "src": "23393:19:61", + "value": { + "arguments": [ + { + "name": "_1", + "nativeSrc": "23409:2:61", + "nodeType": "YulIdentifier", + "src": "23409:2:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "23403:5:61", + "nodeType": "YulIdentifier", + "src": "23403:5:61" + }, + "nativeSrc": "23403:9:61", + "nodeType": "YulFunctionCall", + "src": "23403:9:61" + }, + "variables": [ + { + "name": "_2", + "nativeSrc": "23397:2:61", + "nodeType": "YulTypedName", + "src": "23397:2:61", + "type": "" + } + ] + }, + { + "nativeSrc": "23421:61:61", + "nodeType": "YulVariableDeclaration", + "src": "23421:61:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nativeSrc": "23478:2:61", + "nodeType": "YulIdentifier", + "src": "23478:2:61" + } + ], + "functionName": { + "name": "array_allocation_size_bytes", + "nativeSrc": "23450:27:61", + "nodeType": "YulIdentifier", + "src": "23450:27:61" + }, + "nativeSrc": "23450:31:61", + "nodeType": "YulFunctionCall", + "src": "23450:31:61" + } + ], + "functionName": { + "name": "allocate_memory", + "nativeSrc": "23434:15:61", + "nodeType": "YulIdentifier", + "src": "23434:15:61" + }, + "nativeSrc": "23434:48:61", + "nodeType": "YulFunctionCall", + "src": "23434:48:61" + }, + "variables": [ + { + "name": "array", + "nativeSrc": "23425:5:61", + "nodeType": "YulTypedName", + "src": "23425:5:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "array", + "nativeSrc": "23498:5:61", + "nodeType": "YulIdentifier", + "src": "23498:5:61" + }, + { + "name": "_2", + "nativeSrc": "23505:2:61", + "nodeType": "YulIdentifier", + "src": "23505:2:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "23491:6:61", + "nodeType": "YulIdentifier", + "src": "23491:6:61" + }, + "nativeSrc": "23491:17:61", + "nodeType": "YulFunctionCall", + "src": "23491:17:61" + }, + "nativeSrc": "23491:17:61", + "nodeType": "YulExpressionStatement", + "src": "23491:17:61" + }, + { + "body": { + "nativeSrc": "23554:16:61", + "nodeType": "YulBlock", + "src": "23554:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23563:1:61", + "nodeType": "YulLiteral", + "src": "23563:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "23566:1:61", + "nodeType": "YulLiteral", + "src": "23566:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "23556:6:61", + "nodeType": "YulIdentifier", + "src": "23556:6:61" + }, + "nativeSrc": "23556:12:61", + "nodeType": "YulFunctionCall", + "src": "23556:12:61" + }, + "nativeSrc": "23556:12:61", + "nodeType": "YulExpressionStatement", + "src": "23556:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nativeSrc": "23531:2:61", + "nodeType": "YulIdentifier", + "src": "23531:2:61" + }, + { + "name": "_2", + "nativeSrc": "23535:2:61", + "nodeType": "YulIdentifier", + "src": "23535:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23527:3:61", + "nodeType": "YulIdentifier", + "src": "23527:3:61" + }, + "nativeSrc": "23527:11:61", + "nodeType": "YulFunctionCall", + "src": "23527:11:61" + }, + { + "kind": "number", + "nativeSrc": "23540:2:61", + "nodeType": "YulLiteral", + "src": "23540:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23523:3:61", + "nodeType": "YulIdentifier", + "src": "23523:3:61" + }, + "nativeSrc": "23523:20:61", + "nodeType": "YulFunctionCall", + "src": "23523:20:61" + }, + { + "name": "dataEnd", + "nativeSrc": "23545:7:61", + "nodeType": "YulIdentifier", + "src": "23545:7:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "23520:2:61", + "nodeType": "YulIdentifier", + "src": "23520:2:61" + }, + "nativeSrc": "23520:33:61", + "nodeType": "YulFunctionCall", + "src": "23520:33:61" + }, + "nativeSrc": "23517:53:61", + "nodeType": "YulIf", + "src": "23517:53:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nativeSrc": "23618:2:61", + "nodeType": "YulIdentifier", + "src": "23618:2:61" + }, + { + "kind": "number", + "nativeSrc": "23622:2:61", + "nodeType": "YulLiteral", + "src": "23622:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23614:3:61", + "nodeType": "YulIdentifier", + "src": "23614:3:61" + }, + "nativeSrc": "23614:11:61", + "nodeType": "YulFunctionCall", + "src": "23614:11:61" + }, + { + "arguments": [ + { + "name": "array", + "nativeSrc": "23631:5:61", + "nodeType": "YulIdentifier", + "src": "23631:5:61" + }, + { + "kind": "number", + "nativeSrc": "23638:2:61", + "nodeType": "YulLiteral", + "src": "23638:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23627:3:61", + "nodeType": "YulIdentifier", + "src": "23627:3:61" + }, + "nativeSrc": "23627:14:61", + "nodeType": "YulFunctionCall", + "src": "23627:14:61" + }, + { + "name": "_2", + "nativeSrc": "23643:2:61", + "nodeType": "YulIdentifier", + "src": "23643:2:61" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "23579:34:61", + "nodeType": "YulIdentifier", + "src": "23579:34:61" + }, + "nativeSrc": "23579:67:61", + "nodeType": "YulFunctionCall", + "src": "23579:67:61" + }, + "nativeSrc": "23579:67:61", + "nodeType": "YulExpressionStatement", + "src": "23579:67:61" + }, + { + "nativeSrc": "23655:15:61", + "nodeType": "YulAssignment", + "src": "23655:15:61", + "value": { + "name": "array", + "nativeSrc": "23665:5:61", + "nodeType": "YulIdentifier", + "src": "23665:5:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "23655:6:61", + "nodeType": "YulIdentifier", + "src": "23655:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_string_memory_ptr_fromMemory", + "nativeSrc": "23028:648:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "23085:9:61", + "nodeType": "YulTypedName", + "src": "23085:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "23096:7:61", + "nodeType": "YulTypedName", + "src": "23096:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "23108:6:61", + "nodeType": "YulTypedName", + "src": "23108:6:61", + "type": "" + } + ], + "src": "23028:648:61" + }, + { + "body": { + "nativeSrc": "23838:218:61", + "nodeType": "YulBlock", + "src": "23838:218:61", + "statements": [ + { + "nativeSrc": "23848:26:61", + "nodeType": "YulAssignment", + "src": "23848:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "23860:9:61", + "nodeType": "YulIdentifier", + "src": "23860:9:61" + }, + { + "kind": "number", + "nativeSrc": "23871:2:61", + "nodeType": "YulLiteral", + "src": "23871:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23856:3:61", + "nodeType": "YulIdentifier", + "src": "23856:3:61" + }, + "nativeSrc": "23856:18:61", + "nodeType": "YulFunctionCall", + "src": "23856:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "23848:4:61", + "nodeType": "YulIdentifier", + "src": "23848:4:61" + } + ] + }, + { + "nativeSrc": "23883:29:61", + "nodeType": "YulVariableDeclaration", + "src": "23883:29:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23901:3:61", + "nodeType": "YulLiteral", + "src": "23901:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "23906:1:61", + "nodeType": "YulLiteral", + "src": "23906:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "23897:3:61", + "nodeType": "YulIdentifier", + "src": "23897:3:61" + }, + "nativeSrc": "23897:11:61", + "nodeType": "YulFunctionCall", + "src": "23897:11:61" + }, + { + "kind": "number", + "nativeSrc": "23910:1:61", + "nodeType": "YulLiteral", + "src": "23910:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "23893:3:61", + "nodeType": "YulIdentifier", + "src": "23893:3:61" + }, + "nativeSrc": "23893:19:61", + "nodeType": "YulFunctionCall", + "src": "23893:19:61" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "23887:2:61", + "nodeType": "YulTypedName", + "src": "23887:2:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "23928:9:61", + "nodeType": "YulIdentifier", + "src": "23928:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "23943:6:61", + "nodeType": "YulIdentifier", + "src": "23943:6:61" + }, + { + "name": "_1", + "nativeSrc": "23951:2:61", + "nodeType": "YulIdentifier", + "src": "23951:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "23939:3:61", + "nodeType": "YulIdentifier", + "src": "23939:3:61" + }, + "nativeSrc": "23939:15:61", + "nodeType": "YulFunctionCall", + "src": "23939:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "23921:6:61", + "nodeType": "YulIdentifier", + "src": "23921:6:61" + }, + "nativeSrc": "23921:34:61", + "nodeType": "YulFunctionCall", + "src": "23921:34:61" + }, + "nativeSrc": "23921:34:61", + "nodeType": "YulExpressionStatement", + "src": "23921:34:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "23975:9:61", + "nodeType": "YulIdentifier", + "src": "23975:9:61" + }, + { + "kind": "number", + "nativeSrc": "23986:2:61", + "nodeType": "YulLiteral", + "src": "23986:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23971:3:61", + "nodeType": "YulIdentifier", + "src": "23971:3:61" + }, + "nativeSrc": "23971:18:61", + "nodeType": "YulFunctionCall", + "src": "23971:18:61" + }, + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "23995:6:61", + "nodeType": "YulIdentifier", + "src": "23995:6:61" + }, + { + "name": "_1", + "nativeSrc": "24003:2:61", + "nodeType": "YulIdentifier", + "src": "24003:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "23991:3:61", + "nodeType": "YulIdentifier", + "src": "23991:3:61" + }, + "nativeSrc": "23991:15:61", + "nodeType": "YulFunctionCall", + "src": "23991:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "23964:6:61", + "nodeType": "YulIdentifier", + "src": "23964:6:61" + }, + "nativeSrc": "23964:43:61", + "nodeType": "YulFunctionCall", + "src": "23964:43:61" + }, + "nativeSrc": "23964:43:61", + "nodeType": "YulExpressionStatement", + "src": "23964:43:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "24027:9:61", + "nodeType": "YulIdentifier", + "src": "24027:9:61" + }, + { + "kind": "number", + "nativeSrc": "24038:2:61", + "nodeType": "YulLiteral", + "src": "24038:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24023:3:61", + "nodeType": "YulIdentifier", + "src": "24023:3:61" + }, + "nativeSrc": "24023:18:61", + "nodeType": "YulFunctionCall", + "src": "24023:18:61" + }, + { + "name": "value2", + "nativeSrc": "24043:6:61", + "nodeType": "YulIdentifier", + "src": "24043:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "24016:6:61", + "nodeType": "YulIdentifier", + "src": "24016:6:61" + }, + "nativeSrc": "24016:34:61", + "nodeType": "YulFunctionCall", + "src": "24016:34:61" + }, + "nativeSrc": "24016:34:61", + "nodeType": "YulExpressionStatement", + "src": "24016:34:61" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed", + "nativeSrc": "23681:375:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "23791:9:61", + "nodeType": "YulTypedName", + "src": "23791:9:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "23802:6:61", + "nodeType": "YulTypedName", + "src": "23802:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "23810:6:61", + "nodeType": "YulTypedName", + "src": "23810:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "23818:6:61", + "nodeType": "YulTypedName", + "src": "23818:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "23829:4:61", + "nodeType": "YulTypedName", + "src": "23829:4:61", + "type": "" + } + ], + "src": "23681:375:61" + }, + { + "body": { + "nativeSrc": "24226:188:61", + "nodeType": "YulBlock", + "src": "24226:188:61", + "statements": [ + { + "nativeSrc": "24236:26:61", + "nodeType": "YulAssignment", + "src": "24236:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "24248:9:61", + "nodeType": "YulIdentifier", + "src": "24248:9:61" + }, + { + "kind": "number", + "nativeSrc": "24259:2:61", + "nodeType": "YulLiteral", + "src": "24259:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24244:3:61", + "nodeType": "YulIdentifier", + "src": "24244:3:61" + }, + "nativeSrc": "24244:18:61", + "nodeType": "YulFunctionCall", + "src": "24244:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "24236:4:61", + "nodeType": "YulIdentifier", + "src": "24236:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "24278:9:61", + "nodeType": "YulIdentifier", + "src": "24278:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "24293:6:61", + "nodeType": "YulIdentifier", + "src": "24293:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "24309:3:61", + "nodeType": "YulLiteral", + "src": "24309:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "24314:1:61", + "nodeType": "YulLiteral", + "src": "24314:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "24305:3:61", + "nodeType": "YulIdentifier", + "src": "24305:3:61" + }, + "nativeSrc": "24305:11:61", + "nodeType": "YulFunctionCall", + "src": "24305:11:61" + }, + { + "kind": "number", + "nativeSrc": "24318:1:61", + "nodeType": "YulLiteral", + "src": "24318:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "24301:3:61", + "nodeType": "YulIdentifier", + "src": "24301:3:61" + }, + "nativeSrc": "24301:19:61", + "nodeType": "YulFunctionCall", + "src": "24301:19:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "24289:3:61", + "nodeType": "YulIdentifier", + "src": "24289:3:61" + }, + "nativeSrc": "24289:32:61", + "nodeType": "YulFunctionCall", + "src": "24289:32:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "24271:6:61", + "nodeType": "YulIdentifier", + "src": "24271:6:61" + }, + "nativeSrc": "24271:51:61", + "nodeType": "YulFunctionCall", + "src": "24271:51:61" + }, + "nativeSrc": "24271:51:61", + "nodeType": "YulExpressionStatement", + "src": "24271:51:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "24342:9:61", + "nodeType": "YulIdentifier", + "src": "24342:9:61" + }, + { + "kind": "number", + "nativeSrc": "24353:2:61", + "nodeType": "YulLiteral", + "src": "24353:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24338:3:61", + "nodeType": "YulIdentifier", + "src": "24338:3:61" + }, + "nativeSrc": "24338:18:61", + "nodeType": "YulFunctionCall", + "src": "24338:18:61" + }, + { + "name": "value1", + "nativeSrc": "24358:6:61", + "nodeType": "YulIdentifier", + "src": "24358:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "24331:6:61", + "nodeType": "YulIdentifier", + "src": "24331:6:61" + }, + "nativeSrc": "24331:34:61", + "nodeType": "YulFunctionCall", + "src": "24331:34:61" + }, + "nativeSrc": "24331:34:61", + "nodeType": "YulExpressionStatement", + "src": "24331:34:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "24385:9:61", + "nodeType": "YulIdentifier", + "src": "24385:9:61" + }, + { + "kind": "number", + "nativeSrc": "24396:2:61", + "nodeType": "YulLiteral", + "src": "24396:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24381:3:61", + "nodeType": "YulIdentifier", + "src": "24381:3:61" + }, + "nativeSrc": "24381:18:61", + "nodeType": "YulFunctionCall", + "src": "24381:18:61" + }, + { + "name": "value2", + "nativeSrc": "24401:6:61", + "nodeType": "YulIdentifier", + "src": "24401:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "24374:6:61", + "nodeType": "YulIdentifier", + "src": "24374:6:61" + }, + "nativeSrc": "24374:34:61", + "nodeType": "YulFunctionCall", + "src": "24374:34:61" + }, + "nativeSrc": "24374:34:61", + "nodeType": "YulExpressionStatement", + "src": "24374:34:61" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_library_reversed", + "nativeSrc": "24061:353:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "24179:9:61", + "nodeType": "YulTypedName", + "src": "24179:9:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "24190:6:61", + "nodeType": "YulTypedName", + "src": "24190:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "24198:6:61", + "nodeType": "YulTypedName", + "src": "24198:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "24206:6:61", + "nodeType": "YulTypedName", + "src": "24206:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "24217:4:61", + "nodeType": "YulTypedName", + "src": "24217:4:61", + "type": "" + } + ], + "src": "24061:353:61" + }, + { + "body": { + "nativeSrc": "24558:150:61", + "nodeType": "YulBlock", + "src": "24558:150:61", + "statements": [ + { + "nativeSrc": "24568:27:61", + "nodeType": "YulVariableDeclaration", + "src": "24568:27:61", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "24588:6:61", + "nodeType": "YulIdentifier", + "src": "24588:6:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "24582:5:61", + "nodeType": "YulIdentifier", + "src": "24582:5:61" + }, + "nativeSrc": "24582:13:61", + "nodeType": "YulFunctionCall", + "src": "24582:13:61" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "24572:6:61", + "nodeType": "YulTypedName", + "src": "24572:6:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "24643:6:61", + "nodeType": "YulIdentifier", + "src": "24643:6:61" + }, + { + "kind": "number", + "nativeSrc": "24651:4:61", + "nodeType": "YulLiteral", + "src": "24651:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24639:3:61", + "nodeType": "YulIdentifier", + "src": "24639:3:61" + }, + "nativeSrc": "24639:17:61", + "nodeType": "YulFunctionCall", + "src": "24639:17:61" + }, + { + "name": "pos", + "nativeSrc": "24658:3:61", + "nodeType": "YulIdentifier", + "src": "24658:3:61" + }, + { + "name": "length", + "nativeSrc": "24663:6:61", + "nodeType": "YulIdentifier", + "src": "24663:6:61" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "24604:34:61", + "nodeType": "YulIdentifier", + "src": "24604:34:61" + }, + "nativeSrc": "24604:66:61", + "nodeType": "YulFunctionCall", + "src": "24604:66:61" + }, + "nativeSrc": "24604:66:61", + "nodeType": "YulExpressionStatement", + "src": "24604:66:61" + }, + { + "nativeSrc": "24679:23:61", + "nodeType": "YulAssignment", + "src": "24679:23:61", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "24690:3:61", + "nodeType": "YulIdentifier", + "src": "24690:3:61" + }, + { + "name": "length", + "nativeSrc": "24695:6:61", + "nodeType": "YulIdentifier", + "src": "24695:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "24686:3:61", + "nodeType": "YulIdentifier", + "src": "24686:3:61" + }, + "nativeSrc": "24686:16:61", + "nodeType": "YulFunctionCall", + "src": "24686:16:61" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "24679:3:61", + "nodeType": "YulIdentifier", + "src": "24679:3:61" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nativeSrc": "24419:289:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "24534:3:61", + "nodeType": "YulTypedName", + "src": "24534:3:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "24539:6:61", + "nodeType": "YulTypedName", + "src": "24539:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "24550:3:61", + "nodeType": "YulTypedName", + "src": "24550:3:61", + "type": "" + } + ], + "src": "24419:289:61" + }, + { + "body": { + "nativeSrc": "24791:167:61", + "nodeType": "YulBlock", + "src": "24791:167:61", + "statements": [ + { + "body": { + "nativeSrc": "24837:16:61", + "nodeType": "YulBlock", + "src": "24837:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "24846:1:61", + "nodeType": "YulLiteral", + "src": "24846:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "24849:1:61", + "nodeType": "YulLiteral", + "src": "24849:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "24839:6:61", + "nodeType": "YulIdentifier", + "src": "24839:6:61" + }, + "nativeSrc": "24839:12:61", + "nodeType": "YulFunctionCall", + "src": "24839:12:61" + }, + "nativeSrc": "24839:12:61", + "nodeType": "YulExpressionStatement", + "src": "24839:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "24812:7:61", + "nodeType": "YulIdentifier", + "src": "24812:7:61" + }, + { + "name": "headStart", + "nativeSrc": "24821:9:61", + "nodeType": "YulIdentifier", + "src": "24821:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "24808:3:61", + "nodeType": "YulIdentifier", + "src": "24808:3:61" + }, + "nativeSrc": "24808:23:61", + "nodeType": "YulFunctionCall", + "src": "24808:23:61" + }, + { + "kind": "number", + "nativeSrc": "24833:2:61", + "nodeType": "YulLiteral", + "src": "24833:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "24804:3:61", + "nodeType": "YulIdentifier", + "src": "24804:3:61" + }, + "nativeSrc": "24804:32:61", + "nodeType": "YulFunctionCall", + "src": "24804:32:61" + }, + "nativeSrc": "24801:52:61", + "nodeType": "YulIf", + "src": "24801:52:61" + }, + { + "nativeSrc": "24862:29:61", + "nodeType": "YulVariableDeclaration", + "src": "24862:29:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "24881:9:61", + "nodeType": "YulIdentifier", + "src": "24881:9:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "24875:5:61", + "nodeType": "YulIdentifier", + "src": "24875:5:61" + }, + "nativeSrc": "24875:16:61", + "nodeType": "YulFunctionCall", + "src": "24875:16:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "24866:5:61", + "nodeType": "YulTypedName", + "src": "24866:5:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "24922:5:61", + "nodeType": "YulIdentifier", + "src": "24922:5:61" + } + ], + "functionName": { + "name": "validator_revert_bool", + "nativeSrc": "24900:21:61", + "nodeType": "YulIdentifier", + "src": "24900:21:61" + }, + "nativeSrc": "24900:28:61", + "nodeType": "YulFunctionCall", + "src": "24900:28:61" + }, + "nativeSrc": "24900:28:61", + "nodeType": "YulExpressionStatement", + "src": "24900:28:61" + }, + { + "nativeSrc": "24937:15:61", + "nodeType": "YulAssignment", + "src": "24937:15:61", + "value": { + "name": "value", + "nativeSrc": "24947:5:61", + "nodeType": "YulIdentifier", + "src": "24947:5:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "24937:6:61", + "nodeType": "YulIdentifier", + "src": "24937:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bool_fromMemory", + "nativeSrc": "24713:245:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "24757:9:61", + "nodeType": "YulTypedName", + "src": "24757:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "24768:7:61", + "nodeType": "YulTypedName", + "src": "24768:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "24780:6:61", + "nodeType": "YulTypedName", + "src": "24780:6:61", + "type": "" + } + ], + "src": "24713:245:61" + }, + { + "body": { + "nativeSrc": "24995:95:61", + "nodeType": "YulBlock", + "src": "24995:95:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "25012:1:61", + "nodeType": "YulLiteral", + "src": "25012:1:61", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "25019:3:61", + "nodeType": "YulLiteral", + "src": "25019:3:61", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "25024:10:61", + "nodeType": "YulLiteral", + "src": "25024:10:61", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "25015:3:61", + "nodeType": "YulIdentifier", + "src": "25015:3:61" + }, + "nativeSrc": "25015:20:61", + "nodeType": "YulFunctionCall", + "src": "25015:20:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "25005:6:61", + "nodeType": "YulIdentifier", + "src": "25005:6:61" + }, + "nativeSrc": "25005:31:61", + "nodeType": "YulFunctionCall", + "src": "25005:31:61" + }, + "nativeSrc": "25005:31:61", + "nodeType": "YulExpressionStatement", + "src": "25005:31:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "25052:1:61", + "nodeType": "YulLiteral", + "src": "25052:1:61", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "25055:4:61", + "nodeType": "YulLiteral", + "src": "25055:4:61", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "25045:6:61", + "nodeType": "YulIdentifier", + "src": "25045:6:61" + }, + "nativeSrc": "25045:15:61", + "nodeType": "YulFunctionCall", + "src": "25045:15:61" + }, + "nativeSrc": "25045:15:61", + "nodeType": "YulExpressionStatement", + "src": "25045:15:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "25076:1:61", + "nodeType": "YulLiteral", + "src": "25076:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "25079:4:61", + "nodeType": "YulLiteral", + "src": "25079:4:61", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "25069:6:61", + "nodeType": "YulIdentifier", + "src": "25069:6:61" + }, + "nativeSrc": "25069:15:61", + "nodeType": "YulFunctionCall", + "src": "25069:15:61" + }, + "nativeSrc": "25069:15:61", + "nodeType": "YulExpressionStatement", + "src": "25069:15:61" + } + ] + }, + "name": "panic_error_0x11", + "nativeSrc": "24963:127:61", + "nodeType": "YulFunctionDefinition", + "src": "24963:127:61" + }, + { + "body": { + "nativeSrc": "25144:79:61", + "nodeType": "YulBlock", + "src": "25144:79:61", + "statements": [ + { + "nativeSrc": "25154:17:61", + "nodeType": "YulAssignment", + "src": "25154:17:61", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "25166:1:61", + "nodeType": "YulIdentifier", + "src": "25166:1:61" + }, + { + "name": "y", + "nativeSrc": "25169:1:61", + "nodeType": "YulIdentifier", + "src": "25169:1:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "25162:3:61", + "nodeType": "YulIdentifier", + "src": "25162:3:61" + }, + "nativeSrc": "25162:9:61", + "nodeType": "YulFunctionCall", + "src": "25162:9:61" + }, + "variableNames": [ + { + "name": "diff", + "nativeSrc": "25154:4:61", + "nodeType": "YulIdentifier", + "src": "25154:4:61" + } + ] + }, + { + "body": { + "nativeSrc": "25195:22:61", + "nodeType": "YulBlock", + "src": "25195:22:61", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nativeSrc": "25197:16:61", + "nodeType": "YulIdentifier", + "src": "25197:16:61" + }, + "nativeSrc": "25197:18:61", + "nodeType": "YulFunctionCall", + "src": "25197:18:61" + }, + "nativeSrc": "25197:18:61", + "nodeType": "YulExpressionStatement", + "src": "25197:18:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "diff", + "nativeSrc": "25186:4:61", + "nodeType": "YulIdentifier", + "src": "25186:4:61" + }, + { + "name": "x", + "nativeSrc": "25192:1:61", + "nodeType": "YulIdentifier", + "src": "25192:1:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "25183:2:61", + "nodeType": "YulIdentifier", + "src": "25183:2:61" + }, + "nativeSrc": "25183:11:61", + "nodeType": "YulFunctionCall", + "src": "25183:11:61" + }, + "nativeSrc": "25180:37:61", + "nodeType": "YulIf", + "src": "25180:37:61" + } + ] + }, + "name": "checked_sub_t_uint256", + "nativeSrc": "25095:128:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nativeSrc": "25126:1:61", + "nodeType": "YulTypedName", + "src": "25126:1:61", + "type": "" + }, + { + "name": "y", + "nativeSrc": "25129:1:61", + "nodeType": "YulTypedName", + "src": "25129:1:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nativeSrc": "25135:4:61", + "nodeType": "YulTypedName", + "src": "25135:4:61", + "type": "" + } + ], + "src": "25095:128:61" + }, + { + "body": { + "nativeSrc": "25417:275:61", + "nodeType": "YulBlock", + "src": "25417:275:61", + "statements": [ + { + "nativeSrc": "25427:27:61", + "nodeType": "YulAssignment", + "src": "25427:27:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "25439:9:61", + "nodeType": "YulIdentifier", + "src": "25439:9:61" + }, + { + "kind": "number", + "nativeSrc": "25450:3:61", + "nodeType": "YulLiteral", + "src": "25450:3:61", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "25435:3:61", + "nodeType": "YulIdentifier", + "src": "25435:3:61" + }, + "nativeSrc": "25435:19:61", + "nodeType": "YulFunctionCall", + "src": "25435:19:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "25427:4:61", + "nodeType": "YulIdentifier", + "src": "25427:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "25470:9:61", + "nodeType": "YulIdentifier", + "src": "25470:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "25485:6:61", + "nodeType": "YulIdentifier", + "src": "25485:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "25501:3:61", + "nodeType": "YulLiteral", + "src": "25501:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "25506:1:61", + "nodeType": "YulLiteral", + "src": "25506:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "25497:3:61", + "nodeType": "YulIdentifier", + "src": "25497:3:61" + }, + "nativeSrc": "25497:11:61", + "nodeType": "YulFunctionCall", + "src": "25497:11:61" + }, + { + "kind": "number", + "nativeSrc": "25510:1:61", + "nodeType": "YulLiteral", + "src": "25510:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "25493:3:61", + "nodeType": "YulIdentifier", + "src": "25493:3:61" + }, + "nativeSrc": "25493:19:61", + "nodeType": "YulFunctionCall", + "src": "25493:19:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "25481:3:61", + "nodeType": "YulIdentifier", + "src": "25481:3:61" + }, + "nativeSrc": "25481:32:61", + "nodeType": "YulFunctionCall", + "src": "25481:32:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "25463:6:61", + "nodeType": "YulIdentifier", + "src": "25463:6:61" + }, + "nativeSrc": "25463:51:61", + "nodeType": "YulFunctionCall", + "src": "25463:51:61" + }, + "nativeSrc": "25463:51:61", + "nodeType": "YulExpressionStatement", + "src": "25463:51:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "25534:9:61", + "nodeType": "YulIdentifier", + "src": "25534:9:61" + }, + { + "kind": "number", + "nativeSrc": "25545:2:61", + "nodeType": "YulLiteral", + "src": "25545:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "25530:3:61", + "nodeType": "YulIdentifier", + "src": "25530:3:61" + }, + "nativeSrc": "25530:18:61", + "nodeType": "YulFunctionCall", + "src": "25530:18:61" + }, + { + "name": "value1", + "nativeSrc": "25550:6:61", + "nodeType": "YulIdentifier", + "src": "25550:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "25523:6:61", + "nodeType": "YulIdentifier", + "src": "25523:6:61" + }, + "nativeSrc": "25523:34:61", + "nodeType": "YulFunctionCall", + "src": "25523:34:61" + }, + "nativeSrc": "25523:34:61", + "nodeType": "YulExpressionStatement", + "src": "25523:34:61" + }, + { + "nativeSrc": "25566:16:61", + "nodeType": "YulVariableDeclaration", + "src": "25566:16:61", + "value": { + "kind": "number", + "nativeSrc": "25576:6:61", + "nodeType": "YulLiteral", + "src": "25576:6:61", + "type": "", + "value": "0xffff" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "25570:2:61", + "nodeType": "YulTypedName", + "src": "25570:2:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "25602:9:61", + "nodeType": "YulIdentifier", + "src": "25602:9:61" + }, + { + "kind": "number", + "nativeSrc": "25613:2:61", + "nodeType": "YulLiteral", + "src": "25613:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "25598:3:61", + "nodeType": "YulIdentifier", + "src": "25598:3:61" + }, + "nativeSrc": "25598:18:61", + "nodeType": "YulFunctionCall", + "src": "25598:18:61" + }, + { + "arguments": [ + { + "name": "value2", + "nativeSrc": "25622:6:61", + "nodeType": "YulIdentifier", + "src": "25622:6:61" + }, + { + "name": "_1", + "nativeSrc": "25630:2:61", + "nodeType": "YulIdentifier", + "src": "25630:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "25618:3:61", + "nodeType": "YulIdentifier", + "src": "25618:3:61" + }, + "nativeSrc": "25618:15:61", + "nodeType": "YulFunctionCall", + "src": "25618:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "25591:6:61", + "nodeType": "YulIdentifier", + "src": "25591:6:61" + }, + "nativeSrc": "25591:43:61", + "nodeType": "YulFunctionCall", + "src": "25591:43:61" + }, + "nativeSrc": "25591:43:61", + "nodeType": "YulExpressionStatement", + "src": "25591:43:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "25654:9:61", + "nodeType": "YulIdentifier", + "src": "25654:9:61" + }, + { + "kind": "number", + "nativeSrc": "25665:2:61", + "nodeType": "YulLiteral", + "src": "25665:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "25650:3:61", + "nodeType": "YulIdentifier", + "src": "25650:3:61" + }, + "nativeSrc": "25650:18:61", + "nodeType": "YulFunctionCall", + "src": "25650:18:61" + }, + { + "arguments": [ + { + "name": "value3", + "nativeSrc": "25674:6:61", + "nodeType": "YulIdentifier", + "src": "25674:6:61" + }, + { + "name": "_1", + "nativeSrc": "25682:2:61", + "nodeType": "YulIdentifier", + "src": "25682:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "25670:3:61", + "nodeType": "YulIdentifier", + "src": "25670:3:61" + }, + "nativeSrc": "25670:15:61", + "nodeType": "YulFunctionCall", + "src": "25670:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "25643:6:61", + "nodeType": "YulIdentifier", + "src": "25643:6:61" + }, + "nativeSrc": "25643:43:61", + "nodeType": "YulFunctionCall", + "src": "25643:43:61" + }, + "nativeSrc": "25643:43:61", + "nodeType": "YulExpressionStatement", + "src": "25643:43:61" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint256_t_uint16_t_uint16__to_t_address_t_uint256_t_uint16_t_uint16__fromStack_library_reversed", + "nativeSrc": "25228:464:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "25362:9:61", + "nodeType": "YulTypedName", + "src": "25362:9:61", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "25373:6:61", + "nodeType": "YulTypedName", + "src": "25373:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "25381:6:61", + "nodeType": "YulTypedName", + "src": "25381:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "25389:6:61", + "nodeType": "YulTypedName", + "src": "25389:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "25397:6:61", + "nodeType": "YulTypedName", + "src": "25397:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "25408:4:61", + "nodeType": "YulTypedName", + "src": "25408:4:61", + "type": "" + } + ], + "src": "25228:464:61" + }, + { + "body": { + "nativeSrc": "25805:101:61", + "nodeType": "YulBlock", + "src": "25805:101:61", + "statements": [ + { + "nativeSrc": "25815:26:61", + "nodeType": "YulAssignment", + "src": "25815:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "25827:9:61", + "nodeType": "YulIdentifier", + "src": "25827:9:61" + }, + { + "kind": "number", + "nativeSrc": "25838:2:61", + "nodeType": "YulLiteral", + "src": "25838:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "25823:3:61", + "nodeType": "YulIdentifier", + "src": "25823:3:61" + }, + "nativeSrc": "25823:18:61", + "nodeType": "YulFunctionCall", + "src": "25823:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "25815:4:61", + "nodeType": "YulIdentifier", + "src": "25815:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "25857:9:61", + "nodeType": "YulIdentifier", + "src": "25857:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "25872:6:61", + "nodeType": "YulIdentifier", + "src": "25872:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "25888:2:61", + "nodeType": "YulLiteral", + "src": "25888:2:61", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "25892:1:61", + "nodeType": "YulLiteral", + "src": "25892:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "25884:3:61", + "nodeType": "YulIdentifier", + "src": "25884:3:61" + }, + "nativeSrc": "25884:10:61", + "nodeType": "YulFunctionCall", + "src": "25884:10:61" + }, + { + "kind": "number", + "nativeSrc": "25896:1:61", + "nodeType": "YulLiteral", + "src": "25896:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "25880:3:61", + "nodeType": "YulIdentifier", + "src": "25880:3:61" + }, + "nativeSrc": "25880:18:61", + "nodeType": "YulFunctionCall", + "src": "25880:18:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "25868:3:61", + "nodeType": "YulIdentifier", + "src": "25868:3:61" + }, + "nativeSrc": "25868:31:61", + "nodeType": "YulFunctionCall", + "src": "25868:31:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "25850:6:61", + "nodeType": "YulIdentifier", + "src": "25850:6:61" + }, + "nativeSrc": "25850:50:61", + "nodeType": "YulFunctionCall", + "src": "25850:50:61" + }, + "nativeSrc": "25850:50:61", + "nodeType": "YulExpressionStatement", + "src": "25850:50:61" + } + ] + }, + "name": "abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed", + "nativeSrc": "25697:209:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "25774:9:61", + "nodeType": "YulTypedName", + "src": "25774:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "25785:6:61", + "nodeType": "YulTypedName", + "src": "25785:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "25796:4:61", + "nodeType": "YulTypedName", + "src": "25796:4:61", + "type": "" + } + ], + "src": "25697:209:61" + }, + { + "body": { + "nativeSrc": "26208:447:61", + "nodeType": "YulBlock", + "src": "26208:447:61", + "statements": [ + { + "nativeSrc": "26218:27:61", + "nodeType": "YulAssignment", + "src": "26218:27:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "26230:9:61", + "nodeType": "YulIdentifier", + "src": "26230:9:61" + }, + { + "kind": "number", + "nativeSrc": "26241:3:61", + "nodeType": "YulLiteral", + "src": "26241:3:61", + "type": "", + "value": "256" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "26226:3:61", + "nodeType": "YulIdentifier", + "src": "26226:3:61" + }, + "nativeSrc": "26226:19:61", + "nodeType": "YulFunctionCall", + "src": "26226:19:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "26218:4:61", + "nodeType": "YulIdentifier", + "src": "26218:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "26261:9:61", + "nodeType": "YulIdentifier", + "src": "26261:9:61" + }, + { + "name": "value0", + "nativeSrc": "26272:6:61", + "nodeType": "YulIdentifier", + "src": "26272:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "26254:6:61", + "nodeType": "YulIdentifier", + "src": "26254:6:61" + }, + "nativeSrc": "26254:25:61", + "nodeType": "YulFunctionCall", + "src": "26254:25:61" + }, + "nativeSrc": "26254:25:61", + "nodeType": "YulExpressionStatement", + "src": "26254:25:61" + }, + { + "nativeSrc": "26288:29:61", + "nodeType": "YulVariableDeclaration", + "src": "26288:29:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "26306:3:61", + "nodeType": "YulLiteral", + "src": "26306:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "26311:1:61", + "nodeType": "YulLiteral", + "src": "26311:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "26302:3:61", + "nodeType": "YulIdentifier", + "src": "26302:3:61" + }, + "nativeSrc": "26302:11:61", + "nodeType": "YulFunctionCall", + "src": "26302:11:61" + }, + { + "kind": "number", + "nativeSrc": "26315:1:61", + "nodeType": "YulLiteral", + "src": "26315:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "26298:3:61", + "nodeType": "YulIdentifier", + "src": "26298:3:61" + }, + "nativeSrc": "26298:19:61", + "nodeType": "YulFunctionCall", + "src": "26298:19:61" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "26292:2:61", + "nodeType": "YulTypedName", + "src": "26292:2:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "26337:9:61", + "nodeType": "YulIdentifier", + "src": "26337:9:61" + }, + { + "kind": "number", + "nativeSrc": "26348:2:61", + "nodeType": "YulLiteral", + "src": "26348:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "26333:3:61", + "nodeType": "YulIdentifier", + "src": "26333:3:61" + }, + "nativeSrc": "26333:18:61", + "nodeType": "YulFunctionCall", + "src": "26333:18:61" + }, + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "26357:6:61", + "nodeType": "YulIdentifier", + "src": "26357:6:61" + }, + { + "name": "_1", + "nativeSrc": "26365:2:61", + "nodeType": "YulIdentifier", + "src": "26365:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "26353:3:61", + "nodeType": "YulIdentifier", + "src": "26353:3:61" + }, + "nativeSrc": "26353:15:61", + "nodeType": "YulFunctionCall", + "src": "26353:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "26326:6:61", + "nodeType": "YulIdentifier", + "src": "26326:6:61" + }, + "nativeSrc": "26326:43:61", + "nodeType": "YulFunctionCall", + "src": "26326:43:61" + }, + "nativeSrc": "26326:43:61", + "nodeType": "YulExpressionStatement", + "src": "26326:43:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "26389:9:61", + "nodeType": "YulIdentifier", + "src": "26389:9:61" + }, + { + "kind": "number", + "nativeSrc": "26400:2:61", + "nodeType": "YulLiteral", + "src": "26400:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "26385:3:61", + "nodeType": "YulIdentifier", + "src": "26385:3:61" + }, + "nativeSrc": "26385:18:61", + "nodeType": "YulFunctionCall", + "src": "26385:18:61" + }, + { + "arguments": [ + { + "name": "value2", + "nativeSrc": "26409:6:61", + "nodeType": "YulIdentifier", + "src": "26409:6:61" + }, + { + "name": "_1", + "nativeSrc": "26417:2:61", + "nodeType": "YulIdentifier", + "src": "26417:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "26405:3:61", + "nodeType": "YulIdentifier", + "src": "26405:3:61" + }, + "nativeSrc": "26405:15:61", + "nodeType": "YulFunctionCall", + "src": "26405:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "26378:6:61", + "nodeType": "YulIdentifier", + "src": "26378:6:61" + }, + "nativeSrc": "26378:43:61", + "nodeType": "YulFunctionCall", + "src": "26378:43:61" + }, + "nativeSrc": "26378:43:61", + "nodeType": "YulExpressionStatement", + "src": "26378:43:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "26441:9:61", + "nodeType": "YulIdentifier", + "src": "26441:9:61" + }, + { + "kind": "number", + "nativeSrc": "26452:2:61", + "nodeType": "YulLiteral", + "src": "26452:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "26437:3:61", + "nodeType": "YulIdentifier", + "src": "26437:3:61" + }, + "nativeSrc": "26437:18:61", + "nodeType": "YulFunctionCall", + "src": "26437:18:61" + }, + { + "arguments": [ + { + "name": "value3", + "nativeSrc": "26461:6:61", + "nodeType": "YulIdentifier", + "src": "26461:6:61" + }, + { + "name": "_1", + "nativeSrc": "26469:2:61", + "nodeType": "YulIdentifier", + "src": "26469:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "26457:3:61", + "nodeType": "YulIdentifier", + "src": "26457:3:61" + }, + "nativeSrc": "26457:15:61", + "nodeType": "YulFunctionCall", + "src": "26457:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "26430:6:61", + "nodeType": "YulIdentifier", + "src": "26430:6:61" + }, + "nativeSrc": "26430:43:61", + "nodeType": "YulFunctionCall", + "src": "26430:43:61" + }, + "nativeSrc": "26430:43:61", + "nodeType": "YulExpressionStatement", + "src": "26430:43:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "26493:9:61", + "nodeType": "YulIdentifier", + "src": "26493:9:61" + }, + { + "kind": "number", + "nativeSrc": "26504:3:61", + "nodeType": "YulLiteral", + "src": "26504:3:61", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "26489:3:61", + "nodeType": "YulIdentifier", + "src": "26489:3:61" + }, + "nativeSrc": "26489:19:61", + "nodeType": "YulFunctionCall", + "src": "26489:19:61" + }, + { + "name": "value4", + "nativeSrc": "26510:6:61", + "nodeType": "YulIdentifier", + "src": "26510:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "26482:6:61", + "nodeType": "YulIdentifier", + "src": "26482:6:61" + }, + "nativeSrc": "26482:35:61", + "nodeType": "YulFunctionCall", + "src": "26482:35:61" + }, + "nativeSrc": "26482:35:61", + "nodeType": "YulExpressionStatement", + "src": "26482:35:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "26537:9:61", + "nodeType": "YulIdentifier", + "src": "26537:9:61" + }, + { + "kind": "number", + "nativeSrc": "26548:3:61", + "nodeType": "YulLiteral", + "src": "26548:3:61", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "26533:3:61", + "nodeType": "YulIdentifier", + "src": "26533:3:61" + }, + "nativeSrc": "26533:19:61", + "nodeType": "YulFunctionCall", + "src": "26533:19:61" + }, + { + "name": "value5", + "nativeSrc": "26554:6:61", + "nodeType": "YulIdentifier", + "src": "26554:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "26526:6:61", + "nodeType": "YulIdentifier", + "src": "26526:6:61" + }, + "nativeSrc": "26526:35:61", + "nodeType": "YulFunctionCall", + "src": "26526:35:61" + }, + "nativeSrc": "26526:35:61", + "nodeType": "YulExpressionStatement", + "src": "26526:35:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "26581:9:61", + "nodeType": "YulIdentifier", + "src": "26581:9:61" + }, + { + "kind": "number", + "nativeSrc": "26592:3:61", + "nodeType": "YulLiteral", + "src": "26592:3:61", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "26577:3:61", + "nodeType": "YulIdentifier", + "src": "26577:3:61" + }, + "nativeSrc": "26577:19:61", + "nodeType": "YulFunctionCall", + "src": "26577:19:61" + }, + { + "name": "value6", + "nativeSrc": "26598:6:61", + "nodeType": "YulIdentifier", + "src": "26598:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "26570:6:61", + "nodeType": "YulIdentifier", + "src": "26570:6:61" + }, + "nativeSrc": "26570:35:61", + "nodeType": "YulFunctionCall", + "src": "26570:35:61" + }, + "nativeSrc": "26570:35:61", + "nodeType": "YulExpressionStatement", + "src": "26570:35:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "26625:9:61", + "nodeType": "YulIdentifier", + "src": "26625:9:61" + }, + { + "kind": "number", + "nativeSrc": "26636:3:61", + "nodeType": "YulLiteral", + "src": "26636:3:61", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "26621:3:61", + "nodeType": "YulIdentifier", + "src": "26621:3:61" + }, + "nativeSrc": "26621:19:61", + "nodeType": "YulFunctionCall", + "src": "26621:19:61" + }, + { + "name": "value7", + "nativeSrc": "26642:6:61", + "nodeType": "YulIdentifier", + "src": "26642:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "26614:6:61", + "nodeType": "YulIdentifier", + "src": "26614:6:61" + }, + "nativeSrc": "26614:35:61", + "nodeType": "YulFunctionCall", + "src": "26614:35:61" + }, + "nativeSrc": "26614:35:61", + "nodeType": "YulExpressionStatement", + "src": "26614:35:61" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_address_t_address_t_address_t_uint256_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_address_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed", + "nativeSrc": "25911:744:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "26121:9:61", + "nodeType": "YulTypedName", + "src": "26121:9:61", + "type": "" + }, + { + "name": "value7", + "nativeSrc": "26132:6:61", + "nodeType": "YulTypedName", + "src": "26132:6:61", + "type": "" + }, + { + "name": "value6", + "nativeSrc": "26140:6:61", + "nodeType": "YulTypedName", + "src": "26140:6:61", + "type": "" + }, + { + "name": "value5", + "nativeSrc": "26148:6:61", + "nodeType": "YulTypedName", + "src": "26148:6:61", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "26156:6:61", + "nodeType": "YulTypedName", + "src": "26156:6:61", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "26164:6:61", + "nodeType": "YulTypedName", + "src": "26164:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "26172:6:61", + "nodeType": "YulTypedName", + "src": "26172:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "26180:6:61", + "nodeType": "YulTypedName", + "src": "26180:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "26188:6:61", + "nodeType": "YulTypedName", + "src": "26188:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "26199:4:61", + "nodeType": "YulTypedName", + "src": "26199:4:61", + "type": "" + } + ], + "src": "25911:744:61" + }, + { + "body": { + "nativeSrc": "26715:325:61", + "nodeType": "YulBlock", + "src": "26715:325:61", + "statements": [ + { + "nativeSrc": "26725:22:61", + "nodeType": "YulAssignment", + "src": "26725:22:61", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "26739:1:61", + "nodeType": "YulLiteral", + "src": "26739:1:61", + "type": "", + "value": "1" + }, + { + "name": "data", + "nativeSrc": "26742:4:61", + "nodeType": "YulIdentifier", + "src": "26742:4:61" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "26735:3:61", + "nodeType": "YulIdentifier", + "src": "26735:3:61" + }, + "nativeSrc": "26735:12:61", + "nodeType": "YulFunctionCall", + "src": "26735:12:61" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "26725:6:61", + "nodeType": "YulIdentifier", + "src": "26725:6:61" + } + ] + }, + { + "nativeSrc": "26756:38:61", + "nodeType": "YulVariableDeclaration", + "src": "26756:38:61", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "26786:4:61", + "nodeType": "YulIdentifier", + "src": "26786:4:61" + }, + { + "kind": "number", + "nativeSrc": "26792:1:61", + "nodeType": "YulLiteral", + "src": "26792:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "26782:3:61", + "nodeType": "YulIdentifier", + "src": "26782:3:61" + }, + "nativeSrc": "26782:12:61", + "nodeType": "YulFunctionCall", + "src": "26782:12:61" + }, + "variables": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "26760:18:61", + "nodeType": "YulTypedName", + "src": "26760:18:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "26833:31:61", + "nodeType": "YulBlock", + "src": "26833:31:61", + "statements": [ + { + "nativeSrc": "26835:27:61", + "nodeType": "YulAssignment", + "src": "26835:27:61", + "value": { + "arguments": [ + { + "name": "length", + "nativeSrc": "26849:6:61", + "nodeType": "YulIdentifier", + "src": "26849:6:61" + }, + { + "kind": "number", + "nativeSrc": "26857:4:61", + "nodeType": "YulLiteral", + "src": "26857:4:61", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "26845:3:61", + "nodeType": "YulIdentifier", + "src": "26845:3:61" + }, + "nativeSrc": "26845:17:61", + "nodeType": "YulFunctionCall", + "src": "26845:17:61" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "26835:6:61", + "nodeType": "YulIdentifier", + "src": "26835:6:61" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "26813:18:61", + "nodeType": "YulIdentifier", + "src": "26813:18:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "26806:6:61", + "nodeType": "YulIdentifier", + "src": "26806:6:61" + }, + "nativeSrc": "26806:26:61", + "nodeType": "YulFunctionCall", + "src": "26806:26:61" + }, + "nativeSrc": "26803:61:61", + "nodeType": "YulIf", + "src": "26803:61:61" + }, + { + "body": { + "nativeSrc": "26923:111:61", + "nodeType": "YulBlock", + "src": "26923:111:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "26944:1:61", + "nodeType": "YulLiteral", + "src": "26944:1:61", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "26951:3:61", + "nodeType": "YulLiteral", + "src": "26951:3:61", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "26956:10:61", + "nodeType": "YulLiteral", + "src": "26956:10:61", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "26947:3:61", + "nodeType": "YulIdentifier", + "src": "26947:3:61" + }, + "nativeSrc": "26947:20:61", + "nodeType": "YulFunctionCall", + "src": "26947:20:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "26937:6:61", + "nodeType": "YulIdentifier", + "src": "26937:6:61" + }, + "nativeSrc": "26937:31:61", + "nodeType": "YulFunctionCall", + "src": "26937:31:61" + }, + "nativeSrc": "26937:31:61", + "nodeType": "YulExpressionStatement", + "src": "26937:31:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "26988:1:61", + "nodeType": "YulLiteral", + "src": "26988:1:61", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "26991:4:61", + "nodeType": "YulLiteral", + "src": "26991:4:61", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "26981:6:61", + "nodeType": "YulIdentifier", + "src": "26981:6:61" + }, + "nativeSrc": "26981:15:61", + "nodeType": "YulFunctionCall", + "src": "26981:15:61" + }, + "nativeSrc": "26981:15:61", + "nodeType": "YulExpressionStatement", + "src": "26981:15:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "27016:1:61", + "nodeType": "YulLiteral", + "src": "27016:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "27019:4:61", + "nodeType": "YulLiteral", + "src": "27019:4:61", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "27009:6:61", + "nodeType": "YulIdentifier", + "src": "27009:6:61" + }, + "nativeSrc": "27009:15:61", + "nodeType": "YulFunctionCall", + "src": "27009:15:61" + }, + "nativeSrc": "27009:15:61", + "nodeType": "YulExpressionStatement", + "src": "27009:15:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "26879:18:61", + "nodeType": "YulIdentifier", + "src": "26879:18:61" + }, + { + "arguments": [ + { + "name": "length", + "nativeSrc": "26902:6:61", + "nodeType": "YulIdentifier", + "src": "26902:6:61" + }, + { + "kind": "number", + "nativeSrc": "26910:2:61", + "nodeType": "YulLiteral", + "src": "26910:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "26899:2:61", + "nodeType": "YulIdentifier", + "src": "26899:2:61" + }, + "nativeSrc": "26899:14:61", + "nodeType": "YulFunctionCall", + "src": "26899:14:61" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "26876:2:61", + "nodeType": "YulIdentifier", + "src": "26876:2:61" + }, + "nativeSrc": "26876:38:61", + "nodeType": "YulFunctionCall", + "src": "26876:38:61" + }, + "nativeSrc": "26873:161:61", + "nodeType": "YulIf", + "src": "26873:161:61" + } + ] + }, + "name": "extract_byte_array_length", + "nativeSrc": "26660:380:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nativeSrc": "26695:4:61", + "nodeType": "YulTypedName", + "src": "26695:4:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nativeSrc": "26704:6:61", + "nodeType": "YulTypedName", + "src": "26704:6:61", + "type": "" + } + ], + "src": "26660:380:61" + }, + { + "body": { + "nativeSrc": "27126:103:61", + "nodeType": "YulBlock", + "src": "27126:103:61", + "statements": [ + { + "body": { + "nativeSrc": "27172:16:61", + "nodeType": "YulBlock", + "src": "27172:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "27181:1:61", + "nodeType": "YulLiteral", + "src": "27181:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "27184:1:61", + "nodeType": "YulLiteral", + "src": "27184:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "27174:6:61", + "nodeType": "YulIdentifier", + "src": "27174:6:61" + }, + "nativeSrc": "27174:12:61", + "nodeType": "YulFunctionCall", + "src": "27174:12:61" + }, + "nativeSrc": "27174:12:61", + "nodeType": "YulExpressionStatement", + "src": "27174:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "27147:7:61", + "nodeType": "YulIdentifier", + "src": "27147:7:61" + }, + { + "name": "headStart", + "nativeSrc": "27156:9:61", + "nodeType": "YulIdentifier", + "src": "27156:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "27143:3:61", + "nodeType": "YulIdentifier", + "src": "27143:3:61" + }, + "nativeSrc": "27143:23:61", + "nodeType": "YulFunctionCall", + "src": "27143:23:61" + }, + { + "kind": "number", + "nativeSrc": "27168:2:61", + "nodeType": "YulLiteral", + "src": "27168:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "27139:3:61", + "nodeType": "YulIdentifier", + "src": "27139:3:61" + }, + "nativeSrc": "27139:32:61", + "nodeType": "YulFunctionCall", + "src": "27139:32:61" + }, + "nativeSrc": "27136:52:61", + "nodeType": "YulIf", + "src": "27136:52:61" + }, + { + "nativeSrc": "27197:26:61", + "nodeType": "YulAssignment", + "src": "27197:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "27213:9:61", + "nodeType": "YulIdentifier", + "src": "27213:9:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "27207:5:61", + "nodeType": "YulIdentifier", + "src": "27207:5:61" + }, + "nativeSrc": "27207:16:61", + "nodeType": "YulFunctionCall", + "src": "27207:16:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "27197:6:61", + "nodeType": "YulIdentifier", + "src": "27197:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256_fromMemory", + "nativeSrc": "27045:184:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "27092:9:61", + "nodeType": "YulTypedName", + "src": "27092:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "27103:7:61", + "nodeType": "YulTypedName", + "src": "27103:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "27115:6:61", + "nodeType": "YulTypedName", + "src": "27115:6:61", + "type": "" + } + ], + "src": "27045:184:61" + }, + { + "body": { + "nativeSrc": "27286:116:61", + "nodeType": "YulBlock", + "src": "27286:116:61", + "statements": [ + { + "nativeSrc": "27296:20:61", + "nodeType": "YulAssignment", + "src": "27296:20:61", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "27311:1:61", + "nodeType": "YulIdentifier", + "src": "27311:1:61" + }, + { + "name": "y", + "nativeSrc": "27314:1:61", + "nodeType": "YulIdentifier", + "src": "27314:1:61" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "27307:3:61", + "nodeType": "YulIdentifier", + "src": "27307:3:61" + }, + "nativeSrc": "27307:9:61", + "nodeType": "YulFunctionCall", + "src": "27307:9:61" + }, + "variableNames": [ + { + "name": "product", + "nativeSrc": "27296:7:61", + "nodeType": "YulIdentifier", + "src": "27296:7:61" + } + ] + }, + { + "body": { + "nativeSrc": "27374:22:61", + "nodeType": "YulBlock", + "src": "27374:22:61", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nativeSrc": "27376:16:61", + "nodeType": "YulIdentifier", + "src": "27376:16:61" + }, + "nativeSrc": "27376:18:61", + "nodeType": "YulFunctionCall", + "src": "27376:18:61" + }, + "nativeSrc": "27376:18:61", + "nodeType": "YulExpressionStatement", + "src": "27376:18:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "x", + "nativeSrc": "27345:1:61", + "nodeType": "YulIdentifier", + "src": "27345:1:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "27338:6:61", + "nodeType": "YulIdentifier", + "src": "27338:6:61" + }, + "nativeSrc": "27338:9:61", + "nodeType": "YulFunctionCall", + "src": "27338:9:61" + }, + { + "arguments": [ + { + "name": "y", + "nativeSrc": "27352:1:61", + "nodeType": "YulIdentifier", + "src": "27352:1:61" + }, + { + "arguments": [ + { + "name": "product", + "nativeSrc": "27359:7:61", + "nodeType": "YulIdentifier", + "src": "27359:7:61" + }, + { + "name": "x", + "nativeSrc": "27368:1:61", + "nodeType": "YulIdentifier", + "src": "27368:1:61" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "27355:3:61", + "nodeType": "YulIdentifier", + "src": "27355:3:61" + }, + "nativeSrc": "27355:15:61", + "nodeType": "YulFunctionCall", + "src": "27355:15:61" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "27349:2:61", + "nodeType": "YulIdentifier", + "src": "27349:2:61" + }, + "nativeSrc": "27349:22:61", + "nodeType": "YulFunctionCall", + "src": "27349:22:61" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "27335:2:61", + "nodeType": "YulIdentifier", + "src": "27335:2:61" + }, + "nativeSrc": "27335:37:61", + "nodeType": "YulFunctionCall", + "src": "27335:37:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "27328:6:61", + "nodeType": "YulIdentifier", + "src": "27328:6:61" + }, + "nativeSrc": "27328:45:61", + "nodeType": "YulFunctionCall", + "src": "27328:45:61" + }, + "nativeSrc": "27325:71:61", + "nodeType": "YulIf", + "src": "27325:71:61" + } + ] + }, + "name": "checked_mul_t_uint256", + "nativeSrc": "27234:168:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nativeSrc": "27265:1:61", + "nodeType": "YulTypedName", + "src": "27265:1:61", + "type": "" + }, + { + "name": "y", + "nativeSrc": "27268:1:61", + "nodeType": "YulTypedName", + "src": "27268:1:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "product", + "nativeSrc": "27274:7:61", + "nodeType": "YulTypedName", + "src": "27274:7:61", + "type": "" + } + ], + "src": "27234:168:61" + }, + { + "body": { + "nativeSrc": "27453:171:61", + "nodeType": "YulBlock", + "src": "27453:171:61", + "statements": [ + { + "body": { + "nativeSrc": "27484:111:61", + "nodeType": "YulBlock", + "src": "27484:111:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "27505:1:61", + "nodeType": "YulLiteral", + "src": "27505:1:61", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "27512:3:61", + "nodeType": "YulLiteral", + "src": "27512:3:61", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "27517:10:61", + "nodeType": "YulLiteral", + "src": "27517:10:61", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "27508:3:61", + "nodeType": "YulIdentifier", + "src": "27508:3:61" + }, + "nativeSrc": "27508:20:61", + "nodeType": "YulFunctionCall", + "src": "27508:20:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "27498:6:61", + "nodeType": "YulIdentifier", + "src": "27498:6:61" + }, + "nativeSrc": "27498:31:61", + "nodeType": "YulFunctionCall", + "src": "27498:31:61" + }, + "nativeSrc": "27498:31:61", + "nodeType": "YulExpressionStatement", + "src": "27498:31:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "27549:1:61", + "nodeType": "YulLiteral", + "src": "27549:1:61", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "27552:4:61", + "nodeType": "YulLiteral", + "src": "27552:4:61", + "type": "", + "value": "0x12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "27542:6:61", + "nodeType": "YulIdentifier", + "src": "27542:6:61" + }, + "nativeSrc": "27542:15:61", + "nodeType": "YulFunctionCall", + "src": "27542:15:61" + }, + "nativeSrc": "27542:15:61", + "nodeType": "YulExpressionStatement", + "src": "27542:15:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "27577:1:61", + "nodeType": "YulLiteral", + "src": "27577:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "27580:4:61", + "nodeType": "YulLiteral", + "src": "27580:4:61", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "27570:6:61", + "nodeType": "YulIdentifier", + "src": "27570:6:61" + }, + "nativeSrc": "27570:15:61", + "nodeType": "YulFunctionCall", + "src": "27570:15:61" + }, + "nativeSrc": "27570:15:61", + "nodeType": "YulExpressionStatement", + "src": "27570:15:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "y", + "nativeSrc": "27473:1:61", + "nodeType": "YulIdentifier", + "src": "27473:1:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "27466:6:61", + "nodeType": "YulIdentifier", + "src": "27466:6:61" + }, + "nativeSrc": "27466:9:61", + "nodeType": "YulFunctionCall", + "src": "27466:9:61" + }, + "nativeSrc": "27463:132:61", + "nodeType": "YulIf", + "src": "27463:132:61" + }, + { + "nativeSrc": "27604:14:61", + "nodeType": "YulAssignment", + "src": "27604:14:61", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "27613:1:61", + "nodeType": "YulIdentifier", + "src": "27613:1:61" + }, + { + "name": "y", + "nativeSrc": "27616:1:61", + "nodeType": "YulIdentifier", + "src": "27616:1:61" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "27609:3:61", + "nodeType": "YulIdentifier", + "src": "27609:3:61" + }, + "nativeSrc": "27609:9:61", + "nodeType": "YulFunctionCall", + "src": "27609:9:61" + }, + "variableNames": [ + { + "name": "r", + "nativeSrc": "27604:1:61", + "nodeType": "YulIdentifier", + "src": "27604:1:61" + } + ] + } + ] + }, + "name": "checked_div_t_uint256", + "nativeSrc": "27407:217:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nativeSrc": "27438:1:61", + "nodeType": "YulTypedName", + "src": "27438:1:61", + "type": "" + }, + { + "name": "y", + "nativeSrc": "27441:1:61", + "nodeType": "YulTypedName", + "src": "27441:1:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "r", + "nativeSrc": "27447:1:61", + "nodeType": "YulTypedName", + "src": "27447:1:61", + "type": "" + } + ], + "src": "27407:217:61" + }, + { + "body": { + "nativeSrc": "27677:77:61", + "nodeType": "YulBlock", + "src": "27677:77:61", + "statements": [ + { + "nativeSrc": "27687:16:61", + "nodeType": "YulAssignment", + "src": "27687:16:61", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "27698:1:61", + "nodeType": "YulIdentifier", + "src": "27698:1:61" + }, + { + "name": "y", + "nativeSrc": "27701:1:61", + "nodeType": "YulIdentifier", + "src": "27701:1:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "27694:3:61", + "nodeType": "YulIdentifier", + "src": "27694:3:61" + }, + "nativeSrc": "27694:9:61", + "nodeType": "YulFunctionCall", + "src": "27694:9:61" + }, + "variableNames": [ + { + "name": "sum", + "nativeSrc": "27687:3:61", + "nodeType": "YulIdentifier", + "src": "27687:3:61" + } + ] + }, + { + "body": { + "nativeSrc": "27726:22:61", + "nodeType": "YulBlock", + "src": "27726:22:61", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nativeSrc": "27728:16:61", + "nodeType": "YulIdentifier", + "src": "27728:16:61" + }, + "nativeSrc": "27728:18:61", + "nodeType": "YulFunctionCall", + "src": "27728:18:61" + }, + "nativeSrc": "27728:18:61", + "nodeType": "YulExpressionStatement", + "src": "27728:18:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nativeSrc": "27718:1:61", + "nodeType": "YulIdentifier", + "src": "27718:1:61" + }, + { + "name": "sum", + "nativeSrc": "27721:3:61", + "nodeType": "YulIdentifier", + "src": "27721:3:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "27715:2:61", + "nodeType": "YulIdentifier", + "src": "27715:2:61" + }, + "nativeSrc": "27715:10:61", + "nodeType": "YulFunctionCall", + "src": "27715:10:61" + }, + "nativeSrc": "27712:36:61", + "nodeType": "YulIf", + "src": "27712:36:61" + } + ] + }, + "name": "checked_add_t_uint256", + "nativeSrc": "27629:125:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nativeSrc": "27660:1:61", + "nodeType": "YulTypedName", + "src": "27660:1:61", + "type": "" + }, + { + "name": "y", + "nativeSrc": "27663:1:61", + "nodeType": "YulTypedName", + "src": "27663:1:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nativeSrc": "27669:3:61", + "nodeType": "YulTypedName", + "src": "27669:3:61", + "type": "" + } + ], + "src": "27629:125:61" + }, + { + "body": { + "nativeSrc": "27840:170:61", + "nodeType": "YulBlock", + "src": "27840:170:61", + "statements": [ + { + "body": { + "nativeSrc": "27886:16:61", + "nodeType": "YulBlock", + "src": "27886:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "27895:1:61", + "nodeType": "YulLiteral", + "src": "27895:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "27898:1:61", + "nodeType": "YulLiteral", + "src": "27898:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "27888:6:61", + "nodeType": "YulIdentifier", + "src": "27888:6:61" + }, + "nativeSrc": "27888:12:61", + "nodeType": "YulFunctionCall", + "src": "27888:12:61" + }, + "nativeSrc": "27888:12:61", + "nodeType": "YulExpressionStatement", + "src": "27888:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "27861:7:61", + "nodeType": "YulIdentifier", + "src": "27861:7:61" + }, + { + "name": "headStart", + "nativeSrc": "27870:9:61", + "nodeType": "YulIdentifier", + "src": "27870:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "27857:3:61", + "nodeType": "YulIdentifier", + "src": "27857:3:61" + }, + "nativeSrc": "27857:23:61", + "nodeType": "YulFunctionCall", + "src": "27857:23:61" + }, + { + "kind": "number", + "nativeSrc": "27882:2:61", + "nodeType": "YulLiteral", + "src": "27882:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "27853:3:61", + "nodeType": "YulIdentifier", + "src": "27853:3:61" + }, + "nativeSrc": "27853:32:61", + "nodeType": "YulFunctionCall", + "src": "27853:32:61" + }, + "nativeSrc": "27850:52:61", + "nodeType": "YulIf", + "src": "27850:52:61" + }, + { + "nativeSrc": "27911:29:61", + "nodeType": "YulVariableDeclaration", + "src": "27911:29:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "27930:9:61", + "nodeType": "YulIdentifier", + "src": "27930:9:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "27924:5:61", + "nodeType": "YulIdentifier", + "src": "27924:5:61" + }, + "nativeSrc": "27924:16:61", + "nodeType": "YulFunctionCall", + "src": "27924:16:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "27915:5:61", + "nodeType": "YulTypedName", + "src": "27915:5:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "27974:5:61", + "nodeType": "YulIdentifier", + "src": "27974:5:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "27949:24:61", + "nodeType": "YulIdentifier", + "src": "27949:24:61" + }, + "nativeSrc": "27949:31:61", + "nodeType": "YulFunctionCall", + "src": "27949:31:61" + }, + "nativeSrc": "27949:31:61", + "nodeType": "YulExpressionStatement", + "src": "27949:31:61" + }, + { + "nativeSrc": "27989:15:61", + "nodeType": "YulAssignment", + "src": "27989:15:61", + "value": { + "name": "value", + "nativeSrc": "27999:5:61", + "nodeType": "YulIdentifier", + "src": "27999:5:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "27989:6:61", + "nodeType": "YulIdentifier", + "src": "27989:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address_fromMemory", + "nativeSrc": "27759:251:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "27806:9:61", + "nodeType": "YulTypedName", + "src": "27806:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "27817:7:61", + "nodeType": "YulTypedName", + "src": "27817:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "27829:6:61", + "nodeType": "YulTypedName", + "src": "27829:6:61", + "type": "" + } + ], + "src": "27759:251:61" + }, + { + "body": { + "nativeSrc": "28256:350:61", + "nodeType": "YulBlock", + "src": "28256:350:61", + "statements": [ + { + "nativeSrc": "28266:27:61", + "nodeType": "YulAssignment", + "src": "28266:27:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "28278:9:61", + "nodeType": "YulIdentifier", + "src": "28278:9:61" + }, + { + "kind": "number", + "nativeSrc": "28289:3:61", + "nodeType": "YulLiteral", + "src": "28289:3:61", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "28274:3:61", + "nodeType": "YulIdentifier", + "src": "28274:3:61" + }, + "nativeSrc": "28274:19:61", + "nodeType": "YulFunctionCall", + "src": "28274:19:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "28266:4:61", + "nodeType": "YulIdentifier", + "src": "28266:4:61" + } + ] + }, + { + "nativeSrc": "28302:29:61", + "nodeType": "YulVariableDeclaration", + "src": "28302:29:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "28320:3:61", + "nodeType": "YulLiteral", + "src": "28320:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "28325:1:61", + "nodeType": "YulLiteral", + "src": "28325:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "28316:3:61", + "nodeType": "YulIdentifier", + "src": "28316:3:61" + }, + "nativeSrc": "28316:11:61", + "nodeType": "YulFunctionCall", + "src": "28316:11:61" + }, + { + "kind": "number", + "nativeSrc": "28329:1:61", + "nodeType": "YulLiteral", + "src": "28329:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "28312:3:61", + "nodeType": "YulIdentifier", + "src": "28312:3:61" + }, + "nativeSrc": "28312:19:61", + "nodeType": "YulFunctionCall", + "src": "28312:19:61" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "28306:2:61", + "nodeType": "YulTypedName", + "src": "28306:2:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "28347:9:61", + "nodeType": "YulIdentifier", + "src": "28347:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "28362:6:61", + "nodeType": "YulIdentifier", + "src": "28362:6:61" + }, + { + "name": "_1", + "nativeSrc": "28370:2:61", + "nodeType": "YulIdentifier", + "src": "28370:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "28358:3:61", + "nodeType": "YulIdentifier", + "src": "28358:3:61" + }, + "nativeSrc": "28358:15:61", + "nodeType": "YulFunctionCall", + "src": "28358:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "28340:6:61", + "nodeType": "YulIdentifier", + "src": "28340:6:61" + }, + "nativeSrc": "28340:34:61", + "nodeType": "YulFunctionCall", + "src": "28340:34:61" + }, + "nativeSrc": "28340:34:61", + "nodeType": "YulExpressionStatement", + "src": "28340:34:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "28394:9:61", + "nodeType": "YulIdentifier", + "src": "28394:9:61" + }, + { + "kind": "number", + "nativeSrc": "28405:2:61", + "nodeType": "YulLiteral", + "src": "28405:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "28390:3:61", + "nodeType": "YulIdentifier", + "src": "28390:3:61" + }, + "nativeSrc": "28390:18:61", + "nodeType": "YulFunctionCall", + "src": "28390:18:61" + }, + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "28414:6:61", + "nodeType": "YulIdentifier", + "src": "28414:6:61" + }, + { + "name": "_1", + "nativeSrc": "28422:2:61", + "nodeType": "YulIdentifier", + "src": "28422:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "28410:3:61", + "nodeType": "YulIdentifier", + "src": "28410:3:61" + }, + "nativeSrc": "28410:15:61", + "nodeType": "YulFunctionCall", + "src": "28410:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "28383:6:61", + "nodeType": "YulIdentifier", + "src": "28383:6:61" + }, + "nativeSrc": "28383:43:61", + "nodeType": "YulFunctionCall", + "src": "28383:43:61" + }, + "nativeSrc": "28383:43:61", + "nodeType": "YulExpressionStatement", + "src": "28383:43:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "28446:9:61", + "nodeType": "YulIdentifier", + "src": "28446:9:61" + }, + { + "kind": "number", + "nativeSrc": "28457:2:61", + "nodeType": "YulLiteral", + "src": "28457:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "28442:3:61", + "nodeType": "YulIdentifier", + "src": "28442:3:61" + }, + "nativeSrc": "28442:18:61", + "nodeType": "YulFunctionCall", + "src": "28442:18:61" + }, + { + "name": "value2", + "nativeSrc": "28462:6:61", + "nodeType": "YulIdentifier", + "src": "28462:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "28435:6:61", + "nodeType": "YulIdentifier", + "src": "28435:6:61" + }, + "nativeSrc": "28435:34:61", + "nodeType": "YulFunctionCall", + "src": "28435:34:61" + }, + "nativeSrc": "28435:34:61", + "nodeType": "YulExpressionStatement", + "src": "28435:34:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "28489:9:61", + "nodeType": "YulIdentifier", + "src": "28489:9:61" + }, + { + "kind": "number", + "nativeSrc": "28500:2:61", + "nodeType": "YulLiteral", + "src": "28500:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "28485:3:61", + "nodeType": "YulIdentifier", + "src": "28485:3:61" + }, + "nativeSrc": "28485:18:61", + "nodeType": "YulFunctionCall", + "src": "28485:18:61" + }, + { + "name": "value3", + "nativeSrc": "28505:6:61", + "nodeType": "YulIdentifier", + "src": "28505:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "28478:6:61", + "nodeType": "YulIdentifier", + "src": "28478:6:61" + }, + "nativeSrc": "28478:34:61", + "nodeType": "YulFunctionCall", + "src": "28478:34:61" + }, + "nativeSrc": "28478:34:61", + "nodeType": "YulExpressionStatement", + "src": "28478:34:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "28532:9:61", + "nodeType": "YulIdentifier", + "src": "28532:9:61" + }, + { + "kind": "number", + "nativeSrc": "28543:3:61", + "nodeType": "YulLiteral", + "src": "28543:3:61", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "28528:3:61", + "nodeType": "YulIdentifier", + "src": "28528:3:61" + }, + "nativeSrc": "28528:19:61", + "nodeType": "YulFunctionCall", + "src": "28528:19:61" + }, + { + "name": "value4", + "nativeSrc": "28549:6:61", + "nodeType": "YulIdentifier", + "src": "28549:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "28521:6:61", + "nodeType": "YulIdentifier", + "src": "28521:6:61" + }, + "nativeSrc": "28521:35:61", + "nodeType": "YulFunctionCall", + "src": "28521:35:61" + }, + "nativeSrc": "28521:35:61", + "nodeType": "YulExpressionStatement", + "src": "28521:35:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "28576:9:61", + "nodeType": "YulIdentifier", + "src": "28576:9:61" + }, + { + "kind": "number", + "nativeSrc": "28587:3:61", + "nodeType": "YulLiteral", + "src": "28587:3:61", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "28572:3:61", + "nodeType": "YulIdentifier", + "src": "28572:3:61" + }, + "nativeSrc": "28572:19:61", + "nodeType": "YulFunctionCall", + "src": "28572:19:61" + }, + { + "name": "value5", + "nativeSrc": "28593:6:61", + "nodeType": "YulIdentifier", + "src": "28593:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "28565:6:61", + "nodeType": "YulIdentifier", + "src": "28565:6:61" + }, + "nativeSrc": "28565:35:61", + "nodeType": "YulFunctionCall", + "src": "28565:35:61" + }, + "nativeSrc": "28565:35:61", + "nodeType": "YulExpressionStatement", + "src": "28565:35:61" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_uint256_t_uint256__to_t_address_t_address_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed", + "nativeSrc": "28015:591:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "28185:9:61", + "nodeType": "YulTypedName", + "src": "28185:9:61", + "type": "" + }, + { + "name": "value5", + "nativeSrc": "28196:6:61", + "nodeType": "YulTypedName", + "src": "28196:6:61", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "28204:6:61", + "nodeType": "YulTypedName", + "src": "28204:6:61", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "28212:6:61", + "nodeType": "YulTypedName", + "src": "28212:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "28220:6:61", + "nodeType": "YulTypedName", + "src": "28220:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "28228:6:61", + "nodeType": "YulTypedName", + "src": "28228:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "28236:6:61", + "nodeType": "YulTypedName", + "src": "28236:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "28247:4:61", + "nodeType": "YulTypedName", + "src": "28247:4:61", + "type": "" + } + ], + "src": "28015:591:61" + }, + { + "body": { + "nativeSrc": "28828:319:61", + "nodeType": "YulBlock", + "src": "28828:319:61", + "statements": [ + { + "nativeSrc": "28838:27:61", + "nodeType": "YulAssignment", + "src": "28838:27:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "28850:9:61", + "nodeType": "YulIdentifier", + "src": "28850:9:61" + }, + { + "kind": "number", + "nativeSrc": "28861:3:61", + "nodeType": "YulLiteral", + "src": "28861:3:61", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "28846:3:61", + "nodeType": "YulIdentifier", + "src": "28846:3:61" + }, + "nativeSrc": "28846:19:61", + "nodeType": "YulFunctionCall", + "src": "28846:19:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "28838:4:61", + "nodeType": "YulIdentifier", + "src": "28838:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "28881:9:61", + "nodeType": "YulIdentifier", + "src": "28881:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "28896:6:61", + "nodeType": "YulIdentifier", + "src": "28896:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "28912:3:61", + "nodeType": "YulLiteral", + "src": "28912:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "28917:1:61", + "nodeType": "YulLiteral", + "src": "28917:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "28908:3:61", + "nodeType": "YulIdentifier", + "src": "28908:3:61" + }, + "nativeSrc": "28908:11:61", + "nodeType": "YulFunctionCall", + "src": "28908:11:61" + }, + { + "kind": "number", + "nativeSrc": "28921:1:61", + "nodeType": "YulLiteral", + "src": "28921:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "28904:3:61", + "nodeType": "YulIdentifier", + "src": "28904:3:61" + }, + "nativeSrc": "28904:19:61", + "nodeType": "YulFunctionCall", + "src": "28904:19:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "28892:3:61", + "nodeType": "YulIdentifier", + "src": "28892:3:61" + }, + "nativeSrc": "28892:32:61", + "nodeType": "YulFunctionCall", + "src": "28892:32:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "28874:6:61", + "nodeType": "YulIdentifier", + "src": "28874:6:61" + }, + "nativeSrc": "28874:51:61", + "nodeType": "YulFunctionCall", + "src": "28874:51:61" + }, + "nativeSrc": "28874:51:61", + "nodeType": "YulExpressionStatement", + "src": "28874:51:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "28945:9:61", + "nodeType": "YulIdentifier", + "src": "28945:9:61" + }, + { + "kind": "number", + "nativeSrc": "28956:2:61", + "nodeType": "YulLiteral", + "src": "28956:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "28941:3:61", + "nodeType": "YulIdentifier", + "src": "28941:3:61" + }, + "nativeSrc": "28941:18:61", + "nodeType": "YulFunctionCall", + "src": "28941:18:61" + }, + { + "name": "value1", + "nativeSrc": "28961:6:61", + "nodeType": "YulIdentifier", + "src": "28961:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "28934:6:61", + "nodeType": "YulIdentifier", + "src": "28934:6:61" + }, + "nativeSrc": "28934:34:61", + "nodeType": "YulFunctionCall", + "src": "28934:34:61" + }, + "nativeSrc": "28934:34:61", + "nodeType": "YulExpressionStatement", + "src": "28934:34:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "28988:9:61", + "nodeType": "YulIdentifier", + "src": "28988:9:61" + }, + { + "kind": "number", + "nativeSrc": "28999:2:61", + "nodeType": "YulLiteral", + "src": "28999:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "28984:3:61", + "nodeType": "YulIdentifier", + "src": "28984:3:61" + }, + "nativeSrc": "28984:18:61", + "nodeType": "YulFunctionCall", + "src": "28984:18:61" + }, + { + "name": "value2", + "nativeSrc": "29004:6:61", + "nodeType": "YulIdentifier", + "src": "29004:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "28977:6:61", + "nodeType": "YulIdentifier", + "src": "28977:6:61" + }, + "nativeSrc": "28977:34:61", + "nodeType": "YulFunctionCall", + "src": "28977:34:61" + }, + "nativeSrc": "28977:34:61", + "nodeType": "YulExpressionStatement", + "src": "28977:34:61" + }, + { + "nativeSrc": "29020:16:61", + "nodeType": "YulVariableDeclaration", + "src": "29020:16:61", + "value": { + "kind": "number", + "nativeSrc": "29030:6:61", + "nodeType": "YulLiteral", + "src": "29030:6:61", + "type": "", + "value": "0xffff" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "29024:2:61", + "nodeType": "YulTypedName", + "src": "29024:2:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "29056:9:61", + "nodeType": "YulIdentifier", + "src": "29056:9:61" + }, + { + "kind": "number", + "nativeSrc": "29067:2:61", + "nodeType": "YulLiteral", + "src": "29067:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "29052:3:61", + "nodeType": "YulIdentifier", + "src": "29052:3:61" + }, + "nativeSrc": "29052:18:61", + "nodeType": "YulFunctionCall", + "src": "29052:18:61" + }, + { + "arguments": [ + { + "name": "value3", + "nativeSrc": "29076:6:61", + "nodeType": "YulIdentifier", + "src": "29076:6:61" + }, + { + "name": "_1", + "nativeSrc": "29084:2:61", + "nodeType": "YulIdentifier", + "src": "29084:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "29072:3:61", + "nodeType": "YulIdentifier", + "src": "29072:3:61" + }, + "nativeSrc": "29072:15:61", + "nodeType": "YulFunctionCall", + "src": "29072:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "29045:6:61", + "nodeType": "YulIdentifier", + "src": "29045:6:61" + }, + "nativeSrc": "29045:43:61", + "nodeType": "YulFunctionCall", + "src": "29045:43:61" + }, + "nativeSrc": "29045:43:61", + "nodeType": "YulExpressionStatement", + "src": "29045:43:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "29108:9:61", + "nodeType": "YulIdentifier", + "src": "29108:9:61" + }, + { + "kind": "number", + "nativeSrc": "29119:3:61", + "nodeType": "YulLiteral", + "src": "29119:3:61", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "29104:3:61", + "nodeType": "YulIdentifier", + "src": "29104:3:61" + }, + "nativeSrc": "29104:19:61", + "nodeType": "YulFunctionCall", + "src": "29104:19:61" + }, + { + "arguments": [ + { + "name": "value4", + "nativeSrc": "29129:6:61", + "nodeType": "YulIdentifier", + "src": "29129:6:61" + }, + { + "name": "_1", + "nativeSrc": "29137:2:61", + "nodeType": "YulIdentifier", + "src": "29137:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "29125:3:61", + "nodeType": "YulIdentifier", + "src": "29125:3:61" + }, + "nativeSrc": "29125:15:61", + "nodeType": "YulFunctionCall", + "src": "29125:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "29097:6:61", + "nodeType": "YulIdentifier", + "src": "29097:6:61" + }, + "nativeSrc": "29097:44:61", + "nodeType": "YulFunctionCall", + "src": "29097:44:61" + }, + "nativeSrc": "29097:44:61", + "nodeType": "YulExpressionStatement", + "src": "29097:44:61" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint256_t_uint256_t_uint16_t_uint16__to_t_address_t_uint256_t_uint256_t_uint16_t_uint16__fromStack_library_reversed", + "nativeSrc": "28611:536:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "28765:9:61", + "nodeType": "YulTypedName", + "src": "28765:9:61", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "28776:6:61", + "nodeType": "YulTypedName", + "src": "28776:6:61", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "28784:6:61", + "nodeType": "YulTypedName", + "src": "28784:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "28792:6:61", + "nodeType": "YulTypedName", + "src": "28792:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "28800:6:61", + "nodeType": "YulTypedName", + "src": "28800:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "28808:6:61", + "nodeType": "YulTypedName", + "src": "28808:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "28819:4:61", + "nodeType": "YulTypedName", + "src": "28819:4:61", + "type": "" + } + ], + "src": "28611:536:61" + }, + { + "body": { + "nativeSrc": "29400:144:61", + "nodeType": "YulBlock", + "src": "29400:144:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "29417:3:61", + "nodeType": "YulIdentifier", + "src": "29417:3:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "29426:3:61", + "nodeType": "YulLiteral", + "src": "29426:3:61", + "type": "", + "value": "240" + }, + { + "kind": "number", + "nativeSrc": "29431:4:61", + "nodeType": "YulLiteral", + "src": "29431:4:61", + "type": "", + "value": "6401" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "29422:3:61", + "nodeType": "YulIdentifier", + "src": "29422:3:61" + }, + "nativeSrc": "29422:14:61", + "nodeType": "YulFunctionCall", + "src": "29422:14:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "29410:6:61", + "nodeType": "YulIdentifier", + "src": "29410:6:61" + }, + "nativeSrc": "29410:27:61", + "nodeType": "YulFunctionCall", + "src": "29410:27:61" + }, + "nativeSrc": "29410:27:61", + "nodeType": "YulExpressionStatement", + "src": "29410:27:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nativeSrc": "29457:3:61", + "nodeType": "YulIdentifier", + "src": "29457:3:61" + }, + { + "kind": "number", + "nativeSrc": "29462:1:61", + "nodeType": "YulLiteral", + "src": "29462:1:61", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "29453:3:61", + "nodeType": "YulIdentifier", + "src": "29453:3:61" + }, + "nativeSrc": "29453:11:61", + "nodeType": "YulFunctionCall", + "src": "29453:11:61" + }, + { + "name": "value0", + "nativeSrc": "29466:6:61", + "nodeType": "YulIdentifier", + "src": "29466:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "29446:6:61", + "nodeType": "YulIdentifier", + "src": "29446:6:61" + }, + "nativeSrc": "29446:27:61", + "nodeType": "YulFunctionCall", + "src": "29446:27:61" + }, + "nativeSrc": "29446:27:61", + "nodeType": "YulExpressionStatement", + "src": "29446:27:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nativeSrc": "29493:3:61", + "nodeType": "YulIdentifier", + "src": "29493:3:61" + }, + { + "kind": "number", + "nativeSrc": "29498:2:61", + "nodeType": "YulLiteral", + "src": "29498:2:61", + "type": "", + "value": "34" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "29489:3:61", + "nodeType": "YulIdentifier", + "src": "29489:3:61" + }, + "nativeSrc": "29489:12:61", + "nodeType": "YulFunctionCall", + "src": "29489:12:61" + }, + { + "name": "value1", + "nativeSrc": "29503:6:61", + "nodeType": "YulIdentifier", + "src": "29503:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "29482:6:61", + "nodeType": "YulIdentifier", + "src": "29482:6:61" + }, + "nativeSrc": "29482:28:61", + "nodeType": "YulFunctionCall", + "src": "29482:28:61" + }, + "nativeSrc": "29482:28:61", + "nodeType": "YulExpressionStatement", + "src": "29482:28:61" + }, + { + "nativeSrc": "29519:19:61", + "nodeType": "YulAssignment", + "src": "29519:19:61", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "29530:3:61", + "nodeType": "YulIdentifier", + "src": "29530:3:61" + }, + { + "kind": "number", + "nativeSrc": "29535:2:61", + "nodeType": "YulLiteral", + "src": "29535:2:61", + "type": "", + "value": "66" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "29526:3:61", + "nodeType": "YulIdentifier", + "src": "29526:3:61" + }, + "nativeSrc": "29526:12:61", + "nodeType": "YulFunctionCall", + "src": "29526:12:61" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "29519:3:61", + "nodeType": "YulIdentifier", + "src": "29519:3:61" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed", + "nativeSrc": "29152:392:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "29368:3:61", + "nodeType": "YulTypedName", + "src": "29368:3:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "29373:6:61", + "nodeType": "YulTypedName", + "src": "29373:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "29381:6:61", + "nodeType": "YulTypedName", + "src": "29381:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "29392:3:61", + "nodeType": "YulTypedName", + "src": "29392:3:61", + "type": "" + } + ], + "src": "29152:392:61" + }, + { + "body": { + "nativeSrc": "29757:262:61", + "nodeType": "YulBlock", + "src": "29757:262:61", + "statements": [ + { + "nativeSrc": "29767:27:61", + "nodeType": "YulAssignment", + "src": "29767:27:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "29779:9:61", + "nodeType": "YulIdentifier", + "src": "29779:9:61" + }, + { + "kind": "number", + "nativeSrc": "29790:3:61", + "nodeType": "YulLiteral", + "src": "29790:3:61", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "29775:3:61", + "nodeType": "YulIdentifier", + "src": "29775:3:61" + }, + "nativeSrc": "29775:19:61", + "nodeType": "YulFunctionCall", + "src": "29775:19:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "29767:4:61", + "nodeType": "YulIdentifier", + "src": "29767:4:61" + } + ] + }, + { + "nativeSrc": "29803:29:61", + "nodeType": "YulVariableDeclaration", + "src": "29803:29:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "29821:3:61", + "nodeType": "YulLiteral", + "src": "29821:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "29826:1:61", + "nodeType": "YulLiteral", + "src": "29826:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "29817:3:61", + "nodeType": "YulIdentifier", + "src": "29817:3:61" + }, + "nativeSrc": "29817:11:61", + "nodeType": "YulFunctionCall", + "src": "29817:11:61" + }, + { + "kind": "number", + "nativeSrc": "29830:1:61", + "nodeType": "YulLiteral", + "src": "29830:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "29813:3:61", + "nodeType": "YulIdentifier", + "src": "29813:3:61" + }, + "nativeSrc": "29813:19:61", + "nodeType": "YulFunctionCall", + "src": "29813:19:61" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "29807:2:61", + "nodeType": "YulTypedName", + "src": "29807:2:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "29848:9:61", + "nodeType": "YulIdentifier", + "src": "29848:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "29863:6:61", + "nodeType": "YulIdentifier", + "src": "29863:6:61" + }, + { + "name": "_1", + "nativeSrc": "29871:2:61", + "nodeType": "YulIdentifier", + "src": "29871:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "29859:3:61", + "nodeType": "YulIdentifier", + "src": "29859:3:61" + }, + "nativeSrc": "29859:15:61", + "nodeType": "YulFunctionCall", + "src": "29859:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "29841:6:61", + "nodeType": "YulIdentifier", + "src": "29841:6:61" + }, + "nativeSrc": "29841:34:61", + "nodeType": "YulFunctionCall", + "src": "29841:34:61" + }, + "nativeSrc": "29841:34:61", + "nodeType": "YulExpressionStatement", + "src": "29841:34:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "29895:9:61", + "nodeType": "YulIdentifier", + "src": "29895:9:61" + }, + { + "kind": "number", + "nativeSrc": "29906:2:61", + "nodeType": "YulLiteral", + "src": "29906:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "29891:3:61", + "nodeType": "YulIdentifier", + "src": "29891:3:61" + }, + "nativeSrc": "29891:18:61", + "nodeType": "YulFunctionCall", + "src": "29891:18:61" + }, + { + "name": "value1", + "nativeSrc": "29911:6:61", + "nodeType": "YulIdentifier", + "src": "29911:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "29884:6:61", + "nodeType": "YulIdentifier", + "src": "29884:6:61" + }, + "nativeSrc": "29884:34:61", + "nodeType": "YulFunctionCall", + "src": "29884:34:61" + }, + "nativeSrc": "29884:34:61", + "nodeType": "YulExpressionStatement", + "src": "29884:34:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "29938:9:61", + "nodeType": "YulIdentifier", + "src": "29938:9:61" + }, + { + "kind": "number", + "nativeSrc": "29949:2:61", + "nodeType": "YulLiteral", + "src": "29949:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "29934:3:61", + "nodeType": "YulIdentifier", + "src": "29934:3:61" + }, + "nativeSrc": "29934:18:61", + "nodeType": "YulFunctionCall", + "src": "29934:18:61" + }, + { + "name": "value2", + "nativeSrc": "29954:6:61", + "nodeType": "YulIdentifier", + "src": "29954:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "29927:6:61", + "nodeType": "YulIdentifier", + "src": "29927:6:61" + }, + "nativeSrc": "29927:34:61", + "nodeType": "YulFunctionCall", + "src": "29927:34:61" + }, + "nativeSrc": "29927:34:61", + "nodeType": "YulExpressionStatement", + "src": "29927:34:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "29981:9:61", + "nodeType": "YulIdentifier", + "src": "29981:9:61" + }, + { + "kind": "number", + "nativeSrc": "29992:2:61", + "nodeType": "YulLiteral", + "src": "29992:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "29977:3:61", + "nodeType": "YulIdentifier", + "src": "29977:3:61" + }, + "nativeSrc": "29977:18:61", + "nodeType": "YulFunctionCall", + "src": "29977:18:61" + }, + { + "arguments": [ + { + "name": "value3", + "nativeSrc": "30001:6:61", + "nodeType": "YulIdentifier", + "src": "30001:6:61" + }, + { + "name": "_1", + "nativeSrc": "30009:2:61", + "nodeType": "YulIdentifier", + "src": "30009:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "29997:3:61", + "nodeType": "YulIdentifier", + "src": "29997:3:61" + }, + "nativeSrc": "29997:15:61", + "nodeType": "YulFunctionCall", + "src": "29997:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "29970:6:61", + "nodeType": "YulIdentifier", + "src": "29970:6:61" + }, + "nativeSrc": "29970:43:61", + "nodeType": "YulFunctionCall", + "src": "29970:43:61" + }, + "nativeSrc": "29970:43:61", + "nodeType": "YulExpressionStatement", + "src": "29970:43:61" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint256_t_uint256_t_contract$_IERC20_$4513__to_t_address_t_uint256_t_uint256_t_address__fromStack_library_reversed", + "nativeSrc": "29549:470:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "29702:9:61", + "nodeType": "YulTypedName", + "src": "29702:9:61", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "29713:6:61", + "nodeType": "YulTypedName", + "src": "29713:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "29721:6:61", + "nodeType": "YulTypedName", + "src": "29721:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "29729:6:61", + "nodeType": "YulTypedName", + "src": "29729:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "29737:6:61", + "nodeType": "YulTypedName", + "src": "29737:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "29748:4:61", + "nodeType": "YulTypedName", + "src": "29748:4:61", + "type": "" + } + ], + "src": "29549:470:61" + }, + { + "body": { + "nativeSrc": "30358:507:61", + "nodeType": "YulBlock", + "src": "30358:507:61", + "statements": [ + { + "nativeSrc": "30368:13:61", + "nodeType": "YulVariableDeclaration", + "src": "30368:13:61", + "value": { + "kind": "number", + "nativeSrc": "30378:3:61", + "nodeType": "YulLiteral", + "src": "30378:3:61", + "type": "", + "value": "256" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "30372:2:61", + "nodeType": "YulTypedName", + "src": "30372:2:61", + "type": "" + } + ] + }, + { + "nativeSrc": "30390:29:61", + "nodeType": "YulVariableDeclaration", + "src": "30390:29:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "30408:3:61", + "nodeType": "YulLiteral", + "src": "30408:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "30413:1:61", + "nodeType": "YulLiteral", + "src": "30413:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "30404:3:61", + "nodeType": "YulIdentifier", + "src": "30404:3:61" + }, + "nativeSrc": "30404:11:61", + "nodeType": "YulFunctionCall", + "src": "30404:11:61" + }, + { + "kind": "number", + "nativeSrc": "30417:1:61", + "nodeType": "YulLiteral", + "src": "30417:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "30400:3:61", + "nodeType": "YulIdentifier", + "src": "30400:3:61" + }, + "nativeSrc": "30400:19:61", + "nodeType": "YulFunctionCall", + "src": "30400:19:61" + }, + "variables": [ + { + "name": "_2", + "nativeSrc": "30394:2:61", + "nodeType": "YulTypedName", + "src": "30394:2:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "30435:9:61", + "nodeType": "YulIdentifier", + "src": "30435:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "30450:6:61", + "nodeType": "YulIdentifier", + "src": "30450:6:61" + }, + { + "name": "_2", + "nativeSrc": "30458:2:61", + "nodeType": "YulIdentifier", + "src": "30458:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "30446:3:61", + "nodeType": "YulIdentifier", + "src": "30446:3:61" + }, + "nativeSrc": "30446:15:61", + "nodeType": "YulFunctionCall", + "src": "30446:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "30428:6:61", + "nodeType": "YulIdentifier", + "src": "30428:6:61" + }, + "nativeSrc": "30428:34:61", + "nodeType": "YulFunctionCall", + "src": "30428:34:61" + }, + "nativeSrc": "30428:34:61", + "nodeType": "YulExpressionStatement", + "src": "30428:34:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "30482:9:61", + "nodeType": "YulIdentifier", + "src": "30482:9:61" + }, + { + "kind": "number", + "nativeSrc": "30493:2:61", + "nodeType": "YulLiteral", + "src": "30493:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30478:3:61", + "nodeType": "YulIdentifier", + "src": "30478:3:61" + }, + "nativeSrc": "30478:18:61", + "nodeType": "YulFunctionCall", + "src": "30478:18:61" + }, + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "30502:6:61", + "nodeType": "YulIdentifier", + "src": "30502:6:61" + }, + { + "name": "_2", + "nativeSrc": "30510:2:61", + "nodeType": "YulIdentifier", + "src": "30510:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "30498:3:61", + "nodeType": "YulIdentifier", + "src": "30498:3:61" + }, + "nativeSrc": "30498:15:61", + "nodeType": "YulFunctionCall", + "src": "30498:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "30471:6:61", + "nodeType": "YulIdentifier", + "src": "30471:6:61" + }, + "nativeSrc": "30471:43:61", + "nodeType": "YulFunctionCall", + "src": "30471:43:61" + }, + "nativeSrc": "30471:43:61", + "nodeType": "YulExpressionStatement", + "src": "30471:43:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "30534:9:61", + "nodeType": "YulIdentifier", + "src": "30534:9:61" + }, + { + "kind": "number", + "nativeSrc": "30545:2:61", + "nodeType": "YulLiteral", + "src": "30545:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30530:3:61", + "nodeType": "YulIdentifier", + "src": "30530:3:61" + }, + "nativeSrc": "30530:18:61", + "nodeType": "YulFunctionCall", + "src": "30530:18:61" + }, + { + "name": "_1", + "nativeSrc": "30550:2:61", + "nodeType": "YulIdentifier", + "src": "30550:2:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "30523:6:61", + "nodeType": "YulIdentifier", + "src": "30523:6:61" + }, + "nativeSrc": "30523:30:61", + "nodeType": "YulFunctionCall", + "src": "30523:30:61" + }, + "nativeSrc": "30523:30:61", + "nodeType": "YulExpressionStatement", + "src": "30523:30:61" + }, + { + "nativeSrc": "30562:53:61", + "nodeType": "YulAssignment", + "src": "30562:53:61", + "value": { + "arguments": [ + { + "name": "value2", + "nativeSrc": "30588:6:61", + "nodeType": "YulIdentifier", + "src": "30588:6:61" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "30600:9:61", + "nodeType": "YulIdentifier", + "src": "30600:9:61" + }, + { + "name": "_1", + "nativeSrc": "30611:2:61", + "nodeType": "YulIdentifier", + "src": "30611:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30596:3:61", + "nodeType": "YulIdentifier", + "src": "30596:3:61" + }, + "nativeSrc": "30596:18:61", + "nodeType": "YulFunctionCall", + "src": "30596:18:61" + } + ], + "functionName": { + "name": "abi_encode_string", + "nativeSrc": "30570:17:61", + "nodeType": "YulIdentifier", + "src": "30570:17:61" + }, + "nativeSrc": "30570:45:61", + "nodeType": "YulFunctionCall", + "src": "30570:45:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "30562:4:61", + "nodeType": "YulIdentifier", + "src": "30562:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "30635:9:61", + "nodeType": "YulIdentifier", + "src": "30635:9:61" + }, + { + "kind": "number", + "nativeSrc": "30646:2:61", + "nodeType": "YulLiteral", + "src": "30646:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30631:3:61", + "nodeType": "YulIdentifier", + "src": "30631:3:61" + }, + "nativeSrc": "30631:18:61", + "nodeType": "YulFunctionCall", + "src": "30631:18:61" + }, + { + "name": "value3", + "nativeSrc": "30651:6:61", + "nodeType": "YulIdentifier", + "src": "30651:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "30624:6:61", + "nodeType": "YulIdentifier", + "src": "30624:6:61" + }, + "nativeSrc": "30624:34:61", + "nodeType": "YulFunctionCall", + "src": "30624:34:61" + }, + "nativeSrc": "30624:34:61", + "nodeType": "YulExpressionStatement", + "src": "30624:34:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "30678:9:61", + "nodeType": "YulIdentifier", + "src": "30678:9:61" + }, + { + "kind": "number", + "nativeSrc": "30689:3:61", + "nodeType": "YulLiteral", + "src": "30689:3:61", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30674:3:61", + "nodeType": "YulIdentifier", + "src": "30674:3:61" + }, + "nativeSrc": "30674:19:61", + "nodeType": "YulFunctionCall", + "src": "30674:19:61" + }, + { + "name": "value4", + "nativeSrc": "30695:6:61", + "nodeType": "YulIdentifier", + "src": "30695:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "30667:6:61", + "nodeType": "YulIdentifier", + "src": "30667:6:61" + }, + "nativeSrc": "30667:35:61", + "nodeType": "YulFunctionCall", + "src": "30667:35:61" + }, + "nativeSrc": "30667:35:61", + "nodeType": "YulExpressionStatement", + "src": "30667:35:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "30722:9:61", + "nodeType": "YulIdentifier", + "src": "30722:9:61" + }, + { + "kind": "number", + "nativeSrc": "30733:3:61", + "nodeType": "YulLiteral", + "src": "30733:3:61", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30718:3:61", + "nodeType": "YulIdentifier", + "src": "30718:3:61" + }, + "nativeSrc": "30718:19:61", + "nodeType": "YulFunctionCall", + "src": "30718:19:61" + }, + { + "arguments": [ + { + "name": "value5", + "nativeSrc": "30743:6:61", + "nodeType": "YulIdentifier", + "src": "30743:6:61" + }, + { + "name": "_2", + "nativeSrc": "30751:2:61", + "nodeType": "YulIdentifier", + "src": "30751:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "30739:3:61", + "nodeType": "YulIdentifier", + "src": "30739:3:61" + }, + "nativeSrc": "30739:15:61", + "nodeType": "YulFunctionCall", + "src": "30739:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "30711:6:61", + "nodeType": "YulIdentifier", + "src": "30711:6:61" + }, + "nativeSrc": "30711:44:61", + "nodeType": "YulFunctionCall", + "src": "30711:44:61" + }, + "nativeSrc": "30711:44:61", + "nodeType": "YulExpressionStatement", + "src": "30711:44:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "30775:9:61", + "nodeType": "YulIdentifier", + "src": "30775:9:61" + }, + { + "kind": "number", + "nativeSrc": "30786:3:61", + "nodeType": "YulLiteral", + "src": "30786:3:61", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30771:3:61", + "nodeType": "YulIdentifier", + "src": "30771:3:61" + }, + "nativeSrc": "30771:19:61", + "nodeType": "YulFunctionCall", + "src": "30771:19:61" + }, + { + "name": "value6", + "nativeSrc": "30792:6:61", + "nodeType": "YulIdentifier", + "src": "30792:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "30764:6:61", + "nodeType": "YulIdentifier", + "src": "30764:6:61" + }, + "nativeSrc": "30764:35:61", + "nodeType": "YulFunctionCall", + "src": "30764:35:61" + }, + "nativeSrc": "30764:35:61", + "nodeType": "YulExpressionStatement", + "src": "30764:35:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "30819:9:61", + "nodeType": "YulIdentifier", + "src": "30819:9:61" + }, + { + "kind": "number", + "nativeSrc": "30830:3:61", + "nodeType": "YulLiteral", + "src": "30830:3:61", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "30815:3:61", + "nodeType": "YulIdentifier", + "src": "30815:3:61" + }, + "nativeSrc": "30815:19:61", + "nodeType": "YulFunctionCall", + "src": "30815:19:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value7", + "nativeSrc": "30850:6:61", + "nodeType": "YulIdentifier", + "src": "30850:6:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "30843:6:61", + "nodeType": "YulIdentifier", + "src": "30843:6:61" + }, + "nativeSrc": "30843:14:61", + "nodeType": "YulFunctionCall", + "src": "30843:14:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "30836:6:61", + "nodeType": "YulIdentifier", + "src": "30836:6:61" + }, + "nativeSrc": "30836:22:61", + "nodeType": "YulFunctionCall", + "src": "30836:22:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "30808:6:61", + "nodeType": "YulIdentifier", + "src": "30808:6:61" + }, + "nativeSrc": "30808:51:61", + "nodeType": "YulFunctionCall", + "src": "30808:51:61" + }, + "nativeSrc": "30808:51:61", + "nodeType": "YulExpressionStatement", + "src": "30808:51:61" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address_t_string_memory_ptr_t_uint256_t_uint256_t_contract$_IERC20_$4513_t_uint256_t_bool__to_t_address_t_address_t_string_memory_ptr_t_uint256_t_uint256_t_address_t_uint256_t_bool__fromStack_library_reversed", + "nativeSrc": "30024:841:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "30271:9:61", + "nodeType": "YulTypedName", + "src": "30271:9:61", + "type": "" + }, + { + "name": "value7", + "nativeSrc": "30282:6:61", + "nodeType": "YulTypedName", + "src": "30282:6:61", + "type": "" + }, + { + "name": "value6", + "nativeSrc": "30290:6:61", + "nodeType": "YulTypedName", + "src": "30290:6:61", + "type": "" + }, + { + "name": "value5", + "nativeSrc": "30298:6:61", + "nodeType": "YulTypedName", + "src": "30298:6:61", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "30306:6:61", + "nodeType": "YulTypedName", + "src": "30306:6:61", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "30314:6:61", + "nodeType": "YulTypedName", + "src": "30314:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "30322:6:61", + "nodeType": "YulTypedName", + "src": "30322:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "30330:6:61", + "nodeType": "YulTypedName", + "src": "30330:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "30338:6:61", + "nodeType": "YulTypedName", + "src": "30338:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "30349:4:61", + "nodeType": "YulTypedName", + "src": "30349:4:61", + "type": "" + } + ], + "src": "30024:841:61" + }, + { + "body": { + "nativeSrc": "31007:145:61", + "nodeType": "YulBlock", + "src": "31007:145:61", + "statements": [ + { + "nativeSrc": "31017:26:61", + "nodeType": "YulAssignment", + "src": "31017:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "31029:9:61", + "nodeType": "YulIdentifier", + "src": "31029:9:61" + }, + { + "kind": "number", + "nativeSrc": "31040:2:61", + "nodeType": "YulLiteral", + "src": "31040:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31025:3:61", + "nodeType": "YulIdentifier", + "src": "31025:3:61" + }, + "nativeSrc": "31025:18:61", + "nodeType": "YulFunctionCall", + "src": "31025:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "31017:4:61", + "nodeType": "YulIdentifier", + "src": "31017:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "31059:9:61", + "nodeType": "YulIdentifier", + "src": "31059:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "31074:6:61", + "nodeType": "YulIdentifier", + "src": "31074:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "31090:3:61", + "nodeType": "YulLiteral", + "src": "31090:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "31095:1:61", + "nodeType": "YulLiteral", + "src": "31095:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "31086:3:61", + "nodeType": "YulIdentifier", + "src": "31086:3:61" + }, + "nativeSrc": "31086:11:61", + "nodeType": "YulFunctionCall", + "src": "31086:11:61" + }, + { + "kind": "number", + "nativeSrc": "31099:1:61", + "nodeType": "YulLiteral", + "src": "31099:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "31082:3:61", + "nodeType": "YulIdentifier", + "src": "31082:3:61" + }, + "nativeSrc": "31082:19:61", + "nodeType": "YulFunctionCall", + "src": "31082:19:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "31070:3:61", + "nodeType": "YulIdentifier", + "src": "31070:3:61" + }, + "nativeSrc": "31070:32:61", + "nodeType": "YulFunctionCall", + "src": "31070:32:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "31052:6:61", + "nodeType": "YulIdentifier", + "src": "31052:6:61" + }, + "nativeSrc": "31052:51:61", + "nodeType": "YulFunctionCall", + "src": "31052:51:61" + }, + "nativeSrc": "31052:51:61", + "nodeType": "YulExpressionStatement", + "src": "31052:51:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "31123:9:61", + "nodeType": "YulIdentifier", + "src": "31123:9:61" + }, + { + "kind": "number", + "nativeSrc": "31134:2:61", + "nodeType": "YulLiteral", + "src": "31134:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31119:3:61", + "nodeType": "YulIdentifier", + "src": "31119:3:61" + }, + "nativeSrc": "31119:18:61", + "nodeType": "YulFunctionCall", + "src": "31119:18:61" + }, + { + "name": "value1", + "nativeSrc": "31139:6:61", + "nodeType": "YulIdentifier", + "src": "31139:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "31112:6:61", + "nodeType": "YulIdentifier", + "src": "31112:6:61" + }, + "nativeSrc": "31112:34:61", + "nodeType": "YulFunctionCall", + "src": "31112:34:61" + }, + "nativeSrc": "31112:34:61", + "nodeType": "YulExpressionStatement", + "src": "31112:34:61" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_library_reversed", + "nativeSrc": "30870:282:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "30968:9:61", + "nodeType": "YulTypedName", + "src": "30968:9:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "30979:6:61", + "nodeType": "YulTypedName", + "src": "30979:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "30987:6:61", + "nodeType": "YulTypedName", + "src": "30987:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "30998:4:61", + "nodeType": "YulTypedName", + "src": "30998:4:61", + "type": "" + } + ], + "src": "30870:282:61" + }, + { + "body": { + "nativeSrc": "31238:103:61", + "nodeType": "YulBlock", + "src": "31238:103:61", + "statements": [ + { + "body": { + "nativeSrc": "31284:16:61", + "nodeType": "YulBlock", + "src": "31284:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "31293:1:61", + "nodeType": "YulLiteral", + "src": "31293:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "31296:1:61", + "nodeType": "YulLiteral", + "src": "31296:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "31286:6:61", + "nodeType": "YulIdentifier", + "src": "31286:6:61" + }, + "nativeSrc": "31286:12:61", + "nodeType": "YulFunctionCall", + "src": "31286:12:61" + }, + "nativeSrc": "31286:12:61", + "nodeType": "YulExpressionStatement", + "src": "31286:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "31259:7:61", + "nodeType": "YulIdentifier", + "src": "31259:7:61" + }, + { + "name": "headStart", + "nativeSrc": "31268:9:61", + "nodeType": "YulIdentifier", + "src": "31268:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "31255:3:61", + "nodeType": "YulIdentifier", + "src": "31255:3:61" + }, + "nativeSrc": "31255:23:61", + "nodeType": "YulFunctionCall", + "src": "31255:23:61" + }, + { + "kind": "number", + "nativeSrc": "31280:2:61", + "nodeType": "YulLiteral", + "src": "31280:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "31251:3:61", + "nodeType": "YulIdentifier", + "src": "31251:3:61" + }, + "nativeSrc": "31251:32:61", + "nodeType": "YulFunctionCall", + "src": "31251:32:61" + }, + "nativeSrc": "31248:52:61", + "nodeType": "YulIf", + "src": "31248:52:61" + }, + { + "nativeSrc": "31309:26:61", + "nodeType": "YulAssignment", + "src": "31309:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "31325:9:61", + "nodeType": "YulIdentifier", + "src": "31325:9:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "31319:5:61", + "nodeType": "YulIdentifier", + "src": "31319:5:61" + }, + "nativeSrc": "31319:16:61", + "nodeType": "YulFunctionCall", + "src": "31319:16:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "31309:6:61", + "nodeType": "YulIdentifier", + "src": "31309:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32_fromMemory", + "nativeSrc": "31157:184:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "31204:9:61", + "nodeType": "YulTypedName", + "src": "31204:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "31215:7:61", + "nodeType": "YulTypedName", + "src": "31215:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "31227:6:61", + "nodeType": "YulTypedName", + "src": "31227:6:61", + "type": "" + } + ], + "src": "31157:184:61" + }, + { + "body": { + "nativeSrc": "31531:206:61", + "nodeType": "YulBlock", + "src": "31531:206:61", + "statements": [ + { + "nativeSrc": "31541:27:61", + "nodeType": "YulAssignment", + "src": "31541:27:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "31553:9:61", + "nodeType": "YulIdentifier", + "src": "31553:9:61" + }, + { + "kind": "number", + "nativeSrc": "31564:3:61", + "nodeType": "YulLiteral", + "src": "31564:3:61", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31549:3:61", + "nodeType": "YulIdentifier", + "src": "31549:3:61" + }, + "nativeSrc": "31549:19:61", + "nodeType": "YulFunctionCall", + "src": "31549:19:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "31541:4:61", + "nodeType": "YulIdentifier", + "src": "31541:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "31584:9:61", + "nodeType": "YulIdentifier", + "src": "31584:9:61" + }, + { + "name": "value0", + "nativeSrc": "31595:6:61", + "nodeType": "YulIdentifier", + "src": "31595:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "31577:6:61", + "nodeType": "YulIdentifier", + "src": "31577:6:61" + }, + "nativeSrc": "31577:25:61", + "nodeType": "YulFunctionCall", + "src": "31577:25:61" + }, + "nativeSrc": "31577:25:61", + "nodeType": "YulExpressionStatement", + "src": "31577:25:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "31622:9:61", + "nodeType": "YulIdentifier", + "src": "31622:9:61" + }, + { + "kind": "number", + "nativeSrc": "31633:2:61", + "nodeType": "YulLiteral", + "src": "31633:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31618:3:61", + "nodeType": "YulIdentifier", + "src": "31618:3:61" + }, + "nativeSrc": "31618:18:61", + "nodeType": "YulFunctionCall", + "src": "31618:18:61" + }, + { + "name": "value1", + "nativeSrc": "31638:6:61", + "nodeType": "YulIdentifier", + "src": "31638:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "31611:6:61", + "nodeType": "YulIdentifier", + "src": "31611:6:61" + }, + "nativeSrc": "31611:34:61", + "nodeType": "YulFunctionCall", + "src": "31611:34:61" + }, + "nativeSrc": "31611:34:61", + "nodeType": "YulExpressionStatement", + "src": "31611:34:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "31665:9:61", + "nodeType": "YulIdentifier", + "src": "31665:9:61" + }, + { + "kind": "number", + "nativeSrc": "31676:2:61", + "nodeType": "YulLiteral", + "src": "31676:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31661:3:61", + "nodeType": "YulIdentifier", + "src": "31661:3:61" + }, + "nativeSrc": "31661:18:61", + "nodeType": "YulFunctionCall", + "src": "31661:18:61" + }, + { + "name": "value2", + "nativeSrc": "31681:6:61", + "nodeType": "YulIdentifier", + "src": "31681:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "31654:6:61", + "nodeType": "YulIdentifier", + "src": "31654:6:61" + }, + "nativeSrc": "31654:34:61", + "nodeType": "YulFunctionCall", + "src": "31654:34:61" + }, + "nativeSrc": "31654:34:61", + "nodeType": "YulExpressionStatement", + "src": "31654:34:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "31708:9:61", + "nodeType": "YulIdentifier", + "src": "31708:9:61" + }, + { + "kind": "number", + "nativeSrc": "31719:2:61", + "nodeType": "YulLiteral", + "src": "31719:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31704:3:61", + "nodeType": "YulIdentifier", + "src": "31704:3:61" + }, + "nativeSrc": "31704:18:61", + "nodeType": "YulFunctionCall", + "src": "31704:18:61" + }, + { + "name": "value3", + "nativeSrc": "31724:6:61", + "nodeType": "YulIdentifier", + "src": "31724:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "31697:6:61", + "nodeType": "YulIdentifier", + "src": "31697:6:61" + }, + "nativeSrc": "31697:34:61", + "nodeType": "YulFunctionCall", + "src": "31697:34:61" + }, + "nativeSrc": "31697:34:61", + "nodeType": "YulExpressionStatement", + "src": "31697:34:61" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256__to_t_bytes32_t_bytes32_t_bytes32_t_uint256__fromStack_reversed", + "nativeSrc": "31346:391:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "31476:9:61", + "nodeType": "YulTypedName", + "src": "31476:9:61", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "31487:6:61", + "nodeType": "YulTypedName", + "src": "31487:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "31495:6:61", + "nodeType": "YulTypedName", + "src": "31495:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "31503:6:61", + "nodeType": "YulTypedName", + "src": "31503:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "31511:6:61", + "nodeType": "YulTypedName", + "src": "31511:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "31522:4:61", + "nodeType": "YulTypedName", + "src": "31522:4:61", + "type": "" + } + ], + "src": "31346:391:61" + }, + { + "body": { + "nativeSrc": "31871:175:61", + "nodeType": "YulBlock", + "src": "31871:175:61", + "statements": [ + { + "nativeSrc": "31881:26:61", + "nodeType": "YulAssignment", + "src": "31881:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "31893:9:61", + "nodeType": "YulIdentifier", + "src": "31893:9:61" + }, + { + "kind": "number", + "nativeSrc": "31904:2:61", + "nodeType": "YulLiteral", + "src": "31904:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "31889:3:61", + "nodeType": "YulIdentifier", + "src": "31889:3:61" + }, + "nativeSrc": "31889:18:61", + "nodeType": "YulFunctionCall", + "src": "31889:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "31881:4:61", + "nodeType": "YulIdentifier", + "src": "31881:4:61" + } + ] + }, + { + "nativeSrc": "31916:29:61", + "nodeType": "YulVariableDeclaration", + "src": "31916:29:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "31934:3:61", + "nodeType": "YulLiteral", + "src": "31934:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "31939:1:61", + "nodeType": "YulLiteral", + "src": "31939:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "31930:3:61", + "nodeType": "YulIdentifier", + "src": "31930:3:61" + }, + "nativeSrc": "31930:11:61", + "nodeType": "YulFunctionCall", + "src": "31930:11:61" + }, + { + "kind": "number", + "nativeSrc": "31943:1:61", + "nodeType": "YulLiteral", + "src": "31943:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "31926:3:61", + "nodeType": "YulIdentifier", + "src": "31926:3:61" + }, + "nativeSrc": "31926:19:61", + "nodeType": "YulFunctionCall", + "src": "31926:19:61" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "31920:2:61", + "nodeType": "YulTypedName", + "src": "31920:2:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "31961:9:61", + "nodeType": "YulIdentifier", + "src": "31961:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "31976:6:61", + "nodeType": "YulIdentifier", + "src": "31976:6:61" + }, + { + "name": "_1", + "nativeSrc": "31984:2:61", + "nodeType": "YulIdentifier", + "src": "31984:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "31972:3:61", + "nodeType": "YulIdentifier", + "src": "31972:3:61" + }, + "nativeSrc": "31972:15:61", + "nodeType": "YulFunctionCall", + "src": "31972:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "31954:6:61", + "nodeType": "YulIdentifier", + "src": "31954:6:61" + }, + "nativeSrc": "31954:34:61", + "nodeType": "YulFunctionCall", + "src": "31954:34:61" + }, + "nativeSrc": "31954:34:61", + "nodeType": "YulExpressionStatement", + "src": "31954:34:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "32008:9:61", + "nodeType": "YulIdentifier", + "src": "32008:9:61" + }, + { + "kind": "number", + "nativeSrc": "32019:2:61", + "nodeType": "YulLiteral", + "src": "32019:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "32004:3:61", + "nodeType": "YulIdentifier", + "src": "32004:3:61" + }, + "nativeSrc": "32004:18:61", + "nodeType": "YulFunctionCall", + "src": "32004:18:61" + }, + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "32028:6:61", + "nodeType": "YulIdentifier", + "src": "32028:6:61" + }, + { + "name": "_1", + "nativeSrc": "32036:2:61", + "nodeType": "YulIdentifier", + "src": "32036:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "32024:3:61", + "nodeType": "YulIdentifier", + "src": "32024:3:61" + }, + "nativeSrc": "32024:15:61", + "nodeType": "YulFunctionCall", + "src": "32024:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "31997:6:61", + "nodeType": "YulIdentifier", + "src": "31997:6:61" + }, + "nativeSrc": "31997:43:61", + "nodeType": "YulFunctionCall", + "src": "31997:43:61" + }, + "nativeSrc": "31997:43:61", + "nodeType": "YulExpressionStatement", + "src": "31997:43:61" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed", + "nativeSrc": "31742:304:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "31832:9:61", + "nodeType": "YulTypedName", + "src": "31832:9:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "31843:6:61", + "nodeType": "YulTypedName", + "src": "31843:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "31851:6:61", + "nodeType": "YulTypedName", + "src": "31851:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "31862:4:61", + "nodeType": "YulTypedName", + "src": "31862:4:61", + "type": "" + } + ], + "src": "31742:304:61" + }, + { + "body": { + "nativeSrc": "32208:162:61", + "nodeType": "YulBlock", + "src": "32208:162:61", + "statements": [ + { + "nativeSrc": "32218:26:61", + "nodeType": "YulAssignment", + "src": "32218:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "32230:9:61", + "nodeType": "YulIdentifier", + "src": "32230:9:61" + }, + { + "kind": "number", + "nativeSrc": "32241:2:61", + "nodeType": "YulLiteral", + "src": "32241:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "32226:3:61", + "nodeType": "YulIdentifier", + "src": "32226:3:61" + }, + "nativeSrc": "32226:18:61", + "nodeType": "YulFunctionCall", + "src": "32226:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "32218:4:61", + "nodeType": "YulIdentifier", + "src": "32218:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "32260:9:61", + "nodeType": "YulIdentifier", + "src": "32260:9:61" + }, + { + "name": "value0", + "nativeSrc": "32271:6:61", + "nodeType": "YulIdentifier", + "src": "32271:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "32253:6:61", + "nodeType": "YulIdentifier", + "src": "32253:6:61" + }, + "nativeSrc": "32253:25:61", + "nodeType": "YulFunctionCall", + "src": "32253:25:61" + }, + "nativeSrc": "32253:25:61", + "nodeType": "YulExpressionStatement", + "src": "32253:25:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "32298:9:61", + "nodeType": "YulIdentifier", + "src": "32298:9:61" + }, + { + "kind": "number", + "nativeSrc": "32309:2:61", + "nodeType": "YulLiteral", + "src": "32309:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "32294:3:61", + "nodeType": "YulIdentifier", + "src": "32294:3:61" + }, + "nativeSrc": "32294:18:61", + "nodeType": "YulFunctionCall", + "src": "32294:18:61" + }, + { + "name": "value1", + "nativeSrc": "32314:6:61", + "nodeType": "YulIdentifier", + "src": "32314:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "32287:6:61", + "nodeType": "YulIdentifier", + "src": "32287:6:61" + }, + "nativeSrc": "32287:34:61", + "nodeType": "YulFunctionCall", + "src": "32287:34:61" + }, + "nativeSrc": "32287:34:61", + "nodeType": "YulExpressionStatement", + "src": "32287:34:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "32341:9:61", + "nodeType": "YulIdentifier", + "src": "32341:9:61" + }, + { + "kind": "number", + "nativeSrc": "32352:2:61", + "nodeType": "YulLiteral", + "src": "32352:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "32337:3:61", + "nodeType": "YulIdentifier", + "src": "32337:3:61" + }, + "nativeSrc": "32337:18:61", + "nodeType": "YulFunctionCall", + "src": "32337:18:61" + }, + { + "name": "value2", + "nativeSrc": "32357:6:61", + "nodeType": "YulIdentifier", + "src": "32357:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "32330:6:61", + "nodeType": "YulIdentifier", + "src": "32330:6:61" + }, + "nativeSrc": "32330:34:61", + "nodeType": "YulFunctionCall", + "src": "32330:34:61" + }, + "nativeSrc": "32330:34:61", + "nodeType": "YulExpressionStatement", + "src": "32330:34:61" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed", + "nativeSrc": "32051:319:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "32161:9:61", + "nodeType": "YulTypedName", + "src": "32161:9:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "32172:6:61", + "nodeType": "YulTypedName", + "src": "32172:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "32180:6:61", + "nodeType": "YulTypedName", + "src": "32180:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "32188:6:61", + "nodeType": "YulTypedName", + "src": "32188:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "32199:4:61", + "nodeType": "YulTypedName", + "src": "32199:4:61", + "type": "" + } + ], + "src": "32051:319:61" + }, + { + "body": { + "nativeSrc": "32566:14:61", + "nodeType": "YulBlock", + "src": "32566:14:61", + "statements": [ + { + "nativeSrc": "32568:10:61", + "nodeType": "YulAssignment", + "src": "32568:10:61", + "value": { + "name": "pos", + "nativeSrc": "32575:3:61", + "nodeType": "YulIdentifier", + "src": "32575:3:61" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "32568:3:61", + "nodeType": "YulIdentifier", + "src": "32568:3:61" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nativeSrc": "32375:205:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "32550:3:61", + "nodeType": "YulTypedName", + "src": "32550:3:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "32558:3:61", + "nodeType": "YulTypedName", + "src": "32558:3:61", + "type": "" + } + ], + "src": "32375:205:61" + }, + { + "body": { + "nativeSrc": "32641:65:61", + "nodeType": "YulBlock", + "src": "32641:65:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "32658:1:61", + "nodeType": "YulLiteral", + "src": "32658:1:61", + "type": "", + "value": "0" + }, + { + "name": "ptr", + "nativeSrc": "32661:3:61", + "nodeType": "YulIdentifier", + "src": "32661:3:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "32651:6:61", + "nodeType": "YulIdentifier", + "src": "32651:6:61" + }, + "nativeSrc": "32651:14:61", + "nodeType": "YulFunctionCall", + "src": "32651:14:61" + }, + "nativeSrc": "32651:14:61", + "nodeType": "YulExpressionStatement", + "src": "32651:14:61" + }, + { + "nativeSrc": "32674:26:61", + "nodeType": "YulAssignment", + "src": "32674:26:61", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "32692:1:61", + "nodeType": "YulLiteral", + "src": "32692:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "32695:4:61", + "nodeType": "YulLiteral", + "src": "32695:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "32682:9:61", + "nodeType": "YulIdentifier", + "src": "32682:9:61" + }, + "nativeSrc": "32682:18:61", + "nodeType": "YulFunctionCall", + "src": "32682:18:61" + }, + "variableNames": [ + { + "name": "data", + "nativeSrc": "32674:4:61", + "nodeType": "YulIdentifier", + "src": "32674:4:61" + } + ] + } + ] + }, + "name": "array_dataslot_string_storage", + "nativeSrc": "32585:121:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "ptr", + "nativeSrc": "32624:3:61", + "nodeType": "YulTypedName", + "src": "32624:3:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "data", + "nativeSrc": "32632:4:61", + "nodeType": "YulTypedName", + "src": "32632:4:61", + "type": "" + } + ], + "src": "32585:121:61" + }, + { + "body": { + "nativeSrc": "32792:462:61", + "nodeType": "YulBlock", + "src": "32792:462:61", + "statements": [ + { + "body": { + "nativeSrc": "32825:423:61", + "nodeType": "YulBlock", + "src": "32825:423:61", + "statements": [ + { + "nativeSrc": "32839:11:61", + "nodeType": "YulVariableDeclaration", + "src": "32839:11:61", + "value": { + "kind": "number", + "nativeSrc": "32849:1:61", + "nodeType": "YulLiteral", + "src": "32849:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "32843:2:61", + "nodeType": "YulTypedName", + "src": "32843:2:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "32870:1:61", + "nodeType": "YulLiteral", + "src": "32870:1:61", + "type": "", + "value": "0" + }, + { + "name": "array", + "nativeSrc": "32873:5:61", + "nodeType": "YulIdentifier", + "src": "32873:5:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "32863:6:61", + "nodeType": "YulIdentifier", + "src": "32863:6:61" + }, + "nativeSrc": "32863:16:61", + "nodeType": "YulFunctionCall", + "src": "32863:16:61" + }, + "nativeSrc": "32863:16:61", + "nodeType": "YulExpressionStatement", + "src": "32863:16:61" + }, + { + "nativeSrc": "32892:30:61", + "nodeType": "YulVariableDeclaration", + "src": "32892:30:61", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "32914:1:61", + "nodeType": "YulLiteral", + "src": "32914:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "32917:4:61", + "nodeType": "YulLiteral", + "src": "32917:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "32904:9:61", + "nodeType": "YulIdentifier", + "src": "32904:9:61" + }, + "nativeSrc": "32904:18:61", + "nodeType": "YulFunctionCall", + "src": "32904:18:61" + }, + "variables": [ + { + "name": "data", + "nativeSrc": "32896:4:61", + "nodeType": "YulTypedName", + "src": "32896:4:61", + "type": "" + } + ] + }, + { + "nativeSrc": "32935:57:61", + "nodeType": "YulVariableDeclaration", + "src": "32935:57:61", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "32958:4:61", + "nodeType": "YulIdentifier", + "src": "32958:4:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "32968:1:61", + "nodeType": "YulLiteral", + "src": "32968:1:61", + "type": "", + "value": "5" + }, + { + "arguments": [ + { + "name": "startIndex", + "nativeSrc": "32975:10:61", + "nodeType": "YulIdentifier", + "src": "32975:10:61" + }, + { + "kind": "number", + "nativeSrc": "32987:2:61", + "nodeType": "YulLiteral", + "src": "32987:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "32971:3:61", + "nodeType": "YulIdentifier", + "src": "32971:3:61" + }, + "nativeSrc": "32971:19:61", + "nodeType": "YulFunctionCall", + "src": "32971:19:61" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "32964:3:61", + "nodeType": "YulIdentifier", + "src": "32964:3:61" + }, + "nativeSrc": "32964:27:61", + "nodeType": "YulFunctionCall", + "src": "32964:27:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "32954:3:61", + "nodeType": "YulIdentifier", + "src": "32954:3:61" + }, + "nativeSrc": "32954:38:61", + "nodeType": "YulFunctionCall", + "src": "32954:38:61" + }, + "variables": [ + { + "name": "deleteStart", + "nativeSrc": "32939:11:61", + "nodeType": "YulTypedName", + "src": "32939:11:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "33029:23:61", + "nodeType": "YulBlock", + "src": "33029:23:61", + "statements": [ + { + "nativeSrc": "33031:19:61", + "nodeType": "YulAssignment", + "src": "33031:19:61", + "value": { + "name": "data", + "nativeSrc": "33046:4:61", + "nodeType": "YulIdentifier", + "src": "33046:4:61" + }, + "variableNames": [ + { + "name": "deleteStart", + "nativeSrc": "33031:11:61", + "nodeType": "YulIdentifier", + "src": "33031:11:61" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "startIndex", + "nativeSrc": "33011:10:61", + "nodeType": "YulIdentifier", + "src": "33011:10:61" + }, + { + "kind": "number", + "nativeSrc": "33023:4:61", + "nodeType": "YulLiteral", + "src": "33023:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "33008:2:61", + "nodeType": "YulIdentifier", + "src": "33008:2:61" + }, + "nativeSrc": "33008:20:61", + "nodeType": "YulFunctionCall", + "src": "33008:20:61" + }, + "nativeSrc": "33005:47:61", + "nodeType": "YulIf", + "src": "33005:47:61" + }, + { + "nativeSrc": "33065:41:61", + "nodeType": "YulVariableDeclaration", + "src": "33065:41:61", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "33079:4:61", + "nodeType": "YulIdentifier", + "src": "33079:4:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33089:1:61", + "nodeType": "YulLiteral", + "src": "33089:1:61", + "type": "", + "value": "5" + }, + { + "arguments": [ + { + "name": "len", + "nativeSrc": "33096:3:61", + "nodeType": "YulIdentifier", + "src": "33096:3:61" + }, + { + "kind": "number", + "nativeSrc": "33101:2:61", + "nodeType": "YulLiteral", + "src": "33101:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33092:3:61", + "nodeType": "YulIdentifier", + "src": "33092:3:61" + }, + "nativeSrc": "33092:12:61", + "nodeType": "YulFunctionCall", + "src": "33092:12:61" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "33085:3:61", + "nodeType": "YulIdentifier", + "src": "33085:3:61" + }, + "nativeSrc": "33085:20:61", + "nodeType": "YulFunctionCall", + "src": "33085:20:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33075:3:61", + "nodeType": "YulIdentifier", + "src": "33075:3:61" + }, + "nativeSrc": "33075:31:61", + "nodeType": "YulFunctionCall", + "src": "33075:31:61" + }, + "variables": [ + { + "name": "_2", + "nativeSrc": "33069:2:61", + "nodeType": "YulTypedName", + "src": "33069:2:61", + "type": "" + } + ] + }, + { + "nativeSrc": "33119:24:61", + "nodeType": "YulVariableDeclaration", + "src": "33119:24:61", + "value": { + "name": "deleteStart", + "nativeSrc": "33132:11:61", + "nodeType": "YulIdentifier", + "src": "33132:11:61" + }, + "variables": [ + { + "name": "start", + "nativeSrc": "33123:5:61", + "nodeType": "YulTypedName", + "src": "33123:5:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "33217:21:61", + "nodeType": "YulBlock", + "src": "33217:21:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "start", + "nativeSrc": "33226:5:61", + "nodeType": "YulIdentifier", + "src": "33226:5:61" + }, + { + "name": "_1", + "nativeSrc": "33233:2:61", + "nodeType": "YulIdentifier", + "src": "33233:2:61" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "33219:6:61", + "nodeType": "YulIdentifier", + "src": "33219:6:61" + }, + "nativeSrc": "33219:17:61", + "nodeType": "YulFunctionCall", + "src": "33219:17:61" + }, + "nativeSrc": "33219:17:61", + "nodeType": "YulExpressionStatement", + "src": "33219:17:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "start", + "nativeSrc": "33167:5:61", + "nodeType": "YulIdentifier", + "src": "33167:5:61" + }, + { + "name": "_2", + "nativeSrc": "33174:2:61", + "nodeType": "YulIdentifier", + "src": "33174:2:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "33164:2:61", + "nodeType": "YulIdentifier", + "src": "33164:2:61" + }, + "nativeSrc": "33164:13:61", + "nodeType": "YulFunctionCall", + "src": "33164:13:61" + }, + "nativeSrc": "33156:82:61", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "33178:26:61", + "nodeType": "YulBlock", + "src": "33178:26:61", + "statements": [ + { + "nativeSrc": "33180:22:61", + "nodeType": "YulAssignment", + "src": "33180:22:61", + "value": { + "arguments": [ + { + "name": "start", + "nativeSrc": "33193:5:61", + "nodeType": "YulIdentifier", + "src": "33193:5:61" + }, + { + "kind": "number", + "nativeSrc": "33200:1:61", + "nodeType": "YulLiteral", + "src": "33200:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "33189:3:61", + "nodeType": "YulIdentifier", + "src": "33189:3:61" + }, + "nativeSrc": "33189:13:61", + "nodeType": "YulFunctionCall", + "src": "33189:13:61" + }, + "variableNames": [ + { + "name": "start", + "nativeSrc": "33180:5:61", + "nodeType": "YulIdentifier", + "src": "33180:5:61" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "33160:3:61", + "nodeType": "YulBlock", + "src": "33160:3:61", + "statements": [] + }, + "src": "33156:82:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "len", + "nativeSrc": "32808:3:61", + "nodeType": "YulIdentifier", + "src": "32808:3:61" + }, + { + "kind": "number", + "nativeSrc": "32813:2:61", + "nodeType": "YulLiteral", + "src": "32813:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "32805:2:61", + "nodeType": "YulIdentifier", + "src": "32805:2:61" + }, + "nativeSrc": "32805:11:61", + "nodeType": "YulFunctionCall", + "src": "32805:11:61" + }, + "nativeSrc": "32802:446:61", + "nodeType": "YulIf", + "src": "32802:446:61" + } + ] + }, + "name": "clean_up_bytearray_end_slots_string_storage", + "nativeSrc": "32711:543:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "array", + "nativeSrc": "32764:5:61", + "nodeType": "YulTypedName", + "src": "32764:5:61", + "type": "" + }, + { + "name": "len", + "nativeSrc": "32771:3:61", + "nodeType": "YulTypedName", + "src": "32771:3:61", + "type": "" + }, + { + "name": "startIndex", + "nativeSrc": "32776:10:61", + "nodeType": "YulTypedName", + "src": "32776:10:61", + "type": "" + } + ], + "src": "32711:543:61" + }, + { + "body": { + "nativeSrc": "33344:81:61", + "nodeType": "YulBlock", + "src": "33344:81:61", + "statements": [ + { + "nativeSrc": "33354:65:61", + "nodeType": "YulAssignment", + "src": "33354:65:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "data", + "nativeSrc": "33369:4:61", + "nodeType": "YulIdentifier", + "src": "33369:4:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33387:1:61", + "nodeType": "YulLiteral", + "src": "33387:1:61", + "type": "", + "value": "3" + }, + { + "name": "len", + "nativeSrc": "33390:3:61", + "nodeType": "YulIdentifier", + "src": "33390:3:61" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "33383:3:61", + "nodeType": "YulIdentifier", + "src": "33383:3:61" + }, + "nativeSrc": "33383:11:61", + "nodeType": "YulFunctionCall", + "src": "33383:11:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33400:1:61", + "nodeType": "YulLiteral", + "src": "33400:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "33396:3:61", + "nodeType": "YulIdentifier", + "src": "33396:3:61" + }, + "nativeSrc": "33396:6:61", + "nodeType": "YulFunctionCall", + "src": "33396:6:61" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "33379:3:61", + "nodeType": "YulIdentifier", + "src": "33379:3:61" + }, + "nativeSrc": "33379:24:61", + "nodeType": "YulFunctionCall", + "src": "33379:24:61" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "33375:3:61", + "nodeType": "YulIdentifier", + "src": "33375:3:61" + }, + "nativeSrc": "33375:29:61", + "nodeType": "YulFunctionCall", + "src": "33375:29:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "33365:3:61", + "nodeType": "YulIdentifier", + "src": "33365:3:61" + }, + "nativeSrc": "33365:40:61", + "nodeType": "YulFunctionCall", + "src": "33365:40:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33411:1:61", + "nodeType": "YulLiteral", + "src": "33411:1:61", + "type": "", + "value": "1" + }, + { + "name": "len", + "nativeSrc": "33414:3:61", + "nodeType": "YulIdentifier", + "src": "33414:3:61" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "33407:3:61", + "nodeType": "YulIdentifier", + "src": "33407:3:61" + }, + "nativeSrc": "33407:11:61", + "nodeType": "YulFunctionCall", + "src": "33407:11:61" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "33362:2:61", + "nodeType": "YulIdentifier", + "src": "33362:2:61" + }, + "nativeSrc": "33362:57:61", + "nodeType": "YulFunctionCall", + "src": "33362:57:61" + }, + "variableNames": [ + { + "name": "used", + "nativeSrc": "33354:4:61", + "nodeType": "YulIdentifier", + "src": "33354:4:61" + } + ] + } + ] + }, + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nativeSrc": "33259:166:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nativeSrc": "33321:4:61", + "nodeType": "YulTypedName", + "src": "33321:4:61", + "type": "" + }, + { + "name": "len", + "nativeSrc": "33327:3:61", + "nodeType": "YulTypedName", + "src": "33327:3:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "used", + "nativeSrc": "33335:4:61", + "nodeType": "YulTypedName", + "src": "33335:4:61", + "type": "" + } + ], + "src": "33259:166:61" + }, + { + "body": { + "nativeSrc": "33526:1249:61", + "nodeType": "YulBlock", + "src": "33526:1249:61", + "statements": [ + { + "nativeSrc": "33536:24:61", + "nodeType": "YulVariableDeclaration", + "src": "33536:24:61", + "value": { + "arguments": [ + { + "name": "src", + "nativeSrc": "33556:3:61", + "nodeType": "YulIdentifier", + "src": "33556:3:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "33550:5:61", + "nodeType": "YulIdentifier", + "src": "33550:5:61" + }, + "nativeSrc": "33550:10:61", + "nodeType": "YulFunctionCall", + "src": "33550:10:61" + }, + "variables": [ + { + "name": "newLen", + "nativeSrc": "33540:6:61", + "nodeType": "YulTypedName", + "src": "33540:6:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "33603:22:61", + "nodeType": "YulBlock", + "src": "33603:22:61", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "33605:16:61", + "nodeType": "YulIdentifier", + "src": "33605:16:61" + }, + "nativeSrc": "33605:18:61", + "nodeType": "YulFunctionCall", + "src": "33605:18:61" + }, + "nativeSrc": "33605:18:61", + "nodeType": "YulExpressionStatement", + "src": "33605:18:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "33575:6:61", + "nodeType": "YulIdentifier", + "src": "33575:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33591:2:61", + "nodeType": "YulLiteral", + "src": "33591:2:61", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "33595:1:61", + "nodeType": "YulLiteral", + "src": "33595:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "33587:3:61", + "nodeType": "YulIdentifier", + "src": "33587:3:61" + }, + "nativeSrc": "33587:10:61", + "nodeType": "YulFunctionCall", + "src": "33587:10:61" + }, + { + "kind": "number", + "nativeSrc": "33599:1:61", + "nodeType": "YulLiteral", + "src": "33599:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "33583:3:61", + "nodeType": "YulIdentifier", + "src": "33583:3:61" + }, + "nativeSrc": "33583:18:61", + "nodeType": "YulFunctionCall", + "src": "33583:18:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "33572:2:61", + "nodeType": "YulIdentifier", + "src": "33572:2:61" + }, + "nativeSrc": "33572:30:61", + "nodeType": "YulFunctionCall", + "src": "33572:30:61" + }, + "nativeSrc": "33569:56:61", + "nodeType": "YulIf", + "src": "33569:56:61" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "33678:4:61", + "nodeType": "YulIdentifier", + "src": "33678:4:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "slot", + "nativeSrc": "33716:4:61", + "nodeType": "YulIdentifier", + "src": "33716:4:61" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "33710:5:61", + "nodeType": "YulIdentifier", + "src": "33710:5:61" + }, + "nativeSrc": "33710:11:61", + "nodeType": "YulFunctionCall", + "src": "33710:11:61" + } + ], + "functionName": { + "name": "extract_byte_array_length", + "nativeSrc": "33684:25:61", + "nodeType": "YulIdentifier", + "src": "33684:25:61" + }, + "nativeSrc": "33684:38:61", + "nodeType": "YulFunctionCall", + "src": "33684:38:61" + }, + { + "name": "newLen", + "nativeSrc": "33724:6:61", + "nodeType": "YulIdentifier", + "src": "33724:6:61" + } + ], + "functionName": { + "name": "clean_up_bytearray_end_slots_string_storage", + "nativeSrc": "33634:43:61", + "nodeType": "YulIdentifier", + "src": "33634:43:61" + }, + "nativeSrc": "33634:97:61", + "nodeType": "YulFunctionCall", + "src": "33634:97:61" + }, + "nativeSrc": "33634:97:61", + "nodeType": "YulExpressionStatement", + "src": "33634:97:61" + }, + { + "nativeSrc": "33740:18:61", + "nodeType": "YulVariableDeclaration", + "src": "33740:18:61", + "value": { + "kind": "number", + "nativeSrc": "33757:1:61", + "nodeType": "YulLiteral", + "src": "33757:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "srcOffset", + "nativeSrc": "33744:9:61", + "nodeType": "YulTypedName", + "src": "33744:9:61", + "type": "" + } + ] + }, + { + "nativeSrc": "33767:23:61", + "nodeType": "YulVariableDeclaration", + "src": "33767:23:61", + "value": { + "kind": "number", + "nativeSrc": "33786:4:61", + "nodeType": "YulLiteral", + "src": "33786:4:61", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "srcOffset_1", + "nativeSrc": "33771:11:61", + "nodeType": "YulTypedName", + "src": "33771:11:61", + "type": "" + } + ] + }, + { + "nativeSrc": "33799:17:61", + "nodeType": "YulAssignment", + "src": "33799:17:61", + "value": { + "kind": "number", + "nativeSrc": "33812:4:61", + "nodeType": "YulLiteral", + "src": "33812:4:61", + "type": "", + "value": "0x20" + }, + "variableNames": [ + { + "name": "srcOffset", + "nativeSrc": "33799:9:61", + "nodeType": "YulIdentifier", + "src": "33799:9:61" + } + ] + }, + { + "cases": [ + { + "body": { + "nativeSrc": "33862:656:61", + "nodeType": "YulBlock", + "src": "33862:656:61", + "statements": [ + { + "nativeSrc": "33876:35:61", + "nodeType": "YulVariableDeclaration", + "src": "33876:35:61", + "value": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "33895:6:61", + "nodeType": "YulIdentifier", + "src": "33895:6:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "33907:2:61", + "nodeType": "YulLiteral", + "src": "33907:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "33903:3:61", + "nodeType": "YulIdentifier", + "src": "33903:3:61" + }, + "nativeSrc": "33903:7:61", + "nodeType": "YulFunctionCall", + "src": "33903:7:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "33891:3:61", + "nodeType": "YulIdentifier", + "src": "33891:3:61" + }, + "nativeSrc": "33891:20:61", + "nodeType": "YulFunctionCall", + "src": "33891:20:61" + }, + "variables": [ + { + "name": "loopEnd", + "nativeSrc": "33880:7:61", + "nodeType": "YulTypedName", + "src": "33880:7:61", + "type": "" + } + ] + }, + { + "nativeSrc": "33924:49:61", + "nodeType": "YulVariableDeclaration", + "src": "33924:49:61", + "value": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "33968:4:61", + "nodeType": "YulIdentifier", + "src": "33968:4:61" + } + ], + "functionName": { + "name": "array_dataslot_string_storage", + "nativeSrc": "33938:29:61", + "nodeType": "YulIdentifier", + "src": "33938:29:61" + }, + "nativeSrc": "33938:35:61", + "nodeType": "YulFunctionCall", + "src": "33938:35:61" + }, + "variables": [ + { + "name": "dstPtr", + "nativeSrc": "33928:6:61", + "nodeType": "YulTypedName", + "src": "33928:6:61", + "type": "" + } + ] + }, + { + "nativeSrc": "33986:10:61", + "nodeType": "YulVariableDeclaration", + "src": "33986:10:61", + "value": { + "kind": "number", + "nativeSrc": "33995:1:61", + "nodeType": "YulLiteral", + "src": "33995:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "33990:1:61", + "nodeType": "YulTypedName", + "src": "33990:1:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "34073:172:61", + "nodeType": "YulBlock", + "src": "34073:172:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "34098:6:61", + "nodeType": "YulIdentifier", + "src": "34098:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "34116:3:61", + "nodeType": "YulIdentifier", + "src": "34116:3:61" + }, + { + "name": "srcOffset", + "nativeSrc": "34121:9:61", + "nodeType": "YulIdentifier", + "src": "34121:9:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "34112:3:61", + "nodeType": "YulIdentifier", + "src": "34112:3:61" + }, + "nativeSrc": "34112:19:61", + "nodeType": "YulFunctionCall", + "src": "34112:19:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "34106:5:61", + "nodeType": "YulIdentifier", + "src": "34106:5:61" + }, + "nativeSrc": "34106:26:61", + "nodeType": "YulFunctionCall", + "src": "34106:26:61" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "34091:6:61", + "nodeType": "YulIdentifier", + "src": "34091:6:61" + }, + "nativeSrc": "34091:42:61", + "nodeType": "YulFunctionCall", + "src": "34091:42:61" + }, + "nativeSrc": "34091:42:61", + "nodeType": "YulExpressionStatement", + "src": "34091:42:61" + }, + { + "nativeSrc": "34150:24:61", + "nodeType": "YulAssignment", + "src": "34150:24:61", + "value": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "34164:6:61", + "nodeType": "YulIdentifier", + "src": "34164:6:61" + }, + { + "kind": "number", + "nativeSrc": "34172:1:61", + "nodeType": "YulLiteral", + "src": "34172:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "34160:3:61", + "nodeType": "YulIdentifier", + "src": "34160:3:61" + }, + "nativeSrc": "34160:14:61", + "nodeType": "YulFunctionCall", + "src": "34160:14:61" + }, + "variableNames": [ + { + "name": "dstPtr", + "nativeSrc": "34150:6:61", + "nodeType": "YulIdentifier", + "src": "34150:6:61" + } + ] + }, + { + "nativeSrc": "34191:40:61", + "nodeType": "YulAssignment", + "src": "34191:40:61", + "value": { + "arguments": [ + { + "name": "srcOffset", + "nativeSrc": "34208:9:61", + "nodeType": "YulIdentifier", + "src": "34208:9:61" + }, + { + "name": "srcOffset_1", + "nativeSrc": "34219:11:61", + "nodeType": "YulIdentifier", + "src": "34219:11:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "34204:3:61", + "nodeType": "YulIdentifier", + "src": "34204:3:61" + }, + "nativeSrc": "34204:27:61", + "nodeType": "YulFunctionCall", + "src": "34204:27:61" + }, + "variableNames": [ + { + "name": "srcOffset", + "nativeSrc": "34191:9:61", + "nodeType": "YulIdentifier", + "src": "34191:9:61" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "34020:1:61", + "nodeType": "YulIdentifier", + "src": "34020:1:61" + }, + { + "name": "loopEnd", + "nativeSrc": "34023:7:61", + "nodeType": "YulIdentifier", + "src": "34023:7:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "34017:2:61", + "nodeType": "YulIdentifier", + "src": "34017:2:61" + }, + "nativeSrc": "34017:14:61", + "nodeType": "YulFunctionCall", + "src": "34017:14:61" + }, + "nativeSrc": "34009:236:61", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "34032:28:61", + "nodeType": "YulBlock", + "src": "34032:28:61", + "statements": [ + { + "nativeSrc": "34034:24:61", + "nodeType": "YulAssignment", + "src": "34034:24:61", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "34043:1:61", + "nodeType": "YulIdentifier", + "src": "34043:1:61" + }, + { + "name": "srcOffset_1", + "nativeSrc": "34046:11:61", + "nodeType": "YulIdentifier", + "src": "34046:11:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "34039:3:61", + "nodeType": "YulIdentifier", + "src": "34039:3:61" + }, + "nativeSrc": "34039:19:61", + "nodeType": "YulFunctionCall", + "src": "34039:19:61" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "34034:1:61", + "nodeType": "YulIdentifier", + "src": "34034:1:61" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "34013:3:61", + "nodeType": "YulBlock", + "src": "34013:3:61", + "statements": [] + }, + "src": "34009:236:61" + }, + { + "body": { + "nativeSrc": "34293:166:61", + "nodeType": "YulBlock", + "src": "34293:166:61", + "statements": [ + { + "nativeSrc": "34311:43:61", + "nodeType": "YulVariableDeclaration", + "src": "34311:43:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "34338:3:61", + "nodeType": "YulIdentifier", + "src": "34338:3:61" + }, + { + "name": "srcOffset", + "nativeSrc": "34343:9:61", + "nodeType": "YulIdentifier", + "src": "34343:9:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "34334:3:61", + "nodeType": "YulIdentifier", + "src": "34334:3:61" + }, + "nativeSrc": "34334:19:61", + "nodeType": "YulFunctionCall", + "src": "34334:19:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "34328:5:61", + "nodeType": "YulIdentifier", + "src": "34328:5:61" + }, + "nativeSrc": "34328:26:61", + "nodeType": "YulFunctionCall", + "src": "34328:26:61" + }, + "variables": [ + { + "name": "lastValue", + "nativeSrc": "34315:9:61", + "nodeType": "YulTypedName", + "src": "34315:9:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "34378:6:61", + "nodeType": "YulIdentifier", + "src": "34378:6:61" + }, + { + "arguments": [ + { + "name": "lastValue", + "nativeSrc": "34390:9:61", + "nodeType": "YulIdentifier", + "src": "34390:9:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "34417:1:61", + "nodeType": "YulLiteral", + "src": "34417:1:61", + "type": "", + "value": "3" + }, + { + "name": "newLen", + "nativeSrc": "34420:6:61", + "nodeType": "YulIdentifier", + "src": "34420:6:61" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "34413:3:61", + "nodeType": "YulIdentifier", + "src": "34413:3:61" + }, + "nativeSrc": "34413:14:61", + "nodeType": "YulFunctionCall", + "src": "34413:14:61" + }, + { + "kind": "number", + "nativeSrc": "34429:3:61", + "nodeType": "YulLiteral", + "src": "34429:3:61", + "type": "", + "value": "248" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "34409:3:61", + "nodeType": "YulIdentifier", + "src": "34409:3:61" + }, + "nativeSrc": "34409:24:61", + "nodeType": "YulFunctionCall", + "src": "34409:24:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "34439:1:61", + "nodeType": "YulLiteral", + "src": "34439:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "34435:3:61", + "nodeType": "YulIdentifier", + "src": "34435:3:61" + }, + "nativeSrc": "34435:6:61", + "nodeType": "YulFunctionCall", + "src": "34435:6:61" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "34405:3:61", + "nodeType": "YulIdentifier", + "src": "34405:3:61" + }, + "nativeSrc": "34405:37:61", + "nodeType": "YulFunctionCall", + "src": "34405:37:61" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "34401:3:61", + "nodeType": "YulIdentifier", + "src": "34401:3:61" + }, + "nativeSrc": "34401:42:61", + "nodeType": "YulFunctionCall", + "src": "34401:42:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "34386:3:61", + "nodeType": "YulIdentifier", + "src": "34386:3:61" + }, + "nativeSrc": "34386:58:61", + "nodeType": "YulFunctionCall", + "src": "34386:58:61" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "34371:6:61", + "nodeType": "YulIdentifier", + "src": "34371:6:61" + }, + "nativeSrc": "34371:74:61", + "nodeType": "YulFunctionCall", + "src": "34371:74:61" + }, + "nativeSrc": "34371:74:61", + "nodeType": "YulExpressionStatement", + "src": "34371:74:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "loopEnd", + "nativeSrc": "34264:7:61", + "nodeType": "YulIdentifier", + "src": "34264:7:61" + }, + { + "name": "newLen", + "nativeSrc": "34273:6:61", + "nodeType": "YulIdentifier", + "src": "34273:6:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "34261:2:61", + "nodeType": "YulIdentifier", + "src": "34261:2:61" + }, + "nativeSrc": "34261:19:61", + "nodeType": "YulFunctionCall", + "src": "34261:19:61" + }, + "nativeSrc": "34258:201:61", + "nodeType": "YulIf", + "src": "34258:201:61" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "34479:4:61", + "nodeType": "YulIdentifier", + "src": "34479:4:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "34493:1:61", + "nodeType": "YulLiteral", + "src": "34493:1:61", + "type": "", + "value": "1" + }, + { + "name": "newLen", + "nativeSrc": "34496:6:61", + "nodeType": "YulIdentifier", + "src": "34496:6:61" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "34489:3:61", + "nodeType": "YulIdentifier", + "src": "34489:3:61" + }, + "nativeSrc": "34489:14:61", + "nodeType": "YulFunctionCall", + "src": "34489:14:61" + }, + { + "kind": "number", + "nativeSrc": "34505:1:61", + "nodeType": "YulLiteral", + "src": "34505:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "34485:3:61", + "nodeType": "YulIdentifier", + "src": "34485:3:61" + }, + "nativeSrc": "34485:22:61", + "nodeType": "YulFunctionCall", + "src": "34485:22:61" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "34472:6:61", + "nodeType": "YulIdentifier", + "src": "34472:6:61" + }, + "nativeSrc": "34472:36:61", + "nodeType": "YulFunctionCall", + "src": "34472:36:61" + }, + "nativeSrc": "34472:36:61", + "nodeType": "YulExpressionStatement", + "src": "34472:36:61" + } + ] + }, + "nativeSrc": "33855:663:61", + "nodeType": "YulCase", + "src": "33855:663:61", + "value": { + "kind": "number", + "nativeSrc": "33860:1:61", + "nodeType": "YulLiteral", + "src": "33860:1:61", + "type": "", + "value": "1" + } + }, + { + "body": { + "nativeSrc": "34535:234:61", + "nodeType": "YulBlock", + "src": "34535:234:61", + "statements": [ + { + "nativeSrc": "34549:14:61", + "nodeType": "YulVariableDeclaration", + "src": "34549:14:61", + "value": { + "kind": "number", + "nativeSrc": "34562:1:61", + "nodeType": "YulLiteral", + "src": "34562:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "34553:5:61", + "nodeType": "YulTypedName", + "src": "34553:5:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "34598:67:61", + "nodeType": "YulBlock", + "src": "34598:67:61", + "statements": [ + { + "nativeSrc": "34616:35:61", + "nodeType": "YulAssignment", + "src": "34616:35:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "34635:3:61", + "nodeType": "YulIdentifier", + "src": "34635:3:61" + }, + { + "name": "srcOffset", + "nativeSrc": "34640:9:61", + "nodeType": "YulIdentifier", + "src": "34640:9:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "34631:3:61", + "nodeType": "YulIdentifier", + "src": "34631:3:61" + }, + "nativeSrc": "34631:19:61", + "nodeType": "YulFunctionCall", + "src": "34631:19:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "34625:5:61", + "nodeType": "YulIdentifier", + "src": "34625:5:61" + }, + "nativeSrc": "34625:26:61", + "nodeType": "YulFunctionCall", + "src": "34625:26:61" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "34616:5:61", + "nodeType": "YulIdentifier", + "src": "34616:5:61" + } + ] + } + ] + }, + "condition": { + "name": "newLen", + "nativeSrc": "34579:6:61", + "nodeType": "YulIdentifier", + "src": "34579:6:61" + }, + "nativeSrc": "34576:89:61", + "nodeType": "YulIf", + "src": "34576:89:61" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "34685:4:61", + "nodeType": "YulIdentifier", + "src": "34685:4:61" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "34744:5:61", + "nodeType": "YulIdentifier", + "src": "34744:5:61" + }, + { + "name": "newLen", + "nativeSrc": "34751:6:61", + "nodeType": "YulIdentifier", + "src": "34751:6:61" + } + ], + "functionName": { + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nativeSrc": "34691:52:61", + "nodeType": "YulIdentifier", + "src": "34691:52:61" + }, + "nativeSrc": "34691:67:61", + "nodeType": "YulFunctionCall", + "src": "34691:67:61" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "34678:6:61", + "nodeType": "YulIdentifier", + "src": "34678:6:61" + }, + "nativeSrc": "34678:81:61", + "nodeType": "YulFunctionCall", + "src": "34678:81:61" + }, + "nativeSrc": "34678:81:61", + "nodeType": "YulExpressionStatement", + "src": "34678:81:61" + } + ] + }, + "nativeSrc": "34527:242:61", + "nodeType": "YulCase", + "src": "34527:242:61", + "value": "default" + } + ], + "expression": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "33835:6:61", + "nodeType": "YulIdentifier", + "src": "33835:6:61" + }, + { + "kind": "number", + "nativeSrc": "33843:2:61", + "nodeType": "YulLiteral", + "src": "33843:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "33832:2:61", + "nodeType": "YulIdentifier", + "src": "33832:2:61" + }, + "nativeSrc": "33832:14:61", + "nodeType": "YulFunctionCall", + "src": "33832:14:61" + }, + "nativeSrc": "33825:944:61", + "nodeType": "YulSwitch", + "src": "33825:944:61" + } + ] + }, + "name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage", + "nativeSrc": "33430:1345:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "slot", + "nativeSrc": "33511:4:61", + "nodeType": "YulTypedName", + "src": "33511:4:61", + "type": "" + }, + { + "name": "src", + "nativeSrc": "33517:3:61", + "nodeType": "YulTypedName", + "src": "33517:3:61", + "type": "" + } + ], + "src": "33430:1345:61" + }, + { + "body": { + "nativeSrc": "34916:707:61", + "nodeType": "YulBlock", + "src": "34916:707:61", + "statements": [ + { + "nativeSrc": "34926:12:61", + "nodeType": "YulVariableDeclaration", + "src": "34926:12:61", + "value": { + "kind": "number", + "nativeSrc": "34937:1:61", + "nodeType": "YulLiteral", + "src": "34937:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "ret", + "nativeSrc": "34930:3:61", + "nodeType": "YulTypedName", + "src": "34930:3:61", + "type": "" + } + ] + }, + { + "nativeSrc": "34947:30:61", + "nodeType": "YulVariableDeclaration", + "src": "34947:30:61", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "34970:6:61", + "nodeType": "YulIdentifier", + "src": "34970:6:61" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "34964:5:61", + "nodeType": "YulIdentifier", + "src": "34964:5:61" + }, + "nativeSrc": "34964:13:61", + "nodeType": "YulFunctionCall", + "src": "34964:13:61" + }, + "variables": [ + { + "name": "slotValue", + "nativeSrc": "34951:9:61", + "nodeType": "YulTypedName", + "src": "34951:9:61", + "type": "" + } + ] + }, + { + "nativeSrc": "34986:50:61", + "nodeType": "YulVariableDeclaration", + "src": "34986:50:61", + "value": { + "arguments": [ + { + "name": "slotValue", + "nativeSrc": "35026:9:61", + "nodeType": "YulIdentifier", + "src": "35026:9:61" + } + ], + "functionName": { + "name": "extract_byte_array_length", + "nativeSrc": "35000:25:61", + "nodeType": "YulIdentifier", + "src": "35000:25:61" + }, + "nativeSrc": "35000:36:61", + "nodeType": "YulFunctionCall", + "src": "35000:36:61" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "34990:6:61", + "nodeType": "YulTypedName", + "src": "34990:6:61", + "type": "" + } + ] + }, + { + "nativeSrc": "35045:11:61", + "nodeType": "YulVariableDeclaration", + "src": "35045:11:61", + "value": { + "kind": "number", + "nativeSrc": "35055:1:61", + "nodeType": "YulLiteral", + "src": "35055:1:61", + "type": "", + "value": "1" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "35049:2:61", + "nodeType": "YulTypedName", + "src": "35049:2:61", + "type": "" + } + ] + }, + { + "cases": [ + { + "body": { + "nativeSrc": "35105:126:61", + "nodeType": "YulBlock", + "src": "35105:126:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "35126:3:61", + "nodeType": "YulIdentifier", + "src": "35126:3:61" + }, + { + "arguments": [ + { + "name": "slotValue", + "nativeSrc": "35135:9:61", + "nodeType": "YulIdentifier", + "src": "35135:9:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "35150:3:61", + "nodeType": "YulLiteral", + "src": "35150:3:61", + "type": "", + "value": "255" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "35146:3:61", + "nodeType": "YulIdentifier", + "src": "35146:3:61" + }, + "nativeSrc": "35146:8:61", + "nodeType": "YulFunctionCall", + "src": "35146:8:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "35131:3:61", + "nodeType": "YulIdentifier", + "src": "35131:3:61" + }, + "nativeSrc": "35131:24:61", + "nodeType": "YulFunctionCall", + "src": "35131:24:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "35119:6:61", + "nodeType": "YulIdentifier", + "src": "35119:6:61" + }, + "nativeSrc": "35119:37:61", + "nodeType": "YulFunctionCall", + "src": "35119:37:61" + }, + "nativeSrc": "35119:37:61", + "nodeType": "YulExpressionStatement", + "src": "35119:37:61" + }, + { + "nativeSrc": "35169:52:61", + "nodeType": "YulAssignment", + "src": "35169:52:61", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "35180:3:61", + "nodeType": "YulIdentifier", + "src": "35180:3:61" + }, + { + "arguments": [ + { + "name": "length", + "nativeSrc": "35189:6:61", + "nodeType": "YulIdentifier", + "src": "35189:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nativeSrc": "35211:6:61", + "nodeType": "YulIdentifier", + "src": "35211:6:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "35204:6:61", + "nodeType": "YulIdentifier", + "src": "35204:6:61" + }, + "nativeSrc": "35204:14:61", + "nodeType": "YulFunctionCall", + "src": "35204:14:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "35197:6:61", + "nodeType": "YulIdentifier", + "src": "35197:6:61" + }, + "nativeSrc": "35197:22:61", + "nodeType": "YulFunctionCall", + "src": "35197:22:61" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "35185:3:61", + "nodeType": "YulIdentifier", + "src": "35185:3:61" + }, + "nativeSrc": "35185:35:61", + "nodeType": "YulFunctionCall", + "src": "35185:35:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35176:3:61", + "nodeType": "YulIdentifier", + "src": "35176:3:61" + }, + "nativeSrc": "35176:45:61", + "nodeType": "YulFunctionCall", + "src": "35176:45:61" + }, + "variableNames": [ + { + "name": "ret", + "nativeSrc": "35169:3:61", + "nodeType": "YulIdentifier", + "src": "35169:3:61" + } + ] + } + ] + }, + "nativeSrc": "35098:133:61", + "nodeType": "YulCase", + "src": "35098:133:61", + "value": { + "kind": "number", + "nativeSrc": "35103:1:61", + "nodeType": "YulLiteral", + "src": "35103:1:61", + "type": "", + "value": "0" + } + }, + { + "body": { + "nativeSrc": "35247:351:61", + "nodeType": "YulBlock", + "src": "35247:351:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "35268:1:61", + "nodeType": "YulLiteral", + "src": "35268:1:61", + "type": "", + "value": "0" + }, + { + "name": "value0", + "nativeSrc": "35271:6:61", + "nodeType": "YulIdentifier", + "src": "35271:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "35261:6:61", + "nodeType": "YulIdentifier", + "src": "35261:6:61" + }, + "nativeSrc": "35261:17:61", + "nodeType": "YulFunctionCall", + "src": "35261:17:61" + }, + "nativeSrc": "35261:17:61", + "nodeType": "YulExpressionStatement", + "src": "35261:17:61" + }, + { + "nativeSrc": "35291:14:61", + "nodeType": "YulVariableDeclaration", + "src": "35291:14:61", + "value": { + "kind": "number", + "nativeSrc": "35301:4:61", + "nodeType": "YulLiteral", + "src": "35301:4:61", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "_2", + "nativeSrc": "35295:2:61", + "nodeType": "YulTypedName", + "src": "35295:2:61", + "type": "" + } + ] + }, + { + "nativeSrc": "35318:33:61", + "nodeType": "YulVariableDeclaration", + "src": "35318:33:61", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "35343:1:61", + "nodeType": "YulLiteral", + "src": "35343:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "35346:4:61", + "nodeType": "YulLiteral", + "src": "35346:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "35333:9:61", + "nodeType": "YulIdentifier", + "src": "35333:9:61" + }, + "nativeSrc": "35333:18:61", + "nodeType": "YulFunctionCall", + "src": "35333:18:61" + }, + "variables": [ + { + "name": "dataPos", + "nativeSrc": "35322:7:61", + "nodeType": "YulTypedName", + "src": "35322:7:61", + "type": "" + } + ] + }, + { + "nativeSrc": "35364:10:61", + "nodeType": "YulVariableDeclaration", + "src": "35364:10:61", + "value": { + "kind": "number", + "nativeSrc": "35373:1:61", + "nodeType": "YulLiteral", + "src": "35373:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "35368:1:61", + "nodeType": "YulTypedName", + "src": "35368:1:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "35441:111:61", + "nodeType": "YulBlock", + "src": "35441:111:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nativeSrc": "35470:3:61", + "nodeType": "YulIdentifier", + "src": "35470:3:61" + }, + { + "name": "i", + "nativeSrc": "35475:1:61", + "nodeType": "YulIdentifier", + "src": "35475:1:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35466:3:61", + "nodeType": "YulIdentifier", + "src": "35466:3:61" + }, + "nativeSrc": "35466:11:61", + "nodeType": "YulFunctionCall", + "src": "35466:11:61" + }, + { + "arguments": [ + { + "name": "dataPos", + "nativeSrc": "35485:7:61", + "nodeType": "YulIdentifier", + "src": "35485:7:61" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "35479:5:61", + "nodeType": "YulIdentifier", + "src": "35479:5:61" + }, + "nativeSrc": "35479:14:61", + "nodeType": "YulFunctionCall", + "src": "35479:14:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "35459:6:61", + "nodeType": "YulIdentifier", + "src": "35459:6:61" + }, + "nativeSrc": "35459:35:61", + "nodeType": "YulFunctionCall", + "src": "35459:35:61" + }, + "nativeSrc": "35459:35:61", + "nodeType": "YulExpressionStatement", + "src": "35459:35:61" + }, + { + "nativeSrc": "35511:27:61", + "nodeType": "YulAssignment", + "src": "35511:27:61", + "value": { + "arguments": [ + { + "name": "dataPos", + "nativeSrc": "35526:7:61", + "nodeType": "YulIdentifier", + "src": "35526:7:61" + }, + { + "name": "_1", + "nativeSrc": "35535:2:61", + "nodeType": "YulIdentifier", + "src": "35535:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35522:3:61", + "nodeType": "YulIdentifier", + "src": "35522:3:61" + }, + "nativeSrc": "35522:16:61", + "nodeType": "YulFunctionCall", + "src": "35522:16:61" + }, + "variableNames": [ + { + "name": "dataPos", + "nativeSrc": "35511:7:61", + "nodeType": "YulIdentifier", + "src": "35511:7:61" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "35398:1:61", + "nodeType": "YulIdentifier", + "src": "35398:1:61" + }, + { + "name": "length", + "nativeSrc": "35401:6:61", + "nodeType": "YulIdentifier", + "src": "35401:6:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "35395:2:61", + "nodeType": "YulIdentifier", + "src": "35395:2:61" + }, + "nativeSrc": "35395:13:61", + "nodeType": "YulFunctionCall", + "src": "35395:13:61" + }, + "nativeSrc": "35387:165:61", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "35409:19:61", + "nodeType": "YulBlock", + "src": "35409:19:61", + "statements": [ + { + "nativeSrc": "35411:15:61", + "nodeType": "YulAssignment", + "src": "35411:15:61", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "35420:1:61", + "nodeType": "YulIdentifier", + "src": "35420:1:61" + }, + { + "name": "_2", + "nativeSrc": "35423:2:61", + "nodeType": "YulIdentifier", + "src": "35423:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35416:3:61", + "nodeType": "YulIdentifier", + "src": "35416:3:61" + }, + "nativeSrc": "35416:10:61", + "nodeType": "YulFunctionCall", + "src": "35416:10:61" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "35411:1:61", + "nodeType": "YulIdentifier", + "src": "35411:1:61" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "35391:3:61", + "nodeType": "YulBlock", + "src": "35391:3:61", + "statements": [] + }, + "src": "35387:165:61" + }, + { + "nativeSrc": "35565:23:61", + "nodeType": "YulAssignment", + "src": "35565:23:61", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "35576:3:61", + "nodeType": "YulIdentifier", + "src": "35576:3:61" + }, + { + "name": "length", + "nativeSrc": "35581:6:61", + "nodeType": "YulIdentifier", + "src": "35581:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "35572:3:61", + "nodeType": "YulIdentifier", + "src": "35572:3:61" + }, + "nativeSrc": "35572:16:61", + "nodeType": "YulFunctionCall", + "src": "35572:16:61" + }, + "variableNames": [ + { + "name": "ret", + "nativeSrc": "35565:3:61", + "nodeType": "YulIdentifier", + "src": "35565:3:61" + } + ] + } + ] + }, + "nativeSrc": "35240:358:61", + "nodeType": "YulCase", + "src": "35240:358:61", + "value": { + "kind": "number", + "nativeSrc": "35245:1:61", + "nodeType": "YulLiteral", + "src": "35245:1:61", + "type": "", + "value": "1" + } + } + ], + "expression": { + "arguments": [ + { + "name": "slotValue", + "nativeSrc": "35076:9:61", + "nodeType": "YulIdentifier", + "src": "35076:9:61" + }, + { + "kind": "number", + "nativeSrc": "35087:1:61", + "nodeType": "YulLiteral", + "src": "35087:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "35072:3:61", + "nodeType": "YulIdentifier", + "src": "35072:3:61" + }, + "nativeSrc": "35072:17:61", + "nodeType": "YulFunctionCall", + "src": "35072:17:61" + }, + "nativeSrc": "35065:533:61", + "nodeType": "YulSwitch", + "src": "35065:533:61" + }, + { + "nativeSrc": "35607:10:61", + "nodeType": "YulAssignment", + "src": "35607:10:61", + "value": { + "name": "ret", + "nativeSrc": "35614:3:61", + "nodeType": "YulIdentifier", + "src": "35614:3:61" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "35607:3:61", + "nodeType": "YulIdentifier", + "src": "35607:3:61" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_string_storage__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nativeSrc": "34780:843:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "34892:3:61", + "nodeType": "YulTypedName", + "src": "34892:3:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "34897:6:61", + "nodeType": "YulTypedName", + "src": "34897:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "34908:3:61", + "nodeType": "YulTypedName", + "src": "34908:3:61", + "type": "" + } + ], + "src": "34780:843:61" + }, + { + "body": { + "nativeSrc": "35725:1338:61", + "nodeType": "YulBlock", + "src": "35725:1338:61", + "statements": [ + { + "body": { + "nativeSrc": "35752:9:61", + "nodeType": "YulBlock", + "src": "35752:9:61", + "statements": [ + { + "nativeSrc": "35754:5:61", + "nodeType": "YulLeave", + "src": "35754:5:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "35741:4:61", + "nodeType": "YulIdentifier", + "src": "35741:4:61" + }, + { + "name": "src", + "nativeSrc": "35747:3:61", + "nodeType": "YulIdentifier", + "src": "35747:3:61" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "35738:2:61", + "nodeType": "YulIdentifier", + "src": "35738:2:61" + }, + "nativeSrc": "35738:13:61", + "nodeType": "YulFunctionCall", + "src": "35738:13:61" + }, + "nativeSrc": "35735:26:61", + "nodeType": "YulIf", + "src": "35735:26:61" + }, + { + "nativeSrc": "35770:51:61", + "nodeType": "YulVariableDeclaration", + "src": "35770:51:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "35816:3:61", + "nodeType": "YulIdentifier", + "src": "35816:3:61" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "35810:5:61", + "nodeType": "YulIdentifier", + "src": "35810:5:61" + }, + "nativeSrc": "35810:10:61", + "nodeType": "YulFunctionCall", + "src": "35810:10:61" + } + ], + "functionName": { + "name": "extract_byte_array_length", + "nativeSrc": "35784:25:61", + "nodeType": "YulIdentifier", + "src": "35784:25:61" + }, + "nativeSrc": "35784:37:61", + "nodeType": "YulFunctionCall", + "src": "35784:37:61" + }, + "variables": [ + { + "name": "newLen", + "nativeSrc": "35774:6:61", + "nodeType": "YulTypedName", + "src": "35774:6:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "35864:22:61", + "nodeType": "YulBlock", + "src": "35864:22:61", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "35866:16:61", + "nodeType": "YulIdentifier", + "src": "35866:16:61" + }, + "nativeSrc": "35866:18:61", + "nodeType": "YulFunctionCall", + "src": "35866:18:61" + }, + "nativeSrc": "35866:18:61", + "nodeType": "YulExpressionStatement", + "src": "35866:18:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "35836:6:61", + "nodeType": "YulIdentifier", + "src": "35836:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "35852:2:61", + "nodeType": "YulLiteral", + "src": "35852:2:61", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "35856:1:61", + "nodeType": "YulLiteral", + "src": "35856:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "35848:3:61", + "nodeType": "YulIdentifier", + "src": "35848:3:61" + }, + "nativeSrc": "35848:10:61", + "nodeType": "YulFunctionCall", + "src": "35848:10:61" + }, + { + "kind": "number", + "nativeSrc": "35860:1:61", + "nodeType": "YulLiteral", + "src": "35860:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "35844:3:61", + "nodeType": "YulIdentifier", + "src": "35844:3:61" + }, + "nativeSrc": "35844:18:61", + "nodeType": "YulFunctionCall", + "src": "35844:18:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "35833:2:61", + "nodeType": "YulIdentifier", + "src": "35833:2:61" + }, + "nativeSrc": "35833:30:61", + "nodeType": "YulFunctionCall", + "src": "35833:30:61" + }, + "nativeSrc": "35830:56:61", + "nodeType": "YulIf", + "src": "35830:56:61" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "35939:4:61", + "nodeType": "YulIdentifier", + "src": "35939:4:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "slot", + "nativeSrc": "35977:4:61", + "nodeType": "YulIdentifier", + "src": "35977:4:61" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "35971:5:61", + "nodeType": "YulIdentifier", + "src": "35971:5:61" + }, + "nativeSrc": "35971:11:61", + "nodeType": "YulFunctionCall", + "src": "35971:11:61" + } + ], + "functionName": { + "name": "extract_byte_array_length", + "nativeSrc": "35945:25:61", + "nodeType": "YulIdentifier", + "src": "35945:25:61" + }, + "nativeSrc": "35945:38:61", + "nodeType": "YulFunctionCall", + "src": "35945:38:61" + }, + { + "name": "newLen", + "nativeSrc": "35985:6:61", + "nodeType": "YulIdentifier", + "src": "35985:6:61" + } + ], + "functionName": { + "name": "clean_up_bytearray_end_slots_string_storage", + "nativeSrc": "35895:43:61", + "nodeType": "YulIdentifier", + "src": "35895:43:61" + }, + "nativeSrc": "35895:97:61", + "nodeType": "YulFunctionCall", + "src": "35895:97:61" + }, + "nativeSrc": "35895:97:61", + "nodeType": "YulExpressionStatement", + "src": "35895:97:61" + }, + { + "nativeSrc": "36001:18:61", + "nodeType": "YulVariableDeclaration", + "src": "36001:18:61", + "value": { + "kind": "number", + "nativeSrc": "36018:1:61", + "nodeType": "YulLiteral", + "src": "36018:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "srcOffset", + "nativeSrc": "36005:9:61", + "nodeType": "YulTypedName", + "src": "36005:9:61", + "type": "" + } + ] + }, + { + "cases": [ + { + "body": { + "nativeSrc": "36065:741:61", + "nodeType": "YulBlock", + "src": "36065:741:61", + "statements": [ + { + "nativeSrc": "36079:35:61", + "nodeType": "YulVariableDeclaration", + "src": "36079:35:61", + "value": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "36098:6:61", + "nodeType": "YulIdentifier", + "src": "36098:6:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "36110:2:61", + "nodeType": "YulLiteral", + "src": "36110:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "36106:3:61", + "nodeType": "YulIdentifier", + "src": "36106:3:61" + }, + "nativeSrc": "36106:7:61", + "nodeType": "YulFunctionCall", + "src": "36106:7:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "36094:3:61", + "nodeType": "YulIdentifier", + "src": "36094:3:61" + }, + "nativeSrc": "36094:20:61", + "nodeType": "YulFunctionCall", + "src": "36094:20:61" + }, + "variables": [ + { + "name": "loopEnd", + "nativeSrc": "36083:7:61", + "nodeType": "YulTypedName", + "src": "36083:7:61", + "type": "" + } + ] + }, + { + "nativeSrc": "36127:47:61", + "nodeType": "YulVariableDeclaration", + "src": "36127:47:61", + "value": { + "arguments": [ + { + "name": "src", + "nativeSrc": "36170:3:61", + "nodeType": "YulIdentifier", + "src": "36170:3:61" + } + ], + "functionName": { + "name": "array_dataslot_string_storage", + "nativeSrc": "36140:29:61", + "nodeType": "YulIdentifier", + "src": "36140:29:61" + }, + "nativeSrc": "36140:34:61", + "nodeType": "YulFunctionCall", + "src": "36140:34:61" + }, + "variables": [ + { + "name": "src_1", + "nativeSrc": "36131:5:61", + "nodeType": "YulTypedName", + "src": "36131:5:61", + "type": "" + } + ] + }, + { + "nativeSrc": "36187:49:61", + "nodeType": "YulVariableDeclaration", + "src": "36187:49:61", + "value": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "36231:4:61", + "nodeType": "YulIdentifier", + "src": "36231:4:61" + } + ], + "functionName": { + "name": "array_dataslot_string_storage", + "nativeSrc": "36201:29:61", + "nodeType": "YulIdentifier", + "src": "36201:29:61" + }, + "nativeSrc": "36201:35:61", + "nodeType": "YulFunctionCall", + "src": "36201:35:61" + }, + "variables": [ + { + "name": "dstPtr", + "nativeSrc": "36191:6:61", + "nodeType": "YulTypedName", + "src": "36191:6:61", + "type": "" + } + ] + }, + { + "nativeSrc": "36249:18:61", + "nodeType": "YulVariableDeclaration", + "src": "36249:18:61", + "value": { + "name": "srcOffset", + "nativeSrc": "36258:9:61", + "nodeType": "YulIdentifier", + "src": "36258:9:61" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "36253:1:61", + "nodeType": "YulTypedName", + "src": "36253:1:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "36337:194:61", + "nodeType": "YulBlock", + "src": "36337:194:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "36362:6:61", + "nodeType": "YulIdentifier", + "src": "36362:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src_1", + "nativeSrc": "36380:5:61", + "nodeType": "YulIdentifier", + "src": "36380:5:61" + }, + { + "name": "srcOffset", + "nativeSrc": "36387:9:61", + "nodeType": "YulIdentifier", + "src": "36387:9:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36376:3:61", + "nodeType": "YulIdentifier", + "src": "36376:3:61" + }, + "nativeSrc": "36376:21:61", + "nodeType": "YulFunctionCall", + "src": "36376:21:61" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "36370:5:61", + "nodeType": "YulIdentifier", + "src": "36370:5:61" + }, + "nativeSrc": "36370:28:61", + "nodeType": "YulFunctionCall", + "src": "36370:28:61" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "36355:6:61", + "nodeType": "YulIdentifier", + "src": "36355:6:61" + }, + "nativeSrc": "36355:44:61", + "nodeType": "YulFunctionCall", + "src": "36355:44:61" + }, + "nativeSrc": "36355:44:61", + "nodeType": "YulExpressionStatement", + "src": "36355:44:61" + }, + { + "nativeSrc": "36416:11:61", + "nodeType": "YulVariableDeclaration", + "src": "36416:11:61", + "value": { + "kind": "number", + "nativeSrc": "36426:1:61", + "nodeType": "YulLiteral", + "src": "36426:1:61", + "type": "", + "value": "1" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "36420:2:61", + "nodeType": "YulTypedName", + "src": "36420:2:61", + "type": "" + } + ] + }, + { + "nativeSrc": "36444:25:61", + "nodeType": "YulAssignment", + "src": "36444:25:61", + "value": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "36458:6:61", + "nodeType": "YulIdentifier", + "src": "36458:6:61" + }, + { + "name": "_1", + "nativeSrc": "36466:2:61", + "nodeType": "YulIdentifier", + "src": "36466:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36454:3:61", + "nodeType": "YulIdentifier", + "src": "36454:3:61" + }, + "nativeSrc": "36454:15:61", + "nodeType": "YulFunctionCall", + "src": "36454:15:61" + }, + "variableNames": [ + { + "name": "dstPtr", + "nativeSrc": "36444:6:61", + "nodeType": "YulIdentifier", + "src": "36444:6:61" + } + ] + }, + { + "nativeSrc": "36486:31:61", + "nodeType": "YulAssignment", + "src": "36486:31:61", + "value": { + "arguments": [ + { + "name": "srcOffset", + "nativeSrc": "36503:9:61", + "nodeType": "YulIdentifier", + "src": "36503:9:61" + }, + { + "name": "_1", + "nativeSrc": "36514:2:61", + "nodeType": "YulIdentifier", + "src": "36514:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36499:3:61", + "nodeType": "YulIdentifier", + "src": "36499:3:61" + }, + "nativeSrc": "36499:18:61", + "nodeType": "YulFunctionCall", + "src": "36499:18:61" + }, + "variableNames": [ + { + "name": "srcOffset", + "nativeSrc": "36486:9:61", + "nodeType": "YulIdentifier", + "src": "36486:9:61" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "36291:1:61", + "nodeType": "YulIdentifier", + "src": "36291:1:61" + }, + { + "name": "loopEnd", + "nativeSrc": "36294:7:61", + "nodeType": "YulIdentifier", + "src": "36294:7:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "36288:2:61", + "nodeType": "YulIdentifier", + "src": "36288:2:61" + }, + "nativeSrc": "36288:14:61", + "nodeType": "YulFunctionCall", + "src": "36288:14:61" + }, + "nativeSrc": "36280:251:61", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "36303:21:61", + "nodeType": "YulBlock", + "src": "36303:21:61", + "statements": [ + { + "nativeSrc": "36305:17:61", + "nodeType": "YulAssignment", + "src": "36305:17:61", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "36314:1:61", + "nodeType": "YulIdentifier", + "src": "36314:1:61" + }, + { + "kind": "number", + "nativeSrc": "36317:4:61", + "nodeType": "YulLiteral", + "src": "36317:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36310:3:61", + "nodeType": "YulIdentifier", + "src": "36310:3:61" + }, + "nativeSrc": "36310:12:61", + "nodeType": "YulFunctionCall", + "src": "36310:12:61" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "36305:1:61", + "nodeType": "YulIdentifier", + "src": "36305:1:61" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "36284:3:61", + "nodeType": "YulBlock", + "src": "36284:3:61", + "statements": [] + }, + "src": "36280:251:61" + }, + { + "body": { + "nativeSrc": "36579:168:61", + "nodeType": "YulBlock", + "src": "36579:168:61", + "statements": [ + { + "nativeSrc": "36597:45:61", + "nodeType": "YulVariableDeclaration", + "src": "36597:45:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src_1", + "nativeSrc": "36624:5:61", + "nodeType": "YulIdentifier", + "src": "36624:5:61" + }, + { + "name": "srcOffset", + "nativeSrc": "36631:9:61", + "nodeType": "YulIdentifier", + "src": "36631:9:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36620:3:61", + "nodeType": "YulIdentifier", + "src": "36620:3:61" + }, + "nativeSrc": "36620:21:61", + "nodeType": "YulFunctionCall", + "src": "36620:21:61" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "36614:5:61", + "nodeType": "YulIdentifier", + "src": "36614:5:61" + }, + "nativeSrc": "36614:28:61", + "nodeType": "YulFunctionCall", + "src": "36614:28:61" + }, + "variables": [ + { + "name": "lastValue", + "nativeSrc": "36601:9:61", + "nodeType": "YulTypedName", + "src": "36601:9:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "36666:6:61", + "nodeType": "YulIdentifier", + "src": "36666:6:61" + }, + { + "arguments": [ + { + "name": "lastValue", + "nativeSrc": "36678:9:61", + "nodeType": "YulIdentifier", + "src": "36678:9:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "36705:1:61", + "nodeType": "YulLiteral", + "src": "36705:1:61", + "type": "", + "value": "3" + }, + { + "name": "newLen", + "nativeSrc": "36708:6:61", + "nodeType": "YulIdentifier", + "src": "36708:6:61" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "36701:3:61", + "nodeType": "YulIdentifier", + "src": "36701:3:61" + }, + "nativeSrc": "36701:14:61", + "nodeType": "YulFunctionCall", + "src": "36701:14:61" + }, + { + "kind": "number", + "nativeSrc": "36717:3:61", + "nodeType": "YulLiteral", + "src": "36717:3:61", + "type": "", + "value": "248" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "36697:3:61", + "nodeType": "YulIdentifier", + "src": "36697:3:61" + }, + "nativeSrc": "36697:24:61", + "nodeType": "YulFunctionCall", + "src": "36697:24:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "36727:1:61", + "nodeType": "YulLiteral", + "src": "36727:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "36723:3:61", + "nodeType": "YulIdentifier", + "src": "36723:3:61" + }, + "nativeSrc": "36723:6:61", + "nodeType": "YulFunctionCall", + "src": "36723:6:61" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "36693:3:61", + "nodeType": "YulIdentifier", + "src": "36693:3:61" + }, + "nativeSrc": "36693:37:61", + "nodeType": "YulFunctionCall", + "src": "36693:37:61" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "36689:3:61", + "nodeType": "YulIdentifier", + "src": "36689:3:61" + }, + "nativeSrc": "36689:42:61", + "nodeType": "YulFunctionCall", + "src": "36689:42:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "36674:3:61", + "nodeType": "YulIdentifier", + "src": "36674:3:61" + }, + "nativeSrc": "36674:58:61", + "nodeType": "YulFunctionCall", + "src": "36674:58:61" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "36659:6:61", + "nodeType": "YulIdentifier", + "src": "36659:6:61" + }, + "nativeSrc": "36659:74:61", + "nodeType": "YulFunctionCall", + "src": "36659:74:61" + }, + "nativeSrc": "36659:74:61", + "nodeType": "YulExpressionStatement", + "src": "36659:74:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "loopEnd", + "nativeSrc": "36550:7:61", + "nodeType": "YulIdentifier", + "src": "36550:7:61" + }, + { + "name": "newLen", + "nativeSrc": "36559:6:61", + "nodeType": "YulIdentifier", + "src": "36559:6:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "36547:2:61", + "nodeType": "YulIdentifier", + "src": "36547:2:61" + }, + "nativeSrc": "36547:19:61", + "nodeType": "YulFunctionCall", + "src": "36547:19:61" + }, + "nativeSrc": "36544:203:61", + "nodeType": "YulIf", + "src": "36544:203:61" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "36767:4:61", + "nodeType": "YulIdentifier", + "src": "36767:4:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "36781:1:61", + "nodeType": "YulLiteral", + "src": "36781:1:61", + "type": "", + "value": "1" + }, + { + "name": "newLen", + "nativeSrc": "36784:6:61", + "nodeType": "YulIdentifier", + "src": "36784:6:61" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "36777:3:61", + "nodeType": "YulIdentifier", + "src": "36777:3:61" + }, + "nativeSrc": "36777:14:61", + "nodeType": "YulFunctionCall", + "src": "36777:14:61" + }, + { + "kind": "number", + "nativeSrc": "36793:1:61", + "nodeType": "YulLiteral", + "src": "36793:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36773:3:61", + "nodeType": "YulIdentifier", + "src": "36773:3:61" + }, + "nativeSrc": "36773:22:61", + "nodeType": "YulFunctionCall", + "src": "36773:22:61" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "36760:6:61", + "nodeType": "YulIdentifier", + "src": "36760:6:61" + }, + "nativeSrc": "36760:36:61", + "nodeType": "YulFunctionCall", + "src": "36760:36:61" + }, + "nativeSrc": "36760:36:61", + "nodeType": "YulExpressionStatement", + "src": "36760:36:61" + } + ] + }, + "nativeSrc": "36058:748:61", + "nodeType": "YulCase", + "src": "36058:748:61", + "value": { + "kind": "number", + "nativeSrc": "36063:1:61", + "nodeType": "YulLiteral", + "src": "36063:1:61", + "type": "", + "value": "1" + } + }, + { + "body": { + "nativeSrc": "36823:234:61", + "nodeType": "YulBlock", + "src": "36823:234:61", + "statements": [ + { + "nativeSrc": "36837:14:61", + "nodeType": "YulVariableDeclaration", + "src": "36837:14:61", + "value": { + "kind": "number", + "nativeSrc": "36850:1:61", + "nodeType": "YulLiteral", + "src": "36850:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "36841:5:61", + "nodeType": "YulTypedName", + "src": "36841:5:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "36886:67:61", + "nodeType": "YulBlock", + "src": "36886:67:61", + "statements": [ + { + "nativeSrc": "36904:35:61", + "nodeType": "YulAssignment", + "src": "36904:35:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "36923:3:61", + "nodeType": "YulIdentifier", + "src": "36923:3:61" + }, + { + "name": "srcOffset", + "nativeSrc": "36928:9:61", + "nodeType": "YulIdentifier", + "src": "36928:9:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "36919:3:61", + "nodeType": "YulIdentifier", + "src": "36919:3:61" + }, + "nativeSrc": "36919:19:61", + "nodeType": "YulFunctionCall", + "src": "36919:19:61" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "36913:5:61", + "nodeType": "YulIdentifier", + "src": "36913:5:61" + }, + "nativeSrc": "36913:26:61", + "nodeType": "YulFunctionCall", + "src": "36913:26:61" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "36904:5:61", + "nodeType": "YulIdentifier", + "src": "36904:5:61" + } + ] + } + ] + }, + "condition": { + "name": "newLen", + "nativeSrc": "36867:6:61", + "nodeType": "YulIdentifier", + "src": "36867:6:61" + }, + "nativeSrc": "36864:89:61", + "nodeType": "YulIf", + "src": "36864:89:61" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "36973:4:61", + "nodeType": "YulIdentifier", + "src": "36973:4:61" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "37032:5:61", + "nodeType": "YulIdentifier", + "src": "37032:5:61" + }, + { + "name": "newLen", + "nativeSrc": "37039:6:61", + "nodeType": "YulIdentifier", + "src": "37039:6:61" + } + ], + "functionName": { + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nativeSrc": "36979:52:61", + "nodeType": "YulIdentifier", + "src": "36979:52:61" + }, + "nativeSrc": "36979:67:61", + "nodeType": "YulFunctionCall", + "src": "36979:67:61" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "36966:6:61", + "nodeType": "YulIdentifier", + "src": "36966:6:61" + }, + "nativeSrc": "36966:81:61", + "nodeType": "YulFunctionCall", + "src": "36966:81:61" + }, + "nativeSrc": "36966:81:61", + "nodeType": "YulExpressionStatement", + "src": "36966:81:61" + } + ] + }, + "nativeSrc": "36815:242:61", + "nodeType": "YulCase", + "src": "36815:242:61", + "value": "default" + } + ], + "expression": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "36038:6:61", + "nodeType": "YulIdentifier", + "src": "36038:6:61" + }, + { + "kind": "number", + "nativeSrc": "36046:2:61", + "nodeType": "YulLiteral", + "src": "36046:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "36035:2:61", + "nodeType": "YulIdentifier", + "src": "36035:2:61" + }, + "nativeSrc": "36035:14:61", + "nodeType": "YulFunctionCall", + "src": "36035:14:61" + }, + "nativeSrc": "36028:1029:61", + "nodeType": "YulSwitch", + "src": "36028:1029:61" + } + ] + }, + "name": "copy_byte_array_to_storage_from_t_string_storage_ptr_to_t_string_storage", + "nativeSrc": "35628:1435:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "slot", + "nativeSrc": "35710:4:61", + "nodeType": "YulTypedName", + "src": "35710:4:61", + "type": "" + }, + { + "name": "src", + "nativeSrc": "35716:3:61", + "nodeType": "YulTypedName", + "src": "35716:3:61", + "type": "" + } + ], + "src": "35628:1435:61" + }, + { + "body": { + "nativeSrc": "37100:95:61", + "nodeType": "YulBlock", + "src": "37100:95:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "37117:1:61", + "nodeType": "YulLiteral", + "src": "37117:1:61", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "37124:3:61", + "nodeType": "YulLiteral", + "src": "37124:3:61", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "37129:10:61", + "nodeType": "YulLiteral", + "src": "37129:10:61", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "37120:3:61", + "nodeType": "YulIdentifier", + "src": "37120:3:61" + }, + "nativeSrc": "37120:20:61", + "nodeType": "YulFunctionCall", + "src": "37120:20:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "37110:6:61", + "nodeType": "YulIdentifier", + "src": "37110:6:61" + }, + "nativeSrc": "37110:31:61", + "nodeType": "YulFunctionCall", + "src": "37110:31:61" + }, + "nativeSrc": "37110:31:61", + "nodeType": "YulExpressionStatement", + "src": "37110:31:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "37157:1:61", + "nodeType": "YulLiteral", + "src": "37157:1:61", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "37160:4:61", + "nodeType": "YulLiteral", + "src": "37160:4:61", + "type": "", + "value": "0x31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "37150:6:61", + "nodeType": "YulIdentifier", + "src": "37150:6:61" + }, + "nativeSrc": "37150:15:61", + "nodeType": "YulFunctionCall", + "src": "37150:15:61" + }, + "nativeSrc": "37150:15:61", + "nodeType": "YulExpressionStatement", + "src": "37150:15:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "37181:1:61", + "nodeType": "YulLiteral", + "src": "37181:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "37184:4:61", + "nodeType": "YulLiteral", + "src": "37184:4:61", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "37174:6:61", + "nodeType": "YulIdentifier", + "src": "37174:6:61" + }, + "nativeSrc": "37174:15:61", + "nodeType": "YulFunctionCall", + "src": "37174:15:61" + }, + "nativeSrc": "37174:15:61", + "nodeType": "YulExpressionStatement", + "src": "37174:15:61" + } + ] + }, + "name": "panic_error_0x31", + "nativeSrc": "37068:127:61", + "nodeType": "YulFunctionDefinition", + "src": "37068:127:61" + }, + { + "body": { + "nativeSrc": "37294:1249:61", + "nodeType": "YulBlock", + "src": "37294:1249:61", + "statements": [ + { + "nativeSrc": "37304:24:61", + "nodeType": "YulVariableDeclaration", + "src": "37304:24:61", + "value": { + "arguments": [ + { + "name": "src", + "nativeSrc": "37324:3:61", + "nodeType": "YulIdentifier", + "src": "37324:3:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "37318:5:61", + "nodeType": "YulIdentifier", + "src": "37318:5:61" + }, + "nativeSrc": "37318:10:61", + "nodeType": "YulFunctionCall", + "src": "37318:10:61" + }, + "variables": [ + { + "name": "newLen", + "nativeSrc": "37308:6:61", + "nodeType": "YulTypedName", + "src": "37308:6:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "37371:22:61", + "nodeType": "YulBlock", + "src": "37371:22:61", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "37373:16:61", + "nodeType": "YulIdentifier", + "src": "37373:16:61" + }, + "nativeSrc": "37373:18:61", + "nodeType": "YulFunctionCall", + "src": "37373:18:61" + }, + "nativeSrc": "37373:18:61", + "nodeType": "YulExpressionStatement", + "src": "37373:18:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "37343:6:61", + "nodeType": "YulIdentifier", + "src": "37343:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "37359:2:61", + "nodeType": "YulLiteral", + "src": "37359:2:61", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "37363:1:61", + "nodeType": "YulLiteral", + "src": "37363:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "37355:3:61", + "nodeType": "YulIdentifier", + "src": "37355:3:61" + }, + "nativeSrc": "37355:10:61", + "nodeType": "YulFunctionCall", + "src": "37355:10:61" + }, + { + "kind": "number", + "nativeSrc": "37367:1:61", + "nodeType": "YulLiteral", + "src": "37367:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "37351:3:61", + "nodeType": "YulIdentifier", + "src": "37351:3:61" + }, + "nativeSrc": "37351:18:61", + "nodeType": "YulFunctionCall", + "src": "37351:18:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "37340:2:61", + "nodeType": "YulIdentifier", + "src": "37340:2:61" + }, + "nativeSrc": "37340:30:61", + "nodeType": "YulFunctionCall", + "src": "37340:30:61" + }, + "nativeSrc": "37337:56:61", + "nodeType": "YulIf", + "src": "37337:56:61" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "37446:4:61", + "nodeType": "YulIdentifier", + "src": "37446:4:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "slot", + "nativeSrc": "37484:4:61", + "nodeType": "YulIdentifier", + "src": "37484:4:61" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "37478:5:61", + "nodeType": "YulIdentifier", + "src": "37478:5:61" + }, + "nativeSrc": "37478:11:61", + "nodeType": "YulFunctionCall", + "src": "37478:11:61" + } + ], + "functionName": { + "name": "extract_byte_array_length", + "nativeSrc": "37452:25:61", + "nodeType": "YulIdentifier", + "src": "37452:25:61" + }, + "nativeSrc": "37452:38:61", + "nodeType": "YulFunctionCall", + "src": "37452:38:61" + }, + { + "name": "newLen", + "nativeSrc": "37492:6:61", + "nodeType": "YulIdentifier", + "src": "37492:6:61" + } + ], + "functionName": { + "name": "clean_up_bytearray_end_slots_string_storage", + "nativeSrc": "37402:43:61", + "nodeType": "YulIdentifier", + "src": "37402:43:61" + }, + "nativeSrc": "37402:97:61", + "nodeType": "YulFunctionCall", + "src": "37402:97:61" + }, + "nativeSrc": "37402:97:61", + "nodeType": "YulExpressionStatement", + "src": "37402:97:61" + }, + { + "nativeSrc": "37508:18:61", + "nodeType": "YulVariableDeclaration", + "src": "37508:18:61", + "value": { + "kind": "number", + "nativeSrc": "37525:1:61", + "nodeType": "YulLiteral", + "src": "37525:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "srcOffset", + "nativeSrc": "37512:9:61", + "nodeType": "YulTypedName", + "src": "37512:9:61", + "type": "" + } + ] + }, + { + "nativeSrc": "37535:23:61", + "nodeType": "YulVariableDeclaration", + "src": "37535:23:61", + "value": { + "kind": "number", + "nativeSrc": "37554:4:61", + "nodeType": "YulLiteral", + "src": "37554:4:61", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "srcOffset_1", + "nativeSrc": "37539:11:61", + "nodeType": "YulTypedName", + "src": "37539:11:61", + "type": "" + } + ] + }, + { + "nativeSrc": "37567:17:61", + "nodeType": "YulAssignment", + "src": "37567:17:61", + "value": { + "kind": "number", + "nativeSrc": "37580:4:61", + "nodeType": "YulLiteral", + "src": "37580:4:61", + "type": "", + "value": "0x20" + }, + "variableNames": [ + { + "name": "srcOffset", + "nativeSrc": "37567:9:61", + "nodeType": "YulIdentifier", + "src": "37567:9:61" + } + ] + }, + { + "cases": [ + { + "body": { + "nativeSrc": "37630:656:61", + "nodeType": "YulBlock", + "src": "37630:656:61", + "statements": [ + { + "nativeSrc": "37644:35:61", + "nodeType": "YulVariableDeclaration", + "src": "37644:35:61", + "value": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "37663:6:61", + "nodeType": "YulIdentifier", + "src": "37663:6:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "37675:2:61", + "nodeType": "YulLiteral", + "src": "37675:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "37671:3:61", + "nodeType": "YulIdentifier", + "src": "37671:3:61" + }, + "nativeSrc": "37671:7:61", + "nodeType": "YulFunctionCall", + "src": "37671:7:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "37659:3:61", + "nodeType": "YulIdentifier", + "src": "37659:3:61" + }, + "nativeSrc": "37659:20:61", + "nodeType": "YulFunctionCall", + "src": "37659:20:61" + }, + "variables": [ + { + "name": "loopEnd", + "nativeSrc": "37648:7:61", + "nodeType": "YulTypedName", + "src": "37648:7:61", + "type": "" + } + ] + }, + { + "nativeSrc": "37692:49:61", + "nodeType": "YulVariableDeclaration", + "src": "37692:49:61", + "value": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "37736:4:61", + "nodeType": "YulIdentifier", + "src": "37736:4:61" + } + ], + "functionName": { + "name": "array_dataslot_string_storage", + "nativeSrc": "37706:29:61", + "nodeType": "YulIdentifier", + "src": "37706:29:61" + }, + "nativeSrc": "37706:35:61", + "nodeType": "YulFunctionCall", + "src": "37706:35:61" + }, + "variables": [ + { + "name": "dstPtr", + "nativeSrc": "37696:6:61", + "nodeType": "YulTypedName", + "src": "37696:6:61", + "type": "" + } + ] + }, + { + "nativeSrc": "37754:10:61", + "nodeType": "YulVariableDeclaration", + "src": "37754:10:61", + "value": { + "kind": "number", + "nativeSrc": "37763:1:61", + "nodeType": "YulLiteral", + "src": "37763:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "37758:1:61", + "nodeType": "YulTypedName", + "src": "37758:1:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "37841:172:61", + "nodeType": "YulBlock", + "src": "37841:172:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "37866:6:61", + "nodeType": "YulIdentifier", + "src": "37866:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "37884:3:61", + "nodeType": "YulIdentifier", + "src": "37884:3:61" + }, + { + "name": "srcOffset", + "nativeSrc": "37889:9:61", + "nodeType": "YulIdentifier", + "src": "37889:9:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "37880:3:61", + "nodeType": "YulIdentifier", + "src": "37880:3:61" + }, + "nativeSrc": "37880:19:61", + "nodeType": "YulFunctionCall", + "src": "37880:19:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "37874:5:61", + "nodeType": "YulIdentifier", + "src": "37874:5:61" + }, + "nativeSrc": "37874:26:61", + "nodeType": "YulFunctionCall", + "src": "37874:26:61" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "37859:6:61", + "nodeType": "YulIdentifier", + "src": "37859:6:61" + }, + "nativeSrc": "37859:42:61", + "nodeType": "YulFunctionCall", + "src": "37859:42:61" + }, + "nativeSrc": "37859:42:61", + "nodeType": "YulExpressionStatement", + "src": "37859:42:61" + }, + { + "nativeSrc": "37918:24:61", + "nodeType": "YulAssignment", + "src": "37918:24:61", + "value": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "37932:6:61", + "nodeType": "YulIdentifier", + "src": "37932:6:61" + }, + { + "kind": "number", + "nativeSrc": "37940:1:61", + "nodeType": "YulLiteral", + "src": "37940:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "37928:3:61", + "nodeType": "YulIdentifier", + "src": "37928:3:61" + }, + "nativeSrc": "37928:14:61", + "nodeType": "YulFunctionCall", + "src": "37928:14:61" + }, + "variableNames": [ + { + "name": "dstPtr", + "nativeSrc": "37918:6:61", + "nodeType": "YulIdentifier", + "src": "37918:6:61" + } + ] + }, + { + "nativeSrc": "37959:40:61", + "nodeType": "YulAssignment", + "src": "37959:40:61", + "value": { + "arguments": [ + { + "name": "srcOffset", + "nativeSrc": "37976:9:61", + "nodeType": "YulIdentifier", + "src": "37976:9:61" + }, + { + "name": "srcOffset_1", + "nativeSrc": "37987:11:61", + "nodeType": "YulIdentifier", + "src": "37987:11:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "37972:3:61", + "nodeType": "YulIdentifier", + "src": "37972:3:61" + }, + "nativeSrc": "37972:27:61", + "nodeType": "YulFunctionCall", + "src": "37972:27:61" + }, + "variableNames": [ + { + "name": "srcOffset", + "nativeSrc": "37959:9:61", + "nodeType": "YulIdentifier", + "src": "37959:9:61" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "37788:1:61", + "nodeType": "YulIdentifier", + "src": "37788:1:61" + }, + { + "name": "loopEnd", + "nativeSrc": "37791:7:61", + "nodeType": "YulIdentifier", + "src": "37791:7:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "37785:2:61", + "nodeType": "YulIdentifier", + "src": "37785:2:61" + }, + "nativeSrc": "37785:14:61", + "nodeType": "YulFunctionCall", + "src": "37785:14:61" + }, + "nativeSrc": "37777:236:61", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "37800:28:61", + "nodeType": "YulBlock", + "src": "37800:28:61", + "statements": [ + { + "nativeSrc": "37802:24:61", + "nodeType": "YulAssignment", + "src": "37802:24:61", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "37811:1:61", + "nodeType": "YulIdentifier", + "src": "37811:1:61" + }, + { + "name": "srcOffset_1", + "nativeSrc": "37814:11:61", + "nodeType": "YulIdentifier", + "src": "37814:11:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "37807:3:61", + "nodeType": "YulIdentifier", + "src": "37807:3:61" + }, + "nativeSrc": "37807:19:61", + "nodeType": "YulFunctionCall", + "src": "37807:19:61" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "37802:1:61", + "nodeType": "YulIdentifier", + "src": "37802:1:61" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "37781:3:61", + "nodeType": "YulBlock", + "src": "37781:3:61", + "statements": [] + }, + "src": "37777:236:61" + }, + { + "body": { + "nativeSrc": "38061:166:61", + "nodeType": "YulBlock", + "src": "38061:166:61", + "statements": [ + { + "nativeSrc": "38079:43:61", + "nodeType": "YulVariableDeclaration", + "src": "38079:43:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "38106:3:61", + "nodeType": "YulIdentifier", + "src": "38106:3:61" + }, + { + "name": "srcOffset", + "nativeSrc": "38111:9:61", + "nodeType": "YulIdentifier", + "src": "38111:9:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "38102:3:61", + "nodeType": "YulIdentifier", + "src": "38102:3:61" + }, + "nativeSrc": "38102:19:61", + "nodeType": "YulFunctionCall", + "src": "38102:19:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "38096:5:61", + "nodeType": "YulIdentifier", + "src": "38096:5:61" + }, + "nativeSrc": "38096:26:61", + "nodeType": "YulFunctionCall", + "src": "38096:26:61" + }, + "variables": [ + { + "name": "lastValue", + "nativeSrc": "38083:9:61", + "nodeType": "YulTypedName", + "src": "38083:9:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "38146:6:61", + "nodeType": "YulIdentifier", + "src": "38146:6:61" + }, + { + "arguments": [ + { + "name": "lastValue", + "nativeSrc": "38158:9:61", + "nodeType": "YulIdentifier", + "src": "38158:9:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "38185:1:61", + "nodeType": "YulLiteral", + "src": "38185:1:61", + "type": "", + "value": "3" + }, + { + "name": "newLen", + "nativeSrc": "38188:6:61", + "nodeType": "YulIdentifier", + "src": "38188:6:61" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "38181:3:61", + "nodeType": "YulIdentifier", + "src": "38181:3:61" + }, + "nativeSrc": "38181:14:61", + "nodeType": "YulFunctionCall", + "src": "38181:14:61" + }, + { + "kind": "number", + "nativeSrc": "38197:3:61", + "nodeType": "YulLiteral", + "src": "38197:3:61", + "type": "", + "value": "248" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "38177:3:61", + "nodeType": "YulIdentifier", + "src": "38177:3:61" + }, + "nativeSrc": "38177:24:61", + "nodeType": "YulFunctionCall", + "src": "38177:24:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "38207:1:61", + "nodeType": "YulLiteral", + "src": "38207:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "38203:3:61", + "nodeType": "YulIdentifier", + "src": "38203:3:61" + }, + "nativeSrc": "38203:6:61", + "nodeType": "YulFunctionCall", + "src": "38203:6:61" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "38173:3:61", + "nodeType": "YulIdentifier", + "src": "38173:3:61" + }, + "nativeSrc": "38173:37:61", + "nodeType": "YulFunctionCall", + "src": "38173:37:61" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "38169:3:61", + "nodeType": "YulIdentifier", + "src": "38169:3:61" + }, + "nativeSrc": "38169:42:61", + "nodeType": "YulFunctionCall", + "src": "38169:42:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "38154:3:61", + "nodeType": "YulIdentifier", + "src": "38154:3:61" + }, + "nativeSrc": "38154:58:61", + "nodeType": "YulFunctionCall", + "src": "38154:58:61" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "38139:6:61", + "nodeType": "YulIdentifier", + "src": "38139:6:61" + }, + "nativeSrc": "38139:74:61", + "nodeType": "YulFunctionCall", + "src": "38139:74:61" + }, + "nativeSrc": "38139:74:61", + "nodeType": "YulExpressionStatement", + "src": "38139:74:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "loopEnd", + "nativeSrc": "38032:7:61", + "nodeType": "YulIdentifier", + "src": "38032:7:61" + }, + { + "name": "newLen", + "nativeSrc": "38041:6:61", + "nodeType": "YulIdentifier", + "src": "38041:6:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "38029:2:61", + "nodeType": "YulIdentifier", + "src": "38029:2:61" + }, + "nativeSrc": "38029:19:61", + "nodeType": "YulFunctionCall", + "src": "38029:19:61" + }, + "nativeSrc": "38026:201:61", + "nodeType": "YulIf", + "src": "38026:201:61" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "38247:4:61", + "nodeType": "YulIdentifier", + "src": "38247:4:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "38261:1:61", + "nodeType": "YulLiteral", + "src": "38261:1:61", + "type": "", + "value": "1" + }, + { + "name": "newLen", + "nativeSrc": "38264:6:61", + "nodeType": "YulIdentifier", + "src": "38264:6:61" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "38257:3:61", + "nodeType": "YulIdentifier", + "src": "38257:3:61" + }, + "nativeSrc": "38257:14:61", + "nodeType": "YulFunctionCall", + "src": "38257:14:61" + }, + { + "kind": "number", + "nativeSrc": "38273:1:61", + "nodeType": "YulLiteral", + "src": "38273:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "38253:3:61", + "nodeType": "YulIdentifier", + "src": "38253:3:61" + }, + "nativeSrc": "38253:22:61", + "nodeType": "YulFunctionCall", + "src": "38253:22:61" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "38240:6:61", + "nodeType": "YulIdentifier", + "src": "38240:6:61" + }, + "nativeSrc": "38240:36:61", + "nodeType": "YulFunctionCall", + "src": "38240:36:61" + }, + "nativeSrc": "38240:36:61", + "nodeType": "YulExpressionStatement", + "src": "38240:36:61" + } + ] + }, + "nativeSrc": "37623:663:61", + "nodeType": "YulCase", + "src": "37623:663:61", + "value": { + "kind": "number", + "nativeSrc": "37628:1:61", + "nodeType": "YulLiteral", + "src": "37628:1:61", + "type": "", + "value": "1" + } + }, + { + "body": { + "nativeSrc": "38303:234:61", + "nodeType": "YulBlock", + "src": "38303:234:61", + "statements": [ + { + "nativeSrc": "38317:14:61", + "nodeType": "YulVariableDeclaration", + "src": "38317:14:61", + "value": { + "kind": "number", + "nativeSrc": "38330:1:61", + "nodeType": "YulLiteral", + "src": "38330:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "38321:5:61", + "nodeType": "YulTypedName", + "src": "38321:5:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "38366:67:61", + "nodeType": "YulBlock", + "src": "38366:67:61", + "statements": [ + { + "nativeSrc": "38384:35:61", + "nodeType": "YulAssignment", + "src": "38384:35:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "38403:3:61", + "nodeType": "YulIdentifier", + "src": "38403:3:61" + }, + { + "name": "srcOffset", + "nativeSrc": "38408:9:61", + "nodeType": "YulIdentifier", + "src": "38408:9:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "38399:3:61", + "nodeType": "YulIdentifier", + "src": "38399:3:61" + }, + "nativeSrc": "38399:19:61", + "nodeType": "YulFunctionCall", + "src": "38399:19:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "38393:5:61", + "nodeType": "YulIdentifier", + "src": "38393:5:61" + }, + "nativeSrc": "38393:26:61", + "nodeType": "YulFunctionCall", + "src": "38393:26:61" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "38384:5:61", + "nodeType": "YulIdentifier", + "src": "38384:5:61" + } + ] + } + ] + }, + "condition": { + "name": "newLen", + "nativeSrc": "38347:6:61", + "nodeType": "YulIdentifier", + "src": "38347:6:61" + }, + "nativeSrc": "38344:89:61", + "nodeType": "YulIf", + "src": "38344:89:61" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "38453:4:61", + "nodeType": "YulIdentifier", + "src": "38453:4:61" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "38512:5:61", + "nodeType": "YulIdentifier", + "src": "38512:5:61" + }, + { + "name": "newLen", + "nativeSrc": "38519:6:61", + "nodeType": "YulIdentifier", + "src": "38519:6:61" + } + ], + "functionName": { + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nativeSrc": "38459:52:61", + "nodeType": "YulIdentifier", + "src": "38459:52:61" + }, + "nativeSrc": "38459:67:61", + "nodeType": "YulFunctionCall", + "src": "38459:67:61" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "38446:6:61", + "nodeType": "YulIdentifier", + "src": "38446:6:61" + }, + "nativeSrc": "38446:81:61", + "nodeType": "YulFunctionCall", + "src": "38446:81:61" + }, + "nativeSrc": "38446:81:61", + "nodeType": "YulExpressionStatement", + "src": "38446:81:61" + } + ] + }, + "nativeSrc": "38295:242:61", + "nodeType": "YulCase", + "src": "38295:242:61", + "value": "default" + } + ], + "expression": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "37603:6:61", + "nodeType": "YulIdentifier", + "src": "37603:6:61" + }, + { + "kind": "number", + "nativeSrc": "37611:2:61", + "nodeType": "YulLiteral", + "src": "37611:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "37600:2:61", + "nodeType": "YulIdentifier", + "src": "37600:2:61" + }, + "nativeSrc": "37600:14:61", + "nodeType": "YulFunctionCall", + "src": "37600:14:61" + }, + "nativeSrc": "37593:944:61", + "nodeType": "YulSwitch", + "src": "37593:944:61" + } + ] + }, + "name": "copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage", + "nativeSrc": "37200:1343:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "slot", + "nativeSrc": "37279:4:61", + "nodeType": "YulTypedName", + "src": "37279:4:61", + "type": "" + }, + { + "name": "src", + "nativeSrc": "37285:3:61", + "nodeType": "YulTypedName", + "src": "37285:3:61", + "type": "" + } + ], + "src": "37200:1343:61" + }, + { + "body": { + "nativeSrc": "38677:145:61", + "nodeType": "YulBlock", + "src": "38677:145:61", + "statements": [ + { + "nativeSrc": "38687:26:61", + "nodeType": "YulAssignment", + "src": "38687:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "38699:9:61", + "nodeType": "YulIdentifier", + "src": "38699:9:61" + }, + { + "kind": "number", + "nativeSrc": "38710:2:61", + "nodeType": "YulLiteral", + "src": "38710:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "38695:3:61", + "nodeType": "YulIdentifier", + "src": "38695:3:61" + }, + "nativeSrc": "38695:18:61", + "nodeType": "YulFunctionCall", + "src": "38695:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "38687:4:61", + "nodeType": "YulIdentifier", + "src": "38687:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "38729:9:61", + "nodeType": "YulIdentifier", + "src": "38729:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "38744:6:61", + "nodeType": "YulIdentifier", + "src": "38744:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "38760:3:61", + "nodeType": "YulLiteral", + "src": "38760:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "38765:1:61", + "nodeType": "YulLiteral", + "src": "38765:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "38756:3:61", + "nodeType": "YulIdentifier", + "src": "38756:3:61" + }, + "nativeSrc": "38756:11:61", + "nodeType": "YulFunctionCall", + "src": "38756:11:61" + }, + { + "kind": "number", + "nativeSrc": "38769:1:61", + "nodeType": "YulLiteral", + "src": "38769:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "38752:3:61", + "nodeType": "YulIdentifier", + "src": "38752:3:61" + }, + "nativeSrc": "38752:19:61", + "nodeType": "YulFunctionCall", + "src": "38752:19:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "38740:3:61", + "nodeType": "YulIdentifier", + "src": "38740:3:61" + }, + "nativeSrc": "38740:32:61", + "nodeType": "YulFunctionCall", + "src": "38740:32:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "38722:6:61", + "nodeType": "YulIdentifier", + "src": "38722:6:61" + }, + "nativeSrc": "38722:51:61", + "nodeType": "YulFunctionCall", + "src": "38722:51:61" + }, + "nativeSrc": "38722:51:61", + "nodeType": "YulExpressionStatement", + "src": "38722:51:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "38793:9:61", + "nodeType": "YulIdentifier", + "src": "38793:9:61" + }, + { + "kind": "number", + "nativeSrc": "38804:2:61", + "nodeType": "YulLiteral", + "src": "38804:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "38789:3:61", + "nodeType": "YulIdentifier", + "src": "38789:3:61" + }, + "nativeSrc": "38789:18:61", + "nodeType": "YulFunctionCall", + "src": "38789:18:61" + }, + { + "name": "value1", + "nativeSrc": "38809:6:61", + "nodeType": "YulIdentifier", + "src": "38809:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "38782:6:61", + "nodeType": "YulIdentifier", + "src": "38782:6:61" + }, + "nativeSrc": "38782:34:61", + "nodeType": "YulFunctionCall", + "src": "38782:34:61" + }, + "nativeSrc": "38782:34:61", + "nodeType": "YulExpressionStatement", + "src": "38782:34:61" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed", + "nativeSrc": "38548:274:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "38638:9:61", + "nodeType": "YulTypedName", + "src": "38638:9:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "38649:6:61", + "nodeType": "YulTypedName", + "src": "38649:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "38657:6:61", + "nodeType": "YulTypedName", + "src": "38657:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "38668:4:61", + "nodeType": "YulTypedName", + "src": "38668:4:61", + "type": "" + } + ], + "src": "38548:274:61" + }, + { + "body": { + "nativeSrc": "38859:95:61", + "nodeType": "YulBlock", + "src": "38859:95:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "38876:1:61", + "nodeType": "YulLiteral", + "src": "38876:1:61", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "38883:3:61", + "nodeType": "YulLiteral", + "src": "38883:3:61", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "38888:10:61", + "nodeType": "YulLiteral", + "src": "38888:10:61", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "38879:3:61", + "nodeType": "YulIdentifier", + "src": "38879:3:61" + }, + "nativeSrc": "38879:20:61", + "nodeType": "YulFunctionCall", + "src": "38879:20:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "38869:6:61", + "nodeType": "YulIdentifier", + "src": "38869:6:61" + }, + "nativeSrc": "38869:31:61", + "nodeType": "YulFunctionCall", + "src": "38869:31:61" + }, + "nativeSrc": "38869:31:61", + "nodeType": "YulExpressionStatement", + "src": "38869:31:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "38916:1:61", + "nodeType": "YulLiteral", + "src": "38916:1:61", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "38919:4:61", + "nodeType": "YulLiteral", + "src": "38919:4:61", + "type": "", + "value": "0x21" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "38909:6:61", + "nodeType": "YulIdentifier", + "src": "38909:6:61" + }, + "nativeSrc": "38909:15:61", + "nodeType": "YulFunctionCall", + "src": "38909:15:61" + }, + "nativeSrc": "38909:15:61", + "nodeType": "YulExpressionStatement", + "src": "38909:15:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "38940:1:61", + "nodeType": "YulLiteral", + "src": "38940:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "38943:4:61", + "nodeType": "YulLiteral", + "src": "38943:4:61", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "38933:6:61", + "nodeType": "YulIdentifier", + "src": "38933:6:61" + }, + "nativeSrc": "38933:15:61", + "nodeType": "YulFunctionCall", + "src": "38933:15:61" + }, + "nativeSrc": "38933:15:61", + "nodeType": "YulExpressionStatement", + "src": "38933:15:61" + } + ] + }, + "name": "panic_error_0x21", + "nativeSrc": "38827:127:61", + "nodeType": "YulFunctionDefinition", + "src": "38827:127:61" + }, + { + "body": { + "nativeSrc": "39096:150:61", + "nodeType": "YulBlock", + "src": "39096:150:61", + "statements": [ + { + "nativeSrc": "39106:27:61", + "nodeType": "YulVariableDeclaration", + "src": "39106:27:61", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "39126:6:61", + "nodeType": "YulIdentifier", + "src": "39126:6:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "39120:5:61", + "nodeType": "YulIdentifier", + "src": "39120:5:61" + }, + "nativeSrc": "39120:13:61", + "nodeType": "YulFunctionCall", + "src": "39120:13:61" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "39110:6:61", + "nodeType": "YulTypedName", + "src": "39110:6:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "39181:6:61", + "nodeType": "YulIdentifier", + "src": "39181:6:61" + }, + { + "kind": "number", + "nativeSrc": "39189:4:61", + "nodeType": "YulLiteral", + "src": "39189:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "39177:3:61", + "nodeType": "YulIdentifier", + "src": "39177:3:61" + }, + "nativeSrc": "39177:17:61", + "nodeType": "YulFunctionCall", + "src": "39177:17:61" + }, + { + "name": "pos", + "nativeSrc": "39196:3:61", + "nodeType": "YulIdentifier", + "src": "39196:3:61" + }, + { + "name": "length", + "nativeSrc": "39201:6:61", + "nodeType": "YulIdentifier", + "src": "39201:6:61" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "39142:34:61", + "nodeType": "YulIdentifier", + "src": "39142:34:61" + }, + "nativeSrc": "39142:66:61", + "nodeType": "YulFunctionCall", + "src": "39142:66:61" + }, + "nativeSrc": "39142:66:61", + "nodeType": "YulExpressionStatement", + "src": "39142:66:61" + }, + { + "nativeSrc": "39217:23:61", + "nodeType": "YulAssignment", + "src": "39217:23:61", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "39228:3:61", + "nodeType": "YulIdentifier", + "src": "39228:3:61" + }, + { + "name": "length", + "nativeSrc": "39233:6:61", + "nodeType": "YulIdentifier", + "src": "39233:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "39224:3:61", + "nodeType": "YulIdentifier", + "src": "39224:3:61" + }, + "nativeSrc": "39224:16:61", + "nodeType": "YulFunctionCall", + "src": "39224:16:61" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "39217:3:61", + "nodeType": "YulIdentifier", + "src": "39217:3:61" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nativeSrc": "38959:287:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "39072:3:61", + "nodeType": "YulTypedName", + "src": "39072:3:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "39077:6:61", + "nodeType": "YulTypedName", + "src": "39077:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "39088:3:61", + "nodeType": "YulTypedName", + "src": "39088:3:61", + "type": "" + } + ], + "src": "38959:287:61" + }, + { + "body": { + "nativeSrc": "39432:217:61", + "nodeType": "YulBlock", + "src": "39432:217:61", + "statements": [ + { + "nativeSrc": "39442:27:61", + "nodeType": "YulAssignment", + "src": "39442:27:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "39454:9:61", + "nodeType": "YulIdentifier", + "src": "39454:9:61" + }, + { + "kind": "number", + "nativeSrc": "39465:3:61", + "nodeType": "YulLiteral", + "src": "39465:3:61", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "39450:3:61", + "nodeType": "YulIdentifier", + "src": "39450:3:61" + }, + "nativeSrc": "39450:19:61", + "nodeType": "YulFunctionCall", + "src": "39450:19:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "39442:4:61", + "nodeType": "YulIdentifier", + "src": "39442:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "39485:9:61", + "nodeType": "YulIdentifier", + "src": "39485:9:61" + }, + { + "name": "value0", + "nativeSrc": "39496:6:61", + "nodeType": "YulIdentifier", + "src": "39496:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "39478:6:61", + "nodeType": "YulIdentifier", + "src": "39478:6:61" + }, + "nativeSrc": "39478:25:61", + "nodeType": "YulFunctionCall", + "src": "39478:25:61" + }, + "nativeSrc": "39478:25:61", + "nodeType": "YulExpressionStatement", + "src": "39478:25:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "39523:9:61", + "nodeType": "YulIdentifier", + "src": "39523:9:61" + }, + { + "kind": "number", + "nativeSrc": "39534:2:61", + "nodeType": "YulLiteral", + "src": "39534:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "39519:3:61", + "nodeType": "YulIdentifier", + "src": "39519:3:61" + }, + "nativeSrc": "39519:18:61", + "nodeType": "YulFunctionCall", + "src": "39519:18:61" + }, + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "39543:6:61", + "nodeType": "YulIdentifier", + "src": "39543:6:61" + }, + { + "kind": "number", + "nativeSrc": "39551:4:61", + "nodeType": "YulLiteral", + "src": "39551:4:61", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "39539:3:61", + "nodeType": "YulIdentifier", + "src": "39539:3:61" + }, + "nativeSrc": "39539:17:61", + "nodeType": "YulFunctionCall", + "src": "39539:17:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "39512:6:61", + "nodeType": "YulIdentifier", + "src": "39512:6:61" + }, + "nativeSrc": "39512:45:61", + "nodeType": "YulFunctionCall", + "src": "39512:45:61" + }, + "nativeSrc": "39512:45:61", + "nodeType": "YulExpressionStatement", + "src": "39512:45:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "39577:9:61", + "nodeType": "YulIdentifier", + "src": "39577:9:61" + }, + { + "kind": "number", + "nativeSrc": "39588:2:61", + "nodeType": "YulLiteral", + "src": "39588:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "39573:3:61", + "nodeType": "YulIdentifier", + "src": "39573:3:61" + }, + "nativeSrc": "39573:18:61", + "nodeType": "YulFunctionCall", + "src": "39573:18:61" + }, + { + "name": "value2", + "nativeSrc": "39593:6:61", + "nodeType": "YulIdentifier", + "src": "39593:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "39566:6:61", + "nodeType": "YulIdentifier", + "src": "39566:6:61" + }, + "nativeSrc": "39566:34:61", + "nodeType": "YulFunctionCall", + "src": "39566:34:61" + }, + "nativeSrc": "39566:34:61", + "nodeType": "YulExpressionStatement", + "src": "39566:34:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "39620:9:61", + "nodeType": "YulIdentifier", + "src": "39620:9:61" + }, + { + "kind": "number", + "nativeSrc": "39631:2:61", + "nodeType": "YulLiteral", + "src": "39631:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "39616:3:61", + "nodeType": "YulIdentifier", + "src": "39616:3:61" + }, + "nativeSrc": "39616:18:61", + "nodeType": "YulFunctionCall", + "src": "39616:18:61" + }, + { + "name": "value3", + "nativeSrc": "39636:6:61", + "nodeType": "YulIdentifier", + "src": "39636:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "39609:6:61", + "nodeType": "YulIdentifier", + "src": "39609:6:61" + }, + "nativeSrc": "39609:34:61", + "nodeType": "YulFunctionCall", + "src": "39609:34:61" + }, + "nativeSrc": "39609:34:61", + "nodeType": "YulExpressionStatement", + "src": "39609:34:61" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed", + "nativeSrc": "39251:398:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "39377:9:61", + "nodeType": "YulTypedName", + "src": "39377:9:61", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "39388:6:61", + "nodeType": "YulTypedName", + "src": "39388:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "39396:6:61", + "nodeType": "YulTypedName", + "src": "39396:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "39404:6:61", + "nodeType": "YulTypedName", + "src": "39404:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "39412:6:61", + "nodeType": "YulTypedName", + "src": "39412:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "39423:4:61", + "nodeType": "YulTypedName", + "src": "39423:4:61", + "type": "" + } + ], + "src": "39251:398:61" + } + ] + }, + "contents": "{\n { }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_string(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_array_string_dyn(value, pos) -> end\n {\n let pos_1 := pos\n let length := mload(value)\n mstore(pos, length)\n let _1 := 0x20\n pos := add(pos, 0x20)\n let tail := add(add(pos_1, shl(5, length)), 0x20)\n let srcPtr := add(value, 0x20)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, add(sub(tail, pos_1), not(31)))\n tail := abi_encode_string(mload(srcPtr), tail)\n srcPtr := add(srcPtr, _1)\n pos := add(pos, _1)\n }\n end := tail\n }\n function abi_encode_tuple_t_array$_t_string_memory_ptr_$dyn_memory_ptr__to_t_array$_t_string_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_array_string_dyn(value0, add(headStart, 32))\n }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, 32)\n mstore(headStart, 32)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, 32)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, mload(srcPtr))\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function validator_revert_address(value)\n {\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function allocate_memory(size) -> memPtr\n {\n memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n if or(gt(newFreePtr, sub(shl(64, 1), 1)), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n }\n function array_allocation_size_bytes(length) -> size\n {\n if gt(length, sub(shl(64, 1), 1)) { panic_error_0x41() }\n size := add(and(add(length, 31), not(31)), 0x20)\n }\n function abi_decode_bytes(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := calldataload(offset)\n let array_1 := allocate_memory(array_allocation_size_bytes(_1))\n mstore(array_1, _1)\n if gt(add(add(offset, _1), 0x20), end) { revert(0, 0) }\n calldatacopy(add(array_1, 0x20), add(offset, 0x20), _1)\n mstore(add(add(array_1, _1), 0x20), 0)\n array := array_1\n }\n function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n value2 := calldataload(add(headStart, 64))\n let offset := calldataload(add(headStart, 96))\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n value3 := abi_decode_bytes(add(headStart, offset), dataEnd)\n }\n function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, shl(224, 0xffffffff)))\n }\n function abi_decode_tuple_t_string_memory_ptr(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_contract$_IERC721_$5067t_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n value2 := calldataload(add(headStart, 64))\n }\n function abi_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_decode_array_string_dyn(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := calldataload(offset)\n let _2 := 0x20\n let _3 := sub(shl(64, 1), 1)\n if gt(_1, _3) { panic_error_0x41() }\n let _4 := shl(5, _1)\n let dst := allocate_memory(add(_4, _2))\n let dst_1 := dst\n mstore(dst, _1)\n dst := add(dst, _2)\n let srcEnd := add(add(offset, _4), _2)\n if gt(srcEnd, end) { revert(0, 0) }\n let src := add(offset, _2)\n for { } lt(src, srcEnd) { src := add(src, _2) }\n {\n let innerOffset := calldataload(src)\n if gt(innerOffset, _3)\n {\n let _5 := 0\n revert(_5, _5)\n }\n mstore(dst, abi_decode_bytes(add(add(offset, innerOffset), _2), end))\n dst := add(dst, _2)\n }\n array := dst_1\n }\n function abi_decode_tuple_t_array$_t_string_memory_ptr_$dyn_memory_ptr(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n value0 := abi_decode_array_string_dyn(add(headStart, offset), dataEnd)\n }\n function abi_decode_tuple_t_addresst_addresst_addresst_uint256t_uint256t_uint256t_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7\n {\n if slt(sub(dataEnd, headStart), 256) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n let value_2 := calldataload(add(headStart, 64))\n validator_revert_address(value_2)\n value2 := value_2\n value3 := calldataload(add(headStart, 96))\n value4 := calldataload(add(headStart, 128))\n value5 := calldataload(add(headStart, 160))\n value6 := calldataload(add(headStart, 192))\n let offset := calldataload(add(headStart, 224))\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n value7 := abi_decode_bytes(add(headStart, offset), dataEnd)\n }\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n }\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_decode_uint16(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_uint256t_uint16t_uint16(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := abi_decode_uint16(add(headStart, 32))\n value2 := abi_decode_uint16(add(headStart, 64))\n }\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n let value := calldataload(add(headStart, 32))\n validator_revert_address(value)\n value1 := value\n }\n function abi_decode_tuple_t_addresst_addresst_uint256t_addresst_address(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n value2 := calldataload(add(headStart, 64))\n let value_2 := calldataload(add(headStart, 96))\n validator_revert_address(value_2)\n value3 := value_2\n let value_3 := calldataload(add(headStart, 128))\n validator_revert_address(value_3)\n value4 := value_3\n }\n function abi_decode_tuple_t_string_memory_ptrt_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := calldataload(headStart)\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n value1 := calldataload(add(headStart, 32))\n }\n function validator_revert_bool(value)\n {\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_string_memory_ptrt_uint256t_boolt_array$_t_string_memory_ptr_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := sub(shl(64, 1), 1)\n if gt(offset, _1) { revert(0, 0) }\n value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n value1 := calldataload(add(headStart, 32))\n let value := calldataload(add(headStart, 64))\n validator_revert_bool(value)\n value2 := value\n let offset_1 := calldataload(add(headStart, 96))\n if gt(offset_1, _1) { revert(0, 0) }\n value3 := abi_decode_array_string_dyn(add(headStart, offset_1), dataEnd)\n }\n function abi_decode_tuple_t_addresst_addresst_addresst_uint256t_uint256t_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n {\n if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n let value_2 := calldataload(add(headStart, 64))\n validator_revert_address(value_2)\n value2 := value_2\n value3 := calldataload(add(headStart, 96))\n value4 := calldataload(add(headStart, 128))\n value5 := calldataload(add(headStart, 160))\n value6 := calldataload(add(headStart, 192))\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let offset := calldataload(add(headStart, 32))\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n value1 := calldataload(add(headStart, 32))\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_decode_tuple_t_uint256t_uint256t_uint16t_uint16(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n value2 := abi_decode_uint16(add(headStart, 64))\n value3 := abi_decode_uint16(add(headStart, 96))\n }\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := sub(shl(64, 1), 1)\n if gt(offset, _1) { revert(0, 0) }\n value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n let offset_1 := calldataload(add(headStart, 32))\n if gt(offset_1, _1) { revert(0, 0) }\n value1 := abi_decode_bytes(add(headStart, offset_1), dataEnd)\n }\n function abi_encode_struct_Service(value, pos) -> end\n {\n let tail := add(pos, 0x60)\n mstore(pos, mload(value))\n let _1 := 0x20\n mstore(add(pos, 0x20), iszero(iszero(mload(add(value, 0x20)))))\n let memberValue0 := mload(add(value, 0x40))\n mstore(add(pos, 0x40), 0x60)\n let pos_1 := tail\n let length := mload(memberValue0)\n mstore(tail, length)\n pos_1 := add(pos, 128)\n let tail_1 := add(add(pos, shl(5, length)), 128)\n let srcPtr := add(memberValue0, 0x20)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos_1, add(sub(tail_1, pos), not(127)))\n tail_1 := abi_encode_string(mload(srcPtr), tail_1)\n srcPtr := add(srcPtr, _1)\n pos_1 := add(pos_1, _1)\n }\n end := tail_1\n }\n function abi_encode_tuple_t_array$_t_string_memory_ptr_$dyn_memory_ptr_t_array$_t_struct$_Service_$16962_memory_ptr_$dyn_memory_ptr__to_t_array$_t_string_memory_ptr_$dyn_memory_ptr_t_array$_t_struct$_Service_$16962_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n let tail_1 := abi_encode_array_string_dyn(value0, add(headStart, 64))\n let _1 := 32\n mstore(add(headStart, _1), sub(tail_1, headStart))\n let pos := tail_1\n let length := mload(value1)\n mstore(tail_1, length)\n pos := add(tail_1, _1)\n let tail_2 := add(add(tail_1, shl(5, length)), _1)\n let srcPtr := add(value1, _1)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, add(sub(tail_2, tail_1), not(31)))\n tail_2 := abi_encode_struct_Service(mload(srcPtr), tail_2)\n srcPtr := add(srcPtr, _1)\n pos := add(pos, _1)\n }\n tail := tail_2\n }\n function abi_encode_tuple_t_bytes_memory_ptr__to_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_string(value0, add(headStart, 32))\n }\n function abi_decode_tuple_t_bytes32t_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n }\n function abi_encode_tuple_t_uint256_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n }\n function abi_decode_tuple_t_contract$_IERC20_$4513t_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n value2 := calldataload(add(headStart, 64))\n }\n function abi_decode_tuple_t_bool(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_bool(value)\n value0 := value\n }\n function abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, 32)\n mstore(headStart, 32)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, 32)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), sub(shl(160, 1), 1)))\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_decode_tuple_t_string_memory_ptrt_bool(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := calldataload(headStart)\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n let value := calldataload(add(headStart, 32))\n validator_revert_bool(value)\n value1 := value\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_string(value0, add(headStart, 32))\n }\n function abi_decode_tuple_t_uint256t_uint256t_contract$_IERC20_$4513(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n let value := calldataload(add(headStart, 64))\n validator_revert_address(value)\n value2 := value\n }\n function abi_encode_tuple_t_struct$_Service_$16962_memory_ptr__to_t_struct$_Service_$16962_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_struct_Service(value0, add(headStart, 32))\n }\n function abi_decode_tuple_t_addresst_string_memory_ptrt_uint256t_uint256t_contract$_IERC20_$4513t_uint256t_bool(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n {\n if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let offset := calldataload(add(headStart, 32))\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\n value2 := calldataload(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n let value_1 := calldataload(add(headStart, 128))\n validator_revert_address(value_1)\n value4 := value_1\n value5 := calldataload(add(headStart, 160))\n let value_2 := calldataload(add(headStart, 192))\n validator_revert_bool(value_2)\n value6 := value_2\n }\n function abi_decode_tuple_t_string_memory_ptrt_array$_t_string_memory_ptr_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := sub(shl(64, 1), 1)\n if gt(offset, _1) { revert(0, 0) }\n value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n let offset_1 := calldataload(add(headStart, 32))\n if gt(offset_1, _1) { revert(0, 0) }\n value1 := abi_decode_array_string_dyn(add(headStart, offset_1), dataEnd)\n }\n function abi_decode_tuple_t_address_payablet_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n value1 := calldataload(add(headStart, 32))\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function abi_decode_tuple_t_string_memory_ptr_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := mload(headStart)\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n let _1 := add(headStart, offset)\n if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n let _2 := mload(_1)\n let array := allocate_memory(array_allocation_size_bytes(_2))\n mstore(array, _2)\n if gt(add(add(_1, _2), 32), dataEnd) { revert(0, 0) }\n copy_memory_to_memory_with_cleanup(add(_1, 32), add(array, 32), _2)\n value0 := array\n }\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n }\n function abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_library_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n }\n function abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_bool(value)\n value0 := value\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n diff := sub(x, y)\n if gt(diff, x) { panic_error_0x11() }\n }\n function abi_encode_tuple_t_address_t_uint256_t_uint16_t_uint16__to_t_address_t_uint256_t_uint16_t_uint16__fromStack_library_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n let _1 := 0xffff\n mstore(add(headStart, 64), and(value2, _1))\n mstore(add(headStart, 96), and(value3, _1))\n }\n function abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(64, 1), 1)))\n }\n function abi_encode_tuple_t_bytes32_t_address_t_address_t_address_t_uint256_t_uint256_t_uint256_t_uint256__to_t_bytes32_t_address_t_address_t_address_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 256)\n mstore(headStart, value0)\n let _1 := sub(shl(160, 1), 1)\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), and(value2, _1))\n mstore(add(headStart, 96), and(value3, _1))\n mstore(add(headStart, 128), value4)\n mstore(add(headStart, 160), value5)\n mstore(add(headStart, 192), value6)\n mstore(add(headStart, 224), value7)\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function checked_mul_t_uint256(x, y) -> product\n {\n product := mul(x, y)\n if iszero(or(iszero(x), eq(y, div(product, x)))) { panic_error_0x11() }\n }\n function checked_div_t_uint256(x, y) -> r\n {\n if iszero(y)\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n r := div(x, y)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum) { panic_error_0x11() }\n }\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_address_t_address_t_uint256_t_uint256_t_uint256_t_uint256__to_t_address_t_address_t_uint256_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value5, value4, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 192)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), value4)\n mstore(add(headStart, 160), value5)\n }\n function abi_encode_tuple_t_address_t_uint256_t_uint256_t_uint16_t_uint16__to_t_address_t_uint256_t_uint256_t_uint16_t_uint16__fromStack_library_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 160)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n let _1 := 0xffff\n mstore(add(headStart, 96), and(value3, _1))\n mstore(add(headStart, 128), and(value4, _1))\n }\n function abi_encode_tuple_packed_t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n {\n mstore(pos, shl(240, 6401))\n mstore(add(pos, 2), value0)\n mstore(add(pos, 34), value1)\n end := add(pos, 66)\n }\n function abi_encode_tuple_t_address_t_uint256_t_uint256_t_contract$_IERC20_$4513__to_t_address_t_uint256_t_uint256_t_address__fromStack_library_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), and(value3, _1))\n }\n function abi_encode_tuple_t_address_t_address_t_string_memory_ptr_t_uint256_t_uint256_t_contract$_IERC20_$4513_t_uint256_t_bool__to_t_address_t_address_t_string_memory_ptr_t_uint256_t_uint256_t_address_t_uint256_t_bool__fromStack_library_reversed(headStart, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n {\n let _1 := 256\n let _2 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _2))\n mstore(add(headStart, 32), and(value1, _2))\n mstore(add(headStart, 64), _1)\n tail := abi_encode_string(value2, add(headStart, _1))\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), value4)\n mstore(add(headStart, 160), and(value5, _2))\n mstore(add(headStart, 192), value6)\n mstore(add(headStart, 224), iszero(iszero(value7)))\n }\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_library_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n }\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function abi_encode_tuple_t_bytes32_t_bytes32_t_bytes32_t_uint256__to_t_bytes32_t_bytes32_t_bytes32_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n }\n function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n }\n function abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n }\n function abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n { end := pos }\n function array_dataslot_string_storage(ptr) -> data\n {\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n }\n function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n {\n if gt(len, 31)\n {\n let _1 := 0\n mstore(0, array)\n let data := keccak256(0, 0x20)\n let deleteStart := add(data, shr(5, add(startIndex, 31)))\n if lt(startIndex, 0x20) { deleteStart := data }\n let _2 := add(data, shr(5, add(len, 31)))\n let start := deleteStart\n for { } lt(start, _2) { start := add(start, 1) }\n { sstore(start, _1) }\n }\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n {\n used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n {\n let newLen := mload(src)\n if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n let srcOffset := 0\n let srcOffset_1 := 0x20\n srcOffset := 0x20\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(31))\n let dstPtr := array_dataslot_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, srcOffset_1)\n }\n if lt(loopEnd, newLen)\n {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n }\n sstore(slot, add(shl(1, newLen), 1))\n }\n default {\n let value := 0\n if newLen\n {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n function abi_encode_tuple_packed_t_string_storage__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let ret := 0\n let slotValue := sload(value0)\n let length := extract_byte_array_length(slotValue)\n let _1 := 1\n switch and(slotValue, 1)\n case 0 {\n mstore(pos, and(slotValue, not(255)))\n ret := add(pos, mul(length, iszero(iszero(length))))\n }\n case 1 {\n mstore(0, value0)\n let _2 := 0x20\n let dataPos := keccak256(0, 0x20)\n let i := 0\n for { } lt(i, length) { i := add(i, _2) }\n {\n mstore(add(pos, i), sload(dataPos))\n dataPos := add(dataPos, _1)\n }\n ret := add(pos, length)\n }\n end := ret\n }\n function copy_byte_array_to_storage_from_t_string_storage_ptr_to_t_string_storage(slot, src)\n {\n if eq(slot, src) { leave }\n let newLen := extract_byte_array_length(sload(src))\n if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n let srcOffset := 0\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(31))\n let src_1 := array_dataslot_string_storage(src)\n let dstPtr := array_dataslot_string_storage(slot)\n let i := srcOffset\n for { } lt(i, loopEnd) { i := add(i, 0x20) }\n {\n sstore(dstPtr, sload(add(src_1, srcOffset)))\n let _1 := 1\n dstPtr := add(dstPtr, _1)\n srcOffset := add(srcOffset, _1)\n }\n if lt(loopEnd, newLen)\n {\n let lastValue := sload(add(src_1, srcOffset))\n sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n }\n sstore(slot, add(shl(1, newLen), 1))\n }\n default {\n let value := 0\n if newLen\n {\n value := sload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n function panic_error_0x31()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x31)\n revert(0, 0x24)\n }\n function copy_byte_array_to_storage_from_t_bytes_memory_ptr_to_t_bytes_storage(slot, src)\n {\n let newLen := mload(src)\n if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n let srcOffset := 0\n let srcOffset_1 := 0x20\n srcOffset := 0x20\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(31))\n let dstPtr := array_dataslot_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, srcOffset_1)\n }\n if lt(loopEnd, newLen)\n {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n }\n sstore(slot, add(shl(1, newLen), 1))\n }\n default {\n let value := 0\n if newLen\n {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n function abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n }\n function panic_error_0x21()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n mstore(headStart, value0)\n mstore(add(headStart, 32), and(value1, 0xff))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n }\n}", + "id": 61, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": { + "860": [ + { + "length": 32, + "start": 12144 + }, + { + "length": 32, + "start": 12185 + }, + { + "length": 32, + "start": 13059 + } + ] + }, + "linkReferences": { + "contracts/booking-token/BookingTokenOperator.sol": { + "BookingTokenOperator": [ + { + "length": 20, + "start": 4213 + }, + { + "length": 20, + "start": 5074 + }, + { + "length": 20, + "start": 7545 + }, + { + "length": 20, + "start": 7729 + }, + { + "length": 20, + "start": 9248 + }, + { + "length": 20, + "start": 9648 + }, + { + "length": 20, + "start": 10201 + }, + { + "length": 20, + "start": 10359 + }, + { + "length": 20, + "start": 11044 + } + ] + } + }, + "object": "60806040526004361061039d5760003560e01c806301ffc9a7146103a957806308564c19146103de5780630ede80d614610400578063136f50ca14610430578063150b7a021461045257806318274da4146104965780631aca6376146104b65780631c54f0f7146104d85780631c5db99e146104f857806320606b701461051857806321b9b9291461053a578063241bbbfc14610568578063248a9ca31461057d5780632a1193801461059d5780632f2ff15d146105bd578063319d13f3146105dd57806333746274146105fd57806333e1a2231461061f57806336568abe1461063f578063383aba871461065f57806339e4c7051461068157806341bf7c69146106a157806342072bbd146106c1578063432cf639146106d65780634781ae53146106f65780634f1ef286146107165780634f3f46391461072957806351889d6b1461074b57806352d1902d1461076b5780635c988994146107805780635e07f869146107a057806363e86cc8146107c0578063647d8f6d146107e2578063658db0af146108025780636d69fcaf146108255780636fc22cd11461084557806374aa20481461086557806374fe60e9146108855780637512e55b146108a557806376319190146108c55780637eec56c7146108e5578063852b3ccb14610908578063857cdbb81461092a57806385f438c1146109575780638c20f574146109795780638f69347d146109995780639010d07c146109b957806391d14854146109d9578063930659eb146109f95780639db5dbe414610a29578063a217fddf14610a49578063a31aa03914610a5e578063a3246ad314610a7e578063a7d022f814610aab578063ad3cb1cc14610acb578063b512463514610afc578063be66718814610b1c578063c162d7da14610b3c578063c39409e114610b51578063c6640e6814610b66578063c7b5914f14610b86578063ca15c87314610ba6578063ccde65dc14610bc6578063cd9ef91414610be6578063d09445c214610c06578063d3c7c2c714610c28578063d547741f14610c3d578063da47d85614610c5d578063e0b78add14610c8a578063e26a61bb14610caa578063e5a6725c14610cca578063e7bfce9a14610cea578063e96cf7ad14610d0a578063ea79d07a14610d1f578063eb5ea27314610d34578063ebc20d2014610d54578063ed24911d14610d74578063ee3b641f14610d89578063f3fef3a314610da9578063f51acaea14610dc9578063f72c0d8b14610de9578063f7e45f0914610e0b57600080fd5b366103a457005b600080fd5b3480156103b557600080fd5b506103c96103c4366004614431565b610e2b565b60405190151581526020015b60405180910390f35b3480156103ea57600080fd5b506103f3610e56565b6040516103d59190614505565b34801561040c57600080fd5b506104226000805160206154f483398151915281565b6040519081526020016103d5565b34801561043c57600080fd5b50610445610f80565b6040516103d59190614518565b34801561045e57600080fd5b5061047d61046d366004614634565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020016103d5565b3480156104a257600080fd5b506104226104b136600461469f565b610fa0565b3480156104c257600080fd5b506104d66104d13660046146d3565b610fae565b005b3480156104e457600080fd5b506104d66104f3366004614714565b61105b565b34801561050457600080fd5b506104d66105133660046147d4565b6110ff565b34801561052457600080fd5b5061042260008051602061551483398151915281565b34801561054657600080fd5b5061055a610555366004614808565b6111b7565b6040516103d59291906148a3565b34801561057457600080fd5b506103c9611380565b34801561058957600080fd5b506104226105983660046148bc565b611398565b3480156105a957600080fd5b506104d66105b83660046148ec565b6113b8565b3480156105c957600080fd5b506104d66105d8366004614928565b61145e565b3480156105e957600080fd5b506103f36105f836600461469f565b611480565b34801561060957600080fd5b506104226000805160206154b483398151915281565b34801561062b57600080fd5b506104d661063a366004614958565b61148e565b34801561064b57600080fd5b506104d661065a366004614928565b61164a565b34801561066b57600080fd5b5061042260008051602061541483398151915281565b34801561068d57600080fd5b506104d661069c3660046147d4565b61167d565b3480156106ad57600080fd5b506104d66106bc3660046149c0565b611723565b3480156106cd57600080fd5b5061044561179b565b3480156106e257600080fd5b506104d66106f1366004614a12565b6117b2565b34801561070257600080fd5b50610422610711366004614a87565b611823565b6104d6610724366004614af5565b6118a5565b34801561073557600080fd5b5061073e6118c4565b6040516103d59190614b44565b34801561075757600080fd5b506104d6610766366004614b58565b6118e2565b34801561077757600080fd5b50610422611995565b34801561078c57600080fd5b506104d661079b3660046148bc565b6119b2565b3480156107ac57600080fd5b506103f36107bb3660046148bc565b6119f0565b3480156107cc57600080fd5b5061042260008051602061543483398151915281565b3480156107ee57600080fd5b506104d66107fd366004614808565b611af8565b34801561080e57600080fd5b50610817611cfa565b6040516103d5929190614b84565b34801561083157600080fd5b506104d6610840366004614b92565b611d1c565b34801561085157600080fd5b506104d6610860366004614714565b611d3d565b34801561087157600080fd5b506104d6610880366004614baf565b611d5f565b34801561089157600080fd5b506104d66108a03660046148ec565b611e17565b3480156108b157600080fd5b506104d66108c0366004614bf5565b611e51565b3480156108d157600080fd5b506104d66108e0366004614b92565b611ec0565b3480156108f157600080fd5b506108fa611ee1565b6040516103d5929190614ccc565b34801561091457600080fd5b5061042260008051602061553483398151915281565b34801561093657600080fd5b5061094a610945366004614b92565b6120a6565b6040516103d59190614d3e565b34801561096357600080fd5b506104226000805160206154d483398151915281565b34801561098557600080fd5b506104d6610994366004614bf5565b61218b565b3480156109a557600080fd5b506103c96109b43660046148bc565b6121fa565b3480156109c557600080fd5b5061073e6109d4366004614714565b61222b565b3480156109e557600080fd5b506103c96109f4366004614928565b612259565b348015610a0557600080fd5b50610a19610a14366004614d51565b61228f565b6040516103d59493929190614d7f565b348015610a3557600080fd5b506104d6610a443660046146d3565b6122e6565b348015610a5557600080fd5b50610422600081565b348015610a6a57600080fd5b506104d6610a79366004614d9a565b612339565b348015610a8a57600080fd5b50610a9e610a993660046148bc565b61235a565b6040516103d59190614db7565b348015610ab757600080fd5b506104d6610ac6366004614df8565b612387565b348015610ad757600080fd5b5061094a604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610b0857600080fd5b506103c9610b1736600461469f565b6123f8565b348015610b2857600080fd5b506104d6610b37366004614714565b612406565b348015610b4857600080fd5b5061073e612440565b348015610b5d57600080fd5b5061042261245b565b348015610b7257600080fd5b506104d6610b81366004614b92565b612470565b348015610b9257600080fd5b50610422610ba1366004614a87565b61250b565b348015610bb257600080fd5b50610422610bc13660046148bc565b612547565b348015610bd257600080fd5b506104d6610be1366004614af5565b61256c565b348015610bf257600080fd5b506104d6610c01366004614e3e565b61258e565b348015610c1257600080fd5b5061042260008051602061549483398151915281565b348015610c3457600080fd5b50610a9e612646565b348015610c4957600080fd5b506104d6610c58366004614928565b612660565b348015610c6957600080fd5b50610c7d610c783660046148bc565b61267c565b6040516103d59190614e77565b348015610c9657600080fd5b506103c9610ca5366004614b92565b6127a5565b348015610cb657600080fd5b506104d6610cc5366004614e8a565b6127bf565b348015610cd657600080fd5b506104d6610ce53660046148bc565b61285d565b348015610cf657600080fd5b506104d6610d05366004614b92565b6128e9565b348015610d1657600080fd5b5061042261290a565b348015610d2b57600080fd5b50610a9e61291f565b348015610d4057600080fd5b50610422610d4f3660046148bc565b612939565b348015610d6057600080fd5b506104d6610d6f366004614f1d565b612964565b348015610d8057600080fd5b506104226129d1565b348015610d9557600080fd5b50610817610da4366004614b92565b6129dc565b348015610db557600080fd5b506104d6610dc4366004614b58565b612a17565b348015610dd557600080fd5b506104d6610de436600461469f565b612a9f565b348015610df557600080fd5b5061042260008051602061545483398151915281565b348015610e1757600080fd5b506104d6610e26366004614baf565b612b0a565b60006001600160e01b03198216635a05180f60e01b1480610e505750610e5082612b44565b92915050565b60606000610e62610f80565b9050600081516001600160401b03811115610e7f57610e7f614571565b604051908082528060200260200182016040528015610eb257816020015b6060815260200190600190039081610e9d5790505b50905060005b8251811015610f7957610ec9612440565b6001600160a01b0316635a81a626848381518110610ee957610ee9614f76565b60200260200101516040518263ffffffff1660e01b8152600401610f0f91815260200190565b600060405180830381865afa158015610f2c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f549190810190614f8c565b828281518110610f6657610f66614f76565b6020908102919091010152600101610eb8565b5092915050565b60606000610f8c612b79565b9050610f9a81600901612b9d565b91505090565b6000610e50610d4f83612baa565b6000805160206154d4833981519152610fc681612c20565b6001600160a01b038316610fed57604051633a954ecd60e21b815260040160405180910390fd5b604051632142170760e11b81523060048201526001600160a01b038481166024830152604482018490528516906342842e0e90606401600060405180830381600087803b15801561103d57600080fd5b505af1158015611051573d6000803e3d6000fd5b5050505050505050565b60008051602061553483398151915261107381612c20565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__6321b87f3a6110956118c4565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018690526044810185905260640160006040518083038186803b1580156110e257600080fd5b505af41580156110f6573d6000803e3d6000fd5b50505050505050565b60008051602061549483398151915261111781612c20565b60005b82518110156111b257600061114784838151811061113a5761113a614f76565b6020026020010151612baa565b905061115281612c2a565b83828151811061116457611164614f76565b60200260200101516040516111799190614ff9565b604051908190038120907f50cc5f9d56177aa0de269c136f2d2ffd45d7b66c82f0a82f8f840db54d9801f890600090a25060010161111a565b505050565b6000806001600160a01b038a1630146111ee5789604051637b7d696f60e01b81526004016111e59190614b44565b60405180910390fd5b6111f6612440565b6001600160a01b03166312b357b58a6040518263ffffffff1660e01b81526004016112219190614b44565b602060405180830381865afa15801561123e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112629190615015565b6112815788604051633f2c64af60e01b81526004016111e59190614b44565b8342106112a457604051636453b2e560e01b8152600481018590526024016111e5565b6112b48a8a8a8a8a8a8a8a612c68565b91506112bf826127a5565b6112de578160405163248d101d60e11b81526004016111e59190614b44565b60006112e8612c94565b6001600160a01b03808516600090815260208381526040808320938e1683529290522060018101549192509088101561133b5760018101546040516307c83fcf60e41b81526111e5918a91600401614b84565b80548911611360578054604051632256490160e11b81526111e5918b91600401614b84565b600181015461136f9089615048565b925050509850989650505050505050565b60008061138b612b79565b6003015460ff1692915050565b6000806113a3612cb8565b60009384526020525050604090206001015490565b6000805160206155348339815191526113d081612c20565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__6307e473166113f26118c4565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024810187905261ffff80871660448301528516606482015260840160006040518083038186803b15801561144a57600080fd5b505af4158015611051573d6000803e3d6000fd5b61146782611398565b61147081612c20565b61147a8383612cdc565b50505050565b6060610e506107bb83612baa565b6000611498612d1e565b805490915060ff600160401b82041615906001600160401b03166000811580156114bf5750825b90506000826001600160401b031660011480156114db5750303b155b9050811580156114e9575080155b156115075760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b0319166001178555831561153057845460ff60401b1916600160401b1785555b611538612d42565b611540612d42565b611548612d4c565b611553600088612cdc565b5061156c60008051602061549483398151915288612cdc565b506115856000805160206154b483398151915288612cdc565b5061159e60008051602061545483398151915287612cdc565b5060006115a9612de6565b80546001600160a01b03808e166001600160a01b0319928316178355600183018054918e1691909216179055600281018a90559050678ac7230489e80000620151806115f58282612e0a565b505050831561163e57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b6001600160a01b03811633146116735760405163334bd91960e11b815260040160405180910390fd5b6111b28282612e2d565b60008051602061549483398151915261169581612c20565b60005b82518110156111b25760006116b884838151811061113a5761113a614f76565b90506116c381612e66565b8382815181106116d5576116d5614f76565b60200260200101516040516116ea9190614ff9565b604051908190038120907f0edb7a081e6ff720ad9e97b837c352ef0548c4d09ec421b9b930b1e0c708e39e90600090a250600101611698565b60008051602061549483398151915261173b81612c20565b61174d61174784612baa565b83612ea4565b8260405161175b9190614ff9565b604051908190038120838252907fdd6c54a4503e1d8a1e75d73648f77d8fe66234b437ce30e20edd51563116ec41906020015b60405180910390a2505050565b606060006117a7612b79565b9050610f9a81612b9d565b6000805160206154948339815191526117ca81612c20565b6117de6117d686612baa565b858486612ecd565b846040516117ec9190614ff9565b604051908190038120907f763f2f41e0c407dd0a7067f44e5468a0db74da9fdb6cd1cb20c7b6dae937527990600090a25050505050565b604080516000805160206154f483398151915260208201526001600160a01b03808a16928201929092528188166060820152908616608082015260a0810185905260c0810184905260e081018390526101008101829052600090610120015b604051602081830303815290604052805190602001209050979650505050505050565b6118ad612f65565b6118b682612ff3565b6118c08282613136565b5050565b6000806118cf612de6565b600101546001600160a01b031692915050565b6000805160206154b48339815191526118fa81612c20565b611903826131ea565b61191b60008051602061543483398151915284612cdc565b5061193460008051602061553483398151915284612cdc565b5061194d60008051602061541483398151915284612cdc565b506040516001600160a01b038416907fdb3e11ba26e83d528bf96a2167061674c1ce7777c61376d852d172594a87399490600090a26111b26001600160a01b0384168361325f565b600061199f6132f8565b5060008051602061547483398151915290565b6119ba613341565b6000805160206154148339815191526119d281612c20565b6119db826131ea565b6119e482613377565b506119ed6134a4565b50565b606060006119fc612b79565b9050611a0883826134b5565b806002016000848152602001908152602001600020600201805480602002602001604051908101604052809291908181526020016000905b82821015611aec578382906000526020600020018054611a5f9061505b565b80601f0160208091040260200160405190810160405280929190818152602001828054611a8b9061505b565b8015611ad85780601f10611aad57610100808354040283529160200191611ad8565b820191906000526020600020905b815481529060010190602001808311611abb57829003601f168201915b505050505081526020019060010190611a40565b50505050915050919050565b611b00613341565b600080611b138a8a8a8a8a8a8a8a6111b7565b91509150611b258289898989896134df565b6000612710611b32612440565b6001600160a01b0316633c5559386040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b939190615095565b611b9d90846150ae565b611ba791906150c5565b90506000611bb58284615048565b90508a6001600160a01b03168c6001600160a01b031614611bf7576000611bda612c94565b905083816001016000828254611bf091906150e7565b9091555050505b611c7382611c03612440565b6001600160a01b0316630470d3ac6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6491906150fa565b6001600160a01b03169061325f565b611c866001600160a01b038c168261325f565b604080516001600160a01b0386811682528c811660208301529181018b9052606081018a90526080810183905260a08101849052818d16918e16907f4ebd6343a4ae90ea9a2add4327d0439de765f4b8bbb691caaf0875ef36c54e819060c00160405180910390a3505050506110516134a4565b6000806000611d0761354a565b90508060020154816003015492509250509091565b600080516020615494833981519152611d3481612c20565b6118c08261356e565b6000805160206154b4833981519152611d5581612c20565b6111b283836135e4565b600080516020615534833981519152611d7781612c20565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__63fd13a43e611d996118c4565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018890526044810187905261ffff80871660648301528516608482015260a40160006040518083038186803b158015611df857600080fd5b505af4158015611e0c573d6000803e3d6000fd5b505050505050505050565b600080516020615534833981519152611e2f81612c20565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__63793dddac6113f26118c4565b600080516020615494833981519152611e6981612c20565b611e7b611e7584612baa565b8361363e565b82604051611e899190614ff9565b60405180910390207f498a5f4e6f3921f63e6863032989bdb7bb41e5cf5cbde5437c7322c5c8dc46bf8360405161178e9190614d3e565b600080516020615494833981519152611ed881612c20565b6118c082613682565b6060806000611eee61179b565b9050600081516001600160401b03811115611f0b57611f0b614571565b604051908082528060200260200182016040528015611f3e57816020015b6060815260200190600190039081611f295790505b509050600082516001600160401b03811115611f5c57611f5c614571565b604051908082528060200260200182016040528015611f9557816020015b611f82614332565b815260200190600190039081611f7a5790505b50905060005b835181101561209b57611fac612440565b6001600160a01b0316635a81a626858381518110611fcc57611fcc614f76565b60200260200101516040518263ffffffff1660e01b8152600401611ff291815260200190565b600060405180830381865afa15801561200f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526120379190810190614f8c565b83828151811061204957612049614f76565b602002602001018190525061207684828151811061206957612069614f76565b602002602001015161267c565b82828151811061208857612088614f76565b6020908102919091010152600101611f9b565b509094909350915050565b606060006120b2612b79565b90506120c160068201846136f8565b6120e0578260405163ba650b5f60e01b81526004016111e59190614b44565b6001600160a01b0383166000908152600882016020526040902080546121059061505b565b80601f01602080910402602001604051908101604052809291908181526020018280546121319061505b565b801561217e5780601f106121535761010080835404028352916020019161217e565b820191906000526020600020905b81548152906001019060200180831161216157829003601f168201915b5050505050915050919050565b6000805160206154948339815191526121a381612c20565b6121b56121af84612baa565b8361370d565b826040516121c39190614ff9565b60405180910390207fba851faec9e30a9961f0adb49fe025cda6c8d7d0fb9bad99f89c37d0570232648360405161178e9190614d3e565b600080612205612b79565b905061221183826134b5565b600092835260020160205250604090206001015460ff1690565b60008061223661383c565b60008581526020829052604090209091506122519084613860565b949350505050565b600080612264612cb8565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b600080600080600061229f612c94565b6001600160a01b0397881660009081526020918252604080822098909916815296905250505092909120805460018201546002830154600390930154919590945091925090565b6000805160206154d48339815191526122fe81612c20565b6001600160a01b03831661232557604051633a954ecd60e21b815260040160405180910390fd5b61147a6001600160a01b038516848461386c565b60008051602061549483398151915261235181612c20565b6118c0826138c4565b6060600061236661383c565b600084815260208290526040902090915061238090612b9d565b9392505050565b60008051602061549483398151915261239f81612c20565b6123b16123ab84612baa565b8361391b565b826040516123bf9190614ff9565b6040519081900381208315158252907f23960b931eb4b63e2e47d040f51cc0de6eef2e865639eb674fbb1890ece3a0ab9060200161178e565b6000610e506109b483612baa565b60008051602061553483398151915261241e81612c20565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__63348e06dd6110956118c4565b60008061244b612de6565b546001600160a01b031692915050565b600080612466612de6565b6002015492915050565b6000805160206154b483398151915261248881612c20565b6124a060008051602061543483398151915283612e2d565b506124b960008051602061553483398151915283612e2d565b506124d260008051602061541483398151915283612e2d565b506040516001600160a01b038316907fd124523a9cfa28c5dd01826c4fa56192ec7d56859943082e0ca46c3b9dc6291390600090a25050565b60006125156129d1565b61252489898989898989611823565b60405161190160f01b602082015260228101929092526042820152606201611882565b60008061255261383c565b600084815260208290526040902090915061238090613955565b60008051602061549483398151915261258481612c20565b6111b2838361395f565b612596613341565b6000805160206155348339815191526125ae81612c20565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__637adf63b76125d06118c4565b6040516001600160e01b031960e084901b1681526001600160a01b0391821660048201526024810188905260448101879052908516606482015260840160006040518083038186803b15801561262557600080fd5b505af4158015612639573d6000803e3d6000fd5b50505050506111b26134a4565b60606000612652612b79565b9050610f9a60048201612b9d565b61266982611398565b61267281612c20565b61147a8383612e2d565b612684614332565b600061268e612b79565b905061269a83826134b5565b6000838152600280830160209081526040808420815160608101835281548152600182015460ff161515818501529381018054835181860281018601855281815295969295938701949192909184015b828210156127965783829060005260206000200180546127099061505b565b80601f01602080910402602001604051908101604052809291908181526020018280546127359061505b565b80156127825780601f1061275757610100808354040283529160200191612782565b820191906000526020600020905b81548152906001019060200180831161276557829003601f168201915b5050505050815260200190600101906126ea565b50505091525090949350505050565b6000610e5060008051602061543483398151915283612259565b6000805160206155348339815191526127d781612c20565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__63e4c225696127f96118c4565b8a8a8a8a8a8a8a6040518963ffffffff1660e01b8152600401612823989796959493929190615117565b60006040518083038186803b15801561283b57600080fd5b505af415801561284f573d6000803e3d6000fd5b505050505050505050505050565b60008051602061553483398151915261287581612c20565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__63c7bffa966128976118c4565b846040518363ffffffff1660e01b81526004016128b59291906148a3565b60006040518083038186803b1580156128cd57600080fd5b505af41580156128e1573d6000803e3d6000fd5b505050505050565b60008051602061549483398151915261290181612c20565b6118c0826139fb565b600080612915612c94565b6001015492915050565b6060600061292b612b79565b9050610f9a81600601612b9d565b600080612944612b79565b905061295083826134b5565b600092835260020160205250604090205490565b60008051602061549483398151915261297c81612c20565b61298e61298884612baa565b83613a94565b8260405161299c9190614ff9565b604051908190038120907fd52aef6010d6b6303240865274298b7c5784b14ebf9df788047b34c69c53137190600090a2505050565b600080612466612c94565b60008060006129e961354a565b6001600160a01b03909416600090815260208581526040808320546001909701909152902054939492505050565b612a1f613341565b6000805160206154d4833981519152612a3781612c20565b612a40826131ea565b612a536001600160a01b0384168361325f565b826001600160a01b03167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a942436483604051612a8e91815260200190565b60405180910390a2506118c06134a4565b600080516020615494833981519152612ab781612c20565b612ac8612ac383612baa565b613ad2565b81604051612ad69190614ff9565b604051908190038120907f52f6e0779195109314dfb8cf301d33491c63f136afac4c5d4f35aa934b25481390600090a25050565b600080516020615534833981519152612b2281612c20565b73__$12bd2f62b73a470fe0f6e02c33045f3191$__63b54e72d8611d996118c4565b60006001600160e01b03198216637965db0b60e01b1480610e5057506301ffc9a760e01b6001600160e01b0319831614610e50565b7ff2856e5e1b7689dcde1bb551fd115c3cad8d243ea609d47a46b4d22ee58d300090565b6060600061238083613b3b565b6000612bb4612440565b6001600160a01b031663352af39a836040518263ffffffff1660e01b8152600401612bdf9190614d3e565b602060405180830381865afa158015612bfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e509190615095565b6119ed8133613b97565b6000612c34612b79565b90506000612c456009830184613bc2565b9050806111b257604051631a1e056960e01b8152600481018490526024016111e5565b600080612c7a8a8a8a8a8a8a8a61250b565b9050612c868184613bce565b9a9950505050505050505050565b7f175f7e400d42af44d9ebd24e9efee8a2c4ed78ddf46a83e51a493ae382c8760090565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b600080612ce761383c565b90506000612cf58585613bf8565b90508015612251576000858152602083905260409020612d159085613c99565b50949350505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b612d4a613cae565b565b612d54613cae565b6000612d5e612c94565b604051909150612dc690600080516020615514833981519152907f964f47ba1d5dc0d1184a60039dba40abb2d0eee53398392e97308cb5f4a12f94907fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6904690602001614d7f565b60408051601f198184030181529190528051602090910120600290910155565b7f0c7b73796c7cc89b9f849b9056a93200eba741881e57a1b03b9bedb2c0e0710090565b612e12613cae565b6000612e1c61354a565b600281019390935550600390910155565b600080612e3861383c565b90506000612e468585613cd3565b90508015612251576000858152602083905260409020612d159085613d4b565b6000612e70612b79565b90506000612e816009830184613d60565b9050806111b257604051637eae59f160e11b8152600481018490526024016111e5565b6000612eae612b79565b9050612eba83826134b5565b6000928352600201602052604090912055565b6000612ed7612b79565b90506000612ee58287613bc2565b905080612f07576040516221e3bb60e31b8152600481018790526024016111e5565b60408051606081018252868152841515602080830191825282840188815260008b81526002888101845295902084518155925160018401805460ff191691151591909117905551805193949293611e0c938501929190910190614355565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480612fd557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612fc9613d6c565b6001600160a01b031614155b15612d4a5760405163703e46dd60e11b815260040160405180910390fd5b60008051602061545483398151915261300b81612c20565b6000613015612440565b6001600160a01b0316639d825bc56040518163ffffffff1660e01b8152600401602060405180830381865afa158015613052573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061307691906150fa565b90506000613082613d6c565b9050836001600160a01b0316816001600160a01b0316036130ba5780846040516382afabc160e01b81526004016111e5929190615175565b816001600160a01b0316846001600160a01b0316146130f057818460405163699a021f60e11b81526004016111e5929190615175565b836001600160a01b0316816001600160a01b03167fa3d484f827e1c900ce24494bfdb214bcbad08472a9f0571fb5beac779a682db460405160405180910390a350505050565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015613190575060408051601f3d908101601f1916820190925261318d91810190615095565b60015b6131af5781604051634c9c8ce360e01b81526004016111e59190614b44565b60008051602061547483398151915281146131e057604051632a87526960e21b8152600481018290526024016111e5565b6111b28383613d88565b60006131f461245b565b9050600061320061290a565b9050818110156111b25760006132168284615048565b905060006132248247615048565b905080851115613258576040516344c8760560e11b81526004810182905260248101839052604481018690526064016111e5565b5050505050565b8047101561328457478160405163cf47918160e01b81526004016111e5929190614b84565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146132d1576040519150601f19603f3d011682016040523d82523d6000602084013e6132d6565b606091505b50509050806111b25760405163d6bda27560e01b815260040160405180910390fd5b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612d4a5760405163703e46dd60e11b815260040160405180910390fd5b600061334b613dde565b80549091506001190161337157604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b600061338161354a565b905080600201548211156133b057806002015482604051631728bc5b60e31b81526004016111e5929190614b84565b60038101543360009081526020839052604090205442916133d0916150e7565b8111156133f85733600090815260018301602090815260408083208390559084905290208190555b600282015433600090815260018401602052604090205461341a9085906150e7565b11156134415781600201548360405163d54b188760e01b81526004016111e5929190614b84565b336000908152600183016020526040812080548592906134629084906150e7565b909155506134729050338461325f565b60405183815233907fb9ec638398bbdcd0844ca414d8ce760939fa88b9258b9764b3fc6c12ea2605c29060200161178e565b60006134ae613dde565b6001905550565b6134bf8183613e02565b6118c057604051631e96f6ed60e21b8152600481018390526024016111e5565b60006134e9612c94565b604080516080810182529687526020808801968752878201958652606088019485526001600160a01b03998a166000908152928152818320989099168252969097525093909420915182555160018201559151600283015551600390910155565b7f99a652063088b6badaeb0c7f680676baf720654b4f86f50167944489af637d0090565b6000613578612b79565b905060006135896004830184613c99565b9050806135ab5782604051632872fbf960e11b81526004016111e59190614b44565b6040516001600160a01b038416907fa317c10673baf4f03b3c1041bd5ddbb537d0333a86fec3607c75f9dbb630f48f90600090a2505050565b60006135ee61354a565b60028101849055600381018390556040519091507f8d4925b196ae6b935035a27ed36c6bd9c7a8fbddc7a3f55f493aa8e230be373e906136319085908590614b84565b60405180910390a1505050565b6000613648612b79565b905061365483826134b5565b60008381526002808301602090815260408320909101805460018101825590835291200161147a83826151ec565b600061368c612b79565b9050600061369d6004830184613d4b565b9050806136bf5782604051631532e67160e21b81526004016111e59190614b44565b6040516001600160a01b038416907f85a3e72f8dd6db3794f93109c3c5f5b79d6112f6979431c45f98b26134b42af290600090a2505050565b6000612380836001600160a01b038416613e0a565b6000613717612b79565b905061372383826134b5565b600083815260028083016020526040822001905b815481101561325857836040516020016137519190614ff9565b6040516020818303038152906040528051906020012082828154811061377957613779614f76565b9060005260206000200160405160200161379391906152a5565b604051602081830303815290604052805190602001200361383457815482906137be90600190615048565b815481106137ce576137ce614f76565b906000526020600020018282815481106137ea576137ea614f76565b906000526020600020019081613800919061531b565b5081805480613811576138116153e7565b60019003818190600052602060002001600061382d91906143ab565b9055613258565b600101613737565b7fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200090565b60006123808383613e22565b6111b283846001600160a01b031663a9059cbb85856040516024016138929291906148a3565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613e4c565b60006138ce612b79565b60038101805460ff19168415159081179091556040519081529091507fe93ceb76efb130156c6aa39fa4ac986b3f683b6da926496fca3f95ea7fe715e39060200160405180910390a15050565b6000613925612b79565b905061393183826134b5565b60009283526002016020526040909120600101805460ff1916911515919091179055565b6000610e50825490565b6000613969612b79565b9050600061397a6006830185613c99565b90508061399c5783604051631a6107e360e31b81526004016111e59190614b44565b6001600160a01b038416600090815260088301602052604090206139c084826151ec565b506040516001600160a01b038516907f928ec246afda323bc23c2815ca3f516e9fc6a7b7179772235c221e132545fe8290600090a250505050565b6000613a05612b79565b90506000613a166006830184613d4b565b905080613a38578260405163ba650b5f60e01b81526004016111e59190614b44565b6001600160a01b03831660009081526008830160205260408120613a5b916143ab565b6040516001600160a01b038416907fc5a9b8041ef11732e7dd7043167d8c22db5c7ea99dcd38dce401effacf8a29bf90600090a2505050565b6000613a9e612b79565b9050613aaa83826134b5565b6000838152600280830160209081526040909220845161147a93919092019190850190614355565b6000613adc612b79565b90506000613aea8284613d60565b905080613b0d57604051631e96f6ed60e21b8152600481018490526024016111e5565b600083815260028084016020526040822082815560018101805460ff191690559190613258908301826143e5565b606081600001805480602002602001604051908101604052809291908181526020018280548015613b8b57602002820191906000526020600020905b815481526020019060010190808311613b77575b50505050509050919050565b613ba18282612259565b6118c057808260405163e2517d3f60e01b81526004016111e59291906148a3565b60006123808383613eb4565b600080600080613bde8686613efe565b925092509250613bee8282613f4b565b5090949350505050565b600080613c03612cb8565b9050613c0f8484612259565b613c8f576000848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055613c453390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610e50565b6000915050610e50565b6000612380836001600160a01b038416613eb4565b613cb6614004565b612d4a57604051631afcd79f60e31b815260040160405180910390fd5b600080613cde612cb8565b9050613cea8484612259565b15613c8f576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610e50565b6000612380836001600160a01b03841661401e565b6000612380838361401e565b600080516020615474833981519152546001600160a01b031690565b613d9182614107565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115613dd6576111b28282614163565b6118c06141d9565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b600061238083835b60009081526001919091016020526040902054151590565b6000826000018281548110613e3957613e39614f76565b9060005260206000200154905092915050565b600080602060008451602086016000885af180613e6f576040513d6000823e3d81fd5b50506000513d91508115613e87578060011415613e94565b6001600160a01b0384163b155b1561147a5783604051635274afe760e01b81526004016111e59190614b44565b6000613ec08383613e0a565b613ef657508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610e50565b506000610e50565b60008060008351604103613f385760208401516040850151606086015160001a613f2a888285856141f8565b955095509550505050613f44565b50508151600091506002905b9250925092565b6000826003811115613f5f57613f5f6153fd565b03613f68575050565b6001826003811115613f7c57613f7c6153fd565b03613f9a5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115613fae57613fae6153fd565b03613fcf5760405163fce698f760e01b8152600481018290526024016111e5565b6003826003811115613fe357613fe36153fd565b036118c0576040516335e2f38360e21b8152600481018290526024016111e5565b600061400e612d1e565b54600160401b900460ff16919050565b60008181526001830160205260408120548015613c8f576000614042600183615048565b855490915060009061405690600190615048565b90508082146140bb57600086600001828154811061407657614076614f76565b906000526020600020015490508087600001848154811061409957614099614f76565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806140cc576140cc6153e7565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610e50565b806001600160a01b03163b6000036141345780604051634c9c8ce360e01b81526004016111e59190614b44565b60008051602061547483398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516141809190614ff9565b600060405180830381855af49150503d80600081146141bb576040519150601f19603f3d011682016040523d82523d6000602084013e6141c0565b606091505b50915091506141d08583836142bd565b95945050505050565b3415612d4a5760405163b398979f60e01b815260040160405180910390fd5b600080806fa2a8918ca85bafe22016d0b997e4df60600160ff1b0384111561422957506000915060039050826142b3565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561427d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166142a9575060009250600191508290506142b3565b9250600091508190505b9450945094915050565b6060826142d2576142cd82614309565b612380565b81511580156142e957506001600160a01b0384163b155b15610f795783604051639996b31560e01b81526004016111e59190614b44565b8051156143195780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b604051806060016040528060008152602001600015158152602001606081525090565b82805482825590600052602060002090810192821561439b579160200282015b8281111561439b578251829061438b90826151ec565b5091602001919060010190614375565b506143a79291506143ff565b5090565b5080546143b79061505b565b6000825580601f106143c7575050565b601f0160209004906000526020600020908101906119ed919061441c565b50805460008255906000526020600020908101906119ed91905b808211156143a757600061441382826143ab565b506001016143ff565b5b808211156143a7576000815560010161441d565b60006020828403121561444357600080fd5b81356001600160e01b03198116811461238057600080fd5b60005b8381101561447657818101518382015260200161445e565b50506000910152565b6000815180845261449781602086016020860161445b565b601f01601f19169290920160200192915050565b60008282518085526020808601955060208260051b8401016020860160005b848110156144f857601f198684030189526144e683835161447f565b988401989250908301906001016144ca565b5090979650505050505050565b60208152600061238060208301846144ab565b6020808252825182820181905260009190848201906040850190845b8181101561455057835183529284019291840191600101614534565b50909695505050505050565b6001600160a01b03811681146119ed57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156145af576145af614571565b604052919050565b60006001600160401b038211156145d0576145d0614571565b50601f01601f191660200190565b600082601f8301126145ef57600080fd5b81356146026145fd826145b7565b614587565b81815284602083860101111561461757600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561464a57600080fd5b84356146558161455c565b935060208501356146658161455c565b92506040850135915060608501356001600160401b0381111561468757600080fd5b614693878288016145de565b91505092959194509250565b6000602082840312156146b157600080fd5b81356001600160401b038111156146c757600080fd5b612251848285016145de565b6000806000606084860312156146e857600080fd5b83356146f38161455c565b925060208401356147038161455c565b929592945050506040919091013590565b6000806040838503121561472757600080fd5b50508035926020909101359150565b600082601f83011261474757600080fd5b813560206001600160401b038083111561476357614763614571565b8260051b614772838201614587565b938452858101830193838101908886111561478c57600080fd5b84880192505b858310156147c8578235848111156147aa5760008081fd5b6147b88a87838c01016145de565b8352509184019190840190614792565b98975050505050505050565b6000602082840312156147e657600080fd5b81356001600160401b038111156147fc57600080fd5b61225184828501614736565b600080600080600080600080610100898b03121561482557600080fd5b88356148308161455c565b975060208901356148408161455c565b965060408901356148508161455c565b9550606089013594506080890135935060a0890135925060c0890135915060e08901356001600160401b0381111561488757600080fd5b6148938b828c016145de565b9150509295985092959890939650565b6001600160a01b03929092168252602082015260400190565b6000602082840312156148ce57600080fd5b5035919050565b803561ffff811681146148e757600080fd5b919050565b60008060006060848603121561490157600080fd5b83359250614911602085016148d5565b915061491f604085016148d5565b90509250925092565b6000806040838503121561493b57600080fd5b82359150602083013561494d8161455c565b809150509250929050565b600080600080600060a0868803121561497057600080fd5b853561497b8161455c565b9450602086013561498b8161455c565b93506040860135925060608601356149a28161455c565b915060808601356149b28161455c565b809150509295509295909350565b600080604083850312156149d357600080fd5b82356001600160401b038111156149e957600080fd5b6149f5858286016145de565b95602094909401359450505050565b80151581146119ed57600080fd5b60008060008060808587031215614a2857600080fd5b84356001600160401b0380821115614a3f57600080fd5b614a4b888389016145de565b95506020870135945060408701359150614a6482614a04565b90925060608601359080821115614a7a57600080fd5b5061469387828801614736565b600080600080600080600060e0888a031215614aa257600080fd5b8735614aad8161455c565b96506020880135614abd8161455c565b95506040880135614acd8161455c565b969995985095966060810135965060808101359560a0820135955060c0909101359350915050565b60008060408385031215614b0857600080fd5b8235614b138161455c565b915060208301356001600160401b03811115614b2e57600080fd5b614b3a858286016145de565b9150509250929050565b6001600160a01b0391909116815260200190565b60008060408385031215614b6b57600080fd5b8235614b768161455c565b946020939093013593505050565b918252602082015260400190565b600060208284031215614ba457600080fd5b81356123808161455c565b60008060008060808587031215614bc557600080fd5b8435935060208501359250614bdc604086016148d5565b9150614bea606086016148d5565b905092959194509250565b60008060408385031215614c0857600080fd5b82356001600160401b0380821115614c1f57600080fd5b614c2b868387016145de565b93506020850135915080821115614c4157600080fd5b50614b3a858286016145de565b600060608301825184526020808401511515602086015260408401516060604087015282815180855260808801915060808160051b890101945060208301925060005b81811015614cbf57607f19898703018352614cad86855161447f565b95509284019291840191600101614c91565b5093979650505050505050565b604081526000614cdf60408301856144ab565b6020838203818501528185518084528284019150828160051b85010183880160005b83811015614d2f57601f19878403018552614d1d838351614c4e565b94860194925090850190600101614d01565b50909998505050505050505050565b602081526000612380602083018461447f565b60008060408385031215614d6457600080fd5b8235614d6f8161455c565b9150602083013561494d8161455c565b93845260208401929092526040830152606082015260800190565b600060208284031215614dac57600080fd5b813561238081614a04565b6020808252825182820181905260009190848201906040850190845b818110156145505783516001600160a01b031683529284019291840191600101614dd3565b60008060408385031215614e0b57600080fd5b82356001600160401b03811115614e2157600080fd5b614e2d858286016145de565b925050602083013561494d81614a04565b600080600060608486031215614e5357600080fd5b83359250602084013591506040840135614e6c8161455c565b809150509250925092565b6020815260006123806020830184614c4e565b600080600080600080600060e0888a031215614ea557600080fd5b8735614eb08161455c565b965060208801356001600160401b03811115614ecb57600080fd5b614ed78a828b016145de565b96505060408801359450606088013593506080880135614ef68161455c565b925060a0880135915060c0880135614f0d81614a04565b8091505092959891949750929550565b60008060408385031215614f3057600080fd5b82356001600160401b0380821115614f4757600080fd5b614f53868387016145de565b93506020850135915080821115614f6957600080fd5b50614b3a85828601614736565b634e487b7160e01b600052603260045260246000fd5b600060208284031215614f9e57600080fd5b81516001600160401b03811115614fb457600080fd5b8201601f81018413614fc557600080fd5b8051614fd36145fd826145b7565b818152856020838501011115614fe857600080fd5b6141d082602083016020860161445b565b6000825161500b81846020870161445b565b9190910192915050565b60006020828403121561502757600080fd5b815161238081614a04565b634e487b7160e01b600052601160045260246000fd5b81810381811115610e5057610e50615032565b600181811c9082168061506f57607f821691505b60208210810361508f57634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156150a757600080fd5b5051919050565b8082028115828204841417610e5057610e50615032565b6000826150e257634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610e5057610e50615032565b60006020828403121561510c57600080fd5b81516123808161455c565b6001600160a01b0389811682528881166020830152610100604083018190526000916151458483018b61447f565b6060850199909952608084019790975250509290931660a083015260c082015290151560e0909101529392505050565b6001600160a01b0392831681529116602082015260400190565b601f8211156111b2576000816000526020600020601f850160051c810160208610156151b85750805b601f850160051c820191505b818110156128e1578281556001016151c4565b600019600383901b1c191660019190911b1790565b81516001600160401b0381111561520557615205614571565b61521981615213845461505b565b8461518f565b602080601f83116001811461524857600084156152365750858301515b61524085826151d7565b8655506128e1565b600085815260208120601f198616915b8281101561527757888601518255948401946001909101908401615258565b50858210156152955787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008083546152b38161505b565b600182811680156152cb57600181146152e05761530f565b60ff198416875282151583028701945061530f565b8760005260208060002060005b858110156153065781548a8201529084019082016152ed565b50505082870194505b50929695505050505050565b818103615326575050565b615330825461505b565b6001600160401b0381111561534757615347614571565b61535581615213845461505b565b6000601f82116001811461538357600083156153715750848201545b61537b84826151d7565b855550613258565b600085815260209020601f19841690600086815260209020845b838110156153bd578286015482556001958601959091019060200161539d565b50858310156152955793015460001960f8600387901b161c19169092555050600190811b01905550565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fdfee562760eaa817d85ec1bf58364c4d65adb65d99d113c6785ef9aa66567076c954c1d97560aef1d9626af2ccff8a6ac6e245c44c307e795e9c16f7211c611a315189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc9a95e87c5af084bf5db8491c3a6515da9dd6da39b24b0eb0af08d7b9cd808d91c6ae66da7afbd0becbe49ddf95a9256901d87f1bb5e3d43236030e5e4a585b6d10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e487b38f131334165ac2b361f08966c9fcff3a953fa7d9d9c2861b7f0b50445bcbc2f8787176b8ac6bf7215b4adcc1e069bf4ab82d9ab1df05a57a91d425935b6e3acdf00ba9ef08b5f2c22768276611b9af078bf6c24fa36b34ec5e9f2eb061faa26469706673582212200540b09191ebd8a1004327f6309ecd4316849f0d987f7010a72aeade96f57e0164736f6c63430008180033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x39D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x3A9 JUMPI DUP1 PUSH4 0x8564C19 EQ PUSH2 0x3DE JUMPI DUP1 PUSH4 0xEDE80D6 EQ PUSH2 0x400 JUMPI DUP1 PUSH4 0x136F50CA EQ PUSH2 0x430 JUMPI DUP1 PUSH4 0x150B7A02 EQ PUSH2 0x452 JUMPI DUP1 PUSH4 0x18274DA4 EQ PUSH2 0x496 JUMPI DUP1 PUSH4 0x1ACA6376 EQ PUSH2 0x4B6 JUMPI DUP1 PUSH4 0x1C54F0F7 EQ PUSH2 0x4D8 JUMPI DUP1 PUSH4 0x1C5DB99E EQ PUSH2 0x4F8 JUMPI DUP1 PUSH4 0x20606B70 EQ PUSH2 0x518 JUMPI DUP1 PUSH4 0x21B9B929 EQ PUSH2 0x53A JUMPI DUP1 PUSH4 0x241BBBFC EQ PUSH2 0x568 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x57D JUMPI DUP1 PUSH4 0x2A119380 EQ PUSH2 0x59D JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x5BD JUMPI DUP1 PUSH4 0x319D13F3 EQ PUSH2 0x5DD JUMPI DUP1 PUSH4 0x33746274 EQ PUSH2 0x5FD JUMPI DUP1 PUSH4 0x33E1A223 EQ PUSH2 0x61F JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x63F JUMPI DUP1 PUSH4 0x383ABA87 EQ PUSH2 0x65F JUMPI DUP1 PUSH4 0x39E4C705 EQ PUSH2 0x681 JUMPI DUP1 PUSH4 0x41BF7C69 EQ PUSH2 0x6A1 JUMPI DUP1 PUSH4 0x42072BBD EQ PUSH2 0x6C1 JUMPI DUP1 PUSH4 0x432CF639 EQ PUSH2 0x6D6 JUMPI DUP1 PUSH4 0x4781AE53 EQ PUSH2 0x6F6 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x716 JUMPI DUP1 PUSH4 0x4F3F4639 EQ PUSH2 0x729 JUMPI DUP1 PUSH4 0x51889D6B EQ PUSH2 0x74B JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x76B JUMPI DUP1 PUSH4 0x5C988994 EQ PUSH2 0x780 JUMPI DUP1 PUSH4 0x5E07F869 EQ PUSH2 0x7A0 JUMPI DUP1 PUSH4 0x63E86CC8 EQ PUSH2 0x7C0 JUMPI DUP1 PUSH4 0x647D8F6D EQ PUSH2 0x7E2 JUMPI DUP1 PUSH4 0x658DB0AF EQ PUSH2 0x802 JUMPI DUP1 PUSH4 0x6D69FCAF EQ PUSH2 0x825 JUMPI DUP1 PUSH4 0x6FC22CD1 EQ PUSH2 0x845 JUMPI DUP1 PUSH4 0x74AA2048 EQ PUSH2 0x865 JUMPI DUP1 PUSH4 0x74FE60E9 EQ PUSH2 0x885 JUMPI DUP1 PUSH4 0x7512E55B EQ PUSH2 0x8A5 JUMPI DUP1 PUSH4 0x76319190 EQ PUSH2 0x8C5 JUMPI DUP1 PUSH4 0x7EEC56C7 EQ PUSH2 0x8E5 JUMPI DUP1 PUSH4 0x852B3CCB EQ PUSH2 0x908 JUMPI DUP1 PUSH4 0x857CDBB8 EQ PUSH2 0x92A JUMPI DUP1 PUSH4 0x85F438C1 EQ PUSH2 0x957 JUMPI DUP1 PUSH4 0x8C20F574 EQ PUSH2 0x979 JUMPI DUP1 PUSH4 0x8F69347D EQ PUSH2 0x999 JUMPI DUP1 PUSH4 0x9010D07C EQ PUSH2 0x9B9 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x9D9 JUMPI DUP1 PUSH4 0x930659EB EQ PUSH2 0x9F9 JUMPI DUP1 PUSH4 0x9DB5DBE4 EQ PUSH2 0xA29 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0xA49 JUMPI DUP1 PUSH4 0xA31AA039 EQ PUSH2 0xA5E JUMPI DUP1 PUSH4 0xA3246AD3 EQ PUSH2 0xA7E JUMPI DUP1 PUSH4 0xA7D022F8 EQ PUSH2 0xAAB JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0xACB JUMPI DUP1 PUSH4 0xB5124635 EQ PUSH2 0xAFC JUMPI DUP1 PUSH4 0xBE667188 EQ PUSH2 0xB1C JUMPI DUP1 PUSH4 0xC162D7DA EQ PUSH2 0xB3C JUMPI DUP1 PUSH4 0xC39409E1 EQ PUSH2 0xB51 JUMPI DUP1 PUSH4 0xC6640E68 EQ PUSH2 0xB66 JUMPI DUP1 PUSH4 0xC7B5914F EQ PUSH2 0xB86 JUMPI DUP1 PUSH4 0xCA15C873 EQ PUSH2 0xBA6 JUMPI DUP1 PUSH4 0xCCDE65DC EQ PUSH2 0xBC6 JUMPI DUP1 PUSH4 0xCD9EF914 EQ PUSH2 0xBE6 JUMPI DUP1 PUSH4 0xD09445C2 EQ PUSH2 0xC06 JUMPI DUP1 PUSH4 0xD3C7C2C7 EQ PUSH2 0xC28 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0xC3D JUMPI DUP1 PUSH4 0xDA47D856 EQ PUSH2 0xC5D JUMPI DUP1 PUSH4 0xE0B78ADD EQ PUSH2 0xC8A JUMPI DUP1 PUSH4 0xE26A61BB EQ PUSH2 0xCAA JUMPI DUP1 PUSH4 0xE5A6725C EQ PUSH2 0xCCA JUMPI DUP1 PUSH4 0xE7BFCE9A EQ PUSH2 0xCEA JUMPI DUP1 PUSH4 0xE96CF7AD EQ PUSH2 0xD0A JUMPI DUP1 PUSH4 0xEA79D07A EQ PUSH2 0xD1F JUMPI DUP1 PUSH4 0xEB5EA273 EQ PUSH2 0xD34 JUMPI DUP1 PUSH4 0xEBC20D20 EQ PUSH2 0xD54 JUMPI DUP1 PUSH4 0xED24911D EQ PUSH2 0xD74 JUMPI DUP1 PUSH4 0xEE3B641F EQ PUSH2 0xD89 JUMPI DUP1 PUSH4 0xF3FEF3A3 EQ PUSH2 0xDA9 JUMPI DUP1 PUSH4 0xF51ACAEA EQ PUSH2 0xDC9 JUMPI DUP1 PUSH4 0xF72C0D8B EQ PUSH2 0xDE9 JUMPI DUP1 PUSH4 0xF7E45F09 EQ PUSH2 0xE0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLDATASIZE PUSH2 0x3A4 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C9 PUSH2 0x3C4 CALLDATASIZE PUSH1 0x4 PUSH2 0x4431 JUMP JUMPDEST PUSH2 0xE2B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F3 PUSH2 0xE56 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3D5 SWAP2 SWAP1 PUSH2 0x4505 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x422 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x54F4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3D5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x43C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x445 PUSH2 0xF80 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3D5 SWAP2 SWAP1 PUSH2 0x4518 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x45E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x47D PUSH2 0x46D CALLDATASIZE PUSH1 0x4 PUSH2 0x4634 JUMP JUMPDEST PUSH4 0xA85BD01 PUSH1 0xE1 SHL SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3D5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x422 PUSH2 0x4B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x469F JUMP JUMPDEST PUSH2 0xFA0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0x4D1 CALLDATASIZE PUSH1 0x4 PUSH2 0x46D3 JUMP JUMPDEST PUSH2 0xFAE JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0x4F3 CALLDATASIZE PUSH1 0x4 PUSH2 0x4714 JUMP JUMPDEST PUSH2 0x105B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x504 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0x513 CALLDATASIZE PUSH1 0x4 PUSH2 0x47D4 JUMP JUMPDEST PUSH2 0x10FF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x524 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x422 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5514 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x546 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x55A PUSH2 0x555 CALLDATASIZE PUSH1 0x4 PUSH2 0x4808 JUMP JUMPDEST PUSH2 0x11B7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3D5 SWAP3 SWAP2 SWAP1 PUSH2 0x48A3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x574 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C9 PUSH2 0x1380 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x589 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x422 PUSH2 0x598 CALLDATASIZE PUSH1 0x4 PUSH2 0x48BC JUMP JUMPDEST PUSH2 0x1398 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0x5B8 CALLDATASIZE PUSH1 0x4 PUSH2 0x48EC JUMP JUMPDEST PUSH2 0x13B8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5C9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0x5D8 CALLDATASIZE PUSH1 0x4 PUSH2 0x4928 JUMP JUMPDEST PUSH2 0x145E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F3 PUSH2 0x5F8 CALLDATASIZE PUSH1 0x4 PUSH2 0x469F JUMP JUMPDEST PUSH2 0x1480 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x609 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x422 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x54B4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x62B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0x63A CALLDATASIZE PUSH1 0x4 PUSH2 0x4958 JUMP JUMPDEST PUSH2 0x148E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x64B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0x65A CALLDATASIZE PUSH1 0x4 PUSH2 0x4928 JUMP JUMPDEST PUSH2 0x164A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x66B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x422 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5414 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x68D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0x69C CALLDATASIZE PUSH1 0x4 PUSH2 0x47D4 JUMP JUMPDEST PUSH2 0x167D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0x6BC CALLDATASIZE PUSH1 0x4 PUSH2 0x49C0 JUMP JUMPDEST PUSH2 0x1723 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x445 PUSH2 0x179B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0x6F1 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A12 JUMP JUMPDEST PUSH2 0x17B2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x702 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x422 PUSH2 0x711 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A87 JUMP JUMPDEST PUSH2 0x1823 JUMP JUMPDEST PUSH2 0x4D6 PUSH2 0x724 CALLDATASIZE PUSH1 0x4 PUSH2 0x4AF5 JUMP JUMPDEST PUSH2 0x18A5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x735 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x73E PUSH2 0x18C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3D5 SWAP2 SWAP1 PUSH2 0x4B44 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x757 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0x766 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B58 JUMP JUMPDEST PUSH2 0x18E2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x777 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x422 PUSH2 0x1995 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x78C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0x79B CALLDATASIZE PUSH1 0x4 PUSH2 0x48BC JUMP JUMPDEST PUSH2 0x19B2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3F3 PUSH2 0x7BB CALLDATASIZE PUSH1 0x4 PUSH2 0x48BC JUMP JUMPDEST PUSH2 0x19F0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x422 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5434 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0x7FD CALLDATASIZE PUSH1 0x4 PUSH2 0x4808 JUMP JUMPDEST PUSH2 0x1AF8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x80E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x817 PUSH2 0x1CFA JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3D5 SWAP3 SWAP2 SWAP1 PUSH2 0x4B84 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x831 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0x840 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B92 JUMP JUMPDEST PUSH2 0x1D1C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x851 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0x860 CALLDATASIZE PUSH1 0x4 PUSH2 0x4714 JUMP JUMPDEST PUSH2 0x1D3D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x871 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0x880 CALLDATASIZE PUSH1 0x4 PUSH2 0x4BAF JUMP JUMPDEST PUSH2 0x1D5F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x891 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0x8A0 CALLDATASIZE PUSH1 0x4 PUSH2 0x48EC JUMP JUMPDEST PUSH2 0x1E17 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0x8C0 CALLDATASIZE PUSH1 0x4 PUSH2 0x4BF5 JUMP JUMPDEST PUSH2 0x1E51 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0x8E0 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B92 JUMP JUMPDEST PUSH2 0x1EC0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8FA PUSH2 0x1EE1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3D5 SWAP3 SWAP2 SWAP1 PUSH2 0x4CCC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x914 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x422 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5534 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x936 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x94A PUSH2 0x945 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B92 JUMP JUMPDEST PUSH2 0x20A6 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3D5 SWAP2 SWAP1 PUSH2 0x4D3E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x963 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x422 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x54D4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x985 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0x994 CALLDATASIZE PUSH1 0x4 PUSH2 0x4BF5 JUMP JUMPDEST PUSH2 0x218B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C9 PUSH2 0x9B4 CALLDATASIZE PUSH1 0x4 PUSH2 0x48BC JUMP JUMPDEST PUSH2 0x21FA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x73E PUSH2 0x9D4 CALLDATASIZE PUSH1 0x4 PUSH2 0x4714 JUMP JUMPDEST PUSH2 0x222B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C9 PUSH2 0x9F4 CALLDATASIZE PUSH1 0x4 PUSH2 0x4928 JUMP JUMPDEST PUSH2 0x2259 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA19 PUSH2 0xA14 CALLDATASIZE PUSH1 0x4 PUSH2 0x4D51 JUMP JUMPDEST PUSH2 0x228F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3D5 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4D7F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0xA44 CALLDATASIZE PUSH1 0x4 PUSH2 0x46D3 JUMP JUMPDEST PUSH2 0x22E6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x422 PUSH1 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0xA79 CALLDATASIZE PUSH1 0x4 PUSH2 0x4D9A JUMP JUMPDEST PUSH2 0x2339 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA8A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA9E PUSH2 0xA99 CALLDATASIZE PUSH1 0x4 PUSH2 0x48BC JUMP JUMPDEST PUSH2 0x235A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3D5 SWAP2 SWAP1 PUSH2 0x4DB7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAB7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0xAC6 CALLDATASIZE PUSH1 0x4 PUSH2 0x4DF8 JUMP JUMPDEST PUSH2 0x2387 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAD7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x94A PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x352E302E3 PUSH1 0xDC SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C9 PUSH2 0xB17 CALLDATASIZE PUSH1 0x4 PUSH2 0x469F JUMP JUMPDEST PUSH2 0x23F8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0xB37 CALLDATASIZE PUSH1 0x4 PUSH2 0x4714 JUMP JUMPDEST PUSH2 0x2406 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB48 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x73E PUSH2 0x2440 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x422 PUSH2 0x245B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0xB81 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B92 JUMP JUMPDEST PUSH2 0x2470 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x422 PUSH2 0xBA1 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A87 JUMP JUMPDEST PUSH2 0x250B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x422 PUSH2 0xBC1 CALLDATASIZE PUSH1 0x4 PUSH2 0x48BC JUMP JUMPDEST PUSH2 0x2547 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0xBE1 CALLDATASIZE PUSH1 0x4 PUSH2 0x4AF5 JUMP JUMPDEST PUSH2 0x256C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xBF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0xC01 CALLDATASIZE PUSH1 0x4 PUSH2 0x4E3E JUMP JUMPDEST PUSH2 0x258E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x422 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5494 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC34 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA9E PUSH2 0x2646 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC49 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0xC58 CALLDATASIZE PUSH1 0x4 PUSH2 0x4928 JUMP JUMPDEST PUSH2 0x2660 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC7D PUSH2 0xC78 CALLDATASIZE PUSH1 0x4 PUSH2 0x48BC JUMP JUMPDEST PUSH2 0x267C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x3D5 SWAP2 SWAP1 PUSH2 0x4E77 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C9 PUSH2 0xCA5 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B92 JUMP JUMPDEST PUSH2 0x27A5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0xCC5 CALLDATASIZE PUSH1 0x4 PUSH2 0x4E8A JUMP JUMPDEST PUSH2 0x27BF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0xCE5 CALLDATASIZE PUSH1 0x4 PUSH2 0x48BC JUMP JUMPDEST PUSH2 0x285D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0xD05 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B92 JUMP JUMPDEST PUSH2 0x28E9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x422 PUSH2 0x290A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA9E PUSH2 0x291F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x422 PUSH2 0xD4F CALLDATASIZE PUSH1 0x4 PUSH2 0x48BC JUMP JUMPDEST PUSH2 0x2939 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD60 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0xD6F CALLDATASIZE PUSH1 0x4 PUSH2 0x4F1D JUMP JUMPDEST PUSH2 0x2964 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD80 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x422 PUSH2 0x29D1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD95 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x817 PUSH2 0xDA4 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B92 JUMP JUMPDEST PUSH2 0x29DC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0xDC4 CALLDATASIZE PUSH1 0x4 PUSH2 0x4B58 JUMP JUMPDEST PUSH2 0x2A17 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDD5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0xDE4 CALLDATASIZE PUSH1 0x4 PUSH2 0x469F JUMP JUMPDEST PUSH2 0x2A9F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xDF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x422 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5454 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xE17 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4D6 PUSH2 0xE26 CALLDATASIZE PUSH1 0x4 PUSH2 0x4BAF JUMP JUMPDEST PUSH2 0x2B0A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5A05180F PUSH1 0xE0 SHL EQ DUP1 PUSH2 0xE50 JUMPI POP PUSH2 0xE50 DUP3 PUSH2 0x2B44 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0xE62 PUSH2 0xF80 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0xE7F JUMPI PUSH2 0xE7F PUSH2 0x4571 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xEB2 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0xE9D JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0xF79 JUMPI PUSH2 0xEC9 PUSH2 0x2440 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5A81A626 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xEE9 JUMPI PUSH2 0xEE9 PUSH2 0x4F76 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF0F SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xF2C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0xF54 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4F8C JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xF66 JUMPI PUSH2 0xF66 PUSH2 0x4F76 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xEB8 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0xF8C PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH2 0xF9A DUP2 PUSH1 0x9 ADD PUSH2 0x2B9D JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE50 PUSH2 0xD4F DUP4 PUSH2 0x2BAA JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x54D4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0xFC6 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xFED JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A954ECD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x21421707 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP5 SWAP1 MSTORE DUP6 AND SWAP1 PUSH4 0x42842E0E SWAP1 PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x103D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1051 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5534 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1073 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH20 0x0 PUSH4 0x21B87F3A PUSH2 0x1095 PUSH2 0x18C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP5 SWAP1 SHL AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x64 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x10F6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5494 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1117 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x11B2 JUMPI PUSH1 0x0 PUSH2 0x1147 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x113A JUMPI PUSH2 0x113A PUSH2 0x4F76 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x2BAA JUMP JUMPDEST SWAP1 POP PUSH2 0x1152 DUP2 PUSH2 0x2C2A JUMP JUMPDEST DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x1164 JUMPI PUSH2 0x1164 PUSH2 0x4F76 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH2 0x1179 SWAP2 SWAP1 PUSH2 0x4FF9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB DUP2 KECCAK256 SWAP1 PUSH32 0x50CC5F9D56177AA0DE269C136F2D2FFD45D7B66C82F0A82F8F840DB54D9801F8 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP PUSH1 0x1 ADD PUSH2 0x111A JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND ADDRESS EQ PUSH2 0x11EE JUMPI DUP10 PUSH1 0x40 MLOAD PUSH4 0x7B7D696F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11E5 SWAP2 SWAP1 PUSH2 0x4B44 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x11F6 PUSH2 0x2440 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x12B357B5 DUP11 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1221 SWAP2 SWAP1 PUSH2 0x4B44 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x123E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1262 SWAP2 SWAP1 PUSH2 0x5015 JUMP JUMPDEST PUSH2 0x1281 JUMPI DUP9 PUSH1 0x40 MLOAD PUSH4 0x3F2C64AF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11E5 SWAP2 SWAP1 PUSH2 0x4B44 JUMP JUMPDEST DUP4 TIMESTAMP LT PUSH2 0x12A4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x6453B2E5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x11E5 JUMP JUMPDEST PUSH2 0x12B4 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0x2C68 JUMP JUMPDEST SWAP2 POP PUSH2 0x12BF DUP3 PUSH2 0x27A5 JUMP JUMPDEST PUSH2 0x12DE JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x248D101D PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11E5 SWAP2 SWAP1 PUSH2 0x4B44 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x12E8 PUSH2 0x2C94 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP4 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP15 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 PUSH1 0x1 DUP2 ADD SLOAD SWAP2 SWAP3 POP SWAP1 DUP9 LT ISZERO PUSH2 0x133B JUMPI PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x40 MLOAD PUSH4 0x7C83FCF PUSH1 0xE4 SHL DUP2 MSTORE PUSH2 0x11E5 SWAP2 DUP11 SWAP2 PUSH1 0x4 ADD PUSH2 0x4B84 JUMP JUMPDEST DUP1 SLOAD DUP10 GT PUSH2 0x1360 JUMPI DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0x22564901 PUSH1 0xE1 SHL DUP2 MSTORE PUSH2 0x11E5 SWAP2 DUP12 SWAP2 PUSH1 0x4 ADD PUSH2 0x4B84 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SLOAD PUSH2 0x136F SWAP1 DUP10 PUSH2 0x5048 JUMP JUMPDEST SWAP3 POP POP POP SWAP9 POP SWAP9 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x138B PUSH2 0x2B79 JUMP JUMPDEST PUSH1 0x3 ADD SLOAD PUSH1 0xFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x13A3 PUSH2 0x2CB8 JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5534 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x13D0 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH20 0x0 PUSH4 0x7E47316 PUSH2 0x13F2 PUSH2 0x18C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP5 SWAP1 SHL AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP8 SWAP1 MSTORE PUSH2 0xFFFF DUP1 DUP8 AND PUSH1 0x44 DUP4 ADD MSTORE DUP6 AND PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x144A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x1051 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH2 0x1467 DUP3 PUSH2 0x1398 JUMP JUMPDEST PUSH2 0x1470 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH2 0x147A DUP4 DUP4 PUSH2 0x2CDC JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xE50 PUSH2 0x7BB DUP4 PUSH2 0x2BAA JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1498 PUSH2 0x2D1E JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV AND ISZERO SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x0 DUP2 ISZERO DUP1 ISZERO PUSH2 0x14BF JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0x14DB JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0x14E9 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x1507 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT AND PUSH1 0x1 OR DUP6 SSTORE DUP4 ISZERO PUSH2 0x1530 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR DUP6 SSTORE JUMPDEST PUSH2 0x1538 PUSH2 0x2D42 JUMP JUMPDEST PUSH2 0x1540 PUSH2 0x2D42 JUMP JUMPDEST PUSH2 0x1548 PUSH2 0x2D4C JUMP JUMPDEST PUSH2 0x1553 PUSH1 0x0 DUP9 PUSH2 0x2CDC JUMP JUMPDEST POP PUSH2 0x156C PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5494 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP9 PUSH2 0x2CDC JUMP JUMPDEST POP PUSH2 0x1585 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x54B4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP9 PUSH2 0x2CDC JUMP JUMPDEST POP PUSH2 0x159E PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5454 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP8 PUSH2 0x2CDC JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x15A9 PUSH2 0x2DE6 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP15 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP3 DUP4 AND OR DUP4 SSTORE PUSH1 0x1 DUP4 ADD DUP1 SLOAD SWAP2 DUP15 AND SWAP2 SWAP1 SWAP3 AND OR SWAP1 SSTORE PUSH1 0x2 DUP2 ADD DUP11 SWAP1 SSTORE SWAP1 POP PUSH8 0x8AC7230489E80000 PUSH3 0x15180 PUSH2 0x15F5 DUP3 DUP3 PUSH2 0x2E0A JUMP JUMPDEST POP POP POP DUP4 ISZERO PUSH2 0x163E JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND DUP6 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0x1673 JUMPI PUSH1 0x40 MLOAD PUSH4 0x334BD919 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x11B2 DUP3 DUP3 PUSH2 0x2E2D JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5494 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1695 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH2 0x11B2 JUMPI PUSH1 0x0 PUSH2 0x16B8 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x113A JUMPI PUSH2 0x113A PUSH2 0x4F76 JUMP JUMPDEST SWAP1 POP PUSH2 0x16C3 DUP2 PUSH2 0x2E66 JUMP JUMPDEST DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x16D5 JUMPI PUSH2 0x16D5 PUSH2 0x4F76 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD PUSH2 0x16EA SWAP2 SWAP1 PUSH2 0x4FF9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB DUP2 KECCAK256 SWAP1 PUSH32 0xEDB7A081E6FF720AD9E97B837C352EF0548C4D09EC421B9B930B1E0C708E39E SWAP1 PUSH1 0x0 SWAP1 LOG2 POP PUSH1 0x1 ADD PUSH2 0x1698 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5494 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x173B DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH2 0x174D PUSH2 0x1747 DUP5 PUSH2 0x2BAA JUMP JUMPDEST DUP4 PUSH2 0x2EA4 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH2 0x175B SWAP2 SWAP1 PUSH2 0x4FF9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB DUP2 KECCAK256 DUP4 DUP3 MSTORE SWAP1 PUSH32 0xDD6C54A4503E1D8A1E75D73648F77D8FE66234B437CE30E20EDD51563116EC41 SWAP1 PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x17A7 PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH2 0xF9A DUP2 PUSH2 0x2B9D JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5494 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x17CA DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH2 0x17DE PUSH2 0x17D6 DUP7 PUSH2 0x2BAA JUMP JUMPDEST DUP6 DUP5 DUP7 PUSH2 0x2ECD JUMP JUMPDEST DUP5 PUSH1 0x40 MLOAD PUSH2 0x17EC SWAP2 SWAP1 PUSH2 0x4FF9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB DUP2 KECCAK256 SWAP1 PUSH32 0x763F2F41E0C407DD0A7067F44E5468A0DB74DA9FDB6CD1CB20C7B6DAE9375279 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x54F4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP11 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP2 DUP9 AND PUSH1 0x60 DUP3 ADD MSTORE SWAP1 DUP7 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0xC0 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0xE0 DUP2 ADD DUP4 SWAP1 MSTORE PUSH2 0x100 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x120 ADD JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x18AD PUSH2 0x2F65 JUMP JUMPDEST PUSH2 0x18B6 DUP3 PUSH2 0x2FF3 JUMP JUMPDEST PUSH2 0x18C0 DUP3 DUP3 PUSH2 0x3136 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x18CF PUSH2 0x2DE6 JUMP JUMPDEST PUSH1 0x1 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x54B4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x18FA DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH2 0x1903 DUP3 PUSH2 0x31EA JUMP JUMPDEST PUSH2 0x191B PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5434 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH2 0x2CDC JUMP JUMPDEST POP PUSH2 0x1934 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5534 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH2 0x2CDC JUMP JUMPDEST POP PUSH2 0x194D PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5414 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP5 PUSH2 0x2CDC JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0xDB3E11BA26E83D528BF96A2167061674C1CE7777C61376D852D172594A873994 SWAP1 PUSH1 0x0 SWAP1 LOG2 PUSH2 0x11B2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP4 PUSH2 0x325F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x199F PUSH2 0x32F8 JUMP JUMPDEST POP PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5474 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH2 0x19BA PUSH2 0x3341 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5414 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x19D2 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH2 0x19DB DUP3 PUSH2 0x31EA JUMP JUMPDEST PUSH2 0x19E4 DUP3 PUSH2 0x3377 JUMP JUMPDEST POP PUSH2 0x19ED PUSH2 0x34A4 JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x19FC PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH2 0x1A08 DUP4 DUP3 PUSH2 0x34B5 JUMP JUMPDEST DUP1 PUSH1 0x2 ADD PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 SWAP1 JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x1AEC JUMPI DUP4 DUP3 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP1 SLOAD PUSH2 0x1A5F SWAP1 PUSH2 0x505B JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x1A8B SWAP1 PUSH2 0x505B JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1AD8 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1AAD JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1AD8 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1ABB JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1A40 JUMP JUMPDEST POP POP POP POP SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1B00 PUSH2 0x3341 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1B13 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0x11B7 JUMP JUMPDEST SWAP2 POP SWAP2 POP PUSH2 0x1B25 DUP3 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH2 0x34DF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2710 PUSH2 0x1B32 PUSH2 0x2440 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x3C555938 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1B6F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1B93 SWAP2 SWAP1 PUSH2 0x5095 JUMP JUMPDEST PUSH2 0x1B9D SWAP1 DUP5 PUSH2 0x50AE JUMP JUMPDEST PUSH2 0x1BA7 SWAP2 SWAP1 PUSH2 0x50C5 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1BB5 DUP3 DUP5 PUSH2 0x5048 JUMP JUMPDEST SWAP1 POP DUP11 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP13 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x1BF7 JUMPI PUSH1 0x0 PUSH2 0x1BDA PUSH2 0x2C94 JUMP JUMPDEST SWAP1 POP DUP4 DUP2 PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x1BF0 SWAP2 SWAP1 PUSH2 0x50E7 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP POP POP JUMPDEST PUSH2 0x1C73 DUP3 PUSH2 0x1C03 PUSH2 0x2440 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x470D3AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1C40 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1C64 SWAP2 SWAP1 PUSH2 0x50FA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0x325F JUMP JUMPDEST PUSH2 0x1C86 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP3 PUSH2 0x325F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 DUP2 AND DUP3 MSTORE DUP13 DUP2 AND PUSH1 0x20 DUP4 ADD MSTORE SWAP2 DUP2 ADD DUP12 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP11 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0xA0 DUP2 ADD DUP5 SWAP1 MSTORE DUP2 DUP14 AND SWAP2 DUP15 AND SWAP1 PUSH32 0x4EBD6343A4AE90EA9A2ADD4327D0439DE765F4B8BBB691CAAF0875EF36C54E81 SWAP1 PUSH1 0xC0 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP PUSH2 0x1051 PUSH2 0x34A4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1D07 PUSH2 0x354A JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x2 ADD SLOAD DUP2 PUSH1 0x3 ADD SLOAD SWAP3 POP SWAP3 POP POP SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5494 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1D34 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH2 0x18C0 DUP3 PUSH2 0x356E JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x54B4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1D55 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH2 0x11B2 DUP4 DUP4 PUSH2 0x35E4 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5534 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1D77 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH20 0x0 PUSH4 0xFD13A43E PUSH2 0x1D99 PUSH2 0x18C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP5 SWAP1 SHL AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP8 SWAP1 MSTORE PUSH2 0xFFFF DUP1 DUP8 AND PUSH1 0x64 DUP4 ADD MSTORE DUP6 AND PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1DF8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x1E0C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5534 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1E2F DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH20 0x0 PUSH4 0x793DDDAC PUSH2 0x13F2 PUSH2 0x18C4 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5494 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1E69 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH2 0x1E7B PUSH2 0x1E75 DUP5 PUSH2 0x2BAA JUMP JUMPDEST DUP4 PUSH2 0x363E JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH2 0x1E89 SWAP2 SWAP1 PUSH2 0x4FF9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH32 0x498A5F4E6F3921F63E6863032989BDB7BB41E5CF5CBDE5437C7322C5C8DC46BF DUP4 PUSH1 0x40 MLOAD PUSH2 0x178E SWAP2 SWAP1 PUSH2 0x4D3E JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5494 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x1ED8 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH2 0x18C0 DUP3 PUSH2 0x3682 JUMP JUMPDEST PUSH1 0x60 DUP1 PUSH1 0x0 PUSH2 0x1EEE PUSH2 0x179B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1F0B JUMPI PUSH2 0x1F0B PUSH2 0x4571 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1F3E JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1F29 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x1F5C JUMPI PUSH2 0x1F5C PUSH2 0x4571 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x1F95 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH2 0x1F82 PUSH2 0x4332 JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH2 0x1F7A JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP4 MLOAD DUP2 LT ISZERO PUSH2 0x209B JUMPI PUSH2 0x1FAC PUSH2 0x2440 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x5A81A626 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x1FCC JUMPI PUSH2 0x1FCC PUSH2 0x4F76 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1FF2 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x200F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD PUSH1 0x40 MSTORE PUSH2 0x2037 SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH2 0x4F8C JUMP JUMPDEST DUP4 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2049 JUMPI PUSH2 0x2049 PUSH2 0x4F76 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 SWAP1 MSTORE POP PUSH2 0x2076 DUP5 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2069 JUMPI PUSH2 0x2069 PUSH2 0x4F76 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x267C JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x2088 JUMPI PUSH2 0x2088 PUSH2 0x4F76 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0x1F9B JUMP JUMPDEST POP SWAP1 SWAP5 SWAP1 SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x20B2 PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH2 0x20C1 PUSH1 0x6 DUP3 ADD DUP5 PUSH2 0x36F8 JUMP JUMPDEST PUSH2 0x20E0 JUMPI DUP3 PUSH1 0x40 MLOAD PUSH4 0xBA650B5F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11E5 SWAP2 SWAP1 PUSH2 0x4B44 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH2 0x2105 SWAP1 PUSH2 0x505B JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x2131 SWAP1 PUSH2 0x505B JUMP JUMPDEST DUP1 ISZERO PUSH2 0x217E JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2153 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x217E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2161 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5494 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x21A3 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH2 0x21B5 PUSH2 0x21AF DUP5 PUSH2 0x2BAA JUMP JUMPDEST DUP4 PUSH2 0x370D JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH2 0x21C3 SWAP2 SWAP1 PUSH2 0x4FF9 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH32 0xBA851FAEC9E30A9961F0ADB49FE025CDA6C8D7D0FB9BAD99F89C37D057023264 DUP4 PUSH1 0x40 MLOAD PUSH2 0x178E SWAP2 SWAP1 PUSH2 0x4D3E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2205 PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH2 0x2211 DUP4 DUP3 PUSH2 0x34B5 JUMP JUMPDEST PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x2 ADD PUSH1 0x20 MSTORE POP PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2236 PUSH2 0x383C JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH2 0x2251 SWAP1 DUP5 PUSH2 0x3860 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2264 PUSH2 0x2CB8 JUMP JUMPDEST PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP7 MSTORE SWAP4 SWAP1 MSTORE POP POP SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x229F PUSH2 0x2C94 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP8 DUP9 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 DUP3 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP9 SWAP1 SWAP10 AND DUP2 MSTORE SWAP7 SWAP1 MSTORE POP POP POP SWAP3 SWAP1 SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 SWAP1 SWAP4 ADD SLOAD SWAP2 SWAP6 SWAP1 SWAP5 POP SWAP2 SWAP3 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x54D4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x22FE DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x2325 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3A954ECD PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x147A PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND DUP5 DUP5 PUSH2 0x386C JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5494 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x2351 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH2 0x18C0 DUP3 PUSH2 0x38C4 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x2366 PUSH2 0x383C JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH2 0x2380 SWAP1 PUSH2 0x2B9D JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5494 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x239F DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH2 0x23B1 PUSH2 0x23AB DUP5 PUSH2 0x2BAA JUMP JUMPDEST DUP4 PUSH2 0x391B JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH2 0x23BF SWAP2 SWAP1 PUSH2 0x4FF9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB DUP2 KECCAK256 DUP4 ISZERO ISZERO DUP3 MSTORE SWAP1 PUSH32 0x23960B931EB4B63E2E47D040F51CC0DE6EEF2E865639EB674FBB1890ECE3A0AB SWAP1 PUSH1 0x20 ADD PUSH2 0x178E JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE50 PUSH2 0x9B4 DUP4 PUSH2 0x2BAA JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5534 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x241E DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH20 0x0 PUSH4 0x348E06DD PUSH2 0x1095 PUSH2 0x18C4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x244B PUSH2 0x2DE6 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2466 PUSH2 0x2DE6 JUMP JUMPDEST PUSH1 0x2 ADD SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x54B4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x2488 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH2 0x24A0 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5434 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP4 PUSH2 0x2E2D JUMP JUMPDEST POP PUSH2 0x24B9 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5534 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP4 PUSH2 0x2E2D JUMP JUMPDEST POP PUSH2 0x24D2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5414 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP4 PUSH2 0x2E2D JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xD124523A9CFA28C5DD01826C4FA56192EC7D56859943082E0CA46C3B9DC62913 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2515 PUSH2 0x29D1 JUMP JUMPDEST PUSH2 0x2524 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH2 0x1823 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1901 PUSH1 0xF0 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x22 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x42 DUP3 ADD MSTORE PUSH1 0x62 ADD PUSH2 0x1882 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2552 PUSH2 0x383C JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH2 0x2380 SWAP1 PUSH2 0x3955 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5494 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x2584 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH2 0x11B2 DUP4 DUP4 PUSH2 0x395F JUMP JUMPDEST PUSH2 0x2596 PUSH2 0x3341 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5534 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x25AE DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH20 0x0 PUSH4 0x7ADF63B7 PUSH2 0x25D0 PUSH2 0x18C4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT PUSH1 0xE0 DUP5 SWAP1 SHL AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP9 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP8 SWAP1 MSTORE SWAP1 DUP6 AND PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2625 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x2639 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x11B2 PUSH2 0x34A4 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x2652 PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH2 0xF9A PUSH1 0x4 DUP3 ADD PUSH2 0x2B9D JUMP JUMPDEST PUSH2 0x2669 DUP3 PUSH2 0x1398 JUMP JUMPDEST PUSH2 0x2672 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH2 0x147A DUP4 DUP4 PUSH2 0x2E2D JUMP JUMPDEST PUSH2 0x2684 PUSH2 0x4332 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x268E PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH2 0x269A DUP4 DUP3 PUSH2 0x34B5 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP2 MLOAD PUSH1 0x60 DUP2 ADD DUP4 MSTORE DUP2 SLOAD DUP2 MSTORE PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0xFF AND ISZERO ISZERO DUP2 DUP6 ADD MSTORE SWAP4 DUP2 ADD DUP1 SLOAD DUP4 MLOAD DUP2 DUP7 MUL DUP2 ADD DUP7 ADD DUP6 MSTORE DUP2 DUP2 MSTORE SWAP6 SWAP7 SWAP3 SWAP6 SWAP4 DUP8 ADD SWAP5 SWAP2 SWAP3 SWAP1 SWAP2 DUP5 ADD JUMPDEST DUP3 DUP3 LT ISZERO PUSH2 0x2796 JUMPI DUP4 DUP3 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP1 SLOAD PUSH2 0x2709 SWAP1 PUSH2 0x505B JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x2735 SWAP1 PUSH2 0x505B JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2782 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2757 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2782 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2765 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x26EA JUMP JUMPDEST POP POP POP SWAP2 MSTORE POP SWAP1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE50 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5434 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP4 PUSH2 0x2259 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5534 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x27D7 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH20 0x0 PUSH4 0xE4C22569 PUSH2 0x27F9 PUSH2 0x18C4 JUMP JUMPDEST DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD DUP10 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2823 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x5117 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x283B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x284F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5534 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x2875 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH20 0x0 PUSH4 0xC7BFFA96 PUSH2 0x2897 PUSH2 0x18C4 JUMP JUMPDEST DUP5 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x28B5 SWAP3 SWAP2 SWAP1 PUSH2 0x48A3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x28CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS DELEGATECALL ISZERO DUP1 ISZERO PUSH2 0x28E1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5494 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x2901 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH2 0x18C0 DUP3 PUSH2 0x39FB JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2915 PUSH2 0x2C94 JUMP JUMPDEST PUSH1 0x1 ADD SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x292B PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH2 0xF9A DUP2 PUSH1 0x6 ADD PUSH2 0x2B9D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2944 PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH2 0x2950 DUP4 DUP3 PUSH2 0x34B5 JUMP JUMPDEST PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x2 ADD PUSH1 0x20 MSTORE POP PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5494 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x297C DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH2 0x298E PUSH2 0x2988 DUP5 PUSH2 0x2BAA JUMP JUMPDEST DUP4 PUSH2 0x3A94 JUMP JUMPDEST DUP3 PUSH1 0x40 MLOAD PUSH2 0x299C SWAP2 SWAP1 PUSH2 0x4FF9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB DUP2 KECCAK256 SWAP1 PUSH32 0xD52AEF6010D6B6303240865274298B7C5784B14EBF9DF788047B34C69C531371 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2466 PUSH2 0x2C94 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x29E9 PUSH2 0x354A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP6 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x1 SWAP1 SWAP8 ADD SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP4 SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x2A1F PUSH2 0x3341 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x54D4 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x2A37 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH2 0x2A40 DUP3 PUSH2 0x31EA JUMP JUMPDEST PUSH2 0x2A53 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND DUP4 PUSH2 0x325F JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x884EDAD9CE6FA2440D8A54CC123490EB96D2768479D49FF9C7366125A9424364 DUP4 PUSH1 0x40 MLOAD PUSH2 0x2A8E SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP PUSH2 0x18C0 PUSH2 0x34A4 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5494 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x2AB7 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH2 0x2AC8 PUSH2 0x2AC3 DUP4 PUSH2 0x2BAA JUMP JUMPDEST PUSH2 0x3AD2 JUMP JUMPDEST DUP2 PUSH1 0x40 MLOAD PUSH2 0x2AD6 SWAP2 SWAP1 PUSH2 0x4FF9 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 SWAP1 SUB DUP2 KECCAK256 SWAP1 PUSH32 0x52F6E0779195109314DFB8CF301D33491C63F136AFAC4C5D4F35AA934B254813 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5534 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x2B22 DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH20 0x0 PUSH4 0xB54E72D8 PUSH2 0x1D99 PUSH2 0x18C4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x7965DB0B PUSH1 0xE0 SHL EQ DUP1 PUSH2 0xE50 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0xE50 JUMP JUMPDEST PUSH32 0xF2856E5E1B7689DCDE1BB551FD115C3CAD8D243EA609D47A46B4D22EE58D3000 SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x2380 DUP4 PUSH2 0x3B3B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2BB4 PUSH2 0x2440 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x352AF39A DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BDF SWAP2 SWAP1 PUSH2 0x4D3E JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2BFC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xE50 SWAP2 SWAP1 PUSH2 0x5095 JUMP JUMPDEST PUSH2 0x19ED DUP2 CALLER PUSH2 0x3B97 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2C34 PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2C45 PUSH1 0x9 DUP4 ADD DUP5 PUSH2 0x3BC2 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x11B2 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1A1E0569 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x11E5 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2C7A DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 DUP11 PUSH2 0x250B JUMP JUMPDEST SWAP1 POP PUSH2 0x2C86 DUP2 DUP5 PUSH2 0x3BCE JUMP JUMPDEST SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x175F7E400D42AF44D9EBD24E9EFEE8A2C4ED78DDF46A83E51A493AE382C87600 SWAP1 JUMP JUMPDEST PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2CE7 PUSH2 0x383C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2CF5 DUP6 DUP6 PUSH2 0x3BF8 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x2251 JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x2D15 SWAP1 DUP6 PUSH2 0x3C99 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH2 0x2D4A PUSH2 0x3CAE JUMP JUMPDEST JUMP JUMPDEST PUSH2 0x2D54 PUSH2 0x3CAE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2D5E PUSH2 0x2C94 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 SWAP2 POP PUSH2 0x2DC6 SWAP1 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5514 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 PUSH32 0x964F47BA1D5DC0D1184A60039DBA40ABB2D0EEE53398392E97308CB5F4A12F94 SWAP1 PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 SWAP1 CHAINID SWAP1 PUSH1 0x20 ADD PUSH2 0x4D7F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 PUSH1 0x2 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH32 0xC7B73796C7CC89B9F849B9056A93200EBA741881E57A1B03B9BEDB2C0E07100 SWAP1 JUMP JUMPDEST PUSH2 0x2E12 PUSH2 0x3CAE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E1C PUSH2 0x354A JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SWAP4 SWAP1 SWAP4 SSTORE POP PUSH1 0x3 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2E38 PUSH2 0x383C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2E46 DUP6 DUP6 PUSH2 0x3CD3 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH2 0x2251 JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x2D15 SWAP1 DUP6 PUSH2 0x3D4B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E70 PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2E81 PUSH1 0x9 DUP4 ADD DUP5 PUSH2 0x3D60 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x11B2 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7EAE59F1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x11E5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2EAE PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH2 0x2EBA DUP4 DUP3 PUSH2 0x34B5 JUMP JUMPDEST PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2ED7 PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2EE5 DUP3 DUP8 PUSH2 0x3BC2 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x2F07 JUMPI PUSH1 0x40 MLOAD PUSH3 0x21E3BB PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x11E5 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x60 DUP2 ADD DUP3 MSTORE DUP7 DUP2 MSTORE DUP5 ISZERO ISZERO PUSH1 0x20 DUP1 DUP4 ADD SWAP2 DUP3 MSTORE DUP3 DUP5 ADD DUP9 DUP2 MSTORE PUSH1 0x0 DUP12 DUP2 MSTORE PUSH1 0x2 DUP9 DUP2 ADD DUP5 MSTORE SWAP6 SWAP1 KECCAK256 DUP5 MLOAD DUP2 SSTORE SWAP3 MLOAD PUSH1 0x1 DUP5 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE MLOAD DUP1 MLOAD SWAP4 SWAP5 SWAP3 SWAP4 PUSH2 0x1E0C SWAP4 DUP6 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x4355 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH2 0x2FD5 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x2FC9 PUSH2 0x3D6C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x2D4A JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5454 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0x300B DUP2 PUSH2 0x2C20 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3015 PUSH2 0x2440 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x9D825BC5 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3052 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3076 SWAP2 SWAP1 PUSH2 0x50FA JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3082 PUSH2 0x3D6C JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SUB PUSH2 0x30BA JUMPI DUP1 DUP5 PUSH1 0x40 MLOAD PUSH4 0x82AFABC1 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11E5 SWAP3 SWAP2 SWAP1 PUSH2 0x5175 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x30F0 JUMPI DUP2 DUP5 PUSH1 0x40 MLOAD PUSH4 0x699A021F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11E5 SWAP3 SWAP2 SWAP1 PUSH2 0x5175 JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xA3D484F827E1C900CE24494BFDB214BCBAD08472A9F0571FB5BEAC779A682DB4 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x3190 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x318D SWAP2 DUP2 ADD SWAP1 PUSH2 0x5095 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x31AF JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11E5 SWAP2 SWAP1 PUSH2 0x4B44 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5474 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 EQ PUSH2 0x31E0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x11E5 JUMP JUMPDEST PUSH2 0x11B2 DUP4 DUP4 PUSH2 0x3D88 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x31F4 PUSH2 0x245B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3200 PUSH2 0x290A JUMP JUMPDEST SWAP1 POP DUP2 DUP2 LT ISZERO PUSH2 0x11B2 JUMPI PUSH1 0x0 PUSH2 0x3216 DUP3 DUP5 PUSH2 0x5048 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3224 DUP3 SELFBALANCE PUSH2 0x5048 JUMP JUMPDEST SWAP1 POP DUP1 DUP6 GT ISZERO PUSH2 0x3258 JUMPI PUSH1 0x40 MLOAD PUSH4 0x44C87605 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x64 ADD PUSH2 0x11E5 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH2 0x3284 JUMPI SELFBALANCE DUP2 PUSH1 0x40 MLOAD PUSH4 0xCF479181 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11E5 SWAP3 SWAP2 SWAP1 PUSH2 0x4B84 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x32D1 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x32D6 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x11B2 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x2D4A JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x334B PUSH2 0x3DDE JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 NOT ADD PUSH2 0x3371 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3EE5AEB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3381 PUSH2 0x354A JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x2 ADD SLOAD DUP3 GT ISZERO PUSH2 0x33B0 JUMPI DUP1 PUSH1 0x2 ADD SLOAD DUP3 PUSH1 0x40 MLOAD PUSH4 0x1728BC5B PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11E5 SWAP3 SWAP2 SWAP1 PUSH2 0x4B84 JUMP JUMPDEST PUSH1 0x3 DUP2 ADD SLOAD CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD TIMESTAMP SWAP2 PUSH2 0x33D0 SWAP2 PUSH2 0x50E7 JUMP JUMPDEST DUP2 GT ISZERO PUSH2 0x33F8 JUMPI CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP4 SWAP1 SSTORE SWAP1 DUP5 SWAP1 MSTORE SWAP1 KECCAK256 DUP2 SWAP1 SSTORE JUMPDEST PUSH1 0x2 DUP3 ADD SLOAD CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x341A SWAP1 DUP6 SWAP1 PUSH2 0x50E7 JUMP JUMPDEST GT ISZERO PUSH2 0x3441 JUMPI DUP2 PUSH1 0x2 ADD SLOAD DUP4 PUSH1 0x40 MLOAD PUSH4 0xD54B1887 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11E5 SWAP3 SWAP2 SWAP1 PUSH2 0x4B84 JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD DUP6 SWAP3 SWAP1 PUSH2 0x3462 SWAP1 DUP5 SWAP1 PUSH2 0x50E7 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x3472 SWAP1 POP CALLER DUP5 PUSH2 0x325F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 DUP2 MSTORE CALLER SWAP1 PUSH32 0xB9EC638398BBDCD0844CA414D8CE760939FA88B9258B9764B3FC6C12EA2605C2 SWAP1 PUSH1 0x20 ADD PUSH2 0x178E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34AE PUSH2 0x3DDE JUMP JUMPDEST PUSH1 0x1 SWAP1 SSTORE POP JUMP JUMPDEST PUSH2 0x34BF DUP2 DUP4 PUSH2 0x3E02 JUMP JUMPDEST PUSH2 0x18C0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E96F6ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x11E5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x34E9 PUSH2 0x2C94 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE SWAP7 DUP8 MSTORE PUSH1 0x20 DUP1 DUP9 ADD SWAP7 DUP8 MSTORE DUP8 DUP3 ADD SWAP6 DUP7 MSTORE PUSH1 0x60 DUP9 ADD SWAP5 DUP6 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP10 DUP11 AND PUSH1 0x0 SWAP1 DUP2 MSTORE SWAP3 DUP2 MSTORE DUP2 DUP4 KECCAK256 SWAP9 SWAP1 SWAP10 AND DUP3 MSTORE SWAP7 SWAP1 SWAP8 MSTORE POP SWAP4 SWAP1 SWAP5 KECCAK256 SWAP2 MLOAD DUP3 SSTORE MLOAD PUSH1 0x1 DUP3 ADD SSTORE SWAP2 MLOAD PUSH1 0x2 DUP4 ADD SSTORE MLOAD PUSH1 0x3 SWAP1 SWAP2 ADD SSTORE JUMP JUMPDEST PUSH32 0x99A652063088B6BADAEB0C7F680676BAF720654B4F86F50167944489AF637D00 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3578 PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3589 PUSH1 0x4 DUP4 ADD DUP5 PUSH2 0x3C99 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x35AB JUMPI DUP3 PUSH1 0x40 MLOAD PUSH4 0x2872FBF9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11E5 SWAP2 SWAP1 PUSH2 0x4B44 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0xA317C10673BAF4F03B3C1041BD5DDBB537D0333A86FEC3607C75F9DBB630F48F SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x35EE PUSH2 0x354A JUMP JUMPDEST PUSH1 0x2 DUP2 ADD DUP5 SWAP1 SSTORE PUSH1 0x3 DUP2 ADD DUP4 SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 SWAP2 POP PUSH32 0x8D4925B196AE6B935035A27ED36C6BD9C7A8FBDDC7A3F55F493AA8E230BE373E SWAP1 PUSH2 0x3631 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH2 0x4B84 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3648 PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH2 0x3654 DUP4 DUP3 PUSH2 0x34B5 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP4 KECCAK256 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP1 DUP4 MSTORE SWAP2 KECCAK256 ADD PUSH2 0x147A DUP4 DUP3 PUSH2 0x51EC JUMP JUMPDEST PUSH1 0x0 PUSH2 0x368C PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x369D PUSH1 0x4 DUP4 ADD DUP5 PUSH2 0x3D4B JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x36BF JUMPI DUP3 PUSH1 0x40 MLOAD PUSH4 0x1532E671 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11E5 SWAP2 SWAP1 PUSH2 0x4B44 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0x85A3E72F8DD6DB3794F93109C3C5F5B79D6112F6979431C45F98B26134B42AF2 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2380 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x3E0A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3717 PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH2 0x3723 DUP4 DUP3 PUSH2 0x34B5 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP3 KECCAK256 ADD SWAP1 JUMPDEST DUP2 SLOAD DUP2 LT ISZERO PUSH2 0x3258 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3751 SWAP2 SWAP1 PUSH2 0x4FF9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 DUP3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x3779 JUMPI PUSH2 0x3779 PUSH2 0x4F76 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3793 SWAP2 SWAP1 PUSH2 0x52A5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SUB PUSH2 0x3834 JUMPI DUP2 SLOAD DUP3 SWAP1 PUSH2 0x37BE SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x5048 JUMP JUMPDEST DUP2 SLOAD DUP2 LT PUSH2 0x37CE JUMPI PUSH2 0x37CE PUSH2 0x4F76 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD DUP3 DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x37EA JUMPI PUSH2 0x37EA PUSH2 0x4F76 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SWAP1 DUP2 PUSH2 0x3800 SWAP2 SWAP1 PUSH2 0x531B JUMP JUMPDEST POP DUP2 DUP1 SLOAD DUP1 PUSH2 0x3811 JUMPI PUSH2 0x3811 PUSH2 0x53E7 JUMP JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 PUSH2 0x382D SWAP2 SWAP1 PUSH2 0x43AB JUMP JUMPDEST SWAP1 SSTORE PUSH2 0x3258 JUMP JUMPDEST PUSH1 0x1 ADD PUSH2 0x3737 JUMP JUMPDEST PUSH32 0xC1F6FE24621CE81EC5827CAF0253CADB74709B061630E6B55E82371705932000 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2380 DUP4 DUP4 PUSH2 0x3E22 JUMP JUMPDEST PUSH2 0x11B2 DUP4 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xA9059CBB DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3892 SWAP3 SWAP2 SWAP1 PUSH2 0x48A3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH2 0x3E4C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x38CE PUSH2 0x2B79 JUMP JUMPDEST PUSH1 0x3 DUP2 ADD DUP1 SLOAD PUSH1 0xFF NOT AND DUP5 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE SWAP1 SWAP2 POP PUSH32 0xE93CEB76EFB130156C6AA39FA4AC986B3F683B6DA926496FCA3F95EA7FE715E3 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3925 PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH2 0x3931 DUP4 DUP3 PUSH2 0x34B5 JUMP JUMPDEST PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 PUSH1 0x1 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE50 DUP3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3969 PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x397A PUSH1 0x6 DUP4 ADD DUP6 PUSH2 0x3C99 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x399C JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x1A6107E3 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11E5 SWAP2 SWAP1 PUSH2 0x4B44 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x39C0 DUP5 DUP3 PUSH2 0x51EC JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH32 0x928EC246AFDA323BC23C2815CA3F516E9FC6A7B7179772235C221E132545FE82 SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A05 PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3A16 PUSH1 0x6 DUP4 ADD DUP5 PUSH2 0x3D4B JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x3A38 JUMPI DUP3 PUSH1 0x40 MLOAD PUSH4 0xBA650B5F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11E5 SWAP2 SWAP1 PUSH2 0x4B44 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x8 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x3A5B SWAP2 PUSH2 0x43AB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH32 0xC5A9B8041EF11732E7DD7043167D8C22DB5C7EA99DCD38DCE401EFFACF8A29BF SWAP1 PUSH1 0x0 SWAP1 LOG2 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3A9E PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH2 0x3AAA DUP4 DUP3 PUSH2 0x34B5 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP3 KECCAK256 DUP5 MLOAD PUSH2 0x147A SWAP4 SWAP2 SWAP1 SWAP3 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 PUSH2 0x4355 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3ADC PUSH2 0x2B79 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3AEA DUP3 DUP5 PUSH2 0x3D60 JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x3B0D JUMPI PUSH1 0x40 MLOAD PUSH4 0x1E96F6ED PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x11E5 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP3 KECCAK256 DUP3 DUP2 SSTORE PUSH1 0x1 DUP2 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE SWAP2 SWAP1 PUSH2 0x3258 SWAP1 DUP4 ADD DUP3 PUSH2 0x43E5 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x0 ADD DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH2 0x3B8B JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x3B77 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x3BA1 DUP3 DUP3 PUSH2 0x2259 JUMP JUMPDEST PUSH2 0x18C0 JUMPI DUP1 DUP3 PUSH1 0x40 MLOAD PUSH4 0xE2517D3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11E5 SWAP3 SWAP2 SWAP1 PUSH2 0x48A3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2380 DUP4 DUP4 PUSH2 0x3EB4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x3BDE DUP7 DUP7 PUSH2 0x3EFE JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0x3BEE DUP3 DUP3 PUSH2 0x3F4B JUMP JUMPDEST POP SWAP1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3C03 PUSH2 0x2CB8 JUMP JUMPDEST SWAP1 POP PUSH2 0x3C0F DUP5 DUP5 PUSH2 0x2259 JUMP JUMPDEST PUSH2 0x3C8F JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x3C45 CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0xE50 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0xE50 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2380 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x3EB4 JUMP JUMPDEST PUSH2 0x3CB6 PUSH2 0x4004 JUMP JUMPDEST PUSH2 0x2D4A JUMPI PUSH1 0x40 MLOAD PUSH4 0x1AFCD79F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3CDE PUSH2 0x2CB8 JUMP JUMPDEST SWAP1 POP PUSH2 0x3CEA DUP5 DUP5 PUSH2 0x2259 JUMP JUMPDEST ISZERO PUSH2 0x3C8F JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP8 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0xE50 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2380 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x401E JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2380 DUP4 DUP4 PUSH2 0x401E JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5474 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x3D91 DUP3 PUSH2 0x4107 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x3DD6 JUMPI PUSH2 0x11B2 DUP3 DUP3 PUSH2 0x4163 JUMP JUMPDEST PUSH2 0x18C0 PUSH2 0x41D9 JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2380 DUP4 DUP4 JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x3E39 JUMPI PUSH2 0x3E39 PUSH2 0x4F76 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 PUSH1 0x0 DUP5 MLOAD PUSH1 0x20 DUP7 ADD PUSH1 0x0 DUP9 GAS CALL DUP1 PUSH2 0x3E6F JUMPI PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST POP POP PUSH1 0x0 MLOAD RETURNDATASIZE SWAP2 POP DUP2 ISZERO PUSH2 0x3E87 JUMPI DUP1 PUSH1 0x1 EQ ISZERO PUSH2 0x3E94 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x147A JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11E5 SWAP2 SWAP1 PUSH2 0x4B44 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3EC0 DUP4 DUP4 PUSH2 0x3E0A JUMP JUMPDEST PUSH2 0x3EF6 JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP5 SWAP1 SSTORE DUP5 SLOAD DUP5 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0xE50 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0xE50 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP4 MLOAD PUSH1 0x41 SUB PUSH2 0x3F38 JUMPI PUSH1 0x20 DUP5 ADD MLOAD PUSH1 0x40 DUP6 ADD MLOAD PUSH1 0x60 DUP7 ADD MLOAD PUSH1 0x0 BYTE PUSH2 0x3F2A DUP9 DUP3 DUP6 DUP6 PUSH2 0x41F8 JUMP JUMPDEST SWAP6 POP SWAP6 POP SWAP6 POP POP POP POP PUSH2 0x3F44 JUMP JUMPDEST POP POP DUP2 MLOAD PUSH1 0x0 SWAP2 POP PUSH1 0x2 SWAP1 JUMPDEST SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3F5F JUMPI PUSH2 0x3F5F PUSH2 0x53FD JUMP JUMPDEST SUB PUSH2 0x3F68 JUMPI POP POP JUMP JUMPDEST PUSH1 0x1 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3F7C JUMPI PUSH2 0x3F7C PUSH2 0x53FD JUMP JUMPDEST SUB PUSH2 0x3F9A JUMPI PUSH1 0x40 MLOAD PUSH4 0xF645EEDF PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3FAE JUMPI PUSH2 0x3FAE PUSH2 0x53FD JUMP JUMPDEST SUB PUSH2 0x3FCF JUMPI PUSH1 0x40 MLOAD PUSH4 0xFCE698F7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x11E5 JUMP JUMPDEST PUSH1 0x3 DUP3 PUSH1 0x3 DUP2 GT ISZERO PUSH2 0x3FE3 JUMPI PUSH2 0x3FE3 PUSH2 0x53FD JUMP JUMPDEST SUB PUSH2 0x18C0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x35E2F383 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0x11E5 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x400E PUSH2 0x2D1E JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x3C8F JUMPI PUSH1 0x0 PUSH2 0x4042 PUSH1 0x1 DUP4 PUSH2 0x5048 JUMP JUMPDEST DUP6 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x4056 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x5048 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 EQ PUSH2 0x40BB JUMPI PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x4076 JUMPI PUSH2 0x4076 PUSH2 0x4F76 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP8 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x4099 JUMPI PUSH2 0x4099 PUSH2 0x4F76 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 DUP3 MSTORE PUSH1 0x1 DUP9 ADD SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP4 SWAP1 SSTORE JUMPDEST DUP6 SLOAD DUP7 SWAP1 DUP1 PUSH2 0x40CC JUMPI PUSH2 0x40CC PUSH2 0x53E7 JUMP JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH1 0x1 SWAP4 POP POP POP POP PUSH2 0xE50 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH2 0x4134 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11E5 SWAP2 SWAP1 PUSH2 0x4B44 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x5474 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x4180 SWAP2 SWAP1 PUSH2 0x4FF9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x41BB JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x41C0 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x41D0 DUP6 DUP4 DUP4 PUSH2 0x42BD JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x2D4A JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP1 PUSH16 0xA2A8918CA85BAFE22016D0B997E4DF60 PUSH1 0x1 PUSH1 0xFF SHL SUB DUP5 GT ISZERO PUSH2 0x4229 JUMPI POP PUSH1 0x0 SWAP2 POP PUSH1 0x3 SWAP1 POP DUP3 PUSH2 0x42B3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP1 DUP5 MSTORE DUP11 SWAP1 MSTORE PUSH1 0xFF DUP10 AND SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 SWAP1 PUSH1 0xA0 ADD PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x427D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x42A9 JUMPI POP PUSH1 0x0 SWAP3 POP PUSH1 0x1 SWAP2 POP DUP3 SWAP1 POP PUSH2 0x42B3 JUMP JUMPDEST SWAP3 POP PUSH1 0x0 SWAP2 POP DUP2 SWAP1 POP JUMPDEST SWAP5 POP SWAP5 POP SWAP5 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x42D2 JUMPI PUSH2 0x42CD DUP3 PUSH2 0x4309 JUMP JUMPDEST PUSH2 0x2380 JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x42E9 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0xF79 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x11E5 SWAP2 SWAP1 PUSH2 0x4B44 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x4319 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x60 DUP2 MSTORE POP SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x439B JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x439B JUMPI DUP3 MLOAD DUP3 SWAP1 PUSH2 0x438B SWAP1 DUP3 PUSH2 0x51EC JUMP JUMPDEST POP SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x4375 JUMP JUMPDEST POP PUSH2 0x43A7 SWAP3 SWAP2 POP PUSH2 0x43FF JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST POP DUP1 SLOAD PUSH2 0x43B7 SWAP1 PUSH2 0x505B JUMP JUMPDEST PUSH1 0x0 DUP3 SSTORE DUP1 PUSH1 0x1F LT PUSH2 0x43C7 JUMPI POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x19ED SWAP2 SWAP1 PUSH2 0x441C JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0x0 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH2 0x19ED SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x43A7 JUMPI PUSH1 0x0 PUSH2 0x4413 DUP3 DUP3 PUSH2 0x43AB JUMP JUMPDEST POP PUSH1 0x1 ADD PUSH2 0x43FF JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x43A7 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x441D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4443 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x2380 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4476 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x445E JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x4497 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x445B JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MLOAD DUP1 DUP6 MSTORE PUSH1 0x20 DUP1 DUP7 ADD SWAP6 POP PUSH1 0x20 DUP3 PUSH1 0x5 SHL DUP5 ADD ADD PUSH1 0x20 DUP7 ADD PUSH1 0x0 JUMPDEST DUP5 DUP2 LT ISZERO PUSH2 0x44F8 JUMPI PUSH1 0x1F NOT DUP7 DUP5 SUB ADD DUP10 MSTORE PUSH2 0x44E6 DUP4 DUP4 MLOAD PUSH2 0x447F JUMP JUMPDEST SWAP9 DUP5 ADD SWAP9 SWAP3 POP SWAP1 DUP4 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x44CA JUMP JUMPDEST POP SWAP1 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2380 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x44AB JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4550 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x4534 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x19ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT DUP3 DUP3 LT OR ISZERO PUSH2 0x45AF JUMPI PUSH2 0x45AF PUSH2 0x4571 JUMP JUMPDEST PUSH1 0x40 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT ISZERO PUSH2 0x45D0 JUMPI PUSH2 0x45D0 PUSH2 0x4571 JUMP JUMPDEST POP PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x45EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x4602 PUSH2 0x45FD DUP3 PUSH2 0x45B7 JUMP JUMPDEST PUSH2 0x4587 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP5 PUSH1 0x20 DUP4 DUP7 ADD ADD GT ISZERO PUSH2 0x4617 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 PUSH1 0x20 DUP6 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 SWAP2 DUP2 ADD PUSH1 0x20 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x464A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x4655 DUP2 PUSH2 0x455C JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x4665 DUP2 PUSH2 0x455C JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4687 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4693 DUP8 DUP3 DUP9 ADD PUSH2 0x45DE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x46B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x46C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2251 DUP5 DUP3 DUP6 ADD PUSH2 0x45DE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x46E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x46F3 DUP2 PUSH2 0x455C JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x4703 DUP2 PUSH2 0x455C JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4727 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4747 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x20 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP4 GT ISZERO PUSH2 0x4763 JUMPI PUSH2 0x4763 PUSH2 0x4571 JUMP JUMPDEST DUP3 PUSH1 0x5 SHL PUSH2 0x4772 DUP4 DUP3 ADD PUSH2 0x4587 JUMP JUMPDEST SWAP4 DUP5 MSTORE DUP6 DUP2 ADD DUP4 ADD SWAP4 DUP4 DUP2 ADD SWAP1 DUP9 DUP7 GT ISZERO PUSH2 0x478C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 DUP9 ADD SWAP3 POP JUMPDEST DUP6 DUP4 LT ISZERO PUSH2 0x47C8 JUMPI DUP3 CALLDATALOAD DUP5 DUP2 GT ISZERO PUSH2 0x47AA JUMPI PUSH1 0x0 DUP1 DUP2 REVERT JUMPDEST PUSH2 0x47B8 DUP11 DUP8 DUP4 DUP13 ADD ADD PUSH2 0x45DE JUMP JUMPDEST DUP4 MSTORE POP SWAP2 DUP5 ADD SWAP2 SWAP1 DUP5 ADD SWAP1 PUSH2 0x4792 JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x47E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x47FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2251 DUP5 DUP3 DUP6 ADD PUSH2 0x4736 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x4825 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x4830 DUP2 PUSH2 0x455C JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x4840 DUP2 PUSH2 0x455C JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH2 0x4850 DUP2 PUSH2 0x455C JUMP JUMPDEST SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP4 POP PUSH1 0xA0 DUP10 ADD CALLDATALOAD SWAP3 POP PUSH1 0xC0 DUP10 ADD CALLDATALOAD SWAP2 POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4887 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4893 DUP12 DUP3 DUP13 ADD PUSH2 0x45DE JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x48CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x48E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4901 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH2 0x4911 PUSH1 0x20 DUP6 ADD PUSH2 0x48D5 JUMP JUMPDEST SWAP2 POP PUSH2 0x491F PUSH1 0x40 DUP6 ADD PUSH2 0x48D5 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x493B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x494D DUP2 PUSH2 0x455C JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x4970 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x497B DUP2 PUSH2 0x455C JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH2 0x498B DUP2 PUSH2 0x455C JUMP JUMPDEST SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0x49A2 DUP2 PUSH2 0x455C JUMP JUMPDEST SWAP2 POP PUSH1 0x80 DUP7 ADD CALLDATALOAD PUSH2 0x49B2 DUP2 PUSH2 0x455C JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x49D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x49E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x49F5 DUP6 DUP3 DUP7 ADD PUSH2 0x45DE JUMP JUMPDEST SWAP6 PUSH1 0x20 SWAP5 SWAP1 SWAP5 ADD CALLDATALOAD SWAP5 POP POP POP POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x19ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4A28 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4A3F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4A4B DUP9 DUP4 DUP10 ADD PUSH2 0x45DE JUMP JUMPDEST SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD SWAP2 POP PUSH2 0x4A64 DUP3 PUSH2 0x4A04 JUMP JUMPDEST SWAP1 SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD SWAP1 DUP1 DUP3 GT ISZERO PUSH2 0x4A7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4693 DUP8 DUP3 DUP9 ADD PUSH2 0x4736 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x4AA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x4AAD DUP2 PUSH2 0x455C JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x4ABD DUP2 PUSH2 0x455C JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD PUSH2 0x4ACD DUP2 PUSH2 0x455C JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP6 SWAP7 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP7 POP PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP6 PUSH1 0xA0 DUP3 ADD CALLDATALOAD SWAP6 POP PUSH1 0xC0 SWAP1 SWAP2 ADD CALLDATALOAD SWAP4 POP SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4B08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4B13 DUP2 PUSH2 0x455C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4B2E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4B3A DUP6 DUP3 DUP7 ADD PUSH2 0x45DE JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4B6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4B76 DUP2 PUSH2 0x455C JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4BA4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2380 DUP2 PUSH2 0x455C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4BC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH2 0x4BDC PUSH1 0x40 DUP7 ADD PUSH2 0x48D5 JUMP JUMPDEST SWAP2 POP PUSH2 0x4BEA PUSH1 0x60 DUP7 ADD PUSH2 0x48D5 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4C08 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4C1F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4C2B DUP7 DUP4 DUP8 ADD PUSH2 0x45DE JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4C41 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4B3A DUP6 DUP3 DUP7 ADD PUSH2 0x45DE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP4 ADD DUP3 MLOAD DUP5 MSTORE PUSH1 0x20 DUP1 DUP5 ADD MLOAD ISZERO ISZERO PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP5 ADD MLOAD PUSH1 0x60 PUSH1 0x40 DUP8 ADD MSTORE DUP3 DUP2 MLOAD DUP1 DUP6 MSTORE PUSH1 0x80 DUP9 ADD SWAP2 POP PUSH1 0x80 DUP2 PUSH1 0x5 SHL DUP10 ADD ADD SWAP5 POP PUSH1 0x20 DUP4 ADD SWAP3 POP PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4CBF JUMPI PUSH1 0x7F NOT DUP10 DUP8 SUB ADD DUP4 MSTORE PUSH2 0x4CAD DUP7 DUP6 MLOAD PUSH2 0x447F JUMP JUMPDEST SWAP6 POP SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x4C91 JUMP JUMPDEST POP SWAP4 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH2 0x4CDF PUSH1 0x40 DUP4 ADD DUP6 PUSH2 0x44AB JUMP JUMPDEST PUSH1 0x20 DUP4 DUP3 SUB DUP2 DUP6 ADD MSTORE DUP2 DUP6 MLOAD DUP1 DUP5 MSTORE DUP3 DUP5 ADD SWAP2 POP DUP3 DUP2 PUSH1 0x5 SHL DUP6 ADD ADD DUP4 DUP9 ADD PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4D2F JUMPI PUSH1 0x1F NOT DUP8 DUP5 SUB ADD DUP6 MSTORE PUSH2 0x4D1D DUP4 DUP4 MLOAD PUSH2 0x4C4E JUMP JUMPDEST SWAP5 DUP7 ADD SWAP5 SWAP3 POP SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH2 0x4D01 JUMP JUMPDEST POP SWAP1 SWAP10 SWAP9 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2380 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x447F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4D64 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4D6F DUP2 PUSH2 0x455C JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x494D DUP2 PUSH2 0x455C JUMP JUMPDEST SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4DAC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x2380 DUP2 PUSH2 0x4A04 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4550 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x4DD3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4E0B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4E21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E2D DUP6 DUP3 DUP7 ADD PUSH2 0x45DE JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x494D DUP2 PUSH2 0x4A04 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4E53 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x4E6C DUP2 PUSH2 0x455C JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x2380 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x4C4E JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x4EA5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x4EB0 DUP2 PUSH2 0x455C JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4ECB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4ED7 DUP11 DUP3 DUP12 ADD PUSH2 0x45DE JUMP JUMPDEST SWAP7 POP POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH2 0x4EF6 DUP2 PUSH2 0x455C JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD PUSH2 0x4F0D DUP2 PUSH2 0x4A04 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4F30 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4F47 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4F53 DUP7 DUP4 DUP8 ADD PUSH2 0x45DE JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x4F69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4B3A DUP6 DUP3 DUP7 ADD PUSH2 0x4736 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4F9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x4FB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH2 0x4FC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH2 0x4FD3 PUSH2 0x45FD DUP3 PUSH2 0x45B7 JUMP JUMPDEST DUP2 DUP2 MSTORE DUP6 PUSH1 0x20 DUP4 DUP6 ADD ADD GT ISZERO PUSH2 0x4FE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x41D0 DUP3 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x445B JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x500B DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x445B JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x5027 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2380 DUP2 PUSH2 0x4A04 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0xE50 JUMPI PUSH2 0xE50 PUSH2 0x5032 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x506F JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x508F JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x50A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH2 0xE50 JUMPI PUSH2 0xE50 PUSH2 0x5032 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH2 0x50E2 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP DIV SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0xE50 JUMPI PUSH2 0xE50 PUSH2 0x5032 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x510C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x2380 DUP2 PUSH2 0x455C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND DUP3 MSTORE DUP9 DUP2 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH2 0x100 PUSH1 0x40 DUP4 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 PUSH2 0x5145 DUP5 DUP4 ADD DUP12 PUSH2 0x447F JUMP JUMPDEST PUSH1 0x60 DUP6 ADD SWAP10 SWAP1 SWAP10 MSTORE PUSH1 0x80 DUP5 ADD SWAP8 SWAP1 SWAP8 MSTORE POP POP SWAP3 SWAP1 SWAP4 AND PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0xE0 SWAP1 SWAP2 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x11B2 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH2 0x51B8 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x28E1 JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x51C4 JUMP JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP4 SWAP1 SHL SHR NOT AND PUSH1 0x1 SWAP2 SWAP1 SWAP2 SHL OR SWAP1 JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x5205 JUMPI PUSH2 0x5205 PUSH2 0x4571 JUMP JUMPDEST PUSH2 0x5219 DUP2 PUSH2 0x5213 DUP5 SLOAD PUSH2 0x505B JUMP JUMPDEST DUP5 PUSH2 0x518F JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x5248 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x5236 JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH2 0x5240 DUP6 DUP3 PUSH2 0x51D7 JUMP JUMPDEST DUP7 SSTORE POP PUSH2 0x28E1 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x5277 JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH2 0x5258 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH2 0x5295 JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 SLOAD PUSH2 0x52B3 DUP2 PUSH2 0x505B JUMP JUMPDEST PUSH1 0x1 DUP3 DUP2 AND DUP1 ISZERO PUSH2 0x52CB JUMPI PUSH1 0x1 DUP2 EQ PUSH2 0x52E0 JUMPI PUSH2 0x530F JUMP JUMPDEST PUSH1 0xFF NOT DUP5 AND DUP8 MSTORE DUP3 ISZERO ISZERO DUP4 MUL DUP8 ADD SWAP5 POP PUSH2 0x530F JUMP JUMPDEST DUP8 PUSH1 0x0 MSTORE PUSH1 0x20 DUP1 PUSH1 0x0 KECCAK256 PUSH1 0x0 JUMPDEST DUP6 DUP2 LT ISZERO PUSH2 0x5306 JUMPI DUP2 SLOAD DUP11 DUP3 ADD MSTORE SWAP1 DUP5 ADD SWAP1 DUP3 ADD PUSH2 0x52ED JUMP JUMPDEST POP POP POP DUP3 DUP8 ADD SWAP5 POP JUMPDEST POP SWAP3 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST DUP2 DUP2 SUB PUSH2 0x5326 JUMPI POP POP JUMP JUMPDEST PUSH2 0x5330 DUP3 SLOAD PUSH2 0x505B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x5347 JUMPI PUSH2 0x5347 PUSH2 0x4571 JUMP JUMPDEST PUSH2 0x5355 DUP2 PUSH2 0x5213 DUP5 SLOAD PUSH2 0x505B JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1F DUP3 GT PUSH1 0x1 DUP2 EQ PUSH2 0x5383 JUMPI PUSH1 0x0 DUP4 ISZERO PUSH2 0x5371 JUMPI POP DUP5 DUP3 ADD SLOAD JUMPDEST PUSH2 0x537B DUP5 DUP3 PUSH2 0x51D7 JUMP JUMPDEST DUP6 SSTORE POP PUSH2 0x3258 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 PUSH1 0x1F NOT DUP5 AND SWAP1 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 SWAP1 KECCAK256 DUP5 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x53BD JUMPI DUP3 DUP7 ADD SLOAD DUP3 SSTORE PUSH1 0x1 SWAP6 DUP7 ADD SWAP6 SWAP1 SWAP2 ADD SWAP1 PUSH1 0x20 ADD PUSH2 0x539D JUMP JUMPDEST POP DUP6 DUP4 LT ISZERO PUSH2 0x5295 JUMPI SWAP4 ADD SLOAD PUSH1 0x0 NOT PUSH1 0xF8 PUSH1 0x3 DUP8 SWAP1 SHL AND SHR NOT AND SWAP1 SWAP3 SSTORE POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID 0xE5 PUSH3 0x760EAA DUP2 PUSH30 0x85EC1BF58364C4D65ADB65D99D113C6785EF9AA66567076C954C1D97560A 0xEF SAR SWAP7 0x26 0xAF 0x2C 0xCF 0xF8 0xA6 0xAC PUSH15 0x245C44C307E795E9C16F7211C611A3 ISZERO XOR SWAP11 0xB7 0xA9 0x24 0x4D CREATE DUP5 DUP2 0x22 ISZERO NUMBER ISZERO 0xAF PUSH18 0xFE140F3DB0FE014031783B0946B8C9D2E336 ADDMOD SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC9A95E87C5AF084BF5DB849 SHR GASPRICE PUSH6 0x15DA9DD6DA39 0xB2 0x4B 0xE 0xB0 0xAF ADDMOD 0xD7 0xB9 0xCD DUP1 DUP14 SWAP2 0xC6 0xAE PUSH7 0xDA7AFBD0BECBE4 SWAP14 0xDF SWAP6 0xA9 0x25 PUSH10 0x1D87F1BB5E3D4323603 0xE MCOPY BLOBBASEFEE PC JUMPDEST PUSH14 0x10DAC8C06A04BEC0B551627DAD28 0xBC STOP 0xD6 MLOAD PUSH12 0xCAACD1C7B345FCDB5211334 0xE4 DUP8 0xB3 DUP16 SGT SGT CALLVALUE AND GAS 0xC2 0xB3 PUSH2 0xF089 PUSH7 0xC9FCFF3A953FA7 0xD9 0xD9 0xC2 DUP7 SHL PUSH32 0xB50445BCBC2F8787176B8AC6BF7215B4ADCC1E069BF4AB82D9AB1DF05A57A91 0xD4 0x25 SWAP4 JUMPDEST PUSH15 0x3ACDF00BA9EF08B5F2C22768276611 0xB9 0xAF SMOD DUP12 0xF6 0xC2 0x4F LOG3 PUSH12 0x34EC5E9F2EB061FAA2646970 PUSH7 0x73582212200540 0xB0 SWAP2 SWAP2 0xEB 0xD8 LOG1 STOP NUMBER 0x27 0xF6 ADDRESS SWAP15 0xCD NUMBER AND DUP5 SWAP16 0xD SWAP9 PUSH32 0x7010A72AEADE96F57E0164736F6C634300081800330000000000000000000000 ", + "sourceMap": "2612:28467:46:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1695:212:1;;;;;;;;;;-1:-1:-1;1695:212:1;;;;;:::i;:::-;;:::i;:::-;;;470:14:61;;463:22;445:41;;433:2;418:18;1695:212:1;;;;;;;;24032:530:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;1360:126:47:-;;;;;;;;;;-1:-1:-1;1360:126:47;-1:-1:-1;;;;;;;;;;;1360:126:47;;;;;2062:25:61;;;2050:2;2035:18;1360:126:47;1916:177:61;13033:235:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;15810:153:46:-;;;;;;;;;;-1:-1:-1;15810:153:46;;;;;:::i;:::-;-1:-1:-1;;;15810:153:46;;;;;;;;;;-1:-1:-1;;;;;;4773:33:61;;;4755:52;;4743:2;4728:18;15810:153:46;4611:202:61;22069:150:46;;;;;;;;;;-1:-1:-1;22069:150:46;;;;;:::i;:::-;;:::i;16921:256::-;;;;;;;;;;-1:-1:-1;16921:256:46;;;;;:::i;:::-;;:::i;:::-;;30860:217;;;;;;;;;;-1:-1:-1;30860:217:46;;;;;:::i;:::-;;:::i;23117:335::-;;;;;;;;;;-1:-1:-1;23117:335:46;;;;;:::i;:::-;;:::i;1674:108:47:-;;;;;;;;;;-1:-1:-1;1674:108:47;-1:-1:-1;;;;;;;;;;;1674:108:47;;9182:1802;;;;;;;;;;-1:-1:-1;9182:1802:47;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;15369:217:57:-;;;;;;;;;;;;;:::i;4759:191:0:-;;;;;;;;;;-1:-1:-1;4759:191:0;;;;;:::i;:::-;;:::i;30299:271:46:-;;;;;;;;;;-1:-1:-1;30299:271:46;;;;;:::i;:::-;;:::i;5246:136:0:-;;;;;;;;;;-1:-1:-1;5246:136:0;;;;;:::i;:::-;;:::i;22644:185:46:-;;;;;;;;;;-1:-1:-1;22644:185:46;;;;;:::i;:::-;;:::i;3335:68::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3335:68:46;;8239:892;;;;;;;;;;-1:-1:-1;8239:892:46;;;;;:::i;:::-;;:::i;6348:245:0:-;;;;;;;;;;-1:-1:-1;6348:245:0;;;;;:::i;:::-;;:::i;3809:78:46:-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3809:78:46;;23570:343;;;;;;;;;;-1:-1:-1;23570:343:46;;;;;:::i;:::-;;:::i;18801:214::-;;;;;;;;;;-1:-1:-1;18801:214:46;;;;;:::i;:::-;;:::i;8697:218:57:-;;;;;;;;;;;;;:::i;18131:317:46:-;;;;;;;;;;-1:-1:-1;18131:317:46;;;;;:::i;:::-;;:::i;6805:617:47:-;;;;;;;;;;-1:-1:-1;6805:617:47;;;;;:::i;:::-;;:::i;4161:214:3:-;;;;;;:::i;:::-;;:::i;9739:164:46:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;26626:486::-;;;;;;;;;;-1:-1:-1;26626:486:46;;;;;:::i;:::-;;:::i;3708:134:3:-;;;;;;;;;;;;;:::i;27789:170:46:-;;;;;;;;;;-1:-1:-1;27789:170:46;;;;;:::i;:::-;;:::i;10954:352:57:-;;;;;;;;;;-1:-1:-1;10954:352:57;;;;;:::i;:::-;;:::i;3526:80:46:-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3526:80:46;;11871:2079:47;;;;;;;;;;-1:-1:-1;11871:2079:47;;;;;:::i;:::-;;:::i;5168:229:48:-;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;25163:140:46:-;;;;;;;;;;-1:-1:-1;25163:140:46;;;;;:::i;:::-;;:::i;28207:148::-;;;;;;;;;;-1:-1:-1;28207:148:46;;;;;:::i;:::-;;:::i;29559:411::-;;;;;;;;;;-1:-1:-1;29559:411:46;;;;;:::i;:::-;;:::i;29192:361::-;;;;;;;;;;-1:-1:-1;29192:361:46;;;;;:::i;:::-;;:::i;19919:282::-;;;;;;;;;;-1:-1:-1;19919:282:46;;;;;:::i;:::-;;:::i;25433:146::-;;;;;;;;;;-1:-1:-1;25433:146:46;;;;;:::i;:::-;;:::i;21222:745::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;4287:82::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4287:82:46;;17585:362:57;;;;;;;;;;-1:-1:-1;17585:362:57;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3979:70:46:-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3979:70:46;;20290:290;;;;;;;;;;-1:-1:-1;20290:290:46;;;;;:::i;:::-;;:::i;10466:347:57:-;;;;;;;;;;-1:-1:-1;10466:347:57;;;;;:::i;:::-;;:::i;2492:233:1:-;;;;;;;;;;-1:-1:-1;2492:233:1;;;;;:::i;:::-;;:::i;3732:207:0:-;;;;;;;;;;-1:-1:-1;3732:207:0;;;;;:::i;:::-;;:::i;14542:433:47:-;;;;;;;;;;-1:-1:-1;14542:433:47;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;16414:233:46:-;;;;;;;;;;-1:-1:-1;16414:233:46;;;;;:::i;:::-;;:::i;2317:49:0:-;;;;;;;;;;-1:-1:-1;2317:49:0;2362:4;2317:49;;24885:151:46;;;;;;;;;;-1:-1:-1;24885:151:46;;;;;:::i;:::-;;:::i;3658:227:1:-;;;;;;;;;;-1:-1:-1;3658:227:1;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;19121:299:46:-;;;;;;;;;;-1:-1:-1;19121:299:46;;;;;:::i;:::-;;:::i;1819:58:3:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:3;;;;;22344:180:46;;;;;;;;;;-1:-1:-1;22344:180:46;;;;;:::i;:::-;;:::i;28973:213::-;;;;;;;;;;-1:-1:-1;28973:213:46;;;;;:::i;:::-;;:::i;9461:163::-;;;;;;;;;;;;;:::i;10005:159::-;;;;;;;;;;;;;:::i;27194:264::-;;;;;;;;;;-1:-1:-1;27194:264:46;;;;;:::i;:::-;;:::i;7544:547:47:-;;;;;;;;;;-1:-1:-1;7544:547:47;;;;;:::i;:::-;;:::i;2893:222:1:-;;;;;;;;;;-1:-1:-1;2893:222:1;;;;;:::i;:::-;;:::i;26024:151:46:-;;;;;;;;;;-1:-1:-1;26024:151:46;;;;;:::i;:::-;;:::i;15092:303::-;;;;;;;;;;-1:-1:-1;15092:303:46;;;;;:::i;:::-;;:::i;4472:76::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4472:76:46;;14575:231:57;;;;;;;;;;;;;:::i;5662:138:0:-;;;;;;;;;;-1:-1:-1;5662:138:0;;;;;:::i;:::-;;:::i;9553:320:57:-;;;;;;;;;;-1:-1:-1;9553:320:57;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;11806:129:46:-;;;;;;;;;;-1:-1:-1;11806:129:46;;;;;:::i;:::-;;:::i;14424:569::-;;;;;;;;;;-1:-1:-1;14424:569:46;;;;;:::i;:::-;;:::i;15481:173::-;;;;;;;;;;-1:-1:-1;15481:173:46;;;;;:::i;:::-;;:::i;26241:132::-;;;;;;;;;;-1:-1:-1;26241:132:46;;;;;:::i;:::-;;:::i;15971:179:47:-;;;;;;;;;;;;;:::i;17151:237:57:-;;;;;;;;;;;;;:::i;10005:317::-;;;;;;;;;;-1:-1:-1;10005:317:57;;;;;:::i;:::-;;:::i;19525:284:46:-;;;;;;;;;;-1:-1:-1;19525:284:46;;;;;:::i;:::-;;:::i;6506:171:47:-;;;;;;;;;;;;;:::i;5677:286:48:-;;;;;;;;;;-1:-1:-1;5677:286:48;;;;;:::i;:::-;;:::i;13475:313:46:-;;;;;;;;;;-1:-1:-1;13475:313:46;;;;;:::i;:::-;;:::i;18531:188::-;;;;;;;;;;-1:-1:-1;18531:188:46;;;;;:::i;:::-;;:::i;3146:66::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3146:66:46;;28534:433;;;;;;;;;;-1:-1:-1;28534:433:46;;;;;:::i;:::-;;:::i;1695:212:1:-;1780:4;-1:-1:-1;;;;;;1803:57:1;;-1:-1:-1;;;1803:57:1;;:97;;;1864:36;1888:11;1864:23;:36::i;:::-;1796:104;1695:212;-1:-1:-1;;1695:212:1:o;24032:530:46:-;24082:28;24122:37;24162:24;:22;:24::i;:::-;24122:64;;24197:35;24248:20;:27;-1:-1:-1;;;;;24235:41:46;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24197:79;;24292:9;24287:232;24311:20;:27;24307:1;:31;24287:232;;;24402:19;:17;:19::i;:::-;-1:-1:-1;;;;;24384:69:46;;24471:20;24492:1;24471:23;;;;;;;;:::i;:::-;;;;;;;24384:124;;;;;;;;;;;;;2062:25:61;;2050:2;2035:18;;1916:177;24384:124:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24384:124:46;;;;;;;;;;;;:::i;:::-;24359:19;24379:1;24359:22;;;;;;;;:::i;:::-;;;;;;;;;;:149;24340:3;;24287:232;;;-1:-1:-1;24536:19:46;24032:530;-1:-1:-1;;24032:530:46:o;13033:235:57:-;13096:30;13138:37;13178:33;:31;:33::i;:::-;13138:73;;13228:33;:1;:24;;:31;:33::i;:::-;13221:40;;;13033:235;:::o;22069:150:46:-;22140:11;22170:42;22184:27;22199:11;22184:14;:27::i;16921:256::-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;-1:-1:-1;;;;;17038:16:46;::::1;17034:77;;17077:23;;-1:-1:-1::0;;;17077:23:46::1;;;;;;;;;;;17034:77;17120:50;::::0;-1:-1:-1;;;17120:50:46;;17151:4:::1;17120:50;::::0;::::1;23921:34:61::0;-1:-1:-1;;;;;23991:15:61;;;23971:18;;;23964:43;24023:18;;;24016:34;;;17120:22:46;::::1;::::0;::::1;::::0;23856:18:61;;17120:50:46::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;16921:256:::0;;;;:::o;30860:217::-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;30980:20:46::1;:41;31022:24;:22;:24::i;:::-;30980:90;::::0;-1:-1:-1;;;;;;30980:90:46::1;::::0;;;;;;-1:-1:-1;;;;;24289:32:61;;;30980:90:46::1;::::0;::::1;24271:51:61::0;24338:18;;;24331:34;;;24381:18;;;24374:34;;;24244:18;;30980:90:46::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;30860:217:::0;;;:::o;23117:335::-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;23225:9:46::1;23220:226;23244:12;:19;23240:1;:23;23220:226;;;23284:19;23306:31;23321:12;23334:1;23321:15;;;;;;;;:::i;:::-;;;;;;;23306:14;:31::i;:::-;23284:53;;23351:30;23369:11;23351:17;:30::i;:::-;23419:12;23432:1;23419:15;;;;;;;;:::i;:::-;;;;;;;23400:35;;;;;;:::i;:::-;;::::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;23265:3:46::1;;23220:226;;;;23117:335:::0;;:::o;9182:1802:47:-;9449:14;;-1:-1:-1;;;;;9555:30:47;;9580:4;9555:30;9551:103;;9629:13;9608:35;;-1:-1:-1;;;9608:35:47;;;;;;;;:::i;:::-;;;;;;;;9551:103;9741:19;:17;:19::i;:::-;-1:-1:-1;;;;;9723:50:47;;9774:11;9723:63;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9718:133;;9828:11;9809:31;;-1:-1:-1;;;9809:31:47;;;;;;;;:::i;9718:133::-;9927:9;9908:15;:28;9904:90;;9959:24;;-1:-1:-1;;;9959:24:47;;;;;2062:25:61;;;2035:18;;9959:24:47;1916:177:61;9904:90:47;10039:98;10053:13;10068:11;10081:5;10088:7;10097:6;10105:9;10116;10127;10039:13;:98::i;:::-;10030:107;;10203:20;10216:6;10203:12;:20::i;:::-;10198:90;;10270:6;10246:31;;-1:-1:-1;;;10246:31:47;;;;;;;;:::i;10198:90::-;10298:30;10331:26;:24;:26::i;:::-;-1:-1:-1;;;;;10399:22:47;;;10367:29;10399:22;;;;;;;;;;;:29;;;;;;;;;10530:17;;;;10298:59;;-1:-1:-1;10399:29:47;10521:26;;10517:104;;;10592:17;;;;10570:40;;-1:-1:-1;;;10570:40:47;;;;10584:6;;10570:40;;;:::i;10517:104::-;10731:18;;10720:29;;10716:110;;10796:18;;10772:43;;-1:-1:-1;;;10772:43:47;;;;10787:7;;10772:43;;;:::i;10716:110::-;10919:17;;;;10910:26;;:6;:26;:::i;:::-;10894:42;;10947:30;;9182:1802;;;;;;;;;;;:::o;15369:217:57:-;15434:4;15450:37;15490:33;:31;:33::i;:::-;15540:14;;:39;;;;15369:217;-1:-1:-1;;15369:217:57:o;4759:191:0:-;4824:7;4843:30;4876:26;:24;:26::i;:::-;4919:8;:14;;;;;-1:-1:-1;;4919:14:0;;;:24;;;;4759:191::o;30299:271:46:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;30464:20:46::1;:41;30506:24;:22;:24::i;:::-;30464:99;::::0;-1:-1:-1;;;;;;30464:99:46::1;::::0;;;;;;-1:-1:-1;;;;;25481:32:61;;;30464:99:46::1;::::0;::::1;25463:51:61::0;25530:18;;;25523:34;;;25576:6;25618:15;;;25598:18;;;25591:43;25670:15;;25650:18;;;25643:43;25435:19;;30464:99:46::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;5246:136:0::0;5320:18;5333:4;5320:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5350:25:::1;5361:4;5367:7;5350:10;:25::i;:::-;;5246:136:::0;;;:::o;22644:185:46:-;22724:28;22771:51;22794:27;22809:11;22794:14;:27::i;8239:892::-;4158:30:2;4191:26;:24;:26::i;:::-;4302:15;;4158:59;;-1:-1:-1;4302:15:2;-1:-1:-1;;;4302:15:2;;;4301:16;;-1:-1:-1;;;;;4348:14:2;4279:19;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:2;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:2;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:2;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;;;;;4951:18:2;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:2;-1:-1:-1;;;5013:22:2;;;4979:67;8436:22:46::1;:20;:22::i;:::-;8468:24;:22;:24::i;:::-;8502:22;:20;:22::i;:::-;8535:44;2362:4:0;8566:12:46::0;8535:10:::1;:44::i;:::-;;8589;-1:-1:-1::0;;;;;;;;;;;8620:12:46::1;8589:10;:44::i;:::-;;8643:40;-1:-1:-1::0;;;;;;;;;;;8670:12:46::1;8643:10;:40::i;:::-;;8693:35;-1:-1:-1::0;;;;;;;;;;;8719:8:46::1;8693:10;:35::i;:::-;;8739:26;8768:22;:20;:22::i;:::-;8801:20:::0;;-1:-1:-1;;;;;8801:20:46;;::::1;-1:-1:-1::0;;;;;;8801:20:46;;::::1;;::::0;;;8831:15;::::1;:30:::0;;;;::::1;::::0;;;::::1;;::::0;;8871:16:::1;::::0;::::1;:32:::0;;;8739:51;-1:-1:-1;8978:8:46::1;9033;9067:57;8978:8:::0;9033;9067:22:::1;:57::i;:::-;8426:705;;;5070:14:2::0;5066:101;;;5100:23;;-1:-1:-1;;;;5100:23:2;;;5142:14;;-1:-1:-1;25850:50:61;;5142:14:2;;25838:2:61;25823:18;5142:14:2;;;;;;;5066:101;4092:1081;;;;;8239:892:46;;;;;:::o;6348:245:0:-;-1:-1:-1;;;;;6441:34:0;;966:10:7;6441:34:0;6437:102;;6498:30;;-1:-1:-1;;;6498:30:0;;;;;;;;;;;6437:102;6549:37;6561:4;6567:18;6549:11;:37::i;23570:343:46:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;23681:9:46::1;23676:231;23700:12;:19;23696:1;:23;23676:231;;;23740:19;23762:31;23777:12;23790:1;23777:15;;;;;;;;:::i;23762:31::-;23740:53;;23807:33;23828:11;23807:20;:33::i;:::-;23880:12;23893:1;23880:15;;;;;;;;:::i;:::-;;;;;;;23859:37;;;;;;:::i;:::-;;::::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;-1:-1:-1::0;23721:3:46::1;;23676:231;;18801:214:::0;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;18910:48:46::1;18925:27;18940:11;18925:14;:27::i;:::-;18954:3;18910:14;:48::i;:::-;18991:11;18973:35;;;;;;:::i;:::-;;::::0;;;;::::1;::::0;;2062:25:61;;;18973:35:46;::::1;::::0;2050:2:61;2035:18;18973:35:46::1;;;;;;;;18801:214:::0;;;:::o;8697:218:57:-;8749:30;8791:37;8831:33;:31;:33::i;:::-;8791:73;-1:-1:-1;8881:27:57;8791:73;8881:25;:27::i;18131:317:46:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;18326:75:46::1;18338:27;18353:11;18338:14;:27::i;:::-;18367:3;18372:12;18386:14;18326:11;:75::i;:::-;18429:11;18416:25;;;;;;:::i;:::-;;::::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;18131:317:::0;;;;;:::o;6805:617:47:-;7112:289;;;-1:-1:-1;;;;;;;;;;;7112:289:47;;;26254:25:61;-1:-1:-1;;;;;26353:15:61;;;26333:18;;;26326:43;;;;26405:15;;;26385:18;;;26378:43;26457:15;;;26437:18;;;26430:43;26489:19;;;26482:35;;;26533:19;;;26526:35;;;26577:19;;;26570:35;;;26621:19;;;26614:35;;;7047:7:47;;26226:19:61;;7112:289:47;;;;;;;;;;;;;7085:330;;;;;;7066:349;;6805:617;;;;;;;;;:::o;4161:214:3:-;2655:13;:11;:13::i;:::-;4276:36:::1;4294:17;4276;:36::i;:::-;4322:46;4344:17;4363:4;4322:21;:46::i;:::-;4161:214:::0;;:::o;9739:164:46:-;9794:7;9813:26;9842:22;:20;:22::i;:::-;9881:15;;;-1:-1:-1;;;;;9881:15:46;;9739:164;-1:-1:-1;;9739:164:46:o;26626:486::-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;26792:28:46::1;26811:8;26792:18;:28::i;:::-;26861:37;-1:-1:-1::0;;;;;;;;;;;26894:3:46::1;26861:10;:37::i;:::-;;26908:38;-1:-1:-1::0;;;;;;;;;;;26942:3:46::1;26908:10;:38::i;:::-;;26956:36;-1:-1:-1::0;;;;;;;;;;;26988:3:46::1;26956:10;:36::i;:::-;-1:-1:-1::0;27008:22:46::1;::::0;-1:-1:-1;;;;;27008:22:46;::::1;::::0;::::1;::::0;;;::::1;27073:32;-1:-1:-1::0;;;;;27073:22:46;::::1;27096:8:::0;27073:22:::1;:32::i;3708:134:3:-:0;3777:7;2926:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3708:134:3;:::o;27789:170:46:-;3395:21:9;:19;:21::i;:::-;-1:-1:-1;;;;;;;;;;;3191:16:0::1;3202:4;3191:10;:16::i;:::-;27891:26:46::2;27910:6;27891:18;:26::i;:::-;27927:25;27945:6;27927:17;:25::i;:::-;3426:1:9::1;3437:20:::0;:18;:20::i;:::-;27789:170:46;:::o;10954:352:57:-;11036:28;11076:37;11116:33;:31;:33::i;:::-;11076:73;;11199:35;11219:11;11232:1;11199:19;:35::i;:::-;11252:1;:20;;:33;11273:11;11252:33;;;;;;;;;;;:47;;11245:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10954:352;;;:::o;11871:2079:47:-;3395:21:9;:19;:21::i;:::-;12215:14:47::1;12231:21:::0;12256:203:::1;12282:13;12309:11;12334:5;12353:7;12374:6;12394:9;12417;12440;12256:12;:203::i;:::-;12214:245;;;;12586:67;12600:6;12608:5;12615:7;12624:6;12632:9;12643;12586:13;:67::i;:::-;12774:20;12876:5;12832:19;:17;:19::i;:::-;-1:-1:-1::0;;;;;12814:56:47::1;;:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12798:74;::::0;:13;:74:::1;:::i;:::-;12797:84;;;;:::i;:::-;12774:107:::0;-1:-1:-1;12946:27:47::1;12976:28;12774:107:::0;12976:13;:28:::1;:::i;:::-;12946:58;;13114:11;-1:-1:-1::0;;;;;13097:28:47::1;:13;-1:-1:-1::0;;;;;13097:28:47::1;;13093:171;;13141:30;13174:26;:24;:26::i;:::-;13141:59;;13240:13;13214:1;:22;;;:39;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;13093:171:47::1;13332:92;13411:12;13358:19;:17;:19::i;:::-;-1:-1:-1::0;;;;;13340:57:47::1;;:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13332:78:47::1;::::0;::::1;:92::i;:::-;13502:51;-1:-1:-1::0;;;;;13502:30:47;::::1;13533:19:::0;13502:30:::1;:51::i;:::-;13599:344;::::0;;-1:-1:-1;;;;;28358:15:61;;;28340:34;;28410:15;;;28405:2;28390:18;;28383:43;28442:18;;;28435:34;;;28500:2;28485:18;;28478:34;;;28543:3;28528:19;;28521:35;;;28320:3;28572:19;;28565:35;;;13599:344:47;;::::1;::::0;;::::1;::::0;::::1;::::0;28289:3:61;28274:19;13599:344:47::1;;;;;;;12137:1813;;;;3437:20:9::0;:18;:20::i;5168:229:48:-;5222:23;5247:24;5283:25;5311:21;:19;:21::i;:::-;5283:49;;5350:1;:18;;;5370:1;:19;;;5342:48;;;;;5168:229;;:::o;25163:140:46:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;25261:35:46::1;25280:15;25261:18;:35::i;28207:148::-:0;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;28311:37:46::1;28334:5;28341:6;28311:22;:37::i;29559:411::-:0;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;29767:20:46::1;:40;29821:24;:22;:24::i;:::-;29767:196;::::0;-1:-1:-1;;;;;;29767:196:46::1;::::0;;;;;;-1:-1:-1;;;;;28892:32:61;;;29767:196:46::1;::::0;::::1;28874:51:61::0;28941:18;;;28934:34;;;28984:18;;;28977:34;;;29030:6;29072:15;;;29052:18;;;29045:43;29125:15;;29104:19;;;29097:44;28846:19;;29767:196:46::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;29559:411:::0;;;;;:::o;29192:361::-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;29373:20:46::1;:39;29426:24;:22;:24::i;19919:282::-:0;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;20070:62:46::1;20092:27;20107:11;20092:14;:27::i;:::-;20121:10;20070:21;:62::i;:::-;20170:11;20147:47;;;;;;:::i;:::-;;;;;;;;;20183:10;20147:47;;;;;;:::i;25433:146::-:0;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;25534:38:46::1;25556:15;25534:21;:38::i;21222:745::-:0;21275:28;21305:25;21409:31;21443:21;:19;:21::i;:::-;21409:55;;21474:29;21519:14;:21;-1:-1:-1;;;;;21506:35:46;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21474:67;;21551:42;21610:14;:21;-1:-1:-1;;;;;21596:36:46;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;21551:81;;21648:9;21643:258;21667:14;:21;21663:1;:25;21643:258;;;21746:19;:17;:19::i;:::-;-1:-1:-1;;;;;21728:69:46;;21798:14;21813:1;21798:17;;;;;;;;:::i;:::-;;;;;;;21728:88;;;;;;;;;;;;;2062:25:61;;2050:2;2035:18;;1916:177;21728:88:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;21728:88:46;;;;;;;;;;;;:::i;:::-;21709:13;21723:1;21709:16;;;;;;;;:::i;:::-;;;;;;:107;;;;21861:29;21872:14;21887:1;21872:17;;;;;;;;:::i;:::-;;;;;;;21861:10;:29::i;:::-;21830:25;21856:1;21830:28;;;;;;;;:::i;:::-;;;;;;;;;;:60;21690:3;;21643:258;;;-1:-1:-1;21919:13:46;;21934:25;;-1:-1:-1;21222:745:46;-1:-1:-1;;21222:745:46:o;17585:362:57:-;17659:17;17688:37;17728:33;:31;:33::i;:::-;17688:73;-1:-1:-1;17777:48:57;:24;;;17811:13;17777:33;:48::i;:::-;17772:123;;17870:13;17848:36;;-1:-1:-1;;;17848:36:57;;;;;;;;:::i;17772:123::-;-1:-1:-1;;;;;17912:28:57;;;;;;:13;;;:28;;;;;17905:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17585:362;;;:::o;20290:290:46:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;20444:65:46::1;20469:27;20484:11;20469:14;:27::i;:::-;20498:10;20444:24;:65::i;:::-;20549:11;20524:49;;;;;;:::i;:::-;;;;;;;;;20562:10;20524:49;;;;;;:::i;10466:347:57:-:0;10550:19;10581:37;10621:33;:31;:33::i;:::-;10581:73;;10704:35;10724:11;10737:1;10704:19;:35::i;:::-;10757:33;;;;:20;;:33;;-1:-1:-1;10757:33:57;;;:49;;;;;;10466:347::o;2492:233:1:-;2573:7;2592:40;2635:36;:34;:36::i;:::-;2688:14;:20;;;;;;;;;;2592:79;;-1:-1:-1;2688:30:1;;2712:5;2688:23;:30::i;:::-;2681:37;2492:233;-1:-1:-1;;;;2492:233:1:o;3732:207:0:-;3809:4;3825:30;3858:26;:24;:26::i;:::-;3901:8;:14;;;;;;;;;;;-1:-1:-1;;;;;3901:31:0;;;;;;;;;-1:-1:-1;;3901:31:0;;;;;;3732:207::o;14542:433:47:-;14640:19;14661:18;14681:21;14704;14737:30;14770:26;:24;:26::i;:::-;-1:-1:-1;;;;;14838:23:47;;;14806:29;14838:23;;;;;;;;;;;:30;;;;;;;;;-1:-1:-1;;;14838:30:47;;;;14886:18;;14906:17;;;;14925:20;;;;14947;;;;;14886:18;;14906:17;;-1:-1:-1;14925:20:47;;-1:-1:-1;14947:20:47;14542:433::o;16414:233:46:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;-1:-1:-1;;;;;16528:16:46;::::1;16524:77;;16567:23;;-1:-1:-1::0;;;16567:23:46::1;;;;;;;;;;;16524:77;16610:30;-1:-1:-1::0;;;;;16610:18:46;::::1;16629:2:::0;16633:6;16610:18:::1;:30::i;24885:151::-:0;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;24987:42:46::1;25016:12;24987:28;:42::i;3658:227:1:-:0;3725:16;3753:40;3796:36;:34;:36::i;:::-;3849:14;:20;;;;;;;;;;3753:79;;-1:-1:-1;3849:29:1;;:27;:29::i;:::-;3842:36;3658:227;-1:-1:-1;;;3658:227:1:o;19121:299:46:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;19271:70:46::1;19297:27;19312:11;19297:14;:27::i;:::-;19326:14;19271:25;:70::i;:::-;19385:11;19356:57;;;;;;:::i;:::-;;::::0;;;;::::1;::::0;;470:14:61;;463:22;445:41;;19356:57:46;::::1;::::0;433:2:61;418:18;19356:57:46::1;305:187:61::0;22344:180:46;22426:19;22464:53;22489:27;22504:11;22489:14;:27::i;28973:213::-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;29091:20:46::1;:39;29131:24;:22;:24::i;9461:163::-:0;9520:7;9539:26;9568:22;:20;:22::i;:::-;9607:10;-1:-1:-1;;;;;9607:10:46;;9461:163;-1:-1:-1;;9461:163:46:o;10005:159::-;10054:7;10073:26;10102:22;:20;:22::i;:::-;10141:16;;;;10005:159;-1:-1:-1;;10005:159:46:o;27194:264::-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;27277:38:46::1;-1:-1:-1::0;;;;;;;;;;;27311:3:46::1;27277:11;:38::i;:::-;;27325:39;-1:-1:-1::0;;;;;;;;;;;27360:3:46::1;27325:11;:39::i;:::-;;27374:37;-1:-1:-1::0;;;;;;;;;;;27407:3:46::1;27374:11;:37::i;:::-;-1:-1:-1::0;27427:24:46::1;::::0;-1:-1:-1;;;;;27427:24:46;::::1;::::0;::::1;::::0;;;::::1;27194:264:::0;;:::o;7544:547:47:-;7782:7;7917:20;:18;:20::i;:::-;7959:93;7979:13;7994:11;8007:5;8014:7;8023:6;8031:9;8042;7959:19;:93::i;:::-;7847:223;;-1:-1:-1;;;7847:223:47;;;29410:27:61;29453:11;;;29446:27;;;;29489:12;;;29482:28;29526:12;;7847:223:47;29152:392:61;2893:222:1;2964:7;2983:40;3026:36;:34;:36::i;:::-;3079:14;:20;;;;;;;;;;2983:79;;-1:-1:-1;3079:29:1;;:27;:29::i;26024:151:46:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;26134:34:46::1;26148:13;26163:4;26134:13;:34::i;15092:303::-:0;3395:21:9;:19;:21::i;:::-;-1:-1:-1;;;;;;;;;;;3191:16:0::1;3202:4;3191:10;:16::i;:::-;15280:20:46::2;:36;15317:24;:22;:24::i;:::-;15280:108;::::0;-1:-1:-1;;;;;;15280:108:46::2;::::0;;;;;;-1:-1:-1;;;;;29859:15:61;;;15280:108:46::2;::::0;::::2;29841:34:61::0;29891:18;;;29884:34;;;29934:18;;;29927:34;;;29997:15;;;29977:18;;;29970:43;29775:19;;15280:108:46::2;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;3426:1:9::1;3437:20:::0;:18;:20::i;14575:231:57:-;14634:23;14669:37;14709:33;:31;:33::i;:::-;14669:73;-1:-1:-1;14759:40:57;:31;;;:38;:40::i;5662:138:0:-;5737:18;5750:4;5737:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5767:26:::1;5779:4;5785:7;5767:11;:26::i;9553:320:57:-:0;9623:22;;:::i;:::-;9657:37;9697:33;:31;:33::i;:::-;9657:73;;9780:35;9800:11;9813:1;9780:19;:35::i;:::-;9833:33;;;;:20;;;;:33;;;;;;;;9826:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9833:33;;9826:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;9826:40:57;;-1:-1:-1;9826:40:57;;9553:320;-1:-1:-1;;;;9553:320:57:o;11806:129:46:-;11871:4;11894:34;-1:-1:-1;;;;;;;;;;;11924:3:46;11894:7;:34::i;14424:569::-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;14719:20:46::1;:37;14770:24;:22;:24::i;:::-;14808:11;14833:3;14850:19;14883:5;14902:12;14928:23;14965:11;14719:267;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14424:569:::0;;;;;;;;:::o;15481:173::-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;15575:20:46::1;:37;15613:24;:22;:24::i;:::-;15639:7;15575:72;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15481:173:::0;;:::o;26241:132::-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;26335:31:46::1;26352:13;26335:16;:31::i;15971:179:47:-:0;16026:7;16045:30;16078:26;:24;:26::i;:::-;16121:22;;;;15971:179;-1:-1:-1;;15971:179:47:o;17151:237:57:-;17214:32;17258:37;17298:33;:31;:33::i;:::-;17258:73;;17348:33;:1;:24;;:31;:33::i;10005:317::-;10078:11;10101:37;10141:33;:31;:33::i;:::-;10101:73;;10224:35;10244:11;10257:1;10224:19;:35::i;:::-;10277:33;;;;:20;;:33;;-1:-1:-1;10277:33:57;;;:38;;10005:317::o;19525:284:46:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;19682:66:46::1;19706:27;19721:11;19706:14;:27::i;:::-;19735:12;19682:23;:66::i;:::-;19790:11;19763:39;;;;;;:::i;:::-;;::::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;19525:284:::0;;;:::o;6506:171:47:-;6557:7;6576:30;6609:26;:24;:26::i;5677:286:48:-;5770:19;5791:23;5826:25;5854:21;:19;:21::i;:::-;-1:-1:-1;;;;;5893:33:48;;;:24;:33;;;;;;;;;;;;5928:18;;;;:27;;;;;;5893:33;;5677:286;-1:-1:-1;;;5677:286:48:o;13475:313:46:-;3395:21:9;:19;:21::i;:::-;-1:-1:-1;;;;;;;;;;;3191:16:0::1;3202:4;3191:10;:16::i;:::-;13675:26:46::2;13694:6;13675:18;:26::i;:::-;13712:27;-1:-1:-1::0;;;;;13712:19:46;::::2;13732:6:::0;13712:19:::2;:27::i;:::-;13763:9;-1:-1:-1::0;;;;;13754:27:46::2;;13774:6;13754:27;;;;2062:25:61::0;;2050:2;2035:18;;1916:177;13754:27:46::2;;;;;;;;3426:1:9::1;3437:20:::0;:18;:20::i;18531:188:46:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;18627:43:46::1;18642:27;18657:11;18642:14;:27::i;:::-;18627:14;:43::i;:::-;18700:11;18685:27;;;;;;:::i;:::-;;::::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;18531:188:::0;;:::o;28534:433::-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;28753:20:46::1;:41;28808:24;:22;:24::i;3443:202:0:-:0;3528:4;-1:-1:-1;;;;;;3551:47:0;;-1:-1:-1;;;3551:47:0;;:87;;-1:-1:-1;;;;;;;;;;1134:40:10;;;3602:36:0;1035:146:10;2449:198:57;2596:35;;2449:198::o;7776:273:45:-;7839:16;7867:22;7892:19;7900:3;7892:7;:19::i;20722:200:46:-;20795:19;20851;:17;:19::i;:::-;-1:-1:-1;;;;;20833:69:46;;20903:11;20833:82;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4148:103:0:-;4214:30;4225:4;966:10:7;4214::0;:30::i;12065:313:57:-;12140:37;12180:33;:31;:33::i;:::-;12140:73;-1:-1:-1;12224:10:57;12237:41;:24;;;12266:11;12237:28;:41::i;:::-;12224:54;;12294:5;12289:83;;12322:39;;-1:-1:-1;;;12322:39:57;;;;;2062:25:61;;;2035:18;;12322:39:57;1916:177:61;8234:476:47;8504:14;8530;8547:89;8563:13;8578:11;8591:5;8598:7;8607:6;8615:9;8626;8547:15;:89::i;:::-;8530:106;-1:-1:-1;8655:25:47;8530:106;8670:9;8655:14;:25::i;:::-;8646:34;8234:476;-1:-1:-1;;;;;;;;;;8234:476:47:o;3915:177::-;4048:28;;3915:177::o;2787::0:-;2920:28;;2787:177::o;3987:348:1:-;4073:4;4089:40;4132:36;:34;:36::i;:::-;4089:79;;4178:12;4193:31;4210:4;4216:7;4193:16;:31::i;:::-;4178:46;;4238:7;4234:71;;;4261:14;:20;;;;;;;;;;:33;;4286:7;4261:24;:33::i;:::-;;4321:7;3987:348;-1:-1:-1;;;;3987:348:1:o;8737:170:2:-;8870:21;;8737:170::o;3231:65:0:-;6931:20:2;:18;:20::i;:::-;3231:65:0:o;6152:287:47:-;6931:20:2;:18;:20::i;:::-;6220:30:47::1;6253:26;:24;:26::i;:::-;6334:88;::::0;6220:59;;-1:-1:-1;6334:88:47::1;::::0;-1:-1:-1;;;;;;;;;;;1716:66:47;6362:28:::1;::::0;6392:14:::1;::::0;6408:13:::1;::::0;6334:88:::1;;;:::i;:::-;;::::0;;-1:-1:-1;;6334:88:47;;::::1;::::0;;;;;;6311:121;;6334:88:::1;6311:121:::0;;::::1;::::0;6290:18:::1;::::0;;::::1;:142:::0;6152:287::o;5385:165:46:-;5510:24;;5385:165::o;2624:269:48:-;6931:20:2;:18;:20::i;:::-;2743:25:48::1;2771:21;:19;:21::i;:::-;2802:18;::::0;::::1;:36:::0;;;;-1:-1:-1;2848:19:48::1;::::0;;::::1;:38:::0;2624:269::o;4438:353:1:-;4525:4;4541:40;4584:36;:34;:36::i;:::-;4541:79;;4630:12;4645:32;4663:4;4669:7;4645:17;:32::i;:::-;4630:47;;4691:7;4687:74;;;4714:14;:20;;;;;;;;;;:36;;4742:7;4714:27;:36::i;12581:322:57:-;12659:37;12699:33;:31;:33::i;:::-;12659:73;-1:-1:-1;12743:12:57;12758:44;:24;;;12790:11;12758:31;:44::i;:::-;12743:59;;12818:7;12813:84;;12848:38;;-1:-1:-1;;;12848:38:57;;;;;2062:25:61;;;2035:18;;12848:38:57;1916:177:61;5902:305:57;5987:37;6027:33;:31;:33::i;:::-;5987:73;;6110:35;6130:11;6143:1;6110:19;:35::i;:::-;6156:33;;;;:20;;:33;;;;;;:44;5902:305::o;4588:629::-;4759:37;4799:33;:31;:33::i;:::-;4759:73;-1:-1:-1;4902:10:57;4915:35;4759:73;4938:11;4915:22;:35::i;:::-;4902:48;;4965:5;4960:77;;4993:33;;-1:-1:-1;;;4993:33:57;;;;;2062:25:61;;;2035:18;;4993:33:57;1916:177:61;4960:77:57;5082:128;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5046:33:57;;;:20;;;;:33;;;;;:164;;;;;;;;;;;-1:-1:-1;;5046:164:57;;;;;;;;;;;;;5082:128;;5046:33;;:164;;;;;;;;;;;:::i;4603:312:3:-;4683:4;-1:-1:-1;;;;;4692:6:3;4675:23;;;:120;;;4789:6;-1:-1:-1;;;;;4753:42:3;:32;:30;:32::i;:::-;-1:-1:-1;;;;;4753:42:3;;;4675:120;4658:251;;;4869:29;;-1:-1:-1;;;4869:29:3;;;;;;;;;;;10788:881:46;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;10953:29:46::1;11003:19;:17;:19::i;:::-;-1:-1:-1::0;;;;;10985:63:46::1;;:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10953:97;;11060:25;11088:32;:30;:32::i;:::-;11060:60;;11227:17;-1:-1:-1::0;;;;;11206:38:46::1;:17;-1:-1:-1::0;;;;;11206:38:46::1;::::0;11202:138:::1;;11292:17;11311;11267:62;;-1:-1:-1::0;;;11267:62:46::1;;;;;;;;;:::i;11202:138::-;11464:21;-1:-1:-1::0;;;;;11443:42:46::1;:17;-1:-1:-1::0;;;;;11443:42:46::1;;11439:153;;11540:21;11563:17;11508:73;;-1:-1:-1::0;;;11508:73:46::1;;;;;;;;;:::i;11439:153::-;11644:17;-1:-1:-1::0;;;;;11607:55:46::1;11625:17;-1:-1:-1::0;;;;;11607:55:46::1;;;;;;;;;;;10884:785;;10788:881:::0;;:::o;6057:538:3:-;6174:17;-1:-1:-1;;;;;6156:50:3;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6156:52:3;;;;;;;;-1:-1:-1;;6156:52:3;;;;;;;;;;;;:::i;:::-;;;6152:437;;6560:17;6518:60;;-1:-1:-1;;;6518:60:3;;;;;;;;:::i;6152:437::-;-1:-1:-1;;;;;;;;;;;6250:40:3;;6246:120;;6317:34;;-1:-1:-1;;;6317:34:3;;;;;2062:25:61;;;2035:18;;6317:34:3;1916:177:61;6246:120:3;6379:54;6409:17;6428:4;6379:29;:54::i;12112:1044:46:-;12179:21;12203:18;:16;:18::i;:::-;12179:42;;12231:27;12261:24;:22;:24::i;:::-;12231:54;;12464:13;12442:19;:35;12438:712;;;12731:19;12753:35;12769:19;12753:13;:35;:::i;:::-;12731:57;-1:-1:-1;12802:26:46;12831:35;12731:57;12831:21;:35;:::i;:::-;12802:64;;13021:18;13012:6;:27;13008:132;;;13066:59;;-1:-1:-1;;;13066:59:46;;;;;32253:25:61;;;32294:18;;;32287:34;;;32337:18;;;32330:34;;;32226:18;;13066:59:46;32051:319:61;13008:132:46;12479:671;;12169:987;;12112:1044;:::o;1290:349:34:-;1399:6;1375:21;:30;1371:125;;;1455:21;1478:6;1428:57;;-1:-1:-1;;;1428:57:34;;;;;;;;;:::i;1371:125::-;1507:12;1525:9;-1:-1:-1;;;;;1525:14:34;1547:6;1525:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1506:52;;;1573:7;1568:65;;1603:19;;-1:-1:-1;;;1603:19:34;;;;;;;;;;;5032:213:3;5106:4;-1:-1:-1;;;;;5115:6:3;5098:23;;5094:145;;5199:29;;-1:-1:-1;;;5199:29:3;;;;;;;;;;;3470:384:9;3519:32;3554:28;:26;:28::i;:::-;3670:9;;3519:63;;-1:-1:-1;;;3670:20:9;3666:88;;3713:30;;-1:-1:-1;;;3713:30:9;;;;;;;;;;;3666:88;1991:1;3828:19;;3470:384::o;3303:1241:48:-;3365:25;3393:21;:19;:21::i;:::-;3365:49;;3505:1;:18;;;3496:6;:27;3492:116;;;3570:1;:18;;;3590:6;3546:51;;-1:-1:-1;;;3546:51:48;;;;;;;;;:::i;3492:116::-;3918:19;;;;3904:10;3644:19;3879:36;;;;;;;;;;;3666:15;;3879:58;;;:::i;:::-;3865:11;:72;3861:201;;;3972:10;3986:1;3953:30;;;:18;;;:30;;;;;;;;:34;;;4001:36;;;;;;:50;;;3861:201;4200:18;;;;4177:10;4158:30;;;;:18;;;:30;;;;;;:39;;4191:6;;4158:39;:::i;:::-;:60;4154:158;;;4274:1;:18;;;4294:6;4241:60;;-1:-1:-1;;;4241:60:48;;;;;;;;;:::i;4154:158::-;4380:10;4361:30;;;;:18;;;:30;;;;;:40;;4395:6;;4361:30;:40;;4395:6;;4361:40;:::i;:::-;;;;-1:-1:-1;4446:37:48;;-1:-1:-1;4454:10:48;4476:6;4446:29;:37::i;:::-;4499:38;;2062:25:61;;;4518:10:48;;4499:38;;2050:2:61;2035:18;4499:38:48;1916:177:61;3860:283:9;3908:32;3943:28;:26;:28::i;:::-;1949:1;4113:23;;-1:-1:-1;3860:283:9:o;11426:268:57:-;11582:40;:1;11610:11;11582:27;:40::i;:::-;11577:111;;11645:32;;-1:-1:-1;;;11645:32:57;;;;;2062:25:61;;;2035:18;;11645:32:57;1916:177:61;15430:357:47;15629:30;15662:26;:24;:26::i;:::-;15731:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15698:23:47;;;-1:-1:-1;15698:23:47;;;;;;;;;:30;;;;;;;;;;-1:-1:-1;15698:30:47;;;;:82;;;;;;;;;;;;;;;;;;;;;15430:357::o;1289:162:48:-;1412:23;;1289:162::o;13611:345:57:-;13682:37;13722:33;:31;:33::i;:::-;13682:73;-1:-1:-1;13765:10:57;13778:43;:31;;;13814:6;13778:35;:43::i;:::-;13765:56;;13837:5;13832:77;;13891:6;13865:33;;-1:-1:-1;;;13865:33:57;;;;;;;;:::i;13832:77::-;13924:25;;-1:-1:-1;;;;;13924:25:57;;;;;;;;13672:284;;13611:345;:::o;4746:268:48:-;4828:25;4856:21;:19;:21::i;:::-;4887:18;;;:26;;;4923:19;;;:28;;;4967:40;;4828:49;;-1:-1:-1;4967:40:48;;;;4908:5;;4945:6;;4967:40;:::i;:::-;;;;;;;;4818:196;4746:268;;:::o;7426:345:57:-;7531:37;7571:33;:31;:33::i;:::-;7531:73;;7654:35;7674:11;7687:1;7654:19;:35::i;:::-;7700:33;;;;:20;;;;:33;;;;;;;:47;;;:64;;;;;;;;;;;;;;7753:10;7700:64;;:::i;14092:356::-;14166:37;14206:33;:31;:33::i;:::-;14166:73;-1:-1:-1;14249:12:57;14264:46;:31;;;14303:6;14264:38;:46::i;:::-;14249:61;;14326:7;14321:78;;14381:6;14356:32;;-1:-1:-1;;;14356:32:57;;;;;;;;:::i;14321:78::-;14414:27;;-1:-1:-1;;;;;14414:27:57;;;;;;;;14156:292;;14092:356;:::o;8844:165:45:-;8924:4;8947:55;8957:3;-1:-1:-1;;;;;8977:23:45;;8947:9;:55::i;7936:686:57:-;8044:37;8084:33;:31;:33::i;:::-;8044:73;;8167:35;8187:11;8200:1;8167:19;:35::i;:::-;8213:29;8245:33;;;:20;;;;:33;;;;;:47;;8302:314;8326:19;;8322:23;;8302:314;;;8445:10;8428:28;;;;;;;;:::i;:::-;;;;;;;;;;;;;8418:39;;;;;;8397:12;8410:1;8397:15;;;;;;;;:::i;:::-;;;;;;;;8380:33;;;;;;;;:::i;:::-;;;;;;;;;;;;;8370:44;;;;;;:87;8366:240;;8508:19;;8495:12;;8508:23;;8530:1;;8508:23;:::i;:::-;8495:37;;;;;;;;:::i;:::-;;;;;;;;8477:12;8490:1;8477:15;;;;;;;;:::i;:::-;;;;;;;;:55;;;;;;:::i;:::-;;8550:12;:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;8586:5;;8366:240;8347:3;;8302:314;;1250:207:1;1403:38;;1250:207::o;9547:156:45:-;9621:7;9671:22;9675:3;9687:5;9671:3;:22::i;1271:160:28:-;1353:71;1373:5;1395;-1:-1:-1;;;;;1395:14:28;;1412:2;1416:5;1380:43;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1380:43:28;;;;;;;;;;;1353:19;:71::i;14940:322:57:-;15036:37;15076:33;:31;:33::i;:::-;15119:14;;;:66;;-1:-1:-1;;15119:66:57;;;;;;;;;;15200:55;;445:41:61;;;15119:14:57;;-1:-1:-1;15200:55:57;;433:2:61;418:18;15200:55:57;;;;;;;15026:236;14940:322;:::o;6393:346::-;6497:37;6537:33;:31;:33::i;:::-;6497:73;;6620:35;6640:11;6653:1;6620:19;:35::i;:::-;6666:33;;;;:20;;:33;;;;;;:49;;:66;;-1:-1:-1;;6666:66:57;;;;;;;;;;6393:346::o;9090:115:45:-;9153:7;9179:19;9187:3;4556:18;;4474:107;15990:439:57;16091:37;16131:33;:31;:33::i;:::-;16091:73;-1:-1:-1;16175:10:57;16188:43;:24;;;16217:13;16188:28;:43::i;:::-;16175:56;;16247:5;16242:81;;16298:13;16275:37;;-1:-1:-1;;;16275:37:57;;;;;;;;:::i;16242:81::-;-1:-1:-1;;;;;16333:28:57;;;;;;:13;;;:28;;;;;:44;16364:13;16333:28;:44;:::i;:::-;-1:-1:-1;16393:29:57;;-1:-1:-1;;;;;16393:29:57;;;;;;;;16081:348;;15990:439;;:::o;16564:412::-;16640:37;16680:33;:31;:33::i;:::-;16640:73;-1:-1:-1;16724:12:57;16739:46;:24;;;16771:13;16739:31;:46::i;:::-;16724:61;;16801:7;16796:82;;16853:13;16831:36;;-1:-1:-1;;;16831:36:57;;;;;;;;:::i;16796:82::-;-1:-1:-1;;;;;16895:28:57;;;;;;:13;;;:28;;;;;16888:35;;;:::i;:::-;16938:31;;-1:-1:-1;;;;;16938:31:57;;;;;;;;16630:346;;16564:412;:::o;6917:349::-;7028:37;7068:33;:31;:33::i;:::-;7028:73;;7151:35;7171:11;7184:1;7151:19;:35::i;:::-;7197:33;;;;:20;;;;:33;;;;;;;;:62;;;;:47;;;;;:62;;;;;:::i;5360:391::-;5432:37;5472:33;:31;:33::i;:::-;5432:73;-1:-1:-1;5553:12:57;5568:38;5432:73;5594:11;5568:25;:38::i;:::-;5553:53;;5621:7;5616:78;;5651:32;;-1:-1:-1;;;5651:32:57;;;;;2062:25:61;;;2035:18;;5651:32:57;1916:177:61;5616:78:57;5711:33;;;;:20;;;;:33;;;;;5704:40;;;;;;;;-1:-1:-1;;5704:40:57;;;5711:33;;5704:40;;;;5711:33;5704:40;:::i;5581:109:45:-;5637:16;5672:3;:11;;5665:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5581:109;;;:::o;4381:197:0:-;4469:22;4477:4;4483:7;4469;:22::i;:::-;4464:108;;4547:7;4556:4;4514:47;;-1:-1:-1;;;4514:47:0;;;;;;;;;:::i;5930:123:45:-;6000:4;6023:23;6028:3;6040:5;6023:4;:23::i;3714:255:40:-;3792:7;3812:17;3831:18;3851:16;3871:27;3882:4;3888:9;3871:10;:27::i;:::-;3811:87;;;;;;3908:28;3920:5;3927:8;3908:11;:28::i;:::-;-1:-1:-1;3953:9:40;;3714:255;-1:-1:-1;;;;3714:255:40:o;7270:387:0:-;7347:4;7363:30;7396:26;:24;:26::i;:::-;7363:59;;7437:22;7445:4;7451:7;7437;:22::i;:::-;7432:219;;7475:8;:14;;;;;;;;;;;-1:-1:-1;;;;;7475:31:0;;;;;;;;;:38;;-1:-1:-1;;7475:38:0;7509:4;7475:38;;;7559:12;966:10:7;;887:96;7559:12:0;-1:-1:-1;;;;;7532:40:0;7550:7;-1:-1:-1;;;;;7532:40:0;7544:4;7532:40;;;;;;;;;;7593:4;7586:11;;;;;7432:219;7635:5;7628:12;;;;;8289:150:45;8359:4;8382:50;8387:3;-1:-1:-1;;;;;8407:23:45;;8382:4;:50::i;7084:141:2:-;7151:17;:15;:17::i;:::-;7146:73;;7191:17;;-1:-1:-1;;;7191:17:2;;;;;;;;;;;7892:388:0;7970:4;7986:30;8019:26;:24;:26::i;:::-;7986:59;;8059:22;8067:4;8073:7;8059;:22::i;:::-;8055:219;;;8131:5;8097:14;;;;;;;;;;;-1:-1:-1;;;;;8097:31:0;;;;;;;;;;:39;;-1:-1:-1;;8097:39:0;;;8155:40;966:10:7;;8097:14:0;;8155:40;;8131:5;8155:40;8216:4;8209:11;;;;;8607:156:45;8680:4;8703:53;8711:3;-1:-1:-1;;;;;8731:23:45;;8703:7;:53::i;6221:129::-;6294:4;6317:26;6325:3;6337:5;6317:7;:26::i;1441:138:22:-;-1:-1:-1;;;;;;;;;;;1519:53:22;-1:-1:-1;;;;;1519:53:22;;1441:138::o;2264:344::-;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:22;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;2454:148::-;2573:18;:16;:18::i;2395:183:9:-;2532:30;;2395:183::o;6431:138:45:-;6511:4;6534:28;6544:3;6556:5;4264:129;4337:4;4360:21;;;:14;;;;;:21;;;;;;:26;;;4264:129::o;4923:118::-;4990:7;5016:3;:11;;5028:5;5016:18;;;;;;;;:::i;:::-;;;;;;;;;5009:25;;4923:118;;;;:::o;7738:720:28:-;7818:18;7846:19;7984:4;7981:1;7974:4;7968:11;7961:4;7955;7951:15;7948:1;7941:5;7934;7929:60;8041:7;8031:176;;8085:4;8079:11;8130:16;8127:1;8122:3;8107:40;8176:16;8171:3;8164:29;8031:176;-1:-1:-1;;8284:1:28;8278:8;8234:16;;-1:-1:-1;8310:15:28;;:68;;8362:11;8377:1;8362:16;;8310:68;;;-1:-1:-1;;;;;8328:26:28;;;:31;8310:68;8306:146;;;8434:5;8401:40;;-1:-1:-1;;;8401:40:28;;;;;;;;:::i;2241:406:45:-;2304:4;2325:21;2335:3;2340:5;2325:9;:21::i;:::-;2320:321;;-1:-1:-1;2362:23:45;;;;;;;;:11;:23;;;;;;;;;;;;;2544:18;;2520:21;;;:14;;;:21;;;;;;:42;;;;2576:11;;2320:321;-1:-1:-1;2625:5:45;2618:12;;2129:778:40;2232:17;2251:16;2269:14;2299:9;:16;2319:2;2299:22;2295:606;;2604:4;2589:20;;2583:27;2653:4;2638:20;;2632:27;2710:4;2695:20;;2689:27;2337:9;2681:36;2751:25;2762:4;2681:36;2583:27;2632;2751:10;:25::i;:::-;2744:32;;;;;;;;;;;2295:606;-1:-1:-1;;2872:16:40;;2823:1;;-1:-1:-1;2827:35:40;;2295:606;2129:778;;;;;:::o;7280:532::-;7375:20;7366:5;:29;;;;;;;;:::i;:::-;;7362:444;;7280:532;;:::o;7362:444::-;7471:29;7462:5;:38;;;;;;;;:::i;:::-;;7458:348;;7523:23;;-1:-1:-1;;;7523:23:40;;;;;;;;;;;7458:348;7576:35;7567:5;:44;;;;;;;;:::i;:::-;;7563:243;;7634:46;;-1:-1:-1;;;7634:46:40;;;;;2062:25:61;;;2035:18;;7634:46:40;1916:177:61;7563:243:40;7710:30;7701:5;:39;;;;;;;;:::i;:::-;;7697:109;;7763:32;;-1:-1:-1;;;7763:32:40;;;;;2062:25:61;;;2035:18;;7763:32:40;1916:177:61;8487:120:2;8537:4;8560:26;:24;:26::i;:::-;:40;-1:-1:-1;;;8560:40:2;;;;;;-1:-1:-1;8487:120:2:o;2815:1368:45:-;2881:4;3010:21;;;:14;;;:21;;;;;;3046:13;;3042:1135;;3413:18;3434:12;3445:1;3434:8;:12;:::i;:::-;3480:18;;3413:33;;-1:-1:-1;3460:17:45;;3480:22;;3501:1;;3480:22;:::i;:::-;3460:42;;3535:9;3521:10;:23;3517:378;;3564:17;3584:3;:11;;3596:9;3584:22;;;;;;;;:::i;:::-;;;;;;;;;3564:42;;3731:9;3705:3;:11;;3717:10;3705:23;;;;;;;;:::i;:::-;;;;;;;;;;;;:35;;;;3844:25;;;:14;;;:25;;;;;:36;;;3517:378;3973:17;;:3;;:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;4076:3;:14;;:21;4091:5;4076:21;;;;;;;;;;;4069:28;;;4119:4;4112:11;;;;;;;1671:281:22;1748:17;-1:-1:-1;;;;;1748:29:22;;1781:1;1748:34;1744:119;;1834:17;1805:47;;-1:-1:-1;;;1805:47:22;;;;;;;;:::i;1744:119::-;-1:-1:-1;;;;;;;;;;;1872:73:22;;-1:-1:-1;;;;;;1872:73:22;-1:-1:-1;;;;;1872:73:22;;;;;;;;;;1671:281::o;3900:253:34:-;3983:12;4008;4022:23;4049:6;-1:-1:-1;;;;;4049:19:34;4069:4;4049:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4007:67;;;;4091:55;4118:6;4126:7;4135:10;4091:26;:55::i;:::-;4084:62;3900:253;-1:-1:-1;;;;;3900:253:34:o;6113:122:22:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:22;;;;;;;;;;;5203:1551:40;5329:17;;;-1:-1:-1;;;;;6270:79:40;;6266:164;;;-1:-1:-1;6381:1:40;;-1:-1:-1;6385:30:40;;-1:-1:-1;6417:1:40;6365:54;;6266:164;6541:24;;;6524:14;6541:24;;;;;;;;;39478:25:61;;;39551:4;39539:17;;39519:18;;;39512:45;;;;39573:18;;;39566:34;;;39616:18;;;39609:34;;;6541:24:40;;39450:19:61;;6541:24:40;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6541:24:40;;-1:-1:-1;;6541:24:40;;;-1:-1:-1;;;;;;;6579:20:40;;6575:113;;-1:-1:-1;6631:1:40;;-1:-1:-1;6635:29:40;;-1:-1:-1;6631:1:40;;-1:-1:-1;6615:62:40;;6575:113;6706:6;-1:-1:-1;6714:20:40;;-1:-1:-1;6714:20:40;;-1:-1:-1;5203:1551:40;;;;;;;;;:::o;4421:582:34:-;4565:12;4594:7;4589:408;;4617:19;4625:10;4617:7;:19::i;:::-;4589:408;;;4841:17;;:22;:49;;;;-1:-1:-1;;;;;;4867:18:34;;;:23;4841:49;4837:119;;;4934:6;4917:24;;-1:-1:-1;;;4917:24:34;;;;;;;;:::i;5543:487::-;5674:17;;:21;5670:354;;5871:10;5865:17;5927:15;5914:10;5910:2;5906:19;5899:44;5670:354;5994:19;;-1:-1:-1;;;5994:19:34;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14:286:61;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:61;;209:43;;199:71;;266:1;263;256:12;497:250;582:1;592:113;606:6;603:1;600:13;592:113;;;682:11;;;676:18;663:11;;;656:39;628:2;621:10;592:113;;;-1:-1:-1;;739:1:61;721:16;;714:27;497:250::o;752:271::-;794:3;832:5;826:12;859:6;854:3;847:19;875:76;944:6;937:4;932:3;928:14;921:4;914:5;910:16;875:76;:::i;:::-;1005:2;984:15;-1:-1:-1;;980:29:61;971:39;;;;1012:4;967:50;;752:271;-1:-1:-1;;752:271:61:o;1028:598::-;1080:3;1111;1143:5;1137:12;1170:6;1165:3;1158:19;1196:4;1225;1220:3;1216:14;1209:21;;1283:4;1273:6;1270:1;1266:14;1259:5;1255:26;1251:37;1322:4;1315:5;1311:16;1345:1;1355:245;1369:6;1366:1;1363:13;1355:245;;;1456:2;1452:7;1444:5;1438:4;1434:16;1430:30;1425:3;1418:43;1482:38;1515:4;1506:6;1500:13;1482:38;:::i;:::-;1578:12;;;;1474:46;-1:-1:-1;1543:15:61;;;;1391:1;1384:9;1355:245;;;-1:-1:-1;1616:4:61;;1028:598;-1:-1:-1;;;;;;;1028:598:61:o;1631:280::-;1830:2;1819:9;1812:21;1793:4;1850:55;1901:2;1890:9;1886:18;1878:6;1850:55;:::i;2098:632::-;2269:2;2321:21;;;2391:13;;2294:18;;;2413:22;;;2240:4;;2269:2;2492:15;;;;2466:2;2451:18;;;2240:4;2535:169;2549:6;2546:1;2543:13;2535:169;;;2610:13;;2598:26;;2679:15;;;;2644:12;;;;2571:1;2564:9;2535:169;;;-1:-1:-1;2721:3:61;;2098:632;-1:-1:-1;;;;;;2098:632:61:o;2735:131::-;-1:-1:-1;;;;;2810:31:61;;2800:42;;2790:70;;2856:1;2853;2846:12;2871:127;2932:10;2927:3;2923:20;2920:1;2913:31;2963:4;2960:1;2953:15;2987:4;2984:1;2977:15;3003:275;3074:2;3068:9;3139:2;3120:13;;-1:-1:-1;;3116:27:61;3104:40;;-1:-1:-1;;;;;3159:34:61;;3195:22;;;3156:62;3153:88;;;3221:18;;:::i;:::-;3257:2;3250:22;3003:275;;-1:-1:-1;3003:275:61:o;3283:186::-;3331:4;-1:-1:-1;;;;;3353:30:61;;3350:56;;;3386:18;;:::i;:::-;-1:-1:-1;3452:2:61;3431:15;-1:-1:-1;;3427:29:61;3458:4;3423:40;;3283:186::o;3474:462::-;3516:5;3569:3;3562:4;3554:6;3550:17;3546:27;3536:55;;3587:1;3584;3577:12;3536:55;3623:6;3610:20;3654:48;3670:31;3698:2;3670:31;:::i;:::-;3654:48;:::i;:::-;3727:2;3718:7;3711:19;3773:3;3766:4;3761:2;3753:6;3749:15;3745:26;3742:35;3739:55;;;3790:1;3787;3780:12;3739:55;3855:2;3848:4;3840:6;3836:17;3829:4;3820:7;3816:18;3803:55;3903:1;3878:16;;;3896:4;3874:27;3867:38;;;;3882:7;3474:462;-1:-1:-1;;;3474:462:61:o;3941:665::-;4036:6;4044;4052;4060;4113:3;4101:9;4092:7;4088:23;4084:33;4081:53;;;4130:1;4127;4120:12;4081:53;4169:9;4156:23;4188:31;4213:5;4188:31;:::i;:::-;4238:5;-1:-1:-1;4295:2:61;4280:18;;4267:32;4308:33;4267:32;4308:33;:::i;:::-;4360:7;-1:-1:-1;4414:2:61;4399:18;;4386:32;;-1:-1:-1;4469:2:61;4454:18;;4441:32;-1:-1:-1;;;;;4485:30:61;;4482:50;;;4528:1;4525;4518:12;4482:50;4551:49;4592:7;4583:6;4572:9;4568:22;4551:49;:::i;:::-;4541:59;;;3941:665;;;;;;;:::o;4818:321::-;4887:6;4940:2;4928:9;4919:7;4915:23;4911:32;4908:52;;;4956:1;4953;4946:12;4908:52;4983:23;;-1:-1:-1;;;;;5018:30:61;;5015:50;;;5061:1;5058;5051:12;5015:50;5084:49;5125:7;5116:6;5105:9;5101:22;5084:49;:::i;5326:472::-;5419:6;5427;5435;5488:2;5476:9;5467:7;5463:23;5459:32;5456:52;;;5504:1;5501;5494:12;5456:52;5543:9;5530:23;5562:31;5587:5;5562:31;:::i;:::-;5612:5;-1:-1:-1;5669:2:61;5654:18;;5641:32;5682:33;5641:32;5682:33;:::i;:::-;5326:472;;5734:7;;-1:-1:-1;;;5788:2:61;5773:18;;;;5760:32;;5326:472::o;5803:248::-;5871:6;5879;5932:2;5920:9;5911:7;5907:23;5903:32;5900:52;;;5948:1;5945;5938:12;5900:52;-1:-1:-1;;5971:23:61;;;6041:2;6026:18;;;6013:32;;-1:-1:-1;5803:248:61:o;6056:942::-;6109:5;6162:3;6155:4;6147:6;6143:17;6139:27;6129:55;;6180:1;6177;6170:12;6129:55;6203:20;;6242:4;-1:-1:-1;;;;;6295:10:61;;;6292:36;;;6308:18;;:::i;:::-;6354:2;6351:1;6347:10;6377:28;6401:2;6397;6393:11;6377:28;:::i;:::-;6439:15;;;6509;;;6505:24;;;6470:12;;;;6541:15;;;6538:35;;;6569:1;6566;6559:12;6538:35;6605:2;6597:6;6593:15;6582:26;;6617:352;6633:6;6628:3;6625:15;6617:352;;;6719:3;6706:17;6755:2;6742:11;6739:19;6736:109;;;6799:1;6828:2;6824;6817:14;6736:109;6870:56;6922:3;6917:2;6903:11;6895:6;6891:24;6887:33;6870:56;:::i;:::-;6858:69;;-1:-1:-1;6650:12:61;;;;6947;;;;6617:352;;;6987:5;6056:942;-1:-1:-1;;;;;;;;6056:942:61:o;7003:357::-;7097:6;7150:2;7138:9;7129:7;7125:23;7121:32;7118:52;;;7166:1;7163;7156:12;7118:52;7193:23;;-1:-1:-1;;;;;7228:30:61;;7225:50;;;7271:1;7268;7261:12;7225:50;7294:60;7346:7;7337:6;7326:9;7322:22;7294:60;:::i;7365:1014::-;7496:6;7504;7512;7520;7528;7536;7544;7552;7605:3;7593:9;7584:7;7580:23;7576:33;7573:53;;;7622:1;7619;7612:12;7573:53;7661:9;7648:23;7680:31;7705:5;7680:31;:::i;:::-;7730:5;-1:-1:-1;7787:2:61;7772:18;;7759:32;7800:33;7759:32;7800:33;:::i;:::-;7852:7;-1:-1:-1;7911:2:61;7896:18;;7883:32;7924:33;7883:32;7924:33;:::i;:::-;7976:7;-1:-1:-1;8030:2:61;8015:18;;8002:32;;-1:-1:-1;8081:3:61;8066:19;;8053:33;;-1:-1:-1;8133:3:61;8118:19;;8105:33;;-1:-1:-1;8185:3:61;8170:19;;8157:33;;-1:-1:-1;8241:3:61;8226:19;;8213:33;-1:-1:-1;;;;;8258:30:61;;8255:50;;;8301:1;8298;8291:12;8255:50;8324:49;8365:7;8356:6;8345:9;8341:22;8324:49;:::i;:::-;8314:59;;;7365:1014;;;;;;;;;;;:::o;8384:274::-;-1:-1:-1;;;;;8576:32:61;;;;8558:51;;8640:2;8625:18;;8618:34;8546:2;8531:18;;8384:274::o;8663:180::-;8722:6;8775:2;8763:9;8754:7;8750:23;8746:32;8743:52;;;8791:1;8788;8781:12;8743:52;-1:-1:-1;8814:23:61;;8663:180;-1:-1:-1;8663:180:61:o;8848:159::-;8915:20;;8975:6;8964:18;;8954:29;;8944:57;;8997:1;8994;8987:12;8944:57;8848:159;;;:::o;9012:324::-;9087:6;9095;9103;9156:2;9144:9;9135:7;9131:23;9127:32;9124:52;;;9172:1;9169;9162:12;9124:52;9208:9;9195:23;9185:33;;9237:37;9270:2;9259:9;9255:18;9237:37;:::i;:::-;9227:47;;9293:37;9326:2;9315:9;9311:18;9293:37;:::i;:::-;9283:47;;9012:324;;;;;:::o;9341:315::-;9409:6;9417;9470:2;9458:9;9449:7;9445:23;9441:32;9438:52;;;9486:1;9483;9476:12;9438:52;9522:9;9509:23;9499:33;;9582:2;9571:9;9567:18;9554:32;9595:31;9620:5;9595:31;:::i;:::-;9645:5;9635:15;;;9341:315;;;;;:::o;9661:740::-;9756:6;9764;9772;9780;9788;9841:3;9829:9;9820:7;9816:23;9812:33;9809:53;;;9858:1;9855;9848:12;9809:53;9897:9;9884:23;9916:31;9941:5;9916:31;:::i;:::-;9966:5;-1:-1:-1;10023:2:61;10008:18;;9995:32;10036:33;9995:32;10036:33;:::i;:::-;10088:7;-1:-1:-1;10142:2:61;10127:18;;10114:32;;-1:-1:-1;10198:2:61;10183:18;;10170:32;10211:33;10170:32;10211:33;:::i;:::-;10263:7;-1:-1:-1;10322:3:61;10307:19;;10294:33;10336;10294;10336;:::i;:::-;10388:7;10378:17;;;9661:740;;;;;;;;:::o;10406:389::-;10484:6;10492;10545:2;10533:9;10524:7;10520:23;10516:32;10513:52;;;10561:1;10558;10551:12;10513:52;10588:23;;-1:-1:-1;;;;;10623:30:61;;10620:50;;;10666:1;10663;10656:12;10620:50;10689:49;10730:7;10721:6;10710:9;10706:22;10689:49;:::i;:::-;10679:59;10785:2;10770:18;;;;10757:32;;-1:-1:-1;;;;10406:389:61:o;10800:118::-;10886:5;10879:13;10872:21;10865:5;10862:32;10852:60;;10908:1;10905;10898:12;10923:775;11051:6;11059;11067;11075;11128:3;11116:9;11107:7;11103:23;11099:33;11096:53;;;11145:1;11142;11135:12;11096:53;11172:23;;-1:-1:-1;;;;;11244:14:61;;;11241:34;;;11271:1;11268;11261:12;11241:34;11294:49;11335:7;11326:6;11315:9;11311:22;11294:49;:::i;:::-;11284:59;;11390:2;11379:9;11375:18;11362:32;11352:42;;11444:2;11433:9;11429:18;11416:32;11403:45;;11457:28;11479:5;11457:28;:::i;:::-;11504:5;;-1:-1:-1;11562:2:61;11547:18;;11534:32;;11578:16;;;11575:36;;;11607:1;11604;11597:12;11575:36;;11630:62;11684:7;11673:8;11662:9;11658:24;11630:62;:::i;11703:805::-;11816:6;11824;11832;11840;11848;11856;11864;11917:3;11905:9;11896:7;11892:23;11888:33;11885:53;;;11934:1;11931;11924:12;11885:53;11973:9;11960:23;11992:31;12017:5;11992:31;:::i;:::-;12042:5;-1:-1:-1;12099:2:61;12084:18;;12071:32;12112:33;12071:32;12112:33;:::i;:::-;12164:7;-1:-1:-1;12223:2:61;12208:18;;12195:32;12236:33;12195:32;12236:33;:::i;:::-;11703:805;;;;-1:-1:-1;12288:7:61;;12342:2;12327:18;;12314:32;;-1:-1:-1;12393:3:61;12378:19;;12365:33;;12445:3;12430:19;;12417:33;;-1:-1:-1;12497:3:61;12482:19;;;12469:33;;-1:-1:-1;11703:805:61;-1:-1:-1;;11703:805:61:o;12513:455::-;12590:6;12598;12651:2;12639:9;12630:7;12626:23;12622:32;12619:52;;;12667:1;12664;12657:12;12619:52;12706:9;12693:23;12725:31;12750:5;12725:31;:::i;:::-;12775:5;-1:-1:-1;12831:2:61;12816:18;;12803:32;-1:-1:-1;;;;;12847:30:61;;12844:50;;;12890:1;12887;12880:12;12844:50;12913:49;12954:7;12945:6;12934:9;12930:22;12913:49;:::i;:::-;12903:59;;;12513:455;;;;;:::o;12973:203::-;-1:-1:-1;;;;;13137:32:61;;;;13119:51;;13107:2;13092:18;;12973:203::o;13181:315::-;13249:6;13257;13310:2;13298:9;13289:7;13285:23;13281:32;13278:52;;;13326:1;13323;13316:12;13278:52;13365:9;13352:23;13384:31;13409:5;13384:31;:::i;:::-;13434:5;13486:2;13471:18;;;;13458:32;;-1:-1:-1;;;13181:315:61:o;13686:248::-;13860:25;;;13916:2;13901:18;;13894:34;13848:2;13833:18;;13686:248::o;13939:247::-;13998:6;14051:2;14039:9;14030:7;14026:23;14022:32;14019:52;;;14067:1;14064;14057:12;14019:52;14106:9;14093:23;14125:31;14150:5;14125:31;:::i;14191:393::-;14275:6;14283;14291;14299;14352:3;14340:9;14331:7;14327:23;14323:33;14320:53;;;14369:1;14366;14359:12;14320:53;14405:9;14392:23;14382:33;;14462:2;14451:9;14447:18;14434:32;14424:42;;14485:37;14518:2;14507:9;14503:18;14485:37;:::i;:::-;14475:47;;14541:37;14574:2;14563:9;14559:18;14541:37;:::i;:::-;14531:47;;14191:393;;;;;;;:::o;14589:541::-;14677:6;14685;14738:2;14726:9;14717:7;14713:23;14709:32;14706:52;;;14754:1;14751;14744:12;14706:52;14781:23;;-1:-1:-1;;;;;14853:14:61;;;14850:34;;;14880:1;14877;14870:12;14850:34;14903:49;14944:7;14935:6;14924:9;14920:22;14903:49;:::i;:::-;14893:59;;15005:2;14994:9;14990:18;14977:32;14961:48;;15034:2;15024:8;15021:16;15018:36;;;15050:1;15047;15040:12;15018:36;;15073:51;15116:7;15105:8;15094:9;15090:24;15073:51;:::i;15135:855::-;15185:3;15224:4;15219:3;15215:14;15256:5;15250:12;15245:3;15238:25;15282:4;15349;15342:5;15338:16;15332:23;15325:31;15318:39;15311:4;15306:3;15302:14;15295:63;15404:4;15397:5;15393:16;15387:23;15442:4;15435;15430:3;15426:14;15419:28;15469:4;15502:12;15496:19;15537:6;15531:4;15524:20;15571:3;15566;15562:13;15553:22;;15628:3;15618:6;15615:1;15611:14;15606:3;15602:24;15598:34;15584:48;;15673:4;15659:12;15655:23;15641:37;;15696:1;15706:256;15720:6;15717:1;15714:13;15706:256;;;15809:3;15805:8;15799:3;15791:6;15787:16;15783:31;15776:5;15769:46;15838:40;15871:6;15862;15856:13;15838:40;:::i;:::-;15828:50;-1:-1:-1;15901:15:61;;;;15938:14;;;;15742:1;15735:9;15706:256;;;-1:-1:-1;15978:6:61;;15135:855;-1:-1:-1;;;;;;;15135:855:61:o;15995:1028::-;16324:2;16313:9;16306:21;16287:4;16350:55;16401:2;16390:9;16386:18;16378:6;16350:55;:::i;:::-;16424:2;16474:9;16466:6;16462:22;16457:2;16446:9;16442:18;16435:50;16505:6;16540;16534:13;16571:6;16563;16556:22;16606:2;16598:6;16594:15;16587:22;;16665:2;16655:6;16652:1;16648:14;16640:6;16636:27;16632:36;16703:2;16695:6;16691:15;16724:1;16734:260;16748:6;16745:1;16742:13;16734:260;;;16838:2;16834:7;16825:6;16817;16813:19;16809:33;16804:3;16797:46;16866:48;16907:6;16898;16892:13;16866:48;:::i;:::-;16972:12;;;;16856:58;-1:-1:-1;16937:15:61;;;;16770:1;16763:9;16734:260;;;-1:-1:-1;17011:6:61;;15995:1028;-1:-1:-1;;;;;;;;;15995:1028:61:o;17028:218::-;17175:2;17164:9;17157:21;17138:4;17195:45;17236:2;17225:9;17221:18;17213:6;17195:45;:::i;17504:388::-;17572:6;17580;17633:2;17621:9;17612:7;17608:23;17604:32;17601:52;;;17649:1;17646;17639:12;17601:52;17688:9;17675:23;17707:31;17732:5;17707:31;:::i;:::-;17757:5;-1:-1:-1;17814:2:61;17799:18;;17786:32;17827:33;17786:32;17827:33;:::i;17897:391::-;18128:25;;;18184:2;18169:18;;18162:34;;;;18227:2;18212:18;;18205:34;18270:2;18255:18;;18248:34;18115:3;18100:19;;17897:391::o;18769:241::-;18825:6;18878:2;18866:9;18857:7;18853:23;18849:32;18846:52;;;18894:1;18891;18884:12;18846:52;18933:9;18920:23;18952:28;18974:5;18952:28;:::i;19015:658::-;19186:2;19238:21;;;19308:13;;19211:18;;;19330:22;;;19157:4;;19186:2;19409:15;;;;19383:2;19368:18;;;19157:4;19452:195;19466:6;19463:1;19460:13;19452:195;;;19531:13;;-1:-1:-1;;;;;19527:39:61;19515:52;;19622:15;;;;19587:12;;;;19563:1;19481:9;19452:195;;19678:450;19753:6;19761;19814:2;19802:9;19793:7;19789:23;19785:32;19782:52;;;19830:1;19827;19820:12;19782:52;19857:23;;-1:-1:-1;;;;;19892:30:61;;19889:50;;;19935:1;19932;19925:12;19889:50;19958:49;19999:7;19990:6;19979:9;19975:22;19958:49;:::i;:::-;19948:59;;;20057:2;20046:9;20042:18;20029:32;20070:28;20092:5;20070:28;:::i;20358:398::-;20450:6;20458;20466;20519:2;20507:9;20498:7;20494:23;20490:32;20487:52;;;20535:1;20532;20525:12;20487:52;20571:9;20558:23;20548:33;;20628:2;20617:9;20613:18;20600:32;20590:42;;20682:2;20671:9;20667:18;20654:32;20695:31;20720:5;20695:31;:::i;:::-;20745:5;20735:15;;;20358:398;;;;;:::o;20761:260::-;20942:2;20931:9;20924:21;20905:4;20962:53;21011:2;21000:9;20996:18;20988:6;20962:53;:::i;21026:955::-;21161:6;21169;21177;21185;21193;21201;21209;21262:3;21250:9;21241:7;21237:23;21233:33;21230:53;;;21279:1;21276;21269:12;21230:53;21318:9;21305:23;21337:31;21362:5;21337:31;:::i;:::-;21387:5;-1:-1:-1;21443:2:61;21428:18;;21415:32;-1:-1:-1;;;;;21459:30:61;;21456:50;;;21502:1;21499;21492:12;21456:50;21525:49;21566:7;21557:6;21546:9;21542:22;21525:49;:::i;:::-;21515:59;;;21621:2;21610:9;21606:18;21593:32;21583:42;;21672:2;21661:9;21657:18;21644:32;21634:42;;21728:3;21717:9;21713:19;21700:33;21742;21767:7;21742:33;:::i;:::-;21794:7;-1:-1:-1;21848:3:61;21833:19;;21820:33;;-1:-1:-1;21905:3:61;21890:19;;21877:33;21919:30;21877:33;21919:30;:::i;:::-;21968:7;21958:17;;;21026:955;;;;;;;;;;:::o;21986:577::-;22099:6;22107;22160:2;22148:9;22139:7;22135:23;22131:32;22128:52;;;22176:1;22173;22166:12;22128:52;22203:23;;-1:-1:-1;;;;;22275:14:61;;;22272:34;;;22302:1;22299;22292:12;22272:34;22325:49;22366:7;22357:6;22346:9;22342:22;22325:49;:::i;:::-;22315:59;;22427:2;22416:9;22412:18;22399:32;22383:48;;22456:2;22446:8;22443:16;22440:36;;;22472:1;22469;22462:12;22440:36;;22495:62;22549:7;22538:8;22527:9;22523:24;22495:62;:::i;22896:127::-;22957:10;22952:3;22948:20;22945:1;22938:31;22988:4;22985:1;22978:15;23012:4;23009:1;23002:15;23028:648;23108:6;23161:2;23149:9;23140:7;23136:23;23132:32;23129:52;;;23177:1;23174;23167:12;23129:52;23204:16;;-1:-1:-1;;;;;23232:30:61;;23229:50;;;23275:1;23272;23265:12;23229:50;23298:22;;23351:4;23343:13;;23339:27;-1:-1:-1;23329:55:61;;23380:1;23377;23370:12;23329:55;23409:2;23403:9;23434:48;23450:31;23478:2;23450:31;:::i;23434:48::-;23505:2;23498:5;23491:17;23545:7;23540:2;23535;23531;23527:11;23523:20;23520:33;23517:53;;;23566:1;23563;23556:12;23517:53;23579:67;23643:2;23638;23631:5;23627:14;23622:2;23618;23614:11;23579:67;:::i;24419:289::-;24550:3;24588:6;24582:13;24604:66;24663:6;24658:3;24651:4;24643:6;24639:17;24604:66;:::i;:::-;24686:16;;;;;24419:289;-1:-1:-1;;24419:289:61:o;24713:245::-;24780:6;24833:2;24821:9;24812:7;24808:23;24804:32;24801:52;;;24849:1;24846;24839:12;24801:52;24881:9;24875:16;24900:28;24922:5;24900:28;:::i;24963:127::-;25024:10;25019:3;25015:20;25012:1;25005:31;25055:4;25052:1;25045:15;25079:4;25076:1;25069:15;25095:128;25162:9;;;25183:11;;;25180:37;;;25197:18;;:::i;26660:380::-;26739:1;26735:12;;;;26782;;;26803:61;;26857:4;26849:6;26845:17;26835:27;;26803:61;26910:2;26902:6;26899:14;26879:18;26876:38;26873:161;;26956:10;26951:3;26947:20;26944:1;26937:31;26991:4;26988:1;26981:15;27019:4;27016:1;27009:15;26873:161;;26660:380;;;:::o;27045:184::-;27115:6;27168:2;27156:9;27147:7;27143:23;27139:32;27136:52;;;27184:1;27181;27174:12;27136:52;-1:-1:-1;27207:16:61;;27045:184;-1:-1:-1;27045:184:61:o;27234:168::-;27307:9;;;27338;;27355:15;;;27349:22;;27335:37;27325:71;;27376:18;;:::i;27407:217::-;27447:1;27473;27463:132;;27517:10;27512:3;27508:20;27505:1;27498:31;27552:4;27549:1;27542:15;27580:4;27577:1;27570:15;27463:132;-1:-1:-1;27609:9:61;;27407:217::o;27629:125::-;27694:9;;;27715:10;;;27712:36;;;27728:18;;:::i;27759:251::-;27829:6;27882:2;27870:9;27861:7;27857:23;27853:32;27850:52;;;27898:1;27895;27888:12;27850:52;27930:9;27924:16;27949:31;27974:5;27949:31;:::i;30024:841::-;-1:-1:-1;;;;;30446:15:61;;;30428:34;;30498:15;;;30493:2;30478:18;;30471:43;30378:3;30545:2;30530:18;;30523:30;;;30349:4;;30570:45;30596:18;;;30588:6;30570:45;:::i;:::-;30646:2;30631:18;;30624:34;;;;30689:3;30674:19;;30667:35;;;;-1:-1:-1;;30739:15:61;;;;30733:3;30718:19;;30711:44;30786:3;30771:19;;30764:35;30843:14;;30836:22;30830:3;30815:19;;;30808:51;30562:53;30024:841;-1:-1:-1;;;30024:841:61:o;31742:304::-;-1:-1:-1;;;;;31972:15:61;;;31954:34;;32024:15;;32019:2;32004:18;;31997:43;31904:2;31889:18;;31742:304::o;32711:543::-;32813:2;32808:3;32805:11;32802:446;;;32849:1;32873:5;32870:1;32863:16;32917:4;32914:1;32904:18;32987:2;32975:10;32971:19;32968:1;32964:27;32958:4;32954:38;33023:4;33011:10;33008:20;33005:47;;;-1:-1:-1;33046:4:61;33005:47;33101:2;33096:3;33092:12;33089:1;33085:20;33079:4;33075:31;33065:41;;33156:82;33174:2;33167:5;33164:13;33156:82;;;33219:17;;;33200:1;33189:13;33156:82;;33259:166;-1:-1:-1;;33387:1:61;33383:11;;;33379:24;33375:29;33365:40;33411:1;33407:11;;;;33362:57;;33259:166::o;33430:1345::-;33550:10;;-1:-1:-1;;;;;33572:30:61;;33569:56;;;33605:18;;:::i;:::-;33634:97;33724:6;33684:38;33716:4;33710:11;33684:38;:::i;:::-;33678:4;33634:97;:::i;:::-;33786:4;;33843:2;33832:14;;33860:1;33855:663;;;;34562:1;34579:6;34576:89;;;-1:-1:-1;34631:19:61;;;34625:26;34576:89;34691:67;34751:6;34744:5;34691:67;:::i;:::-;34685:4;34678:81;;33825:944;;33855:663;32658:1;32651:14;;;32695:4;32682:18;;-1:-1:-1;;33891:20:61;;;34009:236;34023:7;34020:1;34017:14;34009:236;;;34112:19;;;34106:26;34091:42;;34204:27;;;;34172:1;34160:14;;;;34039:19;;34009:236;;;34013:3;34273:6;34264:7;34261:19;34258:201;;;34334:19;;;34328:26;-1:-1:-1;;34417:1:61;34413:14;;;34429:3;34409:24;34405:37;34401:42;34386:58;34371:74;;34258:201;-1:-1:-1;;;;;34505:1:61;34489:14;;;34485:22;34472:36;;-1:-1:-1;33430:1345:61:o;34780:843::-;34908:3;34937:1;34970:6;34964:13;35000:36;35026:9;35000:36;:::i;:::-;35055:1;35072:17;;;35098:133;;;;35245:1;35240:358;;;;35065:533;;35098:133;-1:-1:-1;;35131:24:61;;35119:37;;35204:14;;35197:22;35185:35;;35176:45;;;-1:-1:-1;35098:133:61;;35240:358;35271:6;35268:1;35261:17;35301:4;35346;35343:1;35333:18;35373:1;35387:165;35401:6;35398:1;35395:13;35387:165;;;35479:14;;35466:11;;;35459:35;35522:16;;;;35416:10;;35387:165;;;35391:3;;;35581:6;35576:3;35572:16;35565:23;;35065:533;-1:-1:-1;35614:3:61;;34780:843;-1:-1:-1;;;;;;34780:843:61:o;35628:1435::-;35747:3;35741:4;35738:13;35735:26;;35754:5;;35628:1435::o;35735:26::-;35784:37;35816:3;35810:10;35784:37;:::i;:::-;-1:-1:-1;;;;;35833:30:61;;35830:56;;;35866:18;;:::i;:::-;35895:97;35985:6;35945:38;35977:4;35971:11;35945:38;:::i;35895:97::-;36018:1;36046:2;36038:6;36035:14;36063:1;36058:748;;;;36850:1;36867:6;36864:89;;;-1:-1:-1;36919:19:61;;;36913:26;36864:89;36979:67;37039:6;37032:5;36979:67;:::i;:::-;36973:4;36966:81;;36028:1029;;36058:748;32658:1;32651:14;;;32695:4;32682:18;;-1:-1:-1;;36094:20:61;;;32658:1;32651:14;;;32695:4;32682:18;;36258:9;36280:251;36294:7;36291:1;36288:14;36280:251;;;36376:21;;;36370:28;36355:44;;36426:1;36499:18;;;;36454:15;;;;36317:4;36310:12;36280:251;;;36284:3;36559:6;36550:7;36547:19;36544:203;;;36620:21;;36614:28;-1:-1:-1;;36717:3:61;36705:1;36701:14;;;36697:24;36693:37;36689:42;36674:58;36659:74;;;-1:-1:-1;;36793:1:61;36777:14;;;36773:22;36760:36;;-1:-1:-1;35628:1435:61:o;37068:127::-;37129:10;37124:3;37120:20;37117:1;37110:31;37160:4;37157:1;37150:15;37184:4;37181:1;37174:15;38827:127;38888:10;38883:3;38879:20;38876:1;38869:31;38919:4;38916:1;38909:15;38943:4;38940:1;38933:15" + }, + "methodIdentifiers": { + "BOOKING_OPERATOR_ROLE()": "852b3ccb", + "BOT_ADMIN_ROLE()": "33746274", + "CHEQUE_OPERATOR_ROLE()": "63e86cc8", + "DEFAULT_ADMIN_ROLE()": "a217fddf", + "DOMAIN_TYPEHASH()": "20606b70", + "GAS_WITHDRAWER_ROLE()": "383aba87", + "MESSENGER_CHEQUE_TYPEHASH()": "0ede80d6", + "SERVICE_ADMIN_ROLE()": "d09445c2", + "UPGRADER_ROLE()": "f72c0d8b", + "UPGRADE_INTERFACE_VERSION()": "ad3cb1cc", + "WITHDRAWER_ROLE()": "85f438c1", + "acceptCancellation(uint256,uint256)": "be667188", + "addMessengerBot(address,uint256)": "51889d6b", + "addPublicKey(address,bytes)": "ccde65dc", + "addService(string,uint256,bool,string[])": "432cf639", + "addServiceCapability(string,string)": "7512e55b", + "addSupportedToken(address)": "6d69fcaf", + "addWantedServices(string[])": "1c5db99e", + "buyBookingToken(uint256,uint256,address)": "cd9ef914", + "cashInCheque(address,address,address,uint256,uint256,uint256,uint256,bytes)": "647d8f6d", + "counterCancellation(uint256,uint256,uint16,uint16)": "74aa2048", + "finalizeCancellation(uint256,uint256)": "1c54f0f7", + "getAllServiceHashes()": "42072bbd", + "getBookingTokenAddress()": "4f3f4639", + "getDomainSeparator()": "ed24911d", + "getGasMoneyWithdrawal()": "658db0af", + "getGasMoneyWithdrawalForAccount(address)": "ee3b641f", + "getLastCashIn(address,address)": "930659eb", + "getManagerAddress()": "c162d7da", + "getPrefundAmount()": "c39409e1", + "getPublicKey(address)": "857cdbb8", + "getPublicKeysAddresses()": "ea79d07a", + "getRoleAdmin(bytes32)": "248a9ca3", + "getRoleMember(bytes32,uint256)": "9010d07c", + "getRoleMemberCount(bytes32)": "ca15c873", + "getRoleMembers(bytes32)": "a3246ad3", + "getService(bytes32)": "da47d856", + "getServiceCapabilities(bytes32)": "5e07f869", + "getServiceCapabilities(string)": "319d13f3", + "getServiceFee(bytes32)": "eb5ea273", + "getServiceFee(string)": "18274da4", + "getServiceRestrictedRate(bytes32)": "8f69347d", + "getServiceRestrictedRate(string)": "b5124635", + "getSupportedServices()": "7eec56c7", + "getSupportedTokens()": "d3c7c2c7", + "getTotalChequePayments()": "e96cf7ad", + "getWantedServiceHashes()": "136f50ca", + "getWantedServices()": "08564c19", + "grantRole(bytes32,address)": "2f2ff15d", + "hasRole(bytes32,address)": "91d14854", + "hashMessengerCheque(address,address,address,uint256,uint256,uint256,uint256)": "4781ae53", + "hashTypedDataV4(address,address,address,uint256,uint256,uint256,uint256)": "c7b5914f", + "initialize(address,address,uint256,address,address)": "33e1a223", + "initiateCancellation(uint256,uint256,uint16,uint16)": "f7e45f09", + "isBotAllowed(address)": "e0b78add", + "mintBookingToken(address,string,uint256,uint256,address,uint256,bool)": "e26a61bb", + "offChainPaymentSupported()": "241bbbfc", + "onERC721Received(address,address,uint256,bytes)": "150b7a02", + "proxiableUUID()": "52d1902d", + "recordExpiration(uint256)": "e5a6725c", + "rejectCancellation(uint256,uint16,uint16)": "74fe60e9", + "removeMessengerBot(address)": "c6640e68", + "removePublicKey(address)": "e7bfce9a", + "removeService(string)": "f51acaea", + "removeServiceCapability(string,string)": "8c20f574", + "removeSupportedToken(address)": "76319190", + "removeWantedServices(string[])": "39e4c705", + "renounceRole(bytes32,address)": "36568abe", + "revokeRole(bytes32,address)": "d547741f", + "setGasMoneyWithdrawal(uint256,uint256)": "6fc22cd1", + "setOffChainPaymentSupported(bool)": "a31aa039", + "setServiceCapabilities(string,string[])": "ebc20d20", + "setServiceFee(string,uint256)": "41bf7c69", + "setServiceRestrictedRate(string,bool)": "a7d022f8", + "supportsInterface(bytes4)": "01ffc9a7", + "transferERC20(address,address,uint256)": "9db5dbe4", + "transferERC721(address,address,uint256)": "1aca6376", + "upgradeToAndCall(address,bytes)": "4f1ef286", + "verifyCheque(address,address,address,uint256,uint256,uint256,uint256,bytes)": "21b9b929", + "withdraw(address,uint256)": "f3fef3a3", + "withdrawCancellation(uint256,uint16,uint16)": "2a119380", + "withdrawGasMoney(uint256)": "5c988994" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"latestImplementation\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"CMAccountImplementationMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"oldImplementation\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"CMAccountNoUpgradeNeeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expiresAt\",\"type\":\"uint256\"}],\"name\":\"ChequeExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chequeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chequeCounter\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastCounter\",\"type\":\"uint256\"}],\"name\":\"InvalidCounter\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromCMAccount\",\"type\":\"address\"}],\"name\":\"InvalidFromCMAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"use\",\"type\":\"uint8\"}],\"name\":\"InvalidPublicKeyUseType\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"toCMAccount\",\"type\":\"address\"}],\"name\":\"InvalidToCMAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"NotAllowedToSignCheques\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"PaymentTokenAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"PaymentTokenDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"withdrawableAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"prefundLeft\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"PrefundNotSpentYet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pubKeyAddress\",\"type\":\"address\"}],\"name\":\"PublicKeyAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pubKeyAddress\",\"type\":\"address\"}],\"name\":\"PublicKeyDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"ServiceAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"ServiceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TransferToZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"WantedServiceAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"WantedServiceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"WithdrawalLimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"WithdrawalLimitExceededForPeriod\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldImplementation\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"CMAccountUpgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fromCMAccount\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toCMAccount\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"fromBot\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"toBot\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"counter\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paidChequeAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paidDeveloperFee\",\"type\":\"uint256\"}],\"name\":\"ChequeCashedIn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"GasMoneyWithdrawal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"period\",\"type\":\"uint256\"}],\"name\":\"GasMoneyWithdrawalUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"bot\",\"type\":\"address\"}],\"name\":\"MessengerBotAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"bot\",\"type\":\"address\"}],\"name\":\"MessengerBotRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"supportsOffChainPayment\",\"type\":\"bool\"}],\"name\":\"OffChainPaymentSupportUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"PaymentTokenAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"PaymentTokenRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pubKeyAddress\",\"type\":\"address\"}],\"name\":\"PublicKeyAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pubKeyAddress\",\"type\":\"address\"}],\"name\":\"PublicKeyRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"name\":\"ServiceAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"name\":\"ServiceCapabilitiesUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"capability\",\"type\":\"string\"}],\"name\":\"ServiceCapabilityAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"capability\",\"type\":\"string\"}],\"name\":\"ServiceCapabilityRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"ServiceFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"name\":\"ServiceRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"restrictedRate\",\"type\":\"bool\"}],\"name\":\"ServiceRestrictedRateUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"name\":\"WantedServiceAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"name\":\"WantedServiceRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdraw\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BOOKING_OPERATOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"BOT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CHEQUE_OPERATOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GAS_WITHDRAWER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MESSENGER_CHEQUE_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SERVICE_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WITHDRAWER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"refundAmount\",\"type\":\"uint256\"}],\"name\":\"acceptCancellation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bot\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"gasMoney\",\"type\":\"uint256\"}],\"name\":\"addMessengerBot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pubKeyAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"addPublicKey\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"restrictedRate\",\"type\":\"bool\"},{\"internalType\":\"string[]\",\"name\":\"capabilities\",\"type\":\"string[]\"}],\"name\":\"addService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"capability\",\"type\":\"string\"}],\"name\":\"addServiceCapability\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_supportedToken\",\"type\":\"address\"}],\"name\":\"addSupportedToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"serviceNames\",\"type\":\"string[]\"}],\"name\":\"addWantedServices\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expectedPrice\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC20\",\"name\":\"expectedPaymentToken\",\"type\":\"address\"}],\"name\":\"buyBookingToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toBot\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"counter\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiresAt\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"cashInCheque\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"refundAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"counterReason\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"counterReasonVersion\",\"type\":\"uint16\"}],\"name\":\"counterCancellation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"refundAmount\",\"type\":\"uint256\"}],\"name\":\"finalizeCancellation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllServiceHashes\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"serviceHashes\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBookingTokenAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getGasMoneyWithdrawal\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"withdrawalLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawalPeriod\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getGasMoneyWithdrawalForAccount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"periodStart\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawnAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromBot\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toBot\",\"type\":\"address\"}],\"name\":\"getLastCashIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lastCounter\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastCreatedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastExpiresAt\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getManagerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPrefundAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pubKeyAddress\",\"type\":\"address\"}],\"name\":\"getPublicKey\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPublicKeysAddresses\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"pubKeyAddresses\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMembers\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"getService\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_restrictedRate\",\"type\":\"bool\"},{\"internalType\":\"string[]\",\"name\":\"_capabilities\",\"type\":\"string[]\"}],\"internalType\":\"struct PartnerConfiguration.Service\",\"name\":\"service\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"name\":\"getServiceCapabilities\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"capabilities\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"getServiceCapabilities\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"capabilities\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"name\":\"getServiceFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"getServiceFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"getServiceRestrictedRate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"restrictedRate\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"name\":\"getServiceRestrictedRate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"restrictedRate\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSupportedServices\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"serviceNames\",\"type\":\"string[]\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_restrictedRate\",\"type\":\"bool\"},{\"internalType\":\"string[]\",\"name\":\"_capabilities\",\"type\":\"string[]\"}],\"internalType\":\"struct PartnerConfiguration.Service[]\",\"name\":\"services\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSupportedTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalChequePayments\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWantedServiceHashes\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"serviceHashes\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWantedServices\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"serviceNames\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toBot\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"counter\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiresAt\",\"type\":\"uint256\"}],\"name\":\"hashMessengerCheque\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toBot\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"counter\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiresAt\",\"type\":\"uint256\"}],\"name\":\"hashTypedDataV4\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"bookingToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"prefundAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"defaultAdmin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"upgrader\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"refundAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"cancellationReason\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"cancellationReasonVersion\",\"type\":\"uint16\"}],\"name\":\"initiateCancellation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bot\",\"type\":\"address\"}],\"name\":\"isBotAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"reservedFor\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"expirationTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC20\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"offchainPaymentCurrency\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"cancellable\",\"type\":\"bool\"}],\"name\":\"mintBookingToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"offChainPaymentSupported\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC721Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"recordExpiration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"rejectionReason\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"rejectionReasonVersion\",\"type\":\"uint16\"}],\"name\":\"rejectCancellation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bot\",\"type\":\"address\"}],\"name\":\"removeMessengerBot\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pubKeyAddress\",\"type\":\"address\"}],\"name\":\"removePublicKey\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"name\":\"removeService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"capability\",\"type\":\"string\"}],\"name\":\"removeServiceCapability\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_supportedToken\",\"type\":\"address\"}],\"name\":\"removeSupportedToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string[]\",\"name\":\"serviceNames\",\"type\":\"string[]\"}],\"name\":\"removeWantedServices\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"period\",\"type\":\"uint256\"}],\"name\":\"setGasMoneyWithdrawal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_isSupported\",\"type\":\"bool\"}],\"name\":\"setOffChainPaymentSupported\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"},{\"internalType\":\"string[]\",\"name\":\"capabilities\",\"type\":\"string[]\"}],\"name\":\"setServiceCapabilities\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"setServiceFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"restrictedRate\",\"type\":\"bool\"}],\"name\":\"setServiceRestrictedRate\",\"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\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC721\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferERC721\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toBot\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"counter\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiresAt\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"verifyCheque\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"reason\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"reasonVersion\",\"type\":\"uint16\"}],\"name\":\"withdrawCancellation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdrawGasMoney\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"custom:security-contact\":\"https://r.xyz/program/camino-network\",\"details\":\"This contract uses UUPS style upgradeability. The authorization function `_authorizeUpgrade(address)` can be called by the `UPGRADER_ROLE` and is restricted to only upgrade to the implementation address registered on the {CMAccountManager} contract.\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"GasMoneyWithdrawal(address,uint256)\":{\"params\":{\"amount\":\"the amount withdrawn\",\"withdrawer\":\"the address of the withdrawer\"}},\"GasMoneyWithdrawalUpdated(uint256,uint256)\":{\"params\":{\"limit\":\"the withdrawal limit for the period\",\"period\":\"the withdrawal period in seconds\"}},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"addPublicKey(address,bytes)\":{\"params\":{\"data\":\"public key data\",\"pubKeyAddress\":\"address of the public key\"}},\"addService(string,uint256,bool,string[])\":{\"details\":\"These services are coming from the Camino Messenger Protocol's protobuf definitions.\",\"params\":{\"capabilities\":\"Capabilities of the service (if any, optional)\",\"fee\":\"Fee of the service in aCAM (wei in ETH terminology)\",\"serviceName\":\"Service name to add to the account as a supported service\"}},\"addSupportedToken(address)\":{\"params\":{\"_supportedToken\":\"address of the token\"}},\"addWantedServices(string[])\":{\"params\":{\"serviceNames\":\"List of service names\"}},\"buyBookingToken(uint256,uint256,address)\":{\"params\":{\"tokenId\":\"The token id\"}},\"cashInCheque(address,address,address,uint256,uint256,uint256,uint256,bytes)\":{\"params\":{\"amount\":\"The amount on the cheque. Should be greater then or equal the last recorded amount.\",\"counter\":\"The counter of the cheque. Should be increased with every cheque.\",\"createdAt\":\"The creation timestamp of the cheque.\",\"expiresAt\":\"The expiration timestamp of the cheque.\",\"fromCMAccount\":\"The CM Account that will pay the amount. This contract.\",\"signature\":\"The signature of the cheque.\",\"toBot\":\"The address of the bot that received the cheque.\",\"toCMAccount\":\"The CM Account that will receive the amount.\"}},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"finalizeCancellation(uint256,uint256)\":{\"params\":{\"refundAmount\":\"The refund amount to check, this is to prevent front-running attacks\",\"tokenId\":\"The token id for which to finalize the proposal\"}},\"getBookingTokenAddress()\":{\"returns\":{\"_0\":\"BookingToken address\"}},\"getGasMoneyWithdrawal()\":{\"returns\":{\"withdrawalLimit\":\"withdrawalLimit\",\"withdrawalPeriod\":\"withdrawalPeriod\"}},\"getGasMoneyWithdrawalForAccount(address)\":{\"params\":{\"account\":\"address of the account\"},\"returns\":{\"periodStart\":\"timestamp of the withdrawal period start\",\"withdrawnAmount\":\"amount withdrawn within the period\"}},\"getLastCashIn(address,address)\":{\"params\":{\"fromBot\":\"The address of the bot that sent the cheque.\",\"toBot\":\"The address of the bot that received the cheque. Returns (lastCounter, lastAmount, lastCreatedAt, lastExpiresAt)\"},\"returns\":{\"lastAmount\":\"The last amount of the cheque.\",\"lastCounter\":\"The last counter of the cheque.\",\"lastCreatedAt\":\"The last creation timestamp of the cheque.\",\"lastExpiresAt\":\"The last expiration timestamp of the cheque.\"}},\"getManagerAddress()\":{\"returns\":{\"_0\":\"CMAccountManager address\"}},\"getPrefundAmount()\":{\"returns\":{\"_0\":\"prefund amount\"}},\"getPublicKey(address)\":{\"params\":{\"pubKeyAddress\":\"Address of the public key\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"getRoleMembers(bytes32)\":{\"details\":\"Return all accounts that have `role` WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that this function has an unbounded cost, and using it as part of a state-changing function may render the function uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\"},\"getService(bytes32)\":{\"details\":\"These services are coming from the Camino Messenger Protocol's protobuf definitions.\",\"params\":{\"serviceHash\":\"Hash of the service\"}},\"getServiceCapabilities(bytes32)\":{\"params\":{\"serviceHash\":\"Hash of the service\"}},\"getServiceFee(bytes32)\":{\"params\":{\"serviceHash\":\"Hash of the service\"}},\"getServiceRestrictedRate(bytes32)\":{\"params\":{\"serviceHash\":\"Hash of the service\"}},\"getSupportedTokens()\":{\"returns\":{\"tokens\":\"Supported token addresses\"}},\"getTotalChequePayments()\":{\"returns\":{\"_0\":\"totalChequePayments The total cheque payments made.\"}},\"getWantedServiceHashes()\":{\"returns\":{\"serviceHashes\":\"Wanted service hashes\"}},\"getWantedServices()\":{\"returns\":{\"serviceNames\":\"List of service names\"}},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"isBotAllowed(address)\":{\"params\":{\"bot\":\"The bot's address\"}},\"mintBookingToken(address,string,uint256,uint256,address,uint256,bool)\":{\"params\":{\"cancellable\":\"If the token is cancellable\",\"expirationTimestamp\":\"The expiration timestamp\",\"offchainPaymentCurrency\":\"The offchain payment currency\",\"paymentToken\":\"The payment token, if address(0) then native\",\"price\":\"The price of the token\",\"reservedFor\":\"The account to reserve the token for\",\"uri\":\"The URI of the token\"}},\"onERC721Received(address,address,uint256,bytes)\":{\"details\":\"See {IERC721Receiver-onERC721Received}.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"removeSupportedToken(address)\":{\"params\":{\"_supportedToken\":\"address of the token\"}},\"removeWantedServices(string[])\":{\"params\":{\"serviceNames\":\"List of service names\"}},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setGasMoneyWithdrawal(uint256,uint256)\":{\"params\":{\"limit\":\"Amount of gas money to withdraw in wei per period\",\"period\":\"Duration of the withdrawal period in seconds\"}},\"setOffChainPaymentSupported(bool)\":{\"params\":{\"_isSupported\":\"true if off-chain payment is supported\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"transferERC20(address,address,uint256)\":{\"params\":{\"amount\":\"The amount of tokens to transfer\",\"to\":\"The address to transfer the tokens to\",\"token\":\"The ERC20 token\"}},\"transferERC721(address,address,uint256)\":{\"params\":{\"to\":\"The address to transfer the tokens to\",\"token\":\"The ERC721 token\",\"tokenId\":\"The token id of the token\"}},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"withdrawCancellation(uint256,uint16,uint16)\":{\"params\":{\"reason\":\"The reason for withdrawing the proposal\",\"reasonVersion\":\"The version of the withdrawal reason from the CMP\",\"tokenId\":\"The token id for which to withdraw the proposal\"}},\"withdrawGasMoney(uint256)\":{\"params\":{\"amount\":\"The amount to withdraw in aCAM (wei)\"}}},\"title\":\"Camino Messenger Account\",\"version\":1},\"userdoc\":{\"errors\":{\"CMAccountImplementationMismatch(address,address)\":[{\"notice\":\"CMAccount implementation address does not match the one in the manager\"}],\"CMAccountNoUpgradeNeeded(address,address)\":[{\"notice\":\"New implementation is the same as the current implementation, no update needed\"}],\"ChequeExpired(uint256)\":[{\"notice\":\"The cheque is expired at the given timestamp.\"}],\"InvalidAmount(uint256,uint256)\":[{\"notice\":\"Last recorded amount is lower than the cheque's amount.\"}],\"InvalidCounter(uint256,uint256)\":[{\"notice\":\"Invalid counter for the cheque. The counter on the cheque is not greater then the last recorded counter.\"}],\"InvalidFromCMAccount(address)\":[{\"notice\":\"Invalid CM Account. Cheque's `fromCMAccount` has to be for `address(this)`.\"}],\"InvalidToCMAccount(address)\":[{\"notice\":\"`toCMAccount` address is not a registered CMAccount on the manager.\"}],\"NotAllowedToSignCheques(address)\":[{\"notice\":\"The signer is not allowed to sign cheques\"}],\"PrefundNotSpentYet(uint256,uint256,uint256)\":[{\"notice\":\"Error to revert with if the prefund is not spent yet\"}],\"TransferToZeroAddress()\":[{\"notice\":\"Error to revert if transfer to zero address\"}]},\"events\":{\"CMAccountUpgraded(address,address)\":{\"notice\":\"CMAccount upgrade event. Emitted when the CMAccount implementation is upgraded.\"},\"ChequeCashedIn(address,address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Cash-in event. Emitted when a cheque is cashed in.\"},\"Deposit(address,uint256)\":{\"notice\":\"Deposit event, emitted when there is a new deposit\"},\"GasMoneyWithdrawal(address,uint256)\":{\"notice\":\"Gas money withdrawal event\"},\"GasMoneyWithdrawalUpdated(uint256,uint256)\":{\"notice\":\"Gas money withdrawal limit and period updated event\"},\"MessengerBotAdded(address)\":{\"notice\":\"Messenger bot added\"},\"MessengerBotRemoved(address)\":{\"notice\":\"Messenger bot removed\"},\"Withdraw(address,uint256)\":{\"notice\":\"Withdraw event, emitted when there is a new withdrawal\"}},\"kind\":\"user\",\"methods\":{\"BOOKING_OPERATOR_ROLE()\":{\"notice\":\"Booking operator role can mint and buy booking tokens using the functions on this contract. This is generally used by the bots. The price for the booking token is paid by this contract.\"},\"BOT_ADMIN_ROLE()\":{\"notice\":\"Bot admin role can add & remove bots and set gas money withdrawal parameters.\"},\"CHEQUE_OPERATOR_ROLE()\":{\"notice\":\"Cheque operator role can issue cheques to be paid by this CMAccount contract.\"},\"DOMAIN_TYPEHASH()\":{\"notice\":\"Pre-computed hash of the EIP712Domain type ``` keccak256(\\\"EIP712Domain(string name,string version,uint256 chainId)\\\"); ```\"},\"GAS_WITHDRAWER_ROLE()\":{\"notice\":\"Gas withdrawer role can withdraw gas money from the contract. This is intended to be used by the bots and is granted when `addMessengerBot` is called.\"},\"MESSENGER_CHEQUE_TYPEHASH()\":{\"notice\":\"Pre-computed hash of the MessengerCheque type ``` keccak256( \\\"MessengerCheque(address fromCMAccount,address toCMAccount,address toBot,uint256 counter,uint256 amount,uint256 createdAt,uint256 expiresAt)\\\" ); ```\"},\"SERVICE_ADMIN_ROLE()\":{\"notice\":\"Service admin role can add & remove supported & wanted services.\"},\"UPGRADER_ROLE()\":{\"notice\":\"Upgrader role can upgrade the contract to a new implementation.\"},\"WITHDRAWER_ROLE()\":{\"notice\":\"Withdrawer role can withdraw funds from the contract.\"},\"addMessengerBot(address,uint256)\":{\"notice\":\"Adds messenger bot with initial gas money.\"},\"addPublicKey(address,bytes)\":{\"notice\":\"Add public key with address These public keys are intended to be used with for off-chain encryption of private booking data.\"},\"addService(string,uint256,bool,string[])\":{\"notice\":\"Adds a service to the account as a supported service. `serviceName` is defined as pkg + service name in protobuf. For example: ```text \\u250c\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500 pkg \\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2510 \\u250c\\u2500\\u2500\\u2500\\u2500\\u2500 service name \\u2500\\u2500\\u2500\\u2500\\u2500\\u2510 \\\"cmp.services.accommodation.v1alpha.AccommodationSearchService\\\") ```\"},\"addServiceCapability(string,string)\":{\"notice\":\"Add a single capability to the service by name\"},\"addSupportedToken(address)\":{\"notice\":\"Adds a supported payment token.\"},\"addWantedServices(string[])\":{\"notice\":\"Adds wanted services.\"},\"buyBookingToken(uint256,uint256,address)\":{\"notice\":\"Buys booking token.\"},\"cashInCheque(address,address,address,uint256,uint256,uint256,uint256,bytes)\":{\"notice\":\"Cash in a cheque by verifying it and paying the difference between the cheque amount and the last recorded amount for the signer and `toBot` pair. A percentage of the amount is also paid to the developer wallet.\"},\"finalizeCancellation(uint256,uint256)\":{\"notice\":\"Finalizes a cancellation proposal. Only the supplier of the token can finalize.\"},\"getAllServiceHashes()\":{\"notice\":\"Returns all supported service hashes.\"},\"getBookingTokenAddress()\":{\"notice\":\"Returns the booking token address.\"},\"getDomainSeparator()\":{\"notice\":\"Returns the domain separator.\"},\"getGasMoneyWithdrawal()\":{\"notice\":\"Returns the gas money withdrawal restrictions.\"},\"getGasMoneyWithdrawalForAccount(address)\":{\"notice\":\"Returns the gas money withdrawal details for an account.\"},\"getLastCashIn(address,address)\":{\"notice\":\"Returns last cash-in details for given `fromBot` & `toBot` pair.\"},\"getManagerAddress()\":{\"notice\":\"Returns the CMAccountManager address.\"},\"getPrefundAmount()\":{\"notice\":\"Returns the prefund amount.\"},\"getPublicKey(address)\":{\"notice\":\"Returns the public key for a given address. Reverts if the public key does not exist\"},\"getPublicKeysAddresses()\":{\"notice\":\"Returns the addresses of all public keys. These can then be used to retrieve the public keys the `getPublicKey(address)` function.\"},\"getService(bytes32)\":{\"notice\":\"Returns the Service object for a given hash. Service object contains fee and capabilities. `serviceHash` is keccak256 hash of the pkg + service name as: ```text \\u250c\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500 pkg \\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2510 \\u250c\\u2500\\u2500\\u2500\\u2500\\u2500 service name \\u2500\\u2500\\u2500\\u2500\\u2500\\u2510 keccak256(\\\"cmp.services.accommodation.v1alpha.AccommodationSearchService\\\") ```\"},\"getServiceCapabilities(bytes32)\":{\"notice\":\"Returns the capabilities for a given service hash.\"},\"getServiceCapabilities(string)\":{\"notice\":\"Get service capabilities by name. Overloading the getServiceCapabilities function.\"},\"getServiceFee(bytes32)\":{\"notice\":\"Returns the fee for a given service hash.\"},\"getServiceFee(string)\":{\"notice\":\"Get service fee by name. Overloading the getServiceFee function.\"},\"getServiceRestrictedRate(bytes32)\":{\"notice\":\"Returns the restricted rate for a given service hash.\"},\"getServiceRestrictedRate(string)\":{\"notice\":\"Get service restricted rate by name. Overloading the getServiceRestrictedRate function.\"},\"getSupportedServices()\":{\"notice\":\"Get all supported services. Return a list of service names and a list of service objects.\"},\"getSupportedTokens()\":{\"notice\":\"Returns supported token addresses.\"},\"getTotalChequePayments()\":{\"notice\":\"Returns total cheque payments. This is the sum of all cashed in cheques.\"},\"getWantedServiceHashes()\":{\"notice\":\"Returns all wanted service hashes.\"},\"getWantedServices()\":{\"notice\":\"Get all wanted services.\"},\"hashMessengerCheque(address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Returns the hash of the `MessengerCheque` encoded with `MESSENGER_CHEQUE_TYPEHASH`.\"},\"hashTypedDataV4(address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Returns the hash of the typed data (cheque) with prefix and domain separator.\"},\"isBotAllowed(address)\":{\"notice\":\"Returns true if an address is authorized to sign cheques\"},\"mintBookingToken(address,string,uint256,uint256,address,uint256,bool)\":{\"notice\":\"Mints booking token.\"},\"offChainPaymentSupported()\":{\"notice\":\"Returns true if off-chain payment is supported for the given service.\"},\"onERC721Received(address,address,uint256,bytes)\":{\"notice\":\"Always returns `IERC721Receiver.onERC721Received.selector`.\"},\"recordExpiration(uint256)\":{\"notice\":\"Record expiration status if the token is expired\"},\"removeMessengerBot(address)\":{\"notice\":\"Removes messenger bot by revoking the roles.\"},\"removePublicKey(address)\":{\"notice\":\"Remove public key by address\"},\"removeService(string)\":{\"notice\":\"Remove a service from the account by its name\"},\"removeServiceCapability(string,string)\":{\"notice\":\"Remove a single capability from the service by name\"},\"removeSupportedToken(address)\":{\"notice\":\"Removes a supported payment token.\"},\"removeWantedServices(string[])\":{\"notice\":\"Removes wanted services.\"},\"setGasMoneyWithdrawal(uint256,uint256)\":{\"notice\":\"Set gas money withdrawal parameters. Requires the `BOT_ADMIN_ROLE`.\"},\"setOffChainPaymentSupported(bool)\":{\"notice\":\"Sets if off-chain payment is supported.\"},\"setServiceCapabilities(string,string[])\":{\"notice\":\"Set all capabilities for a service by name\"},\"setServiceFee(string,uint256)\":{\"notice\":\"Set the fee of a service by name\"},\"setServiceRestrictedRate(string,bool)\":{\"notice\":\"Set the restricted rate of a service by name\"},\"transferERC20(address,address,uint256)\":{\"notice\":\"Transfers ERC20 tokens. This function reverts if `to` is the zero address.\"},\"transferERC721(address,address,uint256)\":{\"notice\":\"Transfers ERC721 tokens. This function reverts if `to` is the zero address.\"},\"verifyCheque(address,address,address,uint256,uint256,uint256,uint256,bytes)\":{\"notice\":\"Returns signer and payment amount if the signature is valid for the given cheque, the signer is an allowed bot, cheque counter and amounts are valid according to last cash ins. Please be aware that `cheque.amount < paymentAmount` for a valid cheque as long as the last amount is lower than the cheque amount. Only the difference between the cheque amount and the last recorded amount is paid.\"},\"withdraw(address,uint256)\":{\"notice\":\"Withdraw CAM from the CMAccount This function reverts if the amount is bigger then the prefund left to spend. This is to prevent spam by forcing user to spend the full prefund for cheques, so they can not just create an account and withdraw the prefund.\"},\"withdrawCancellation(uint256,uint16,uint16)\":{\"notice\":\"Withdraws an active cancellation proposal. Only the initiator can withdraw.\"},\"withdrawGasMoney(uint256)\":{\"notice\":\"Withdraw gas money. Requires the `GAS_WITHDRAWER_ROLE`.\"}},\"notice\":\"A CM Account manages funds, minting/buying of booking tokens, provided or wanted services, and multiple bots for distributors and suppliers on Camino Messenger ecosystem. Registering bots is done by role based access control. Bot's with `CHEQUE_OPERATOR_ROLE` can issue cheques to paid by the {CMAccount} contract. Bot can also have `GAS_WITHDRAWER_ROLE` and `BOOKING_OPERATOR_ROLE`. `GAS_WITHDRAWER_ROLE` enables a bot to withdraw native coins (CAM) from the contract to be used as gas money. This restricted with a `limit` (wei/aCAM) and `period` (seconds) by the `BOT_ADMIN_ROLE`. Default starting values are 10 CAM per 24 hours. `BOOKING_OPERATOR_ROLE` enables a bot to mint and buy Booking Tokens by calling the corresponding functions on the {BookingToken} contract. The buy operation pays the price of the Booking Token with the funds on the {CMAccount} contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/account/CMAccount.sol\":\"CMAccount\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"@openzeppelin/contracts-upgradeable/access/extensions/AccessControlEnumerableUpgradeable.sol\":{\"keccak256\":\"0xaec38804089a16494f7d45ebbbeab78fe05e5dc4bc2eae1d2af458fe999fb43c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04796408e2c4a1051afb23319e9505edb595a3d9c663ff5d6fcfb8e185ab1d93\",\"dweb:/ipfs/Qma8ZTi4kGyqg45SyNibbJSqMF7broiQnJPHhEGLcZyF9U\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xf72d3b11f41fccbbdcacd121f994daab8267ccfceb1fb4f247e4ba274c169d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e46ee40ddc9e2009176ce5d76aa2c046fd68f2ed52d02d77db191365b7c5b2e\",\"dweb:/ipfs/QmZnxgPmCCHosdvbh4J65uTaFYeGtZGzQ1sXRdeh1y68Zr\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.sol\":{\"keccak256\":\"0xca774fbe0568762efdc1a7cba31f09549c7fa96dbe97410f4843fa2f0bc000a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0187ffdbf3d61b6d86cba4fcd9826e53d876987d620533ee84c681bdaf0f3ba3\",\"dweb:/ipfs/QmVJDqdJv6uzHY7ifncfv2QJep8XTzS3bGb4s5Exhuv86m\"]},\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0x0a8a5b994d4c4da9f61d128945cc8c9e60dcbc72bf532f72ae42a48ea90eed9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e63ae15b6b1079b9d3c73913424d4278139f9e9c9658316675b9c48d5883a50d\",\"dweb:/ipfs/QmWLxBYfp8j1YjNMabWgv75ELTaK2eEYEEGx7qsJbxVZZq\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c\",\"dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR\"]},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xb5afb8e8eebc4d1c6404df2f5e1e6d2c3d24fd01e5dfc855314951ecfaae462d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://78586466c424f076c6a2a551d848cfbe3f7c49e723830807598484a1047b3b34\",\"dweb:/ipfs/Qmb717ovcFxm7qgNKEShiV6M9SPR3v1qnNpAGH84D6w29p\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"contracts/account/CMAccount.sol\":{\"keccak256\":\"0x5acb43878d3515be05923e183814700992612b333a018d50e08a00ff2f694ef3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8affd753118e18a6f3a09d5cdc8cf63952e6c41ba9500456628bdc33435c371b\",\"dweb:/ipfs/QmWgd4LsrB88TowokJeLrhMg9G5sH7zvNobmAnyHhY7ZrU\"]},\"contracts/account/ChequeManager.sol\":{\"keccak256\":\"0x53da4a536da23e35930bf4fb4fbca2fca64015cd54558cfedba5f4c3f21fb5d0\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://de9d07b01d6d462f229c8e72062a32ce01145544cf5f889c03e36fb50b3ca5a6\",\"dweb:/ipfs/QmWTuNpBvRaRSD88dpnfd47G6Vxf6D4HfCyegD2o1RcQRp\"]},\"contracts/account/GasMoneyManager.sol\":{\"keccak256\":\"0x8316b2c0b8c948a8e93074415fb92e62427012a94ca468ab6081b59e507315e7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://5ac39ef637ef087d3c9130d39b5370fb02111b152010ce77b643cdbc143b1fcb\",\"dweb:/ipfs/QmfJtZVsecv9j9eKJQuuTe492fnEZkfsj4TSMZdCXHFfsd\"]},\"contracts/booking-token/BookingTokenCancellable.sol\":{\"keccak256\":\"0x1c5c5af99af0d9886e63c9c4ae366d7b54d7d578b9341416b225b97b7651f24a\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://bda88975353ed62c73e6cb71caab10ea79d60a23793dfc7540427156998157ff\",\"dweb:/ipfs/QmRuosqXwx64TRUk2yzyNb3m4hneMnV4faDP2wGW6PBhra\"]},\"contracts/booking-token/BookingTokenOperator.sol\":{\"keccak256\":\"0x44a2b11be1e1fed55921a26abc9de52e436a7b42803220df6557ef0aa66223e5\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://5ab172b26e956d873b7e96f7461fed43b0c01b0477151b4d7e00dd0176711fef\",\"dweb:/ipfs/QmUpaRuqNawGJXFx85ekqrqUgee4Z9uxnqtuA4qVTmtfvz\"]},\"contracts/booking-token/IBookingToken.sol\":{\"keccak256\":\"0x3a132b732b1c4f1be41728eb2c8ddb8c6a94657889ae153df541bbb5da7000a6\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://25de3108abb0700111147fb4b4da1effad4a0917883df7c6ea14cd1a1aac5674\",\"dweb:/ipfs/QmWXJRG6WDmJ8Ch36njGNTZt5UQdo6KfxvwiJorCXukVmX\"]},\"contracts/manager/ICMAccountManager.sol\":{\"keccak256\":\"0xdadbd8d3ed62ac91b0efa7b8fd77ee39a5f14c5b3994e6bd57c552cde2793f10\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ecc2f4dba4846b275cef716b74e856f75cee43d2ed7368889d7db0c697d6ceec\",\"dweb:/ipfs/QmPhSQboUgm3dG7rs2CLpqwkssujy8HMKRtG9CDxf9vWuE\"]},\"contracts/partner/PartnerConfiguration.sol\":{\"keccak256\":\"0x9751a5d0e29d22ec4db2fac37fc2f2d07a774ce49ae76b2ad9ed322f2b517ea3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://418157de273fb562149939a308b9b0679282b2b8e7297d94be6335be5361a95e\",\"dweb:/ipfs/QmQMJnixZygmSE7gMqhetupwn8yqUx5CYeZTqxn1JZFayc\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "contracts/account/ChequeManager.sol": { + "ChequeManager": { + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "expiresAt", + "type": "uint256" + } + ], + "name": "ChequeExpired", + "type": "error" + }, + { + "inputs": [], + "name": "ECDSAInvalidSignature", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "length", + "type": "uint256" + } + ], + "name": "ECDSAInvalidSignatureLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "ECDSAInvalidSignatureS", + "type": "error" + }, + { + "inputs": [], + "name": "FailedCall", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "chequeAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastAmount", + "type": "uint256" + } + ], + "name": "InvalidAmount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "chequeCounter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastCounter", + "type": "uint256" + } + ], + "name": "InvalidCounter", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + } + ], + "name": "InvalidFromCMAccount", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "toCMAccount", + "type": "address" + } + ], + "name": "InvalidToCMAccount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "signer", + "type": "address" + } + ], + "name": "NotAllowedToSignCheques", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "inputs": [], + "name": "ReentrancyGuardReentrantCall", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "toCMAccount", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "fromBot", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "toBot", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "counter", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "paidChequeAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "paidDeveloperFee", + "type": "uint256" + } + ], + "name": "ChequeCashedIn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "inputs": [], + "name": "DOMAIN_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MESSENGER_CHEQUE_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toBot", + "type": "address" + }, + { + "internalType": "uint256", + "name": "counter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expiresAt", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "cashInCheque", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getDomainSeparator", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromBot", + "type": "address" + }, + { + "internalType": "address", + "name": "toBot", + "type": "address" + } + ], + "name": "getLastCashIn", + "outputs": [ + { + "internalType": "uint256", + "name": "lastCounter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastCreatedAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastExpiresAt", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getManagerAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTotalChequePayments", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toBot", + "type": "address" + }, + { + "internalType": "uint256", + "name": "counter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expiresAt", + "type": "uint256" + } + ], + "name": "hashMessengerCheque", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toBot", + "type": "address" + }, + { + "internalType": "uint256", + "name": "counter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expiresAt", + "type": "uint256" + } + ], + "name": "hashTypedDataV4", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "bot", + "type": "address" + } + ], + "name": "isBotAllowed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "fromCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toCMAccount", + "type": "address" + }, + { + "internalType": "address", + "name": "toBot", + "type": "address" + }, + { + "internalType": "uint256", + "name": "counter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "createdAt", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expiresAt", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "verifyCheque", + "outputs": [ + { + "internalType": "address", + "name": "signer", + "type": "address" + }, + { + "internalType": "uint256", + "name": "paymentAmount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "DOMAIN_TYPEHASH()": "20606b70", + "MESSENGER_CHEQUE_TYPEHASH()": "0ede80d6", + "cashInCheque(address,address,address,uint256,uint256,uint256,uint256,bytes)": "647d8f6d", + "getDomainSeparator()": "ed24911d", + "getLastCashIn(address,address)": "930659eb", + "getManagerAddress()": "c162d7da", + "getTotalChequePayments()": "e96cf7ad", + "hashMessengerCheque(address,address,address,uint256,uint256,uint256,uint256)": "4781ae53", + "hashTypedDataV4(address,address,address,uint256,uint256,uint256,uint256)": "c7b5914f", + "isBotAllowed(address)": "e0b78add", + "verifyCheque(address,address,address,uint256,uint256,uint256,uint256,bytes)": "21b9b929" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expiresAt\",\"type\":\"uint256\"}],\"name\":\"ChequeExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chequeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastAmount\",\"type\":\"uint256\"}],\"name\":\"InvalidAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chequeCounter\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastCounter\",\"type\":\"uint256\"}],\"name\":\"InvalidCounter\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromCMAccount\",\"type\":\"address\"}],\"name\":\"InvalidFromCMAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"toCMAccount\",\"type\":\"address\"}],\"name\":\"InvalidToCMAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"}],\"name\":\"NotAllowedToSignCheques\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"fromCMAccount\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"toCMAccount\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"fromBot\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"toBot\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"counter\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paidChequeAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"paidDeveloperFee\",\"type\":\"uint256\"}],\"name\":\"ChequeCashedIn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MESSENGER_CHEQUE_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toBot\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"counter\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiresAt\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"cashInCheque\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDomainSeparator\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromBot\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toBot\",\"type\":\"address\"}],\"name\":\"getLastCashIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"lastCounter\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastCreatedAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lastExpiresAt\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getManagerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalChequePayments\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toBot\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"counter\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiresAt\",\"type\":\"uint256\"}],\"name\":\"hashMessengerCheque\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toBot\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"counter\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiresAt\",\"type\":\"uint256\"}],\"name\":\"hashTypedDataV4\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bot\",\"type\":\"address\"}],\"name\":\"isBotAllowed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toCMAccount\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"toBot\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"counter\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"createdAt\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiresAt\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"verifyCheque\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"paymentAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"cashInCheque(address,address,address,uint256,uint256,uint256,uint256,bytes)\":{\"params\":{\"amount\":\"The amount on the cheque. Should be greater then or equal the last recorded amount.\",\"counter\":\"The counter of the cheque. Should be increased with every cheque.\",\"createdAt\":\"The creation timestamp of the cheque.\",\"expiresAt\":\"The expiration timestamp of the cheque.\",\"fromCMAccount\":\"The CM Account that will pay the amount. This contract.\",\"signature\":\"The signature of the cheque.\",\"toBot\":\"The address of the bot that received the cheque.\",\"toCMAccount\":\"The CM Account that will receive the amount.\"}},\"getLastCashIn(address,address)\":{\"params\":{\"fromBot\":\"The address of the bot that sent the cheque.\",\"toBot\":\"The address of the bot that received the cheque. Returns (lastCounter, lastAmount, lastCreatedAt, lastExpiresAt)\"},\"returns\":{\"lastAmount\":\"The last amount of the cheque.\",\"lastCounter\":\"The last counter of the cheque.\",\"lastCreatedAt\":\"The last creation timestamp of the cheque.\",\"lastExpiresAt\":\"The last expiration timestamp of the cheque.\"}},\"getTotalChequePayments()\":{\"returns\":{\"_0\":\"totalChequePayments The total cheque payments made.\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"ChequeExpired(uint256)\":[{\"notice\":\"The cheque is expired at the given timestamp.\"}],\"InvalidAmount(uint256,uint256)\":[{\"notice\":\"Last recorded amount is lower than the cheque's amount.\"}],\"InvalidCounter(uint256,uint256)\":[{\"notice\":\"Invalid counter for the cheque. The counter on the cheque is not greater then the last recorded counter.\"}],\"InvalidFromCMAccount(address)\":[{\"notice\":\"Invalid CM Account. Cheque's `fromCMAccount` has to be for `address(this)`.\"}],\"InvalidToCMAccount(address)\":[{\"notice\":\"`toCMAccount` address is not a registered CMAccount on the manager.\"}],\"NotAllowedToSignCheques(address)\":[{\"notice\":\"The signer is not allowed to sign cheques\"}]},\"events\":{\"ChequeCashedIn(address,address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Cash-in event. Emitted when a cheque is cashed in.\"}},\"kind\":\"user\",\"methods\":{\"DOMAIN_TYPEHASH()\":{\"notice\":\"Pre-computed hash of the EIP712Domain type ``` keccak256(\\\"EIP712Domain(string name,string version,uint256 chainId)\\\"); ```\"},\"MESSENGER_CHEQUE_TYPEHASH()\":{\"notice\":\"Pre-computed hash of the MessengerCheque type ``` keccak256( \\\"MessengerCheque(address fromCMAccount,address toCMAccount,address toBot,uint256 counter,uint256 amount,uint256 createdAt,uint256 expiresAt)\\\" ); ```\"},\"cashInCheque(address,address,address,uint256,uint256,uint256,uint256,bytes)\":{\"notice\":\"Cash in a cheque by verifying it and paying the difference between the cheque amount and the last recorded amount for the signer and `toBot` pair. A percentage of the amount is also paid to the developer wallet.\"},\"getDomainSeparator()\":{\"notice\":\"Returns the domain separator.\"},\"getLastCashIn(address,address)\":{\"notice\":\"Returns last cash-in details for given `fromBot` & `toBot` pair.\"},\"getManagerAddress()\":{\"notice\":\"Abstract function to get the manager address. This must be implemented by the inheriting contract.\"},\"getTotalChequePayments()\":{\"notice\":\"Returns total cheque payments. This is the sum of all cashed in cheques.\"},\"hashMessengerCheque(address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Returns the hash of the `MessengerCheque` encoded with `MESSENGER_CHEQUE_TYPEHASH`.\"},\"hashTypedDataV4(address,address,address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Returns the hash of the typed data (cheque) with prefix and domain separator.\"},\"isBotAllowed(address)\":{\"notice\":\"Abstract function to check if a bot is allowed to sign cheques. This must be implemented by the inheriting contract.\"},\"verifyCheque(address,address,address,uint256,uint256,uint256,uint256,bytes)\":{\"notice\":\"Returns signer and payment amount if the signature is valid for the given cheque, the signer is an allowed bot, cheque counter and amounts are valid according to last cash ins. Please be aware that `cheque.amount < paymentAmount` for a valid cheque as long as the last amount is lower than the cheque amount. Only the difference between the cheque amount and the last recorded amount is paid.\"}},\"notice\":\"ChequeManager manages, verifies, and cashes in the messenger cheques. EIP712 Domain name & version: DOMAIN_NAME = \\\"CaminoMessenger\\\" DOMAIN_VERSION= \\\"1\\\"\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/account/ChequeManager.sol\":\"ChequeManager\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"contracts/account/ChequeManager.sol\":{\"keccak256\":\"0x53da4a536da23e35930bf4fb4fbca2fca64015cd54558cfedba5f4c3f21fb5d0\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://de9d07b01d6d462f229c8e72062a32ce01145544cf5f889c03e36fb50b3ca5a6\",\"dweb:/ipfs/QmWTuNpBvRaRSD88dpnfd47G6Vxf6D4HfCyegD2o1RcQRp\"]},\"contracts/manager/ICMAccountManager.sol\":{\"keccak256\":\"0xdadbd8d3ed62ac91b0efa7b8fd77ee39a5f14c5b3994e6bd57c552cde2793f10\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ecc2f4dba4846b275cef716b74e856f75cee43d2ed7368889d7db0c697d6ceec\",\"dweb:/ipfs/QmPhSQboUgm3dG7rs2CLpqwkssujy8HMKRtG9CDxf9vWuE\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "contracts/account/GasMoneyManager.sol": { + "GasMoneyManager": { + "abi": [ + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "limit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "WithdrawalLimitExceeded", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "limit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "WithdrawalLimitExceededForPeriod", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "withdrawer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "GasMoneyWithdrawal", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "limit", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "period", + "type": "uint256" + } + ], + "name": "GasMoneyWithdrawalUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "inputs": [], + "name": "getGasMoneyWithdrawal", + "outputs": [ + { + "internalType": "uint256", + "name": "withdrawalLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "withdrawalPeriod", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getGasMoneyWithdrawalForAccount", + "outputs": [ + { + "internalType": "uint256", + "name": "periodStart", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "withdrawnAmount", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "getGasMoneyWithdrawal()": "658db0af", + "getGasMoneyWithdrawalForAccount(address)": "ee3b641f" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"WithdrawalLimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"WithdrawalLimitExceededForPeriod\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"withdrawer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"GasMoneyWithdrawal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"period\",\"type\":\"uint256\"}],\"name\":\"GasMoneyWithdrawalUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getGasMoneyWithdrawal\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"withdrawalLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawalPeriod\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getGasMoneyWithdrawalForAccount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"periodStart\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawnAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"GasMoneyWithdrawal(address,uint256)\":{\"params\":{\"amount\":\"the amount withdrawn\",\"withdrawer\":\"the address of the withdrawer\"}},\"GasMoneyWithdrawalUpdated(uint256,uint256)\":{\"params\":{\"limit\":\"the withdrawal limit for the period\",\"period\":\"the withdrawal period in seconds\"}},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"getGasMoneyWithdrawal()\":{\"returns\":{\"withdrawalLimit\":\"withdrawalLimit\",\"withdrawalPeriod\":\"withdrawalPeriod\"}},\"getGasMoneyWithdrawalForAccount(address)\":{\"params\":{\"account\":\"address of the account\"},\"returns\":{\"periodStart\":\"timestamp of the withdrawal period start\",\"withdrawnAmount\":\"amount withdrawn within the period\"}}},\"title\":\"GasMoneyManager\",\"version\":1},\"userdoc\":{\"events\":{\"GasMoneyWithdrawal(address,uint256)\":{\"notice\":\"Gas money withdrawal event\"},\"GasMoneyWithdrawalUpdated(uint256,uint256)\":{\"notice\":\"Gas money withdrawal limit and period updated event\"}},\"kind\":\"user\",\"methods\":{\"getGasMoneyWithdrawal()\":{\"notice\":\"Returns the gas money withdrawal restrictions.\"},\"getGasMoneyWithdrawalForAccount(address)\":{\"notice\":\"Returns the gas money withdrawal details for an account.\"}},\"notice\":\"GasMoneyManager manages gas money withdrawals for a {CMAccount}. Gas money withdrawals are restricted to a withdrawal limit and period.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/account/GasMoneyManager.sol\":\"GasMoneyManager\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"contracts/account/GasMoneyManager.sol\":{\"keccak256\":\"0x8316b2c0b8c948a8e93074415fb92e62427012a94ca468ab6081b59e507315e7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://5ac39ef637ef087d3c9130d39b5370fb02111b152010ce77b643cdbc143b1fcb\",\"dweb:/ipfs/QmfJtZVsecv9j9eKJQuuTe492fnEZkfsj4TSMZdCXHFfsd\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "contracts/account/ICMAccount.sol": { + "ICMAccount": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "manager", + "type": "address" + }, + { + "internalType": "address", + "name": "bookingToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "prefundAmount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "upgrader", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "initialize(address,address,uint256,address,address)": "33e1a223" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"bookingToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"prefundAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"upgrader\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/account/ICMAccount.sol\":\"ICMAccount\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"contracts/account/ICMAccount.sol\":{\"keccak256\":\"0xafd07c8ff1ada61a29518c8f1cde952e93eb56154ba787a38fbf6f49d4187d91\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b8126900ad90ee8da111f0c775fcd7fdf54e16e7bf3a1ffbaf317f62852f47b9\",\"dweb:/ipfs/QmPsC5nSgo8c6tjSZ5yTRc84WaBw1jwLgQLbT5pP1k4jSk\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "contracts/booking-token/BookingToken.sol": { + "BookingToken": { + "abi": [ + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + } + ], + "name": "AddressEmptyCode", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "CancellationProposalExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "ERC1967InvalidImplementation", + "type": "error" + }, + { + "inputs": [], + "name": "ERC1967NonPayable", + "type": "error" + }, + { + "inputs": [], + "name": "ERC721EnumerableForbiddenBatchMint", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC721IncorrectOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721InsufficientApproval", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC721InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "ERC721InvalidOperator", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC721InvalidOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC721InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC721InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721NonexistentToken", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "ERC721OutOfBoundsIndex", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "expirationTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minExpirationTimestampDiff", + "type": "uint256" + } + ], + "name": "ExpirationTimestampTooSoon", + "type": "error" + }, + { + "inputs": [], + "name": "FailedCall", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "reservationPrice", + "type": "uint256" + } + ], + "name": "IncorrectPrice", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "existing", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "checked", + "type": "uint256" + } + ], + "name": "IncorrectRefundAmount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "paymentToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "allowance", + "type": "uint256" + } + ], + "name": "InsufficientAllowance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "enum CancellationProposalStatus", + "name": "status", + "type": "uint8" + } + ], + "name": "InvalidCancellationProposalStatus", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "enum BookingToken.BookingStatus", + "name": "status", + "type": "uint8" + } + ], + "name": "InvalidTokenStatus", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "NotCMAccount", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "inputs": [], + "name": "NotOwnerOrSupplier", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "OnlyCurrentProposerCanWithdrawCancellation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "OnlySupplierCanFinalizeCancellation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "OwnerNotAcceptedCancellation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ProposerCanNotRejectCancellation", + "type": "error" + }, + { + "inputs": [], + "name": "ReentrancyGuardReentrantCall", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expirationTimestamp", + "type": "uint256" + } + ], + "name": "ReservationExpired", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "reservedFor", + "type": "address" + }, + { + "internalType": "address", + "name": "buyer", + "type": "address" + } + ], + "name": "ReservationMismatch", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "SafeERC20FailedOperation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "supplier", + "type": "address" + } + ], + "name": "SupplierIsNotOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "reservedFor", + "type": "address" + } + ], + "name": "TokenIsReserved", + "type": "error" + }, + { + "inputs": [], + "name": "UUPSUnauthorizedCallContext", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "slot", + "type": "bytes32" + } + ], + "name": "UUPSUnsupportedProxiableUUID", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "UnexpectedNativePayment", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "offchainPaymentCurrency", + "type": "uint256" + } + ], + "name": "UnexpectedOffchainPaymentCurrency", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_fromTokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "_toTokenId", + "type": "uint256" + } + ], + "name": "BatchMetadataUpdate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "CancellationFinalized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "initialProposer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "currentProposer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "refundAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bool", + "name": "ownerAccepted", + "type": "bool" + }, + { + "indexed": false, + "internalType": "bool", + "name": "supplierAccepted", + "type": "bool" + }, + { + "indexed": false, + "internalType": "uint32", + "name": "timesCountered", + "type": "uint32" + }, + { + "indexed": false, + "internalType": "uint32", + "name": "timesRejected", + "type": "uint32" + } + ], + "name": "CancellationPending", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "cancellationReason", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "cancellationReasonVersion", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "rejectionReason", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "rejectionVersion", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "counterReason", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "counterVersion", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "withdrawalReason", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "withdrawalVersion", + "type": "uint16" + } + ], + "name": "CancellationReasons", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "rejectionReason", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "rejectionVersion", + "type": "uint16" + } + ], + "name": "CancellationRejected", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "withdrawalReason", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "withdrawalVersion", + "type": "uint16" + } + ], + "name": "CancellationWithdrawn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "MetadataUpdate", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "buyer", + "type": "address" + } + ], + "name": "TokenBought", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "TokenReservationExpired", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "reservedFor", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "supplier", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "expirationTimestamp", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "price", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "contract IERC20", + "name": "paymentToken", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "offchainPaymentCurrency", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bool", + "name": "cancellable", + "type": "bool" + } + ], + "name": "TokenReserved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MIN_EXPIRATION_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "NATIVE_PAYMENT", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "OFFCHAIN_PAYMENT", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UPGRADER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UPGRADE_INTERFACE_VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "refundAmount", + "type": "uint256" + } + ], + "name": "acceptCancellation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "buyReservedToken", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "refundAmount", + "type": "uint256" + }, + { + "internalType": "uint16", + "name": "counterReason", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "counterReasonVersion", + "type": "uint16" + } + ], + "name": "counterCancellation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "checkRefundAmount", + "type": "uint256" + } + ], + "name": "finalizeCancellation", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getBookingStatus", + "outputs": [ + { + "internalType": "enum BookingToken.BookingStatus", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getCancellationProposal", + "outputs": [ + { + "internalType": "enum CancellationProposalStatus", + "name": "", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "refundAmount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "initialProposer", + "type": "address" + }, + { + "internalType": "address", + "name": "currentProposer", + "type": "address" + }, + { + "internalType": "bool", + "name": "ownerAccepted", + "type": "bool" + }, + { + "internalType": "bool", + "name": "supplierAccepted", + "type": "bool" + }, + { + "internalType": "uint32", + "name": "timesCountered", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "timesRejected", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getCancellationReasons", + "outputs": [ + { + "internalType": "uint16", + "name": "cancellationReason", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "cancellationVersion", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "rejectionReason", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "rejectionVersion", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "counterReason", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "counterVersion", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "withdrawalReason", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "withdrawalVersion", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getManagerAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getMinExpirationTimestampDiff", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getReservationPaymentToken", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "paymentToken", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getReservationPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + }, + { + "internalType": "contract IERC20", + "name": "paymentToken", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "manager", + "type": "address" + }, + { + "internalType": "address", + "name": "defaultAdmin", + "type": "address" + }, + { + "internalType": "address", + "name": "upgrader", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "refundAmount", + "type": "uint256" + }, + { + "internalType": "uint16", + "name": "cancellationReason", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "cancellationReasonVersion", + "type": "uint16" + } + ], + "name": "initiateCancellation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isCMAccount", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "isCancellable", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "recordExpiration", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "newName", + "type": "string" + }, + { + "internalType": "string", + "name": "newSymbol", + "type": "string" + } + ], + "name": "reinitializeV2", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint16", + "name": "rejectionReason", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "rejectionReasonVersion", + "type": "uint16" + } + ], + "name": "rejectCancellation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "callerConfirmation", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "reservedFor", + "type": "address" + }, + { + "internalType": "string", + "name": "uri", + "type": "string" + }, + { + "internalType": "uint256", + "name": "expirationTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + }, + { + "internalType": "contract IERC20", + "name": "paymentToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "offchainPaymentCurrency", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "cancellable", + "type": "bool" + } + ], + "name": "safeMintWithReservation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "manager", + "type": "address" + } + ], + "name": "setManagerAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "minExpirationTimestampDiff", + "type": "uint256" + } + ], + "name": "setMinExpirationTimestampDiff", + "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": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "version", + "outputs": [ + { + "internalType": "uint16", + "name": "major", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "minor", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "patch", + "type": "uint16" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint16", + "name": "withdrawalReason", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "withdrawalReasonVersion", + "type": "uint16" + } + ], + "name": "withdrawCancellation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "60a06040523060805234801561001457600080fd5b506080516149da61003e6000396000818161224b0152818161227401526123be01526149da6000f3fe60806040526004361061024e5760003560e01c80624fdd3c1461025357806301ffc9a71461028a57806306fdde03146102ba578063081812fc146102dc578063095ea7b3146103095780630e75c1a81461032b57806312b357b51461034e57806318160ddd1461036e5780631c54f0f71461038357806323b872dd14610396578063248a9ca3146103b65780632a119380146103d65780632d3a6329146103f65780632edf5e2c146104165780632f2ff15d146104385780632f745c591461045857806336568abe146104785780633c15b31c1461049857806341431908146104c557806342842e0e146104e55780634f1ef286146105055780634f6ccce714610518578063516a82b81461053857806352d1902d1461055857806354fd4d501461056d5780636352211e1461059a57806370a08231146105ba57806374aa2048146105da57806374fe60e9146105fa57806391d148541461061a57806391da124c1461063a57806395d89b411461065a57806396591edd1461066f578063a0f07c7414610682578063a217fddf14610697578063a22cb465146106ac578063a9bc55a2146106cc578063ad3cb1cc14610700578063b191d09214610731578063b88d4fde14610751578063bb520b4714610771578063be667188146107a5578063bfb26c06146107c5578063c0c53b8b146107da578063c162d7da146107fa578063c87b56dd1461080f578063d547741f1461082f578063db2b26821461084f578063e5a6725c1461086f578063e985e9c51461088f578063f72c0d8b146108af578063f7e45f09146108d1575b600080fd5b34801561025f57600080fd5b5061027361026e366004613eed565b6108f1565b604051610281929190613f06565b60405180910390f35b34801561029657600080fd5b506102aa6102a5366004613f33565b61092e565b6040519015158152602001610281565b3480156102c657600080fd5b506102cf61093f565b6040516102819190613fa0565b3480156102e857600080fd5b506102fc6102f7366004613eed565b6109e0565b6040516102819190613fb3565b34801561031557600080fd5b50610329610324366004613fdc565b6109f5565b005b34801561033757600080fd5b50610340610a04565b604051908152602001610281565b34801561035a57600080fd5b506102aa610369366004614008565b610a19565b34801561037a57600080fd5b50610340610a8f565b610329610391366004614025565b610a9a565b3480156103a257600080fd5b506103296103b1366004614047565b610b9c565b3480156103c257600080fd5b506103406103d1366004613eed565b610bb5565b3480156103e257600080fd5b506103296103f136600461409f565b610bd5565b34801561040257600080fd5b506102aa610411366004613eed565b610c8a565b34801561042257600080fd5b5061034060008051602061496583398151915281565b34801561044457600080fd5b506103296104533660046140db565b610cb0565b34801561046457600080fd5b50610340610473366004613fdc565b610cd2565b34801561048457600080fd5b506103296104933660046140db565b610d34565b3480156104a457600080fd5b506104b86104b3366004613eed565b610d67565b604051610281919061413f565b3480156104d157600080fd5b506103296104e0366004614008565b610d8a565b3480156104f157600080fd5b50610329610500366004614047565b610dc2565b6103296105133660046141f4565b610ddd565b34801561052457600080fd5b50610340610533366004613eed565b610df8565b34801561054457600080fd5b50610329610553366004613eed565b610e59565b34801561056457600080fd5b50610340610e86565b34801561057957600080fd5b50604080516001815260006020820181905291810191909152606001610281565b3480156105a657600080fd5b506102fc6105b5366004613eed565b610ea3565b3480156105c657600080fd5b506103406105d5366004614008565b610eae565b3480156105e657600080fd5b506103296105f5366004614243565b610f06565b34801561060657600080fd5b5061032961061536600461409f565b610fb3565b34801561062657600080fd5b506102aa6106353660046140db565b61105f565b34801561064657600080fd5b50610329610655366004614289565b611095565b34801561066657600080fd5b506102cf611152565b61032961067d366004613eed565b61116f565b34801561068e57600080fd5b506102fc600081565b3480156106a357600080fd5b50610340600081565b3480156106b857600080fd5b506103296106c73660046142f0565b611329565b3480156106d857600080fd5b506106ec6106e7366004613eed565b611334565b60405161028198979695949392919061431e565b34801561070c57600080fd5b506102cf604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561073d57600080fd5b506102fc61074c366004613eed565b6113ba565b34801561075d57600080fd5b5061032961076c366004614363565b6113e6565b34801561077d57600080fd5b5061079161078c366004613eed565b6113fe565b6040516102819897969594939291906143ce565b3480156107b157600080fd5b506103296107c0366004614025565b61147a565b3480156107d157600080fd5b506102fc600181565b3480156107e657600080fd5b506103296107f5366004614426565b61152d565b34801561080657600080fd5b506102fc6116cc565b34801561081b57600080fd5b506102cf61082a366004613eed565b6116e7565b34801561083b57600080fd5b5061032961084a3660046140db565b6116f2565b34801561085b57600080fd5b5061032961086a366004614471565b61170e565b34801561087b57600080fd5b5061032961088a366004613eed565b611861565b34801561089b57600080fd5b506102aa6108aa366004614504565b611969565b3480156108bb57600080fd5b5061034060008051602061492583398151915281565b3480156108dd57600080fd5b506103296108ec366004614243565b6119a8565b60008060006108fe611a55565b6000948552600390810160205260409094209384015460049094015493946001600160a01b039094169392505050565b600061093982611a79565b92915050565b6060600061094b611a9e565b905080600001805461095c90614532565b80601f016020809104026020016040519081016040528092919081815260200182805461098890614532565b80156109d55780601f106109aa576101008083540402835291602001916109d5565b820191906000526020600020905b8154815290600101906020018083116109b857829003601f168201915b505050505091505090565b60006109eb82611ac2565b5061093982611afa565b610a00828233611b23565b5050565b600080610a0f611a55565b6002015492915050565b6000610a236116cc565b6001600160a01b03166312b357b5836040518263ffffffff1660e01b8152600401610a4e9190613fb3565b602060405180830381865afa158015610a6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610939919061456c565b600080610a0f611b30565b33610aa481611b54565b6000610aaf84611ac2565b90506000610abb611a55565b905060036000868152600480840160205260409091205460ff1690811115610ae557610ae561410b565b14610b25576000858152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c92889260ff9091169101614589565b60405180910390fd5b60008581526003820160205260408120600101546001600160a01b031690610b4e828888611b7c565b600088815260038501602090815260408083206004908101548189019093529220805460ff19169092179091559091506001600160a01b0316610b92818387611ce4565b5050505050505050565b610ba581611d92565b610bb0838383611f46565b505050565b600080610bc0611fb7565b60009384526020525050604090206001015490565b33610bdf81611b54565b6000610bea85611ac2565b90506000610bf6611a55565b905060036000878152600480840160205260409091205460ff1690811115610c2057610c2061410b565b14610c57576000868152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c92899260ff9091169101614589565b60008681526003820160205260409020600101546001600160a01b0316610c818382898989611fdb565b50505050505050565b600080610c95611a55565b60009384526003016020525050604090206006015460ff1690565b610cb982610bb5565b610cc28161211d565b610ccc8383612127565b50505050565b600080610cdd611b30565b9050610ce884610eae565b8310610d0b57838360405163295f44f760e21b8152600401610b1c9291906145a6565b6001600160a01b0384166000908152602091825260408082208583529092522054905092915050565b6001600160a01b0381163314610d5d5760405163334bd91960e11b815260040160405180910390fd5b610bb082826121c8565b600080610d72611a55565b60009384526004016020525050604090205460ff1690565b6000610d958161211d565b6000610d9f611a55565b80546001600160a01b0319166001600160a01b0394909416939093179092555050565b610bb0838383604051806020016040528060008152506113e6565b610de5612240565b610dee826122e7565b610a0082826122ff565b600080610e03611b30565b9050610e0d610a8f565b8310610e315760008360405163295f44f760e21b8152600401610b1c9291906145a6565b806002018381548110610e4657610e466145bf565b9060005260206000200154915050919050565b600080516020614965833981519152610e718161211d565b6000610e7b611a55565b600201929092555050565b6000610e906123b3565b5060008051602061494583398151915290565b600061093982611ac2565b600080610eb9611a9e565b90506001600160a01b038316610ee55760006040516322718ad960e21b8152600401610b1c9190613fb3565b6001600160a01b039092166000908152600390920160205250604090205490565b33610f1081611b54565b6000610f1b86611ac2565b90506000610f27611a55565b905060036000888152600480840160205260409091205460ff1690811115610f5157610f5161410b565b14610f88576000878152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c928a9260ff9091169101614589565b60008781526003820160205260409020600101546001600160a01b0316610b9283828a8a8a8a6123fc565b33610fbd81611b54565b6000610fc885611ac2565b90506000610fd4611a55565b905060036000878152600480840160205260409091205460ff1690811115610ffe57610ffe61410b565b14611035576000868152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c92899260ff9091169101614589565b60008681526003820160205260409020600101546001600160a01b0316610c818382898989612635565b60008061106a611fb7565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b600260006110a1612793565b8054909150600160401b900460ff16806110c8575080546001600160401b03808416911610155b156110e65760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160481b0319166001600160401b03831617600160401b17815560006111108161211d565b61111a85856127b7565b50805460ff60401b191681556040516000805160206148e5833981519152906111449084906145d5565b60405180910390a150505050565b6060600061115e611a9e565b905080600101805461095c90614532565b6111776127c9565b3361118181611b54565b600061118b611a55565b600084815260038083016020908152604092839020835160e08101855281546001600160a01b03908116808352600184015482169483019490945260028301549582019590955292810154606084015260048101549093166080830152600583015460a083015260069092015460ff16151560c08201529192503314611238578051604051632663a9c560e11b81526001600160a01b039091166004820152336024820152604401610b1c565b80604001514211156112655783816040015160405163293d73b760e11b8152600401610b1c9291906145e9565b600061127085610ea3565b905081602001516001600160a01b0316816001600160a01b0316146112af57602082015160405163103d145960e31b8152610b1c918791600401613f06565b6112be826020015133876127ff565b6112d5826080015183606001518460200151611ce4565b6000858152600484016020526040808220805460ff1916600317905551339187917fa751fb02c318279a22135a408663ae08ea45eafa950a4351c14ae543cbb950409190a35050505061132661289b565b50565b610a003383836128ac565b600080600080600080600080600061134a612951565b60009a8b5260205250506040909720600281015460039091015461ffff600160c81b830481169a600160d81b840482169a50600160e81b90930481169850808216975062010000820481169650600160201b820481169550600160301b820481169450600160401b909104169150565b6000806113c5611a55565b6000938452600301602052505060409020600401546001600160a01b031690565b6113f1848484610b9c565b610ccc3385858585612975565b6000806000806000806000806000611414612951565b60009a8b52602052505060409097206002810154815460019092015460ff600160c01b80840482169c949b506001600160a01b038084169b5084169950820481169750600160c81b820416955063ffffffff600160a01b91829004811695509104169150565b3361148481611b54565b600061148f84611ac2565b9050600061149b611a55565b905060036000868152600480840160205260409091205460ff16908111156114c5576114c561410b565b146114fc576000858152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c92889260ff9091169101614589565b60008581526003820160205260409020600101546001600160a01b031661152583828888612a8c565b505050505050565b6000611537612793565b805490915060ff600160401b82041615906001600160401b031660008115801561155e5750825b90506000826001600160401b0316600114801561157a5750303b155b905081158015611588575080155b156115a65760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b031916600117855583156115cf57845460ff60401b1916600160401b1785555b6116196040518060400160405280600c81526020016b2137b7b5b4b733aa37b5b2b760a11b815250604051806040016040528060048152602001630545249560e41b8152506127b7565b611621612c6a565b611629612c6a565b611631612c6a565b611639612c6a565b611644600088612127565b5061165d60008051602061492583398151915287612127565b506000611668611a55565b80546001600160a01b0319166001600160a01b038b16178155603c600290910155508315610b9257845460ff60401b191685556040516000805160206148e5833981519152906116ba906001906145d5565b60405180910390a15050505050505050565b6000806116d7611a55565b546001600160a01b031692915050565b606061093982612c72565b6116fb82610bb5565b6117048161211d565b610ccc83836121c8565b3361171881611b54565b61172188611b54565b600061172b611a55565b600281015490915061173d814261460d565b8811611760578781604051630999f7d760e41b8152600401610b1c9291906145e9565b60008511801561177a57506001600160a01b038616600114155b1561179b57604051638fe757e760e01b815260048101869052602401610b1c565b600182018054600091826117ae83614620565b9190505590506117be3382612d92565b6117c8818b612dac565b6117d8818c338c8c8c8c8c612e0a565b6000818152600484016020908152604091829020805460ff1916600117905581518b81529081018a90526001600160a01b0389811682840152606082018990528715156080830152915133928e169184917f1424af4f4cb40d8a1a2d00b2324cb122ba73eac426f98b62c33ff31ca045f0679160a0908290030190a45050505050505050505050565b600061186b611a55565b6000838152600382016020908152604080832060048501909252909120549192509060ff1660028160048111156118a4576118a461410b565b14806118c1575060038160048111156118bf576118bf61410b565b145b806118dd575060048160048111156118db576118db61410b565b145b156118ff57838160405163e4e3b53b60e01b8152600401610b1c929190614589565b8160020154421115611940576000848152600484016020526040808220805460ff1916600217905551859160008051602061490583398151915291a2610ccc565b815460405163d4cde2af60e01b8152610b1c9186916001600160a01b0390911690600401613f06565b600080611974611a9e565b6001600160a01b03948516600090815260059190910160209081526040808320959096168252939093525050205460ff1690565b336119b281611b54565b60006119bd86611ac2565b905060006119c9611a55565b905060036000888152600480840160205260409091205460ff16908111156119f3576119f361410b565b14611a2a576000878152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c928a9260ff9091169101614589565b60008781526003820160205260409020600101546001600160a01b0316610b9283828a8a8a8a612edc565b7f9db9d405bf15683ce835607b1f0b423dc1484d44bb9d5af64a483fa4afd8290090565b60006001600160e01b03198216637965db0b60e01b14806109395750610939826131e6565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930090565b600080611ace8361320b565b90506001600160a01b03811661093957604051637e27328960e01b815260048101849052602401610b1c565b600080611b05611a9e565b6000938452600401602052505060409020546001600160a01b031690565b610bb08383836001613234565b7f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed0090565b611b5d81610a19565b6113265780604051638014575360e01b8152600401610b1c9190613fb3565b6000336001600160a01b03851614611baa57604051636c83fb1b60e01b815260048101849052602401610b1c565b6000611bb4612951565b600085815260209190915260409020905060016002820154600160c01b900460ff166004811115611be757611be761410b565b14611c1a57838160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b80548314611c4157805460405163cc45283760e01b8152610b1c9186918690600401614639565b6001810154600160c01b900460ff16611c705760405163c84052f960e01b815260048101859052602401610b1c565b6001810154600160c81b900460ff16611c995760018101805460ff60c81b1916600160c81b1790555b60028101805460ff60c01b1916600160c21b17905560405184907f17c3690813e5ff9135b87fd91848109978b23db8e471498d18886560da7f286790600090a25490505b9392505050565b6001600160a01b038316611d2957813414611d16573482604051630145611560e21b8152600401610b1c9291906145e9565b610bb06001600160a01b0382163461333e565b6000196001600160a01b03841601611d5c573415610bb0576040516347d6729960e01b8152346004820152602401610b1c565b3415611d7d576040516347d6729960e01b8152346004820152602401610b1c565b610bb06001600160a01b0384163383856133d7565b6000611d9c611a55565b600083815260048201602052604081205491925060ff9091169080611dc085613431565b90925090506001826004811115611dd957611dd961410b565b03611e3a576000611de986611ac2565b60008781526003870160205260409020600101549091506001600160a01b039081169083163314611e2857611e2382828960636001612635565b611e37565b611e3782828960636001611fdb565b50505b6003836004811115611e4e57611e4e61410b565b1480611e6b57506002836004811115611e6957611e6961410b565b145b80611e8757506000836004811115611e8557611e8561410b565b145b15611e93575050505050565b6004836004811115611ea757611ea761410b565b03611ec957848360405163e4e3b53b60e01b8152600401610b1c929190614589565b600085815260038501602052604090206002810154421115611f1d576000868152600486016020526040808220805460ff1916600217905551879160008051602061490583398151915291a2505050505050565b805460405163d4cde2af60e01b8152610b1c9188916001600160a01b0390911690600401613f06565b6001600160a01b038216611f70576000604051633250574960e11b8152600401610b1c9190613fb3565b6000611f7d838333613485565b9050836001600160a01b0316816001600160a01b031614610ccc578382826040516364283d7b60e01b8152600401610b1c9392919061464f565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b8484611fe7828261349a565b6000611ff1612951565b600087815260209190915260409020905060016002820154600160c01b900460ff1660048111156120245761202461410b565b1461205757858160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b60028101546001600160a01b0316331461208757604051631186fdbd60e31b815260048101879052602401610b1c565b6003808201805461ffff878116600160401b0261ffff60401b19918a16600160301b029190911663ffffffff60301b199092169190911717905560028201805460ff60c01b1916600160c01b830217905550857f48e256ce3da490e3bbba80f056bb54ec3d7264f8ad7d152b77bf8c2eca3db5a5868660405161210b929190614672565b60405180910390a25050505050505050565b61132681336134da565b600080612132611fb7565b905061213e848461105f565b6121be576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556121743390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610939565b6000915050610939565b6000806121d3611fb7565b90506121df848461105f565b156121be576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610939565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806122c757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166122bb600080516020614945833981519152546001600160a01b031690565b6001600160a01b031614155b156122e55760405163703e46dd60e11b815260040160405180910390fd5b565b600080516020614925833981519152610a008161211d565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612359575060408051601f3d908101601f1916820190925261235691810190614687565b60015b6123785781604051634c9c8ce360e01b8152600401610b1c9190613fb3565b60008051602061494583398151915281146123a957604051632a87526960e21b815260048101829052602401610b1c565b610bb08383613505565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146122e55760405163703e46dd60e11b815260040160405180910390fd5b8585612408828261349a565b6000612412612951565b600088815260209190915260409020905060016002820154600160c01b900460ff1660048111156124455761244561410b565b1461247857868160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b858155600281018054336001600160a01b0319909116811790915560018201805461ffff60c01b19166001600160a01b038c81168414600160c01b0260ff60c81b191691909117908b16909214600160c81b029190911780825560038301805465ffffffff000019166201000061ffff8a81169190910261ffff60201b191691909117600160201b91891691909102179055600160a01b900463ffffffff16906014612523836146a0565b82546101009290920a63ffffffff8181021990931691831602179091556002830154600184015484546040516001600160a01b0380851696508316948d946000805160206148c5833981519152946125a39493600160c01b820460ff90811694600160c81b840490911693600160a01b93849004821693900416906146c3565b60405180910390a4600281015460038201546040518992600080516020614985833981519152926126229261ffff600160c81b8404811693600160d81b8104821693600160e81b90910482169281831692620100008304811692600160201b8104821692600160301b8204831692600160401b9092049091169061431e565b60405180910390a2505050505050505050565b8484612641828261349a565b600061264b612951565b600087815260209190915260409020905060016002820154600160c01b900460ff16600481111561267e5761267e61410b565b146126b157858160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b60028101546001600160a01b031633036126e157604051633060d8f760e21b815260048101879052602401610b1c565b60028101805460038301805461ffff88811661ffff19909216919091179091558716600160e81b0260ff60c01b191666ffff00000000ff60c01b1990911617600160c11b17808255600160a01b900463ffffffff16906014612742836146a0565b91906101000a81548163ffffffff021916908363ffffffff16021790555050857fab78ba855f2fdb28beb212a9b3f41a33cda034729848cd452f0cc96528c23a80868660405161210b929190614672565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b6127bf61355b565b610a008282613580565b60006127d36135ae565b8054909150600119016127f957604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b6001600160a01b038216612829576000604051633250574960e11b8152600401610b1c9190613fb3565b600061283783836000613485565b90506001600160a01b03811661286357604051637e27328960e01b815260048101839052602401610b1c565b836001600160a01b0316816001600160a01b031614610ccc578382826040516364283d7b60e01b8152600401610b1c9392919061464f565b60006128a56135ae565b6001905550565b60006128b6611a9e565b90506001600160a01b0383166128e15782604051630b61174360e31b8152600401610b1c9190613fb3565b6001600160a01b038481166000818152600584016020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b7f0b8fb32ffc7043fda9e0ee2bcb4236acf95ab448752c73eff6cc7f2640ff850090565b6001600160a01b0383163b15612a8557604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906129b79088908890879087906004016146ef565b6020604051808303816000875af19250505080156129f2575060408051601f3d908101601f191682019092526129ef9181019061472c565b60015b612a52573d808015612a20576040519150601f19603f3d011682016040523d82523d6000602084013e612a25565b606091505b508051600003612a4a5783604051633250574960e11b8152600401610b1c9190613fb3565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b146115255783604051633250574960e11b8152600401610b1c9190613fb3565b5050505050565b8383612a98828261349a565b6000612aa2612951565b600086815260209190915260409020905060016002820154600160c01b900460ff166004811115612ad557612ad561410b565b14612b0857848160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b80548414612b2f57805460405163cc45283760e01b8152610b1c9187918790600401614639565b6001600160a01b0387163303612b595760018101805460ff60c01b1916600160c01b179055612b6f565b60018101805460ff60c81b1916600160c81b1790555b6002810154600182015482546040516001600160a01b0380851694908416938a936000805160206148c583398151915293612bda93919260ff600160c01b8204811693600160c81b83049091169263ffffffff600160a01b93849004811693909204909116906146c3565b60405180910390a460028101546003820154604051879260008051602061498583398151915292612c599261ffff600160c81b8404811693600160d81b8104821693600160e81b90910482169281831692620100008304811692600160201b8104821692600160301b8204831692600160401b9092049091169061431e565b60405180910390a250505050505050565b6122e561355b565b60606000612c7e6135d2565b9050612c8983611ac2565b5060008381526020829052604081208054612ca390614532565b80601f0160208091040260200160405190810160405280929190818152602001828054612ccf90614532565b8015612d1c5780601f10612cf157610100808354040283529160200191612d1c565b820191906000526020600020905b815481529060010190602001808311612cff57829003601f168201915b505050505090506000612d3a60408051602081019091526000815290565b90508051600003612d4d57509392505050565b815115612d80578082604051602001612d67929190614749565b6040516020818303038152906040529350505050919050565b612d89856135f6565b95945050505050565b610a0082826040518060200160405280600081525061366a565b6000612db66135d2565b6000848152602082905260409020909150612dd183826147c0565b506040518381527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a1505050565b6000612e14611a55565b6040805160e0810182526001600160a01b039a8b168152988a166020808b019182528a8301998a5260608b01988952968b1660808b0190815260a08b0196875294151560c08b0190815260009c8d5260039384019097529a20975188546001600160a01b0319908116918b1691909117895599516001890180548c16918b169190911790559551600288015550925193850193909355905160048401805490961694169390931790935591516005830155516006909101805460ff1916911515919091179055565b8585612ee8828261349a565b6000612ef2612951565b600088815260209190915260409020905060046002820154600160c01b900460ff166004811115612f2557612f2561410b565b1480612f50575060016002820154600160c01b900460ff166004811115612f4e57612f4e61410b565b145b15612f8357868160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b60006002820154600160c01b900460ff166004811115612fa557612fa561410b565b03612fbf576001810180546001600160a01b031916331790555b338160020160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550858160000181905550886001600160a01b0316336001600160a01b0316148160010160186101000a81548160ff021916908315150217905550876001600160a01b0316336001600160a01b0316148160010160196101000a81548160ff021916908315150217905550848160020160196101000a81548161ffff021916908361ffff1602179055508381600201601b6101000a81548161ffff021916908361ffff160217905550600081600201601d6101000a81548161ffff021916908361ffff16021790555060008160030160006101000a81548161ffff021916908361ffff16021790555060008160030160026101000a81548161ffff021916908361ffff16021790555060008160030160046101000a81548161ffff021916908361ffff16021790555060008160030160066101000a81548161ffff021916908361ffff16021790555060008160030160086101000a81548161ffff021916908361ffff16021790555060018160020160186101000a81548160ff021916908360048111156131765761317661410b565b02179055506002810154600182015482546040516001600160a01b0380851694908416938c936000805160206148c5833981519152936125a393919260ff600160c01b8204811693600160c81b83049091169263ffffffff600160a01b93849004811693909204909116906146c3565b60006001600160e01b03198216632483248360e11b1480610939575061093982613682565b600080613216611a9e565b6000938452600201602052505060409020546001600160a01b031690565b600061323e611a9e565b9050818061325457506001600160a01b03831615155b1561330d57600061326485611ac2565b90506001600160a01b038416158015906132905750836001600160a01b0316816001600160a01b031614155b80156132a357506132a18185611969565b155b156132c3578360405163a9fbf51f60e01b8152600401610b1c9190613fb3565b821561330b5784866001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b600093845260040160205250506040902080546001600160a01b0319166001600160a01b0392909216919091179055565b8047101561336357478160405163cf47918160e01b8152600401610b1c9291906145e9565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146133b0576040519150601f19603f3d011682016040523d82523d6000602084013e6133b5565b606091505b5050905080610bb05760405163d6bda27560e01b815260040160405180910390fd5b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ccc9085906136a7565b60008061343c612951565b60008481526020919091526040902060020154600160c01b900460ff16613461612951565b600094855260205260409093206002015492936001600160a01b0390931692915050565b600061349284848461370f565b949350505050565b336001600160a01b038316148015906134bc5750336001600160a01b03821614155b15610a0057604051634793d28160e01b815260040160405180910390fd5b6134e4828261105f565b610a0057808260405163e2517d3f60e01b8152600401610b1c9291906145a6565b61350e8261379d565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561355357610bb082826137f9565b610a00613866565b613563613885565b6122e557604051631afcd79f60e31b815260040160405180910390fd5b61358861355b565b6000613592611a9e565b90508061359f84826147c0565b5060018101610ccc83826147c0565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b7f0542a41881ee128a365a727b282c86fa859579490b9bb45aab8503648c8e790090565b606061360182611ac2565b50600061361960408051602081019091526000815290565b905060008151116136395760405180602001604052806000815250611cdd565b806136438461389f565b604051602001613654929190614749565b6040516020818303038152906040529392505050565b6136748383613931565b610bb0336000858585612975565b60006001600160e01b0319821663780e9d6360e01b1480610939575061093982613996565b600080602060008451602086016000885af1806136ca576040513d6000823e3d81fd5b50506000513d915081156136e25780600114156136ef565b6001600160a01b0384163b155b15610ccc5783604051635274afe760e01b8152600401610b1c9190613fb3565b60008061371d8585856139e6565b90506001600160a01b03811661373b5761373684613aed565b61375e565b846001600160a01b0316816001600160a01b03161461375e5761375e8185613b26565b6001600160a01b03851661377a5761377584613bbf565b613492565b846001600160a01b0316816001600160a01b031614613492576134928585613c88565b806001600160a01b03163b6000036137ca5780604051634c9c8ce360e01b8152600401610b1c9190613fb3565b60008051602061494583398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051613816919061487f565b600060405180830381855af49150503d8060008114613851576040519150601f19603f3d011682016040523d82523d6000602084013e613856565b606091505b5091509150612d89858383613ce0565b34156122e55760405163b398979f60e01b815260040160405180910390fd5b600061388f612793565b54600160401b900460ff16919050565b606060006138ac83613d33565b60010190506000816001600160401b038111156138cb576138cb614152565b6040519080825280601f01601f1916602001820160405280156138f5576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846138ff57509392505050565b6001600160a01b03821661395b576000604051633250574960e11b8152600401610b1c9190613fb3565b600061396983836000613485565b90506001600160a01b03811615610bb05760006040516339e3563760e11b8152600401610b1c9190613fb3565b60006001600160e01b031982166380ac58cd60e01b14806139c757506001600160e01b03198216635b5e139f60e01b145b8061093957506301ffc9a760e01b6001600160e01b0319831614610939565b6000806139f1611a9e565b905060006139fe8561320b565b90506001600160a01b03841615613a1a57613a1a818587613e09565b6001600160a01b03811615613a5a57613a37600086600080613234565b6001600160a01b0381166000908152600383016020526040902080546000190190555b6001600160a01b03861615613a8b576001600160a01b03861660009081526003830160205260409020805460010190555b600085815260028301602052604080822080546001600160a01b0319166001600160a01b038a811691821790925591518893918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a495945050505050565b6000613af7611b30565b600281018054600085815260039093016020908152604084208290556001820183559183529120019190915550565b6000613b30611b30565b90506000613b3d84610eae565b60008481526001840160209081526040808320546001600160a01b03891684529186905290912091925090818314613b97576000838152602082815260408083205485845281842081905583526001870190915290208290555b6000948552600190930160209081526040808620869055928552929092528220919091555050565b6000613bc9611b30565b6002810154909150600090613be09060019061489b565b6000848152600384016020526040812054600285018054939450909284908110613c0c57613c0c6145bf565b9060005260206000200154905080846002018381548110613c2f57613c2f6145bf565b600091825260208083209091019290925582815260038601909152604080822084905586825281205560028401805480613c6b57613c6b6148ae565b600190038181906000526020600020016000905590555050505050565b6000613c92611b30565b905060006001613ca185610eae565b613cab919061489b565b6001600160a01b0390941660009081526020838152604080832087845282528083208690559482526001909301909252502055565b606082613cf557613cf082613e5f565b611cdd565b8151158015613d0c57506001600160a01b0384163b155b15613d2c5783604051639996b31560e01b8152600401610b1c9190613fb3565b5080611cdd565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310613d725772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b8310613d9c576904ee2d6d415b85acef8160201b830492506020015b662386f26fc100008310613dba57662386f26fc10000830492506010015b6305f5e1008310613dd2576305f5e100830492506008015b6127108310613de657612710830492506004015b60648310613df8576064830492506002015b600a83106109395760010192915050565b613e14838383613e88565b610bb0576001600160a01b038316613e4257604051637e27328960e01b815260048101829052602401610b1c565b818160405163177e802f60e01b8152600401610b1c9291906145a6565b805115613e6f5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b60006001600160a01b038316158015906134925750826001600160a01b0316846001600160a01b03161480613ec25750613ec28484611969565b806134925750826001600160a01b0316613edb83611afa565b6001600160a01b031614949350505050565b600060208284031215613eff57600080fd5b5035919050565b9182526001600160a01b0316602082015260400190565b6001600160e01b03198116811461132657600080fd5b600060208284031215613f4557600080fd5b8135611cdd81613f1d565b60005b83811015613f6b578181015183820152602001613f53565b50506000910152565b60008151808452613f8c816020860160208601613f50565b601f01601f19169290920160200192915050565b602081526000611cdd6020830184613f74565b6001600160a01b0391909116815260200190565b6001600160a01b038116811461132657600080fd5b60008060408385031215613fef57600080fd5b8235613ffa81613fc7565b946020939093013593505050565b60006020828403121561401a57600080fd5b8135611cdd81613fc7565b6000806040838503121561403857600080fd5b50508035926020909101359150565b60008060006060848603121561405c57600080fd5b833561406781613fc7565b9250602084013561407781613fc7565b929592945050506040919091013590565b803561ffff8116811461409a57600080fd5b919050565b6000806000606084860312156140b457600080fd5b833592506140c460208501614088565b91506140d260408501614088565b90509250925092565b600080604083850312156140ee57600080fd5b82359150602083013561410081613fc7565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b6005811061132657634e487b7160e01b600052602160045260246000fd5b6020810161414c83614121565b91905290565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261417957600080fd5b81356001600160401b038082111561419357614193614152565b604051601f8301601f19908116603f011681019082821181831017156141bb576141bb614152565b816040528381528660208588010111156141d457600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561420757600080fd5b823561421281613fc7565b915060208301356001600160401b0381111561422d57600080fd5b61423985828601614168565b9150509250929050565b6000806000806080858703121561425957600080fd5b843593506020850135925061427060408601614088565b915061427e60608601614088565b905092959194509250565b6000806040838503121561429c57600080fd5b82356001600160401b03808211156142b357600080fd5b6142bf86838701614168565b935060208501359150808211156142d557600080fd5b5061423985828601614168565b801515811461132657600080fd5b6000806040838503121561430357600080fd5b823561430e81613fc7565b91506020830135614100816142e2565b61ffff98891681529688166020880152948716604087015292861660608601529085166080850152841660a0840152831660c083015290911660e08201526101000190565b6000806000806080858703121561437957600080fd5b843561438481613fc7565b9350602085013561439481613fc7565b92506040850135915060608501356001600160401b038111156143b657600080fd5b6143c287828801614168565b91505092959194509250565b61010081016143dc8a614121565b98815260208101979097526001600160a01b0395861660408801529390941660608601529015156080850152151560a084015263ffffffff91821660c08401521660e09091015290565b60008060006060848603121561443b57600080fd5b833561444681613fc7565b9250602084013561445681613fc7565b9150604084013561446681613fc7565b809150509250925092565b600080600080600080600060e0888a03121561448c57600080fd5b873561449781613fc7565b965060208801356001600160401b038111156144b257600080fd5b6144be8a828b01614168565b965050604088013594506060880135935060808801356144dd81613fc7565b925060a0880135915060c08801356144f4816142e2565b8091505092959891949750929550565b6000806040838503121561451757600080fd5b823561452281613fc7565b9150602083013561410081613fc7565b600181811c9082168061454657607f821691505b60208210810361456657634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561457e57600080fd5b8151611cdd816142e2565b8281526040810161459983614121565b8260208301529392505050565b6001600160a01b03929092168252602082015260400190565b634e487b7160e01b600052603260045260246000fd5b6001600160401b0391909116815260200190565b918252602082015260400190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610939576109396145f7565b600060018201614632576146326145f7565b5060010190565b9283526020830191909152604082015260600190565b6001600160a01b0393841681526020810192909252909116604082015260600190565b61ffff92831681529116602082015260400190565b60006020828403121561469957600080fd5b5051919050565b600063ffffffff8083168181036146b9576146b96145f7565b6001019392505050565b9485529215156020850152901515604084015263ffffffff908116606084015216608082015260a00190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061472290830184613f74565b9695505050505050565b60006020828403121561473e57600080fd5b8151611cdd81613f1d565b6000835161475b818460208801613f50565b83519083019061476f818360208801613f50565b01949350505050565b601f821115610bb0576000816000526020600020601f850160051c810160208610156147a15750805b601f850160051c820191505b81811015611525578281556001016147ad565b81516001600160401b038111156147d9576147d9614152565b6147ed816147e78454614532565b84614778565b602080601f831160018114614822576000841561480a5750858301515b600019600386901b1c1916600185901b178555611525565b600085815260208120601f198616915b8281101561485157888601518255948401946001909101908401614832565b508582101561486f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008251614891818460208701613f50565b9190910192915050565b81810381811115610939576109396145f7565b634e487b7160e01b600052603160045260246000fdfe6aafaf6639750382d6dc665bc6a3c73d54e2076a8739a69c860a2314032eb981c7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2c47ab59d5c41a0220b594ece6f7e87863b07f8b33579130f3a59b31d8f7b6eed189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc3ae8648b97d3fd425d26286fc6bb1d50724a93a6a5763921dd2b90405a83b4a4ade2ce8b39037f5140109f53fef47c0491427b8b785ab83d35aa2931295cb790a26469706673582212205ff1ab7ed04f3284c48eefd9c84ebe5b019c0853e20741ae588d1e84fa8d725b64736f6c63430008180033", + "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x14 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x80 MLOAD PUSH2 0x49DA PUSH2 0x3E PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x224B ADD MSTORE DUP2 DUP2 PUSH2 0x2274 ADD MSTORE PUSH2 0x23BE ADD MSTORE PUSH2 0x49DA PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x24E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH3 0x4FDD3C EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x28A JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2BA JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x2DC JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x309 JUMPI DUP1 PUSH4 0xE75C1A8 EQ PUSH2 0x32B JUMPI DUP1 PUSH4 0x12B357B5 EQ PUSH2 0x34E JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x36E JUMPI DUP1 PUSH4 0x1C54F0F7 EQ PUSH2 0x383 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x396 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x3B6 JUMPI DUP1 PUSH4 0x2A119380 EQ PUSH2 0x3D6 JUMPI DUP1 PUSH4 0x2D3A6329 EQ PUSH2 0x3F6 JUMPI DUP1 PUSH4 0x2EDF5E2C EQ PUSH2 0x416 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x438 JUMPI DUP1 PUSH4 0x2F745C59 EQ PUSH2 0x458 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x478 JUMPI DUP1 PUSH4 0x3C15B31C EQ PUSH2 0x498 JUMPI DUP1 PUSH4 0x41431908 EQ PUSH2 0x4C5 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x4E5 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x505 JUMPI DUP1 PUSH4 0x4F6CCCE7 EQ PUSH2 0x518 JUMPI DUP1 PUSH4 0x516A82B8 EQ PUSH2 0x538 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x558 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x56D JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x59A JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x5BA JUMPI DUP1 PUSH4 0x74AA2048 EQ PUSH2 0x5DA JUMPI DUP1 PUSH4 0x74FE60E9 EQ PUSH2 0x5FA JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x61A JUMPI DUP1 PUSH4 0x91DA124C EQ PUSH2 0x63A JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x65A JUMPI DUP1 PUSH4 0x96591EDD EQ PUSH2 0x66F JUMPI DUP1 PUSH4 0xA0F07C74 EQ PUSH2 0x682 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x697 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x6AC JUMPI DUP1 PUSH4 0xA9BC55A2 EQ PUSH2 0x6CC JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x700 JUMPI DUP1 PUSH4 0xB191D092 EQ PUSH2 0x731 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x751 JUMPI DUP1 PUSH4 0xBB520B47 EQ PUSH2 0x771 JUMPI DUP1 PUSH4 0xBE667188 EQ PUSH2 0x7A5 JUMPI DUP1 PUSH4 0xBFB26C06 EQ PUSH2 0x7C5 JUMPI DUP1 PUSH4 0xC0C53B8B EQ PUSH2 0x7DA JUMPI DUP1 PUSH4 0xC162D7DA EQ PUSH2 0x7FA JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x80F JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x82F JUMPI DUP1 PUSH4 0xDB2B2682 EQ PUSH2 0x84F JUMPI DUP1 PUSH4 0xE5A6725C EQ PUSH2 0x86F JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x88F JUMPI DUP1 PUSH4 0xF72C0D8B EQ PUSH2 0x8AF JUMPI DUP1 PUSH4 0xF7E45F09 EQ PUSH2 0x8D1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x26E CALLDATASIZE PUSH1 0x4 PUSH2 0x3EED JUMP JUMPDEST PUSH2 0x8F1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x281 SWAP3 SWAP2 SWAP1 PUSH2 0x3F06 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x296 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AA PUSH2 0x2A5 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F33 JUMP JUMPDEST PUSH2 0x92E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x281 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CF PUSH2 0x93F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x281 SWAP2 SWAP1 PUSH2 0x3FA0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2FC PUSH2 0x2F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EED JUMP JUMPDEST PUSH2 0x9E0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x281 SWAP2 SWAP1 PUSH2 0x3FB3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x315 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x329 PUSH2 0x324 CALLDATASIZE PUSH1 0x4 PUSH2 0x3FDC JUMP JUMPDEST PUSH2 0x9F5 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x337 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH2 0xA04 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x281 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x35A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AA PUSH2 0x369 CALLDATASIZE PUSH1 0x4 PUSH2 0x4008 JUMP JUMPDEST PUSH2 0xA19 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x37A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH2 0xA8F JUMP JUMPDEST PUSH2 0x329 PUSH2 0x391 CALLDATASIZE PUSH1 0x4 PUSH2 0x4025 JUMP JUMPDEST PUSH2 0xA9A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x329 PUSH2 0x3B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x4047 JUMP JUMPDEST PUSH2 0xB9C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH2 0x3D1 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EED JUMP JUMPDEST PUSH2 0xBB5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x329 PUSH2 0x3F1 CALLDATASIZE PUSH1 0x4 PUSH2 0x409F JUMP JUMPDEST PUSH2 0xBD5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x402 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AA PUSH2 0x411 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EED JUMP JUMPDEST PUSH2 0xC8A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x422 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4965 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x444 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x329 PUSH2 0x453 CALLDATASIZE PUSH1 0x4 PUSH2 0x40DB JUMP JUMPDEST PUSH2 0xCB0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x464 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH2 0x473 CALLDATASIZE PUSH1 0x4 PUSH2 0x3FDC JUMP JUMPDEST PUSH2 0xCD2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x484 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x329 PUSH2 0x493 CALLDATASIZE PUSH1 0x4 PUSH2 0x40DB JUMP JUMPDEST PUSH2 0xD34 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4B8 PUSH2 0x4B3 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EED JUMP JUMPDEST PUSH2 0xD67 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x281 SWAP2 SWAP1 PUSH2 0x413F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x329 PUSH2 0x4E0 CALLDATASIZE PUSH1 0x4 PUSH2 0x4008 JUMP JUMPDEST PUSH2 0xD8A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x329 PUSH2 0x500 CALLDATASIZE PUSH1 0x4 PUSH2 0x4047 JUMP JUMPDEST PUSH2 0xDC2 JUMP JUMPDEST PUSH2 0x329 PUSH2 0x513 CALLDATASIZE PUSH1 0x4 PUSH2 0x41F4 JUMP JUMPDEST PUSH2 0xDDD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x524 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH2 0x533 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EED JUMP JUMPDEST PUSH2 0xDF8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x544 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x329 PUSH2 0x553 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EED JUMP JUMPDEST PUSH2 0xE59 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x564 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH2 0xE86 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x579 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD PUSH2 0x281 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2FC PUSH2 0x5B5 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EED JUMP JUMPDEST PUSH2 0xEA3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH2 0x5D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x4008 JUMP JUMPDEST PUSH2 0xEAE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x329 PUSH2 0x5F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x4243 JUMP JUMPDEST PUSH2 0xF06 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x606 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x329 PUSH2 0x615 CALLDATASIZE PUSH1 0x4 PUSH2 0x409F JUMP JUMPDEST PUSH2 0xFB3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x626 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AA PUSH2 0x635 CALLDATASIZE PUSH1 0x4 PUSH2 0x40DB JUMP JUMPDEST PUSH2 0x105F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x646 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x329 PUSH2 0x655 CALLDATASIZE PUSH1 0x4 PUSH2 0x4289 JUMP JUMPDEST PUSH2 0x1095 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x666 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CF PUSH2 0x1152 JUMP JUMPDEST PUSH2 0x329 PUSH2 0x67D CALLDATASIZE PUSH1 0x4 PUSH2 0x3EED JUMP JUMPDEST PUSH2 0x116F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x68E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2FC PUSH1 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH1 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x329 PUSH2 0x6C7 CALLDATASIZE PUSH1 0x4 PUSH2 0x42F0 JUMP JUMPDEST PUSH2 0x1329 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6EC PUSH2 0x6E7 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EED JUMP JUMPDEST PUSH2 0x1334 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x281 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x431E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x70C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CF PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x352E302E3 PUSH1 0xDC SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x73D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2FC PUSH2 0x74C CALLDATASIZE PUSH1 0x4 PUSH2 0x3EED JUMP JUMPDEST PUSH2 0x13BA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x75D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x329 PUSH2 0x76C CALLDATASIZE PUSH1 0x4 PUSH2 0x4363 JUMP JUMPDEST PUSH2 0x13E6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x77D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x791 PUSH2 0x78C CALLDATASIZE PUSH1 0x4 PUSH2 0x3EED JUMP JUMPDEST PUSH2 0x13FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x281 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x43CE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x329 PUSH2 0x7C0 CALLDATASIZE PUSH1 0x4 PUSH2 0x4025 JUMP JUMPDEST PUSH2 0x147A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2FC PUSH1 0x1 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x329 PUSH2 0x7F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x4426 JUMP JUMPDEST PUSH2 0x152D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x806 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2FC PUSH2 0x16CC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x81B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CF PUSH2 0x82A CALLDATASIZE PUSH1 0x4 PUSH2 0x3EED JUMP JUMPDEST PUSH2 0x16E7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x83B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x329 PUSH2 0x84A CALLDATASIZE PUSH1 0x4 PUSH2 0x40DB JUMP JUMPDEST PUSH2 0x16F2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x85B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x329 PUSH2 0x86A CALLDATASIZE PUSH1 0x4 PUSH2 0x4471 JUMP JUMPDEST PUSH2 0x170E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x87B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x329 PUSH2 0x88A CALLDATASIZE PUSH1 0x4 PUSH2 0x3EED JUMP JUMPDEST PUSH2 0x1861 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x89B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AA PUSH2 0x8AA CALLDATASIZE PUSH1 0x4 PUSH2 0x4504 JUMP JUMPDEST PUSH2 0x1969 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4925 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x329 PUSH2 0x8EC CALLDATASIZE PUSH1 0x4 PUSH2 0x4243 JUMP JUMPDEST PUSH2 0x19A8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x8FE PUSH2 0x1A55 JUMP JUMPDEST PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x3 SWAP1 DUP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP5 KECCAK256 SWAP4 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP4 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x939 DUP3 PUSH2 0x1A79 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x94B PUSH2 0x1A9E JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x0 ADD DUP1 SLOAD PUSH2 0x95C SWAP1 PUSH2 0x4532 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x988 SWAP1 PUSH2 0x4532 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x9D5 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x9AA JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x9D5 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x9B8 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9EB DUP3 PUSH2 0x1AC2 JUMP JUMPDEST POP PUSH2 0x939 DUP3 PUSH2 0x1AFA JUMP JUMPDEST PUSH2 0xA00 DUP3 DUP3 CALLER PUSH2 0x1B23 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA0F PUSH2 0x1A55 JUMP JUMPDEST PUSH1 0x2 ADD SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA23 PUSH2 0x16CC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x12B357B5 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA4E SWAP2 SWAP1 PUSH2 0x3FB3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA6B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x939 SWAP2 SWAP1 PUSH2 0x456C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA0F PUSH2 0x1B30 JUMP JUMPDEST CALLER PUSH2 0xAA4 DUP2 PUSH2 0x1B54 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAAF DUP5 PUSH2 0x1AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xABB PUSH2 0x1A55 JUMP JUMPDEST SWAP1 POP PUSH1 0x3 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x4 DUP1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 DUP2 GT ISZERO PUSH2 0xAE5 JUMPI PUSH2 0xAE5 PUSH2 0x410B JUMP JUMPDEST EQ PUSH2 0xB25 JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x4 DUP1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD SWAP2 MLOAD PUSH4 0xE4E3B53B PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xB1C SWAP3 DUP9 SWAP3 PUSH1 0xFF SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x4589 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x3 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0xB4E DUP3 DUP9 DUP9 PUSH2 0x1B7C JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x3 DUP6 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x4 SWAP1 DUP2 ADD SLOAD DUP2 DUP10 ADD SWAP1 SWAP4 MSTORE SWAP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB92 DUP2 DUP4 DUP8 PUSH2 0x1CE4 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xBA5 DUP2 PUSH2 0x1D92 JUMP JUMPDEST PUSH2 0xBB0 DUP4 DUP4 DUP4 PUSH2 0x1F46 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xBC0 PUSH2 0x1FB7 JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH2 0xBDF DUP2 PUSH2 0x1B54 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBEA DUP6 PUSH2 0x1AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xBF6 PUSH2 0x1A55 JUMP JUMPDEST SWAP1 POP PUSH1 0x3 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x4 DUP1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 DUP2 GT ISZERO PUSH2 0xC20 JUMPI PUSH2 0xC20 PUSH2 0x410B JUMP JUMPDEST EQ PUSH2 0xC57 JUMPI PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x4 DUP1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD SWAP2 MLOAD PUSH4 0xE4E3B53B PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xB1C SWAP3 DUP10 SWAP3 PUSH1 0xFF SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x4589 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x3 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xC81 DUP4 DUP3 DUP10 DUP10 DUP10 PUSH2 0x1FDB JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xC95 PUSH2 0x1A55 JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x3 ADD PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x6 ADD SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0xCB9 DUP3 PUSH2 0xBB5 JUMP JUMPDEST PUSH2 0xCC2 DUP2 PUSH2 0x211D JUMP JUMPDEST PUSH2 0xCCC DUP4 DUP4 PUSH2 0x2127 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xCDD PUSH2 0x1B30 JUMP JUMPDEST SWAP1 POP PUSH2 0xCE8 DUP5 PUSH2 0xEAE JUMP JUMPDEST DUP4 LT PUSH2 0xD0B JUMPI DUP4 DUP4 PUSH1 0x40 MLOAD PUSH4 0x295F44F7 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP3 SWAP2 SWAP1 PUSH2 0x45A6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 DUP3 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 DUP4 MSTORE SWAP1 SWAP3 MSTORE KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0xD5D JUMPI PUSH1 0x40 MLOAD PUSH4 0x334BD919 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xBB0 DUP3 DUP3 PUSH2 0x21C8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xD72 PUSH2 0x1A55 JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x4 ADD PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD95 DUP2 PUSH2 0x211D JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD9F PUSH2 0x1A55 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 SSTORE POP POP JUMP JUMPDEST PUSH2 0xBB0 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x13E6 JUMP JUMPDEST PUSH2 0xDE5 PUSH2 0x2240 JUMP JUMPDEST PUSH2 0xDEE DUP3 PUSH2 0x22E7 JUMP JUMPDEST PUSH2 0xA00 DUP3 DUP3 PUSH2 0x22FF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xE03 PUSH2 0x1B30 JUMP JUMPDEST SWAP1 POP PUSH2 0xE0D PUSH2 0xA8F JUMP JUMPDEST DUP4 LT PUSH2 0xE31 JUMPI PUSH1 0x0 DUP4 PUSH1 0x40 MLOAD PUSH4 0x295F44F7 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP3 SWAP2 SWAP1 PUSH2 0x45A6 JUMP JUMPDEST DUP1 PUSH1 0x2 ADD DUP4 DUP2 SLOAD DUP2 LT PUSH2 0xE46 JUMPI PUSH2 0xE46 PUSH2 0x45BF JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4965 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0xE71 DUP2 PUSH2 0x211D JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE7B PUSH2 0x1A55 JUMP JUMPDEST PUSH1 0x2 ADD SWAP3 SWAP1 SWAP3 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE90 PUSH2 0x23B3 JUMP JUMPDEST POP PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4945 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x939 DUP3 PUSH2 0x1AC2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xEB9 PUSH2 0x1A9E JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xEE5 JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0x22718AD9 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP2 SWAP1 PUSH2 0x3FB3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 SWAP1 SWAP3 ADD PUSH1 0x20 MSTORE POP PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH2 0xF10 DUP2 PUSH2 0x1B54 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF1B DUP7 PUSH2 0x1AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xF27 PUSH2 0x1A55 JUMP JUMPDEST SWAP1 POP PUSH1 0x3 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x4 DUP1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 DUP2 GT ISZERO PUSH2 0xF51 JUMPI PUSH2 0xF51 PUSH2 0x410B JUMP JUMPDEST EQ PUSH2 0xF88 JUMPI PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x4 DUP1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD SWAP2 MLOAD PUSH4 0xE4E3B53B PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xB1C SWAP3 DUP11 SWAP3 PUSH1 0xFF SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x4589 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x3 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB92 DUP4 DUP3 DUP11 DUP11 DUP11 DUP11 PUSH2 0x23FC JUMP JUMPDEST CALLER PUSH2 0xFBD DUP2 PUSH2 0x1B54 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFC8 DUP6 PUSH2 0x1AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xFD4 PUSH2 0x1A55 JUMP JUMPDEST SWAP1 POP PUSH1 0x3 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x4 DUP1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 DUP2 GT ISZERO PUSH2 0xFFE JUMPI PUSH2 0xFFE PUSH2 0x410B JUMP JUMPDEST EQ PUSH2 0x1035 JUMPI PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x4 DUP1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD SWAP2 MLOAD PUSH4 0xE4E3B53B PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xB1C SWAP3 DUP10 SWAP3 PUSH1 0xFF SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x4589 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x3 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xC81 DUP4 DUP3 DUP10 DUP10 DUP10 PUSH2 0x2635 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x106A PUSH2 0x1FB7 JUMP JUMPDEST PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP7 MSTORE SWAP4 SWAP1 MSTORE POP POP SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 PUSH2 0x10A1 PUSH2 0x2793 JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND DUP1 PUSH2 0x10C8 JUMPI POP DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP5 AND SWAP2 AND LT ISZERO JUMPDEST ISZERO PUSH2 0x10E6 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x48 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 AND OR PUSH1 0x1 PUSH1 0x40 SHL OR DUP2 SSTORE PUSH1 0x0 PUSH2 0x1110 DUP2 PUSH2 0x211D JUMP JUMPDEST PUSH2 0x111A DUP6 DUP6 PUSH2 0x27B7 JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND DUP2 SSTORE PUSH1 0x40 MLOAD PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x48E5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 PUSH2 0x1144 SWAP1 DUP5 SWAP1 PUSH2 0x45D5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x115E PUSH2 0x1A9E JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 ADD DUP1 SLOAD PUSH2 0x95C SWAP1 PUSH2 0x4532 JUMP JUMPDEST PUSH2 0x1177 PUSH2 0x27C9 JUMP JUMPDEST CALLER PUSH2 0x1181 DUP2 PUSH2 0x1B54 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x118B PUSH2 0x1A55 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x3 DUP1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 DUP4 MLOAD PUSH1 0xE0 DUP2 ADD DUP6 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP1 DUP4 MSTORE PUSH1 0x1 DUP5 ADD SLOAD DUP3 AND SWAP5 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x2 DUP4 ADD SLOAD SWAP6 DUP3 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP3 DUP2 ADD SLOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x4 DUP2 ADD SLOAD SWAP1 SWAP4 AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x5 DUP4 ADD SLOAD PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0x6 SWAP1 SWAP3 ADD SLOAD PUSH1 0xFF AND ISZERO ISZERO PUSH1 0xC0 DUP3 ADD MSTORE SWAP2 SWAP3 POP CALLER EQ PUSH2 0x1238 JUMPI DUP1 MLOAD PUSH1 0x40 MLOAD PUSH4 0x2663A9C5 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE CALLER PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0xB1C JUMP JUMPDEST DUP1 PUSH1 0x40 ADD MLOAD TIMESTAMP GT ISZERO PUSH2 0x1265 JUMPI DUP4 DUP2 PUSH1 0x40 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x293D73B7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP3 SWAP2 SWAP1 PUSH2 0x45E9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1270 DUP6 PUSH2 0xEA3 JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x12AF JUMPI PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x103D1459 PUSH1 0xE3 SHL DUP2 MSTORE PUSH2 0xB1C SWAP2 DUP8 SWAP2 PUSH1 0x4 ADD PUSH2 0x3F06 JUMP JUMPDEST PUSH2 0x12BE DUP3 PUSH1 0x20 ADD MLOAD CALLER DUP8 PUSH2 0x27FF JUMP JUMPDEST PUSH2 0x12D5 DUP3 PUSH1 0x80 ADD MLOAD DUP4 PUSH1 0x60 ADD MLOAD DUP5 PUSH1 0x20 ADD MLOAD PUSH2 0x1CE4 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x3 OR SWAP1 SSTORE MLOAD CALLER SWAP2 DUP8 SWAP2 PUSH32 0xA751FB02C318279A22135A408663AE08EA45EAFA950A4351C14AE543CBB95040 SWAP2 SWAP1 LOG3 POP POP POP POP PUSH2 0x1326 PUSH2 0x289B JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0xA00 CALLER DUP4 DUP4 PUSH2 0x28AC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x134A PUSH2 0x2951 JUMP JUMPDEST PUSH1 0x0 SWAP11 DUP12 MSTORE PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 SWAP8 KECCAK256 PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0x3 SWAP1 SWAP2 ADD SLOAD PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xC8 SHL DUP4 DIV DUP2 AND SWAP11 PUSH1 0x1 PUSH1 0xD8 SHL DUP5 DIV DUP3 AND SWAP11 POP PUSH1 0x1 PUSH1 0xE8 SHL SWAP1 SWAP4 DIV DUP2 AND SWAP9 POP DUP1 DUP3 AND SWAP8 POP PUSH3 0x10000 DUP3 DIV DUP2 AND SWAP7 POP PUSH1 0x1 PUSH1 0x20 SHL DUP3 DIV DUP2 AND SWAP6 POP PUSH1 0x1 PUSH1 0x30 SHL DUP3 DIV DUP2 AND SWAP5 POP PUSH1 0x1 PUSH1 0x40 SHL SWAP1 SWAP2 DIV AND SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x13C5 PUSH2 0x1A55 JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x3 ADD PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x13F1 DUP5 DUP5 DUP5 PUSH2 0xB9C JUMP JUMPDEST PUSH2 0xCCC CALLER DUP6 DUP6 DUP6 DUP6 PUSH2 0x2975 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1414 PUSH2 0x2951 JUMP JUMPDEST PUSH1 0x0 SWAP11 DUP12 MSTORE PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 SWAP8 KECCAK256 PUSH1 0x2 DUP2 ADD SLOAD DUP2 SLOAD PUSH1 0x1 SWAP1 SWAP3 ADD SLOAD PUSH1 0xFF PUSH1 0x1 PUSH1 0xC0 SHL DUP1 DUP5 DIV DUP3 AND SWAP13 SWAP5 SWAP12 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP12 POP DUP5 AND SWAP10 POP DUP3 DIV DUP2 AND SWAP8 POP PUSH1 0x1 PUSH1 0xC8 SHL DUP3 DIV AND SWAP6 POP PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0xA0 SHL SWAP2 DUP3 SWAP1 DIV DUP2 AND SWAP6 POP SWAP2 DIV AND SWAP2 POP JUMP JUMPDEST CALLER PUSH2 0x1484 DUP2 PUSH2 0x1B54 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x148F DUP5 PUSH2 0x1AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x149B PUSH2 0x1A55 JUMP JUMPDEST SWAP1 POP PUSH1 0x3 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x4 DUP1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 DUP2 GT ISZERO PUSH2 0x14C5 JUMPI PUSH2 0x14C5 PUSH2 0x410B JUMP JUMPDEST EQ PUSH2 0x14FC JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x4 DUP1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD SWAP2 MLOAD PUSH4 0xE4E3B53B PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xB1C SWAP3 DUP9 SWAP3 PUSH1 0xFF SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x4589 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x3 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1525 DUP4 DUP3 DUP9 DUP9 PUSH2 0x2A8C JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1537 PUSH2 0x2793 JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV AND ISZERO SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x0 DUP2 ISZERO DUP1 ISZERO PUSH2 0x155E JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0x157A JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0x1588 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x15A6 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT AND PUSH1 0x1 OR DUP6 SSTORE DUP4 ISZERO PUSH2 0x15CF JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR DUP6 SSTORE JUMPDEST PUSH2 0x1619 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xC DUP2 MSTORE PUSH1 0x20 ADD PUSH12 0x2137B7B5B4B733AA37B5B2B7 PUSH1 0xA1 SHL DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH4 0x5452495 PUSH1 0xE4 SHL DUP2 MSTORE POP PUSH2 0x27B7 JUMP JUMPDEST PUSH2 0x1621 PUSH2 0x2C6A JUMP JUMPDEST PUSH2 0x1629 PUSH2 0x2C6A JUMP JUMPDEST PUSH2 0x1631 PUSH2 0x2C6A JUMP JUMPDEST PUSH2 0x1639 PUSH2 0x2C6A JUMP JUMPDEST PUSH2 0x1644 PUSH1 0x0 DUP9 PUSH2 0x2127 JUMP JUMPDEST POP PUSH2 0x165D PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4925 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP8 PUSH2 0x2127 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x1668 PUSH2 0x1A55 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND OR DUP2 SSTORE PUSH1 0x3C PUSH1 0x2 SWAP1 SWAP2 ADD SSTORE POP DUP4 ISZERO PUSH2 0xB92 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND DUP6 SSTORE PUSH1 0x40 MLOAD PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x48E5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 PUSH2 0x16BA SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x45D5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x16D7 PUSH2 0x1A55 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x939 DUP3 PUSH2 0x2C72 JUMP JUMPDEST PUSH2 0x16FB DUP3 PUSH2 0xBB5 JUMP JUMPDEST PUSH2 0x1704 DUP2 PUSH2 0x211D JUMP JUMPDEST PUSH2 0xCCC DUP4 DUP4 PUSH2 0x21C8 JUMP JUMPDEST CALLER PUSH2 0x1718 DUP2 PUSH2 0x1B54 JUMP JUMPDEST PUSH2 0x1721 DUP9 PUSH2 0x1B54 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x172B PUSH2 0x1A55 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD SWAP1 SWAP2 POP PUSH2 0x173D DUP2 TIMESTAMP PUSH2 0x460D JUMP JUMPDEST DUP9 GT PUSH2 0x1760 JUMPI DUP8 DUP2 PUSH1 0x40 MLOAD PUSH4 0x999F7D7 PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP3 SWAP2 SWAP1 PUSH2 0x45E9 JUMP JUMPDEST PUSH1 0x0 DUP6 GT DUP1 ISZERO PUSH2 0x177A JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x1 EQ ISZERO JUMPDEST ISZERO PUSH2 0x179B JUMPI PUSH1 0x40 MLOAD PUSH4 0x8FE757E7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xB1C JUMP JUMPDEST PUSH1 0x1 DUP3 ADD DUP1 SLOAD PUSH1 0x0 SWAP2 DUP3 PUSH2 0x17AE DUP4 PUSH2 0x4620 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE SWAP1 POP PUSH2 0x17BE CALLER DUP3 PUSH2 0x2D92 JUMP JUMPDEST PUSH2 0x17C8 DUP2 DUP12 PUSH2 0x2DAC JUMP JUMPDEST PUSH2 0x17D8 DUP2 DUP13 CALLER DUP13 DUP13 DUP13 DUP13 DUP13 PUSH2 0x2E0A JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP2 MLOAD DUP12 DUP2 MSTORE SWAP1 DUP2 ADD DUP11 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND DUP3 DUP5 ADD MSTORE PUSH1 0x60 DUP3 ADD DUP10 SWAP1 MSTORE DUP8 ISZERO ISZERO PUSH1 0x80 DUP4 ADD MSTORE SWAP2 MLOAD CALLER SWAP3 DUP15 AND SWAP2 DUP5 SWAP2 PUSH32 0x1424AF4F4CB40D8A1A2D00B2324CB122BA73EAC426F98B62C33FF31CA045F067 SWAP2 PUSH1 0xA0 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG4 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x186B PUSH2 0x1A55 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x3 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x4 DUP6 ADD SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0xFF AND PUSH1 0x2 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x18A4 JUMPI PUSH2 0x18A4 PUSH2 0x410B JUMP JUMPDEST EQ DUP1 PUSH2 0x18C1 JUMPI POP PUSH1 0x3 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x18BF JUMPI PUSH2 0x18BF PUSH2 0x410B JUMP JUMPDEST EQ JUMPDEST DUP1 PUSH2 0x18DD JUMPI POP PUSH1 0x4 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x18DB JUMPI PUSH2 0x18DB PUSH2 0x410B JUMP JUMPDEST EQ JUMPDEST ISZERO PUSH2 0x18FF JUMPI DUP4 DUP2 PUSH1 0x40 MLOAD PUSH4 0xE4E3B53B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP3 SWAP2 SWAP1 PUSH2 0x4589 JUMP JUMPDEST DUP2 PUSH1 0x2 ADD SLOAD TIMESTAMP GT ISZERO PUSH2 0x1940 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x2 OR SWAP1 SSTORE MLOAD DUP6 SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4905 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 LOG2 PUSH2 0xCCC JUMP JUMPDEST DUP2 SLOAD PUSH1 0x40 MLOAD PUSH4 0xD4CDE2AF PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xB1C SWAP2 DUP7 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH1 0x4 ADD PUSH2 0x3F06 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1974 PUSH2 0x1A9E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP6 SWAP1 SWAP7 AND DUP3 MSTORE SWAP4 SWAP1 SWAP4 MSTORE POP POP KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLER PUSH2 0x19B2 DUP2 PUSH2 0x1B54 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19BD DUP7 PUSH2 0x1AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x19C9 PUSH2 0x1A55 JUMP JUMPDEST SWAP1 POP PUSH1 0x3 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x4 DUP1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 DUP2 GT ISZERO PUSH2 0x19F3 JUMPI PUSH2 0x19F3 PUSH2 0x410B JUMP JUMPDEST EQ PUSH2 0x1A2A JUMPI PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x4 DUP1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD SWAP2 MLOAD PUSH4 0xE4E3B53B PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xB1C SWAP3 DUP11 SWAP3 PUSH1 0xFF SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x4589 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x3 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB92 DUP4 DUP3 DUP11 DUP11 DUP11 DUP11 PUSH2 0x2EDC JUMP JUMPDEST PUSH32 0x9DB9D405BF15683CE835607B1F0B423DC1484D44BB9D5AF64A483FA4AFD82900 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x7965DB0B PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x939 JUMPI POP PUSH2 0x939 DUP3 PUSH2 0x31E6 JUMP JUMPDEST PUSH32 0x80BB2B638CC20BC4D0A60D66940F3AB4A00C1D7B313497CA82FB0B4AB0079300 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1ACE DUP4 PUSH2 0x320B JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x939 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7E273289 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xB1C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1B05 PUSH2 0x1A9E JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x4 ADD PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0xBB0 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x3234 JUMP JUMPDEST PUSH32 0x645E039705490088DAAD89BAE25049A34F4A9072D398537B1AB2425F24CBED00 SWAP1 JUMP JUMPDEST PUSH2 0x1B5D DUP2 PUSH2 0xA19 JUMP JUMPDEST PUSH2 0x1326 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x80145753 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP2 SWAP1 PUSH2 0x3FB3 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EQ PUSH2 0x1BAA JUMPI PUSH1 0x40 MLOAD PUSH4 0x6C83FB1B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xB1C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BB4 PUSH2 0x2951 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 POP PUSH1 0x1 PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x1BE7 JUMPI PUSH2 0x1BE7 PUSH2 0x410B JUMP JUMPDEST EQ PUSH2 0x1C1A JUMPI DUP4 DUP2 PUSH1 0x2 ADD PUSH1 0x18 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x40 MLOAD PUSH4 0xD5D8EACB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP3 SWAP2 SWAP1 PUSH2 0x4589 JUMP JUMPDEST DUP1 SLOAD DUP4 EQ PUSH2 0x1C41 JUMPI DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xCC452837 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xB1C SWAP2 DUP7 SWAP2 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4639 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1C70 JUMPI PUSH1 0x40 MLOAD PUSH4 0xC84052F9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xB1C JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0xC8 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1C99 JUMPI PUSH1 0x1 DUP2 ADD DUP1 SLOAD PUSH1 0xFF PUSH1 0xC8 SHL NOT AND PUSH1 0x1 PUSH1 0xC8 SHL OR SWAP1 SSTORE JUMPDEST PUSH1 0x2 DUP2 ADD DUP1 SLOAD PUSH1 0xFF PUSH1 0xC0 SHL NOT AND PUSH1 0x1 PUSH1 0xC2 SHL OR SWAP1 SSTORE PUSH1 0x40 MLOAD DUP5 SWAP1 PUSH32 0x17C3690813E5FF9135B87FD91848109978B23DB8E471498D18886560DA7F2867 SWAP1 PUSH1 0x0 SWAP1 LOG2 SLOAD SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1D29 JUMPI DUP2 CALLVALUE EQ PUSH2 0x1D16 JUMPI CALLVALUE DUP3 PUSH1 0x40 MLOAD PUSH4 0x1456115 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP3 SWAP2 SWAP1 PUSH2 0x45E9 JUMP JUMPDEST PUSH2 0xBB0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND CALLVALUE PUSH2 0x333E JUMP JUMPDEST PUSH1 0x0 NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADD PUSH2 0x1D5C JUMPI CALLVALUE ISZERO PUSH2 0xBB0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x47D67299 PUSH1 0xE0 SHL DUP2 MSTORE CALLVALUE PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xB1C JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x1D7D JUMPI PUSH1 0x40 MLOAD PUSH4 0x47D67299 PUSH1 0xE0 SHL DUP2 MSTORE CALLVALUE PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xB1C JUMP JUMPDEST PUSH2 0xBB0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER DUP4 DUP6 PUSH2 0x33D7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D9C PUSH2 0x1A55 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP PUSH1 0xFF SWAP1 SWAP2 AND SWAP1 DUP1 PUSH2 0x1DC0 DUP6 PUSH2 0x3431 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 DUP3 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x1DD9 JUMPI PUSH2 0x1DD9 PUSH2 0x410B JUMP JUMPDEST SUB PUSH2 0x1E3A JUMPI PUSH1 0x0 PUSH2 0x1DE9 DUP7 PUSH2 0x1AC2 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x3 DUP8 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP1 DUP4 AND CALLER EQ PUSH2 0x1E28 JUMPI PUSH2 0x1E23 DUP3 DUP3 DUP10 PUSH1 0x63 PUSH1 0x1 PUSH2 0x2635 JUMP JUMPDEST PUSH2 0x1E37 JUMP JUMPDEST PUSH2 0x1E37 DUP3 DUP3 DUP10 PUSH1 0x63 PUSH1 0x1 PUSH2 0x1FDB JUMP JUMPDEST POP POP JUMPDEST PUSH1 0x3 DUP4 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x1E4E JUMPI PUSH2 0x1E4E PUSH2 0x410B JUMP JUMPDEST EQ DUP1 PUSH2 0x1E6B JUMPI POP PUSH1 0x2 DUP4 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x1E69 JUMPI PUSH2 0x1E69 PUSH2 0x410B JUMP JUMPDEST EQ JUMPDEST DUP1 PUSH2 0x1E87 JUMPI POP PUSH1 0x0 DUP4 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x1E85 JUMPI PUSH2 0x1E85 PUSH2 0x410B JUMP JUMPDEST EQ JUMPDEST ISZERO PUSH2 0x1E93 JUMPI POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP4 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x1EA7 JUMPI PUSH2 0x1EA7 PUSH2 0x410B JUMP JUMPDEST SUB PUSH2 0x1EC9 JUMPI DUP5 DUP4 PUSH1 0x40 MLOAD PUSH4 0xE4E3B53B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP3 SWAP2 SWAP1 PUSH2 0x4589 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x3 DUP6 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 DUP2 ADD SLOAD TIMESTAMP GT ISZERO PUSH2 0x1F1D JUMPI PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x4 DUP7 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x2 OR SWAP1 SSTORE MLOAD DUP8 SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4905 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 LOG2 POP POP POP POP POP POP JUMP JUMPDEST DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xD4CDE2AF PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xB1C SWAP2 DUP9 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH1 0x4 ADD PUSH2 0x3F06 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1F70 JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP2 SWAP1 PUSH2 0x3FB3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F7D DUP4 DUP4 CALLER PUSH2 0x3485 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xCCC JUMPI DUP4 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH4 0x64283D7B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x464F JUMP JUMPDEST PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 SWAP1 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1FE7 DUP3 DUP3 PUSH2 0x349A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FF1 PUSH2 0x2951 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 POP PUSH1 0x1 PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x2024 JUMPI PUSH2 0x2024 PUSH2 0x410B JUMP JUMPDEST EQ PUSH2 0x2057 JUMPI DUP6 DUP2 PUSH1 0x2 ADD PUSH1 0x18 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x40 MLOAD PUSH4 0xD5D8EACB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP3 SWAP2 SWAP1 PUSH2 0x4589 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x2087 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1186FDBD PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xB1C JUMP JUMPDEST PUSH1 0x3 DUP1 DUP3 ADD DUP1 SLOAD PUSH2 0xFFFF DUP8 DUP2 AND PUSH1 0x1 PUSH1 0x40 SHL MUL PUSH2 0xFFFF PUSH1 0x40 SHL NOT SWAP2 DUP11 AND PUSH1 0x1 PUSH1 0x30 SHL MUL SWAP2 SWAP1 SWAP2 AND PUSH4 0xFFFFFFFF PUSH1 0x30 SHL NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR OR SWAP1 SSTORE PUSH1 0x2 DUP3 ADD DUP1 SLOAD PUSH1 0xFF PUSH1 0xC0 SHL NOT AND PUSH1 0x1 PUSH1 0xC0 SHL DUP4 MUL OR SWAP1 SSTORE POP DUP6 PUSH32 0x48E256CE3DA490E3BBBA80F056BB54EC3D7264F8AD7D152B77BF8C2ECA3DB5A5 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x210B SWAP3 SWAP2 SWAP1 PUSH2 0x4672 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1326 DUP2 CALLER PUSH2 0x34DA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2132 PUSH2 0x1FB7 JUMP JUMPDEST SWAP1 POP PUSH2 0x213E DUP5 DUP5 PUSH2 0x105F JUMP JUMPDEST PUSH2 0x21BE JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x2174 CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0x939 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x939 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x21D3 PUSH2 0x1FB7 JUMP JUMPDEST SWAP1 POP PUSH2 0x21DF DUP5 DUP5 PUSH2 0x105F JUMP JUMPDEST ISZERO PUSH2 0x21BE JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP8 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0x939 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH2 0x22C7 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x22BB PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4945 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x22E5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4925 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0xA00 DUP2 PUSH2 0x211D JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x2359 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x2356 SWAP2 DUP2 ADD SWAP1 PUSH2 0x4687 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x2378 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP2 SWAP1 PUSH2 0x3FB3 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4945 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 EQ PUSH2 0x23A9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xB1C JUMP JUMPDEST PUSH2 0xBB0 DUP4 DUP4 PUSH2 0x3505 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x22E5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 DUP6 PUSH2 0x2408 DUP3 DUP3 PUSH2 0x349A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2412 PUSH2 0x2951 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 POP PUSH1 0x1 PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x2445 JUMPI PUSH2 0x2445 PUSH2 0x410B JUMP JUMPDEST EQ PUSH2 0x2478 JUMPI DUP7 DUP2 PUSH1 0x2 ADD PUSH1 0x18 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x40 MLOAD PUSH4 0xD5D8EACB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP3 SWAP2 SWAP1 PUSH2 0x4589 JUMP JUMPDEST DUP6 DUP2 SSTORE PUSH1 0x2 DUP2 ADD DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP3 ADD DUP1 SLOAD PUSH2 0xFFFF PUSH1 0xC0 SHL NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 DUP2 AND DUP5 EQ PUSH1 0x1 PUSH1 0xC0 SHL MUL PUSH1 0xFF PUSH1 0xC8 SHL NOT AND SWAP2 SWAP1 SWAP2 OR SWAP1 DUP12 AND SWAP1 SWAP3 EQ PUSH1 0x1 PUSH1 0xC8 SHL MUL SWAP2 SWAP1 SWAP2 OR DUP1 DUP3 SSTORE PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH6 0xFFFFFFFF0000 NOT AND PUSH3 0x10000 PUSH2 0xFFFF DUP11 DUP2 AND SWAP2 SWAP1 SWAP2 MUL PUSH2 0xFFFF PUSH1 0x20 SHL NOT AND SWAP2 SWAP1 SWAP2 OR PUSH1 0x1 PUSH1 0x20 SHL SWAP2 DUP10 AND SWAP2 SWAP1 SWAP2 MUL OR SWAP1 SSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP1 PUSH1 0x14 PUSH2 0x2523 DUP4 PUSH2 0x46A0 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x100 SWAP3 SWAP1 SWAP3 EXP PUSH4 0xFFFFFFFF DUP2 DUP2 MUL NOT SWAP1 SWAP4 AND SWAP2 DUP4 AND MUL OR SWAP1 SWAP2 SSTORE PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x1 DUP5 ADD SLOAD DUP5 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP7 POP DUP4 AND SWAP5 DUP14 SWAP5 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x48C5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP5 PUSH2 0x25A3 SWAP5 SWAP4 PUSH1 0x1 PUSH1 0xC0 SHL DUP3 DIV PUSH1 0xFF SWAP1 DUP2 AND SWAP5 PUSH1 0x1 PUSH1 0xC8 SHL DUP5 DIV SWAP1 SWAP2 AND SWAP4 PUSH1 0x1 PUSH1 0xA0 SHL SWAP4 DUP5 SWAP1 DIV DUP3 AND SWAP4 SWAP1 DIV AND SWAP1 PUSH2 0x46C3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0x3 DUP3 ADD SLOAD PUSH1 0x40 MLOAD DUP10 SWAP3 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4985 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP3 PUSH2 0x2622 SWAP3 PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xC8 SHL DUP5 DIV DUP2 AND SWAP4 PUSH1 0x1 PUSH1 0xD8 SHL DUP2 DIV DUP3 AND SWAP4 PUSH1 0x1 PUSH1 0xE8 SHL SWAP1 SWAP2 DIV DUP3 AND SWAP3 DUP2 DUP4 AND SWAP3 PUSH3 0x10000 DUP4 DIV DUP2 AND SWAP3 PUSH1 0x1 PUSH1 0x20 SHL DUP2 DIV DUP3 AND SWAP3 PUSH1 0x1 PUSH1 0x30 SHL DUP3 DIV DUP4 AND SWAP3 PUSH1 0x1 PUSH1 0x40 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND SWAP1 PUSH2 0x431E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP5 DUP5 PUSH2 0x2641 DUP3 DUP3 PUSH2 0x349A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x264B PUSH2 0x2951 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 POP PUSH1 0x1 PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x267E JUMPI PUSH2 0x267E PUSH2 0x410B JUMP JUMPDEST EQ PUSH2 0x26B1 JUMPI DUP6 DUP2 PUSH1 0x2 ADD PUSH1 0x18 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x40 MLOAD PUSH4 0xD5D8EACB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP3 SWAP2 SWAP1 PUSH2 0x4589 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER SUB PUSH2 0x26E1 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3060D8F7 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xB1C JUMP JUMPDEST PUSH1 0x2 DUP2 ADD DUP1 SLOAD PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH2 0xFFFF DUP9 DUP2 AND PUSH2 0xFFFF NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE DUP8 AND PUSH1 0x1 PUSH1 0xE8 SHL MUL PUSH1 0xFF PUSH1 0xC0 SHL NOT AND PUSH7 0xFFFF00000000FF PUSH1 0xC0 SHL NOT SWAP1 SWAP2 AND OR PUSH1 0x1 PUSH1 0xC1 SHL OR DUP1 DUP3 SSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP1 PUSH1 0x14 PUSH2 0x2742 DUP4 PUSH2 0x46A0 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP DUP6 PUSH32 0xAB78BA855F2FDB28BEB212A9B3F41A33CDA034729848CD452F0CC96528C23A80 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x210B SWAP3 SWAP2 SWAP1 PUSH2 0x4672 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH2 0x27BF PUSH2 0x355B JUMP JUMPDEST PUSH2 0xA00 DUP3 DUP3 PUSH2 0x3580 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27D3 PUSH2 0x35AE JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 NOT ADD PUSH2 0x27F9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3EE5AEB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2829 JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP2 SWAP1 PUSH2 0x3FB3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2837 DUP4 DUP4 PUSH1 0x0 PUSH2 0x3485 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x2863 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7E273289 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xB1C JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xCCC JUMPI DUP4 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH4 0x64283D7B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x464F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28A5 PUSH2 0x35AE JUMP JUMPDEST PUSH1 0x1 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28B6 PUSH2 0x1A9E JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x28E1 JUMPI DUP3 PUSH1 0x40 MLOAD PUSH4 0xB611743 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP2 SWAP1 PUSH2 0x3FB3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 DUP5 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP9 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP8 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH32 0xB8FB32FFC7043FDA9E0EE2BCB4236ACF95AB448752C73EFF6CC7F2640FF8500 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EXTCODESIZE ISZERO PUSH2 0x2A85 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0x29B7 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x46EF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x29F2 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x29EF SWAP2 DUP2 ADD SWAP1 PUSH2 0x472C JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x2A52 JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x2A20 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2A25 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0x2A4A JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP2 SWAP1 PUSH2 0x3FB3 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ PUSH2 0x1525 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP2 SWAP1 PUSH2 0x3FB3 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP4 DUP4 PUSH2 0x2A98 DUP3 DUP3 PUSH2 0x349A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2AA2 PUSH2 0x2951 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 POP PUSH1 0x1 PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x2AD5 JUMPI PUSH2 0x2AD5 PUSH2 0x410B JUMP JUMPDEST EQ PUSH2 0x2B08 JUMPI DUP5 DUP2 PUSH1 0x2 ADD PUSH1 0x18 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x40 MLOAD PUSH4 0xD5D8EACB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP3 SWAP2 SWAP1 PUSH2 0x4589 JUMP JUMPDEST DUP1 SLOAD DUP5 EQ PUSH2 0x2B2F JUMPI DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xCC452837 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xB1C SWAP2 DUP8 SWAP2 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x4639 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND CALLER SUB PUSH2 0x2B59 JUMPI PUSH1 0x1 DUP2 ADD DUP1 SLOAD PUSH1 0xFF PUSH1 0xC0 SHL NOT AND PUSH1 0x1 PUSH1 0xC0 SHL OR SWAP1 SSTORE PUSH2 0x2B6F JUMP JUMPDEST PUSH1 0x1 DUP2 ADD DUP1 SLOAD PUSH1 0xFF PUSH1 0xC8 SHL NOT AND PUSH1 0x1 PUSH1 0xC8 SHL OR SWAP1 SSTORE JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0x1 DUP3 ADD SLOAD DUP3 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP5 SWAP1 DUP5 AND SWAP4 DUP11 SWAP4 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x48C5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP4 PUSH2 0x2BDA SWAP4 SWAP2 SWAP3 PUSH1 0xFF PUSH1 0x1 PUSH1 0xC0 SHL DUP3 DIV DUP2 AND SWAP4 PUSH1 0x1 PUSH1 0xC8 SHL DUP4 DIV SWAP1 SWAP2 AND SWAP3 PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0xA0 SHL SWAP4 DUP5 SWAP1 DIV DUP2 AND SWAP4 SWAP1 SWAP3 DIV SWAP1 SWAP2 AND SWAP1 PUSH2 0x46C3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0x3 DUP3 ADD SLOAD PUSH1 0x40 MLOAD DUP8 SWAP3 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4985 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP3 PUSH2 0x2C59 SWAP3 PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xC8 SHL DUP5 DIV DUP2 AND SWAP4 PUSH1 0x1 PUSH1 0xD8 SHL DUP2 DIV DUP3 AND SWAP4 PUSH1 0x1 PUSH1 0xE8 SHL SWAP1 SWAP2 DIV DUP3 AND SWAP3 DUP2 DUP4 AND SWAP3 PUSH3 0x10000 DUP4 DIV DUP2 AND SWAP3 PUSH1 0x1 PUSH1 0x20 SHL DUP2 DIV DUP3 AND SWAP3 PUSH1 0x1 PUSH1 0x30 SHL DUP3 DIV DUP4 AND SWAP3 PUSH1 0x1 PUSH1 0x40 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND SWAP1 PUSH2 0x431E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x22E5 PUSH2 0x355B JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x2C7E PUSH2 0x35D2 JUMP JUMPDEST SWAP1 POP PUSH2 0x2C89 DUP4 PUSH2 0x1AC2 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH2 0x2CA3 SWAP1 PUSH2 0x4532 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x2CCF SWAP1 PUSH2 0x4532 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2D1C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2CF1 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2D1C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2CFF JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x0 PUSH2 0x2D3A PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0x2D4D JUMPI POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x2D80 JUMPI DUP1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2D67 SWAP3 SWAP2 SWAP1 PUSH2 0x4749 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP4 POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2D89 DUP6 PUSH2 0x35F6 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xA00 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x366A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DB6 PUSH2 0x35D2 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH2 0x2DD1 DUP4 DUP3 PUSH2 0x47C0 JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP4 DUP2 MSTORE PUSH32 0xF8E1A15ABA9398E019F0B49DF1A4FDE98EE17AE345CB5F6B5E2C27F5033E8CE7 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E14 PUSH2 0x1A55 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP11 DUP12 AND DUP2 MSTORE SWAP9 DUP11 AND PUSH1 0x20 DUP1 DUP12 ADD SWAP2 DUP3 MSTORE DUP11 DUP4 ADD SWAP10 DUP11 MSTORE PUSH1 0x60 DUP12 ADD SWAP9 DUP10 MSTORE SWAP7 DUP12 AND PUSH1 0x80 DUP12 ADD SWAP1 DUP2 MSTORE PUSH1 0xA0 DUP12 ADD SWAP7 DUP8 MSTORE SWAP5 ISZERO ISZERO PUSH1 0xC0 DUP12 ADD SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP13 DUP14 MSTORE PUSH1 0x3 SWAP4 DUP5 ADD SWAP1 SWAP8 MSTORE SWAP11 KECCAK256 SWAP8 MLOAD DUP9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND SWAP2 DUP12 AND SWAP2 SWAP1 SWAP2 OR DUP10 SSTORE SWAP10 MLOAD PUSH1 0x1 DUP10 ADD DUP1 SLOAD DUP13 AND SWAP2 DUP12 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE SWAP6 MLOAD PUSH1 0x2 DUP9 ADD SSTORE POP SWAP3 MLOAD SWAP4 DUP6 ADD SWAP4 SWAP1 SWAP4 SSTORE SWAP1 MLOAD PUSH1 0x4 DUP5 ADD DUP1 SLOAD SWAP1 SWAP7 AND SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP4 SSTORE SWAP2 MLOAD PUSH1 0x5 DUP4 ADD SSTORE MLOAD PUSH1 0x6 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP6 DUP6 PUSH2 0x2EE8 DUP3 DUP3 PUSH2 0x349A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2EF2 PUSH2 0x2951 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 POP PUSH1 0x4 PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x2F25 JUMPI PUSH2 0x2F25 PUSH2 0x410B JUMP JUMPDEST EQ DUP1 PUSH2 0x2F50 JUMPI POP PUSH1 0x1 PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x2F4E JUMPI PUSH2 0x2F4E PUSH2 0x410B JUMP JUMPDEST EQ JUMPDEST ISZERO PUSH2 0x2F83 JUMPI DUP7 DUP2 PUSH1 0x2 ADD PUSH1 0x18 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x40 MLOAD PUSH4 0xD5D8EACB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP3 SWAP2 SWAP1 PUSH2 0x4589 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x2FA5 JUMPI PUSH2 0x2FA5 PUSH2 0x410B JUMP JUMPDEST SUB PUSH2 0x2FBF JUMPI PUSH1 0x1 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE JUMPDEST CALLER DUP2 PUSH1 0x2 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP6 DUP2 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP2 PUSH1 0x1 ADD PUSH1 0x18 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP2 PUSH1 0x1 ADD PUSH1 0x19 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP5 DUP2 PUSH1 0x2 ADD PUSH1 0x19 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP DUP4 DUP2 PUSH1 0x2 ADD PUSH1 0x1B PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 DUP2 PUSH1 0x2 ADD PUSH1 0x1D PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 DUP2 PUSH1 0x3 ADD PUSH1 0x2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 DUP2 PUSH1 0x3 ADD PUSH1 0x4 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 DUP2 PUSH1 0x3 ADD PUSH1 0x6 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 DUP2 PUSH1 0x3 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP2 PUSH1 0x2 ADD PUSH1 0x18 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x3176 JUMPI PUSH2 0x3176 PUSH2 0x410B JUMP JUMPDEST MUL OR SWAP1 SSTORE POP PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0x1 DUP3 ADD SLOAD DUP3 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP5 SWAP1 DUP5 AND SWAP4 DUP13 SWAP4 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x48C5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP4 PUSH2 0x25A3 SWAP4 SWAP2 SWAP3 PUSH1 0xFF PUSH1 0x1 PUSH1 0xC0 SHL DUP3 DIV DUP2 AND SWAP4 PUSH1 0x1 PUSH1 0xC8 SHL DUP4 DIV SWAP1 SWAP2 AND SWAP3 PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0xA0 SHL SWAP4 DUP5 SWAP1 DIV DUP2 AND SWAP4 SWAP1 SWAP3 DIV SWAP1 SWAP2 AND SWAP1 PUSH2 0x46C3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x24832483 PUSH1 0xE1 SHL EQ DUP1 PUSH2 0x939 JUMPI POP PUSH2 0x939 DUP3 PUSH2 0x3682 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3216 PUSH2 0x1A9E JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x2 ADD PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x323E PUSH2 0x1A9E JUMP JUMPDEST SWAP1 POP DUP2 DUP1 PUSH2 0x3254 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x330D JUMPI PUSH1 0x0 PUSH2 0x3264 DUP6 PUSH2 0x1AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x3290 JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x32A3 JUMPI POP PUSH2 0x32A1 DUP2 DUP6 PUSH2 0x1969 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x32C3 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0xA9FBF51F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP2 SWAP1 PUSH2 0x3FB3 JUMP JUMPDEST DUP3 ISZERO PUSH2 0x330B JUMPI DUP5 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x4 ADD PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH2 0x3363 JUMPI SELFBALANCE DUP2 PUSH1 0x40 MLOAD PUSH4 0xCF479181 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP3 SWAP2 SWAP1 PUSH2 0x45E9 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x33B0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x33B5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0xBB0 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x23B872DD PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0xCCC SWAP1 DUP6 SWAP1 PUSH2 0x36A7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x343C PUSH2 0x2951 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3461 PUSH2 0x2951 JUMP JUMPDEST PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP4 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP3 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3492 DUP5 DUP5 DUP5 PUSH2 0x370F JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EQ DUP1 ISZERO SWAP1 PUSH2 0x34BC JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ ISZERO JUMPDEST ISZERO PUSH2 0xA00 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4793D281 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x34E4 DUP3 DUP3 PUSH2 0x105F JUMP JUMPDEST PUSH2 0xA00 JUMPI DUP1 DUP3 PUSH1 0x40 MLOAD PUSH4 0xE2517D3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP3 SWAP2 SWAP1 PUSH2 0x45A6 JUMP JUMPDEST PUSH2 0x350E DUP3 PUSH2 0x379D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x3553 JUMPI PUSH2 0xBB0 DUP3 DUP3 PUSH2 0x37F9 JUMP JUMPDEST PUSH2 0xA00 PUSH2 0x3866 JUMP JUMPDEST PUSH2 0x3563 PUSH2 0x3885 JUMP JUMPDEST PUSH2 0x22E5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1AFCD79F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3588 PUSH2 0x355B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3592 PUSH2 0x1A9E JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x359F DUP5 DUP3 PUSH2 0x47C0 JUMP JUMPDEST POP PUSH1 0x1 DUP2 ADD PUSH2 0xCCC DUP4 DUP3 PUSH2 0x47C0 JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 SWAP1 JUMP JUMPDEST PUSH32 0x542A41881EE128A365A727B282C86FA859579490B9BB45AAB8503648C8E7900 SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x3601 DUP3 PUSH2 0x1AC2 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x3619 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x3639 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x1CDD JUMP JUMPDEST DUP1 PUSH2 0x3643 DUP5 PUSH2 0x389F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3654 SWAP3 SWAP2 SWAP1 PUSH2 0x4749 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x3674 DUP4 DUP4 PUSH2 0x3931 JUMP JUMPDEST PUSH2 0xBB0 CALLER PUSH1 0x0 DUP6 DUP6 DUP6 PUSH2 0x2975 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x780E9D63 PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x939 JUMPI POP PUSH2 0x939 DUP3 PUSH2 0x3996 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 PUSH1 0x0 DUP5 MLOAD PUSH1 0x20 DUP7 ADD PUSH1 0x0 DUP9 GAS CALL DUP1 PUSH2 0x36CA JUMPI PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST POP POP PUSH1 0x0 MLOAD RETURNDATASIZE SWAP2 POP DUP2 ISZERO PUSH2 0x36E2 JUMPI DUP1 PUSH1 0x1 EQ ISZERO PUSH2 0x36EF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0xCCC JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP2 SWAP1 PUSH2 0x3FB3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x371D DUP6 DUP6 DUP6 PUSH2 0x39E6 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x373B JUMPI PUSH2 0x3736 DUP5 PUSH2 0x3AED JUMP JUMPDEST PUSH2 0x375E JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x375E JUMPI PUSH2 0x375E DUP2 DUP6 PUSH2 0x3B26 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x377A JUMPI PUSH2 0x3775 DUP5 PUSH2 0x3BBF JUMP JUMPDEST PUSH2 0x3492 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x3492 JUMPI PUSH2 0x3492 DUP6 DUP6 PUSH2 0x3C88 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH2 0x37CA JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP2 SWAP1 PUSH2 0x3FB3 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4945 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x3816 SWAP2 SWAP1 PUSH2 0x487F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3851 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3856 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x2D89 DUP6 DUP4 DUP4 PUSH2 0x3CE0 JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x22E5 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x388F PUSH2 0x2793 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x38AC DUP4 PUSH2 0x3D33 JUMP JUMPDEST PUSH1 0x1 ADD SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x38CB JUMPI PUSH2 0x38CB PUSH2 0x4152 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x38F5 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 DUP2 ADD PUSH1 0x20 ADD JUMPDEST PUSH1 0x0 NOT ADD PUSH16 0x181899199A1A9B1B9C1CB0B131B232B3 PUSH1 0x81 SHL PUSH1 0xA DUP7 MOD BYTE DUP2 MSTORE8 PUSH1 0xA DUP6 DIV SWAP5 POP DUP5 PUSH2 0x38FF JUMPI POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x395B JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP2 SWAP1 PUSH2 0x3FB3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3969 DUP4 DUP4 PUSH1 0x0 PUSH2 0x3485 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0xBB0 JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0x39E35637 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP2 SWAP1 PUSH2 0x3FB3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x39C7 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x939 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x939 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x39F1 PUSH2 0x1A9E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x39FE DUP6 PUSH2 0x320B JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO PUSH2 0x3A1A JUMPI PUSH2 0x3A1A DUP2 DUP6 DUP8 PUSH2 0x3E09 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x3A5A JUMPI PUSH2 0x3A37 PUSH1 0x0 DUP7 PUSH1 0x0 DUP1 PUSH2 0x3234 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND ISZERO PUSH2 0x3A8B JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x2 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP9 SWAP4 SWAP2 DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3AF7 PUSH2 0x1B30 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD DUP1 SLOAD PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x3 SWAP1 SWAP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP5 KECCAK256 DUP3 SWAP1 SSTORE PUSH1 0x1 DUP3 ADD DUP4 SSTORE SWAP2 DUP4 MSTORE SWAP2 KECCAK256 ADD SWAP2 SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B30 PUSH2 0x1B30 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3B3D DUP5 PUSH2 0xEAE JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP5 MSTORE SWAP2 DUP7 SWAP1 MSTORE SWAP1 SWAP2 KECCAK256 SWAP2 SWAP3 POP SWAP1 DUP2 DUP4 EQ PUSH2 0x3B97 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD DUP6 DUP5 MSTORE DUP2 DUP5 KECCAK256 DUP2 SWAP1 SSTORE DUP4 MSTORE PUSH1 0x1 DUP8 ADD SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP3 SWAP1 SSTORE JUMPDEST PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x1 SWAP1 SWAP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 DUP7 SWAP1 SSTORE SWAP3 DUP6 MSTORE SWAP3 SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3BC9 PUSH2 0x1B30 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x3BE0 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x489B JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x3 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x2 DUP6 ADD DUP1 SLOAD SWAP4 SWAP5 POP SWAP1 SWAP3 DUP5 SWAP1 DUP2 LT PUSH2 0x3C0C JUMPI PUSH2 0x3C0C PUSH2 0x45BF JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP5 PUSH1 0x2 ADD DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x3C2F JUMPI PUSH2 0x3C2F PUSH2 0x45BF JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE DUP3 DUP2 MSTORE PUSH1 0x3 DUP7 ADD SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP5 SWAP1 SSTORE DUP7 DUP3 MSTORE DUP2 KECCAK256 SSTORE PUSH1 0x2 DUP5 ADD DUP1 SLOAD DUP1 PUSH2 0x3C6B JUMPI PUSH2 0x3C6B PUSH2 0x48AE JUMP JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C92 PUSH2 0x1B30 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH2 0x3CA1 DUP6 PUSH2 0xEAE JUMP JUMPDEST PUSH2 0x3CAB SWAP2 SWAP1 PUSH2 0x489B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP4 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 SWAP1 SSTORE SWAP5 DUP3 MSTORE PUSH1 0x1 SWAP1 SWAP4 ADD SWAP1 SWAP3 MSTORE POP KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x3CF5 JUMPI PUSH2 0x3CF0 DUP3 PUSH2 0x3E5F JUMP JUMPDEST PUSH2 0x1CDD JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x3D0C JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x3D2C JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP2 SWAP1 PUSH2 0x3FB3 JUMP JUMPDEST POP DUP1 PUSH2 0x1CDD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP4 LT PUSH2 0x3D72 JUMPI PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP4 DIV SWAP3 POP PUSH1 0x40 ADD JUMPDEST PUSH10 0x4EE2D6D415B85ACEF81 PUSH1 0x20 SHL DUP4 LT PUSH2 0x3D9C JUMPI PUSH10 0x4EE2D6D415B85ACEF81 PUSH1 0x20 SHL DUP4 DIV SWAP3 POP PUSH1 0x20 ADD JUMPDEST PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0x3DBA JUMPI PUSH7 0x2386F26FC10000 DUP4 DIV SWAP3 POP PUSH1 0x10 ADD JUMPDEST PUSH4 0x5F5E100 DUP4 LT PUSH2 0x3DD2 JUMPI PUSH4 0x5F5E100 DUP4 DIV SWAP3 POP PUSH1 0x8 ADD JUMPDEST PUSH2 0x2710 DUP4 LT PUSH2 0x3DE6 JUMPI PUSH2 0x2710 DUP4 DIV SWAP3 POP PUSH1 0x4 ADD JUMPDEST PUSH1 0x64 DUP4 LT PUSH2 0x3DF8 JUMPI PUSH1 0x64 DUP4 DIV SWAP3 POP PUSH1 0x2 ADD JUMPDEST PUSH1 0xA DUP4 LT PUSH2 0x939 JUMPI PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x3E14 DUP4 DUP4 DUP4 PUSH2 0x3E88 JUMP JUMPDEST PUSH2 0xBB0 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x3E42 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7E273289 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xB1C JUMP JUMPDEST DUP2 DUP2 PUSH1 0x40 MLOAD PUSH4 0x177E802F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP3 SWAP2 SWAP1 PUSH2 0x45A6 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x3E6F JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x3492 JUMPI POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x3EC2 JUMPI POP PUSH2 0x3EC2 DUP5 DUP5 PUSH2 0x1969 JUMP JUMPDEST DUP1 PUSH2 0x3492 JUMPI POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3EDB DUP4 PUSH2 0x1AFA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3EFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1326 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1CDD DUP2 PUSH2 0x3F1D JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3F6B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3F53 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x3F8C DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x3F50 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1CDD PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3F74 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1326 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3FEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3FFA DUP2 PUSH2 0x3FC7 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x401A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1CDD DUP2 PUSH2 0x3FC7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4038 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x405C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x4067 DUP2 PUSH2 0x3FC7 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x4077 DUP2 PUSH2 0x3FC7 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x409A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x40B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH2 0x40C4 PUSH1 0x20 DUP6 ADD PUSH2 0x4088 JUMP JUMPDEST SWAP2 POP PUSH2 0x40D2 PUSH1 0x40 DUP6 ADD PUSH2 0x4088 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x40EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4100 DUP2 PUSH2 0x3FC7 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x5 DUP2 LT PUSH2 0x1326 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x414C DUP4 PUSH2 0x4121 JUMP JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4179 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4193 JUMPI PUSH2 0x4193 PUSH2 0x4152 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x41BB JUMPI PUSH2 0x41BB PUSH2 0x4152 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE DUP7 PUSH1 0x20 DUP6 DUP9 ADD ADD GT ISZERO PUSH2 0x41D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH1 0x20 DUP8 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP6 DUP4 ADD ADD MSTORE DUP1 SWAP5 POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4207 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4212 DUP2 PUSH2 0x3FC7 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x422D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4239 DUP6 DUP3 DUP7 ADD PUSH2 0x4168 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4259 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH2 0x4270 PUSH1 0x40 DUP7 ADD PUSH2 0x4088 JUMP JUMPDEST SWAP2 POP PUSH2 0x427E PUSH1 0x60 DUP7 ADD PUSH2 0x4088 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x429C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x42B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x42BF DUP7 DUP4 DUP8 ADD PUSH2 0x4168 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x42D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4239 DUP6 DUP3 DUP7 ADD PUSH2 0x4168 JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1326 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4303 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x430E DUP2 PUSH2 0x3FC7 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4100 DUP2 PUSH2 0x42E2 JUMP JUMPDEST PUSH2 0xFFFF SWAP9 DUP10 AND DUP2 MSTORE SWAP7 DUP9 AND PUSH1 0x20 DUP9 ADD MSTORE SWAP5 DUP8 AND PUSH1 0x40 DUP8 ADD MSTORE SWAP3 DUP7 AND PUSH1 0x60 DUP7 ADD MSTORE SWAP1 DUP6 AND PUSH1 0x80 DUP6 ADD MSTORE DUP5 AND PUSH1 0xA0 DUP5 ADD MSTORE DUP4 AND PUSH1 0xC0 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4379 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x4384 DUP2 PUSH2 0x3FC7 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x4394 DUP2 PUSH2 0x3FC7 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x43B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43C2 DUP8 DUP3 DUP9 ADD PUSH2 0x4168 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH2 0x100 DUP2 ADD PUSH2 0x43DC DUP11 PUSH2 0x4121 JUMP JUMPDEST SWAP9 DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP8 SWAP1 SWAP8 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND PUSH1 0x40 DUP9 ADD MSTORE SWAP4 SWAP1 SWAP5 AND PUSH1 0x60 DUP7 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x80 DUP6 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP5 ADD MSTORE PUSH4 0xFFFFFFFF SWAP2 DUP3 AND PUSH1 0xC0 DUP5 ADD MSTORE AND PUSH1 0xE0 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x443B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x4446 DUP2 PUSH2 0x3FC7 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x4456 DUP2 PUSH2 0x3FC7 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x4466 DUP2 PUSH2 0x3FC7 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x448C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x4497 DUP2 PUSH2 0x3FC7 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x44B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x44BE DUP11 DUP3 DUP12 ADD PUSH2 0x4168 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH2 0x44DD DUP2 PUSH2 0x3FC7 JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD PUSH2 0x44F4 DUP2 PUSH2 0x42E2 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4517 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4522 DUP2 PUSH2 0x3FC7 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4100 DUP2 PUSH2 0x3FC7 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x4546 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x4566 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x457E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1CDD DUP2 PUSH2 0x42E2 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x40 DUP2 ADD PUSH2 0x4599 DUP4 PUSH2 0x4121 JUMP JUMPDEST DUP3 PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x939 JUMPI PUSH2 0x939 PUSH2 0x45F7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x4632 JUMPI PUSH2 0x4632 PUSH2 0x45F7 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH2 0xFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4699 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP1 DUP4 AND DUP2 DUP2 SUB PUSH2 0x46B9 JUMPI PUSH2 0x46B9 PUSH2 0x45F7 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SWAP5 DUP6 MSTORE SWAP3 ISZERO ISZERO PUSH1 0x20 DUP6 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x40 DUP5 ADD MSTORE PUSH4 0xFFFFFFFF SWAP1 DUP2 AND PUSH1 0x60 DUP5 ADD MSTORE AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x4722 SWAP1 DUP4 ADD DUP5 PUSH2 0x3F74 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x473E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1CDD DUP2 PUSH2 0x3F1D JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x475B DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x3F50 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x476F DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x3F50 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0xBB0 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH2 0x47A1 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1525 JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x47AD JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x47D9 JUMPI PUSH2 0x47D9 PUSH2 0x4152 JUMP JUMPDEST PUSH2 0x47ED DUP2 PUSH2 0x47E7 DUP5 SLOAD PUSH2 0x4532 JUMP JUMPDEST DUP5 PUSH2 0x4778 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x4822 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x480A JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH2 0x1525 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x4851 JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH2 0x4832 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH2 0x486F JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x4891 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x3F50 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x939 JUMPI PUSH2 0x939 PUSH2 0x45F7 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID PUSH11 0xAFAF6639750382D6DC665B 0xC6 LOG3 0xC7 RETURNDATASIZE SLOAD 0xE2 SMOD PUSH11 0x8739A69C860A2314032EB9 DUP2 0xC7 CREATE2 SDIV 0xB2 RETURN PUSH18 0xAE2175EE4913F4499E1F2633A7B5936321EE 0xD1 0xCD 0xAE 0xB6 GT MLOAD DUP2 0xD2 0xC4 PUSH27 0xB59D5C41A0220B594ECE6F7E87863B07F8B33579130F3A59B31D8F PUSH28 0x6EED189AB7A9244DF0848122154315AF71FE140F3DB0FE014031783B MULMOD CHAINID 0xB8 0xC9 0xD2 0xE3 CALLDATASIZE ADDMOD SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC3AE8648B97D3FD425D2628 PUSH16 0xC6BB1D50724A93A6A5763921DD2B9040 GAS DUP4 0xB4 LOG4 0xAD 0xE2 0xCE DUP12 CODECOPY SUB PUSH32 0x5140109F53FEF47C0491427B8B785AB83D35AA2931295CB790A2646970667358 0x22 SLT KECCAK256 PUSH0 CALL 0xAB PUSH31 0xD04F3284C48EEFD9C84EBE5B019C0853E20741AE588D1E84FA8D725B64736F PUSH13 0x63430008180033000000000000 ", + "sourceMap": "1763:30341:50:-:0;;;1171:4:3;1128:48;;1763:30341:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@DEFAULT_ADMIN_ROLE_28": { + "entryPoint": null, + "id": 28, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@MIN_EXPIRATION_ADMIN_ROLE_13020": { + "entryPoint": null, + "id": 13020, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@NATIVE_PAYMENT_13027": { + "entryPoint": null, + "id": 13027, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@OFFCHAIN_PAYMENT_13034": { + "entryPoint": null, + "id": 13034, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@UPGRADER_ROLE_13014": { + "entryPoint": null, + "id": 13014, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@UPGRADE_INTERFACE_VERSION_864": { + "entryPoint": null, + "id": 864, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@__AccessControl_init_63": { + "entryPoint": null, + "id": 63, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@__ERC721Enumerable_init_2165": { + "entryPoint": 11370, + "id": 2165, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@__ERC721URIStorage_init_2637": { + "entryPoint": null, + "id": 2637, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@__ERC721_init_1109": { + "entryPoint": 10167, + "id": 1109, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@__ERC721_init_unchained_1137": { + "entryPoint": 13696, + "id": 1137, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@__UUPSUpgradeable_init_894": { + "entryPoint": null, + "id": 894, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_acceptCancellation_15153": { + "entryPoint": 10892, + "id": 15153, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@_addTokenToAllTokensEnumeration_2423": { + "entryPoint": 15085, + "id": 2423, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_addTokenToOwnerEnumeration_2392": { + "entryPoint": 15496, + "id": 2392, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_approve_1953": { + "entryPoint": 6947, + "id": 1953, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_approve_2027": { + "entryPoint": 12852, + "id": 2027, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@_authorizeUpgrade_13293": { + "entryPoint": 8935, + "id": 13293, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_baseURI_1293": { + "entryPoint": null, + "id": 1293, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_callOptionalReturn_4908": { + "entryPoint": 13991, + "id": 4908, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_checkAuthorized_1573": { + "entryPoint": 15881, + "id": 1573, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_checkInitializing_762": { + "entryPoint": 13659, + "id": 762, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_checkNonPayable_3873": { + "entryPoint": 14438, + "id": 3873, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_checkNotDelegated_970": { + "entryPoint": 9139, + "id": 970, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_checkProxy_954": { + "entryPoint": 8768, + "id": 954, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_checkRole_129": { + "entryPoint": 8477, + "id": 129, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_checkRole_150": { + "entryPoint": 13530, + "id": 150, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_counterCancellation_15283": { + "entryPoint": 9212, + "id": 15283, + "parameterSlots": 6, + "returnSlots": 0 + }, + "@_finalizeCancellation_15531": { + "entryPoint": 7036, + "id": 15531, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@_getAccessControlStorage_46": { + "entryPoint": 8119, + "id": 46, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getApproved_1500": { + "entryPoint": 6906, + "id": 1500, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@_getBookingTokenCancellableStorage_14602": { + "entryPoint": 10577, + "id": 14602, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getBookingTokenStorage_13085": { + "entryPoint": 6741, + "id": 13085, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getCancellationProposalStatusAndCurrentProposer_14757": { + "entryPoint": 13361, + "id": 14757, + "parameterSlots": 1, + "returnSlots": 2 + }, + "@_getERC721EnumerableStorage_2149": { + "entryPoint": 6960, + "id": 2149, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getERC721Storage_1093": { + "entryPoint": 6814, + "id": 1093, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getERC721URIStorageStorage_2631": { + "entryPoint": 13778, + "id": 2631, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getInitializableStorage_839": { + "entryPoint": 10131, + "id": 839, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getReentrancyGuardStorage_3006": { + "entryPoint": 13742, + "id": 3006, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_grantRole_315": { + "entryPoint": 8487, + "id": 315, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_initiateCancellation_15044": { + "entryPoint": 11996, + "id": 15044, + "parameterSlots": 6, + "returnSlots": 0 + }, + "@_isAuthorized_1536": { + "entryPoint": 16008, + "id": 1536, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@_isInitializing_830": { + "entryPoint": 14469, + "id": 830, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_mint_1749": { + "entryPoint": 14641, + "id": 1749, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_msgSender_2784": { + "entryPoint": null, + "id": 2784, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_nonReentrantAfter_3088": { + "entryPoint": 10395, + "id": 3088, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_nonReentrantBefore_3072": { + "entryPoint": 10185, + "id": 3072, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_ownerOf_1480": { + "entryPoint": 12811, + "id": 1480, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@_rejectCancellation_15440": { + "entryPoint": 9781, + "id": 15440, + "parameterSlots": 5, + "returnSlots": 0 + }, + "@_removeTokenFromAllTokensEnumeration_2560": { + "entryPoint": 15295, + "id": 2560, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_removeTokenFromOwnerEnumeration_2496": { + "entryPoint": 15142, + "id": 2496, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_requireOwned_2101": { + "entryPoint": 6850, + "id": 2101, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@_reserve_13458": { + "entryPoint": 11786, + "id": 13458, + "parameterSlots": 8, + "returnSlots": 0 + }, + "@_revert_5480": { + "entryPoint": 15967, + "id": 5480, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_revokeRole_361": { + "entryPoint": 8648, + "id": 361, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_safeMint_1764": { + "entryPoint": 11666, + "id": 1764, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_safeMint_1794": { + "entryPoint": 13930, + "id": 1794, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_setApprovalForAll_2072": { + "entryPoint": 10412, + "id": 2072, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_setImplementation_3653": { + "entryPoint": 14237, + "id": 3653, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_setTokenURI_2755": { + "entryPoint": 11692, + "id": 2755, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_transfer_1887": { + "entryPoint": 10239, + "id": 1887, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_update_14488": { + "entryPoint": 13445, + "id": 14488, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@_update_1699": { + "entryPoint": 14822, + "id": 1699, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@_update_2351": { + "entryPoint": 14095, + "id": 2351, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@_upgradeToAndCallUUPS_1021": { + "entryPoint": 8959, + "id": 1021, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_withdrawCancellation_15359": { + "entryPoint": 8155, + "id": 15359, + "parameterSlots": 5, + "returnSlots": 0 + }, + "@acceptCancellation_14179": { + "entryPoint": 5242, + "id": 14179, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@approve_1309": { + "entryPoint": 2549, + "id": 1309, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@balanceOf_1203": { + "entryPoint": 3758, + "id": 1203, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@buyReservedToken_13562": { + "entryPoint": 4463, + "id": 13562, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@checkOnERC721Received_5221": { + "entryPoint": 10613, + "id": 5221, + "parameterSlots": 5, + "returnSlots": 0 + }, + "@checkTransferable_13874": { + "entryPoint": 7570, + "id": 13874, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@counterCancellation_14241": { + "entryPoint": 3846, + "id": 14241, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@finalizeCancellation_14440": { + "entryPoint": 2714, + "id": 14440, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@functionDelegateCall_5398": { + "entryPoint": 14329, + "id": 5398, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@getAddressSlot_5620": { + "entryPoint": null, + "id": 5620, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getApproved_1326": { + "entryPoint": 2528, + "id": 1326, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getBookingStatus_13664": { + "entryPoint": 3431, + "id": 13664, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getCancellationProposal_14807": { + "entryPoint": 5118, + "id": 14807, + "parameterSlots": 1, + "returnSlots": 8 + }, + "@getCancellationReasons_14856": { + "entryPoint": 4916, + "id": 14856, + "parameterSlots": 1, + "returnSlots": 8 + }, + "@getImplementation_3626": { + "entryPoint": null, + "id": 3626, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getManagerAddress_14023": { + "entryPoint": 5836, + "id": 14023, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getMinExpirationTimestampDiff_14061": { + "entryPoint": 2564, + "id": 14061, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getReservationPaymentToken_13716": { + "entryPoint": 5050, + "id": 13716, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getReservationPrice_13694": { + "entryPoint": 2289, + "id": 13694, + "parameterSlots": 1, + "returnSlots": 2 + }, + "@getRoleAdmin_171": { + "entryPoint": 2997, + "id": 171, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@grantRole_190": { + "entryPoint": 3248, + "id": 190, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@hasRole_116": { + "entryPoint": 4191, + "id": 116, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@initialize_13262": { + "entryPoint": 5421, + "id": 13262, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@initiateCancellation_14123": { + "entryPoint": 6568, + "id": 14123, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@isApprovedForAll_1366": { + "entryPoint": 6505, + "id": 1366, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@isCMAccount_13968": { + "entryPoint": 2585, + "id": 13968, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@isCancellable_13737": { + "entryPoint": 3210, + "id": 13737, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@log10_7767": { + "entryPoint": 15667, + "id": 7767, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@name_1232": { + "entryPoint": 2367, + "id": 1232, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@ownerOf_1216": { + "entryPoint": 3747, + "id": 1216, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@processPayment_13643": { + "entryPoint": 7396, + "id": 13643, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@proxiableUUID_912": { + "entryPoint": 3718, + "id": 912, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@recordExpiration_13951": { + "entryPoint": 6241, + "id": 13951, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@reinitializeV2_13282": { + "entryPoint": 4245, + "id": 13282, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@rejectCancellation_14359": { + "entryPoint": 4019, + "id": 14359, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@renounceRole_232": { + "entryPoint": 3380, + "id": 232, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@requireCMAccount_13985": { + "entryPoint": 6996, + "id": 13985, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@requireOwnerOrSupplier_14719": { + "entryPoint": 13466, + "id": 14719, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@revokeRole_209": { + "entryPoint": 5874, + "id": 209, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@safeMintWithReservation_13414": { + "entryPoint": 5902, + "id": 13414, + "parameterSlots": 7, + "returnSlots": 0 + }, + "@safeTransferFrom_1430": { + "entryPoint": 3522, + "id": 1430, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@safeTransferFrom_1460": { + "entryPoint": 5094, + "id": 1460, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@safeTransferFrom_4613": { + "entryPoint": 13271, + "id": 4613, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@sendValue_5279": { + "entryPoint": 13118, + "id": 5279, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@setApprovalForAll_1342": { + "entryPoint": 4905, + "id": 1342, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@setManagerAddress_14007": { + "entryPoint": 3466, + "id": 14007, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@setMinExpirationTimestampDiff_14045": { + "entryPoint": 3673, + "id": 14045, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@supportsInterface_1168": { + "entryPoint": 14742, + "id": 1168, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@supportsInterface_14540": { + "entryPoint": 2350, + "id": 14540, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@supportsInterface_2195": { + "entryPoint": 13954, + "id": 2195, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@supportsInterface_2664": { + "entryPoint": 12774, + "id": 2664, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@supportsInterface_3146": { + "entryPoint": null, + "id": 3146, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@supportsInterface_91": { + "entryPoint": 6777, + "id": 91, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@symbol_1248": { + "entryPoint": 4434, + "id": 1248, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@toString_5777": { + "entryPoint": 14495, + "id": 5777, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@tokenByIndex_2282": { + "entryPoint": 3576, + "id": 2282, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@tokenOfOwnerByIndex_2231": { + "entryPoint": 3282, + "id": 2231, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@tokenURI_1284": { + "entryPoint": 13814, + "id": 1284, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@tokenURI_14522": { + "entryPoint": 5863, + "id": 14522, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@tokenURI_2728": { + "entryPoint": 11378, + "id": 2728, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@totalSupply_2248": { + "entryPoint": 2703, + "id": 2248, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@transferFrom_1412": { + "entryPoint": 8006, + "id": 1412, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@transferFrom_14466": { + "entryPoint": 2972, + "id": 14466, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@upgradeToAndCall_3689": { + "entryPoint": 13573, + "id": 3689, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@upgradeToAndCall_932": { + "entryPoint": 3549, + "id": 932, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@verifyCallResultFromTarget_5438": { + "entryPoint": 15584, + "id": 5438, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@version_13008": { + "entryPoint": null, + "id": 13008, + "parameterSlots": 0, + "returnSlots": 3 + }, + "@withdrawCancellation_14300": { + "entryPoint": 3029, + "id": 14300, + "parameterSlots": 3, + "returnSlots": 0 + }, + "abi_decode_bytes": { + "entryPoint": 16744, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address": { + "entryPoint": 16392, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_address": { + "entryPoint": 17668, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_addresst_addresst_address": { + "entryPoint": 17446, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_addresst_addresst_uint256": { + "entryPoint": 16455, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr": { + "entryPoint": 17251, + "id": null, + "parameterSlots": 2, + "returnSlots": 4 + }, + "abi_decode_tuple_t_addresst_bool": { + "entryPoint": 17136, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_addresst_bytes_memory_ptr": { + "entryPoint": 16884, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_addresst_string_memory_ptrt_uint256t_uint256t_contract$_IERC20_$4513t_uint256t_bool": { + "entryPoint": 17521, + "id": null, + "parameterSlots": 2, + "returnSlots": 7 + }, + "abi_decode_tuple_t_addresst_uint256": { + "entryPoint": 16348, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_bool_fromMemory": { + "entryPoint": 17772, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32_fromMemory": { + "entryPoint": 18055, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32t_address": { + "entryPoint": 16603, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_bytes4": { + "entryPoint": 16179, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes4_fromMemory": { + "entryPoint": 18220, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr": { + "entryPoint": 17033, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_uint256": { + "entryPoint": 16109, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256t_uint16t_uint16": { + "entryPoint": 16543, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_uint256t_uint256": { + "entryPoint": 16421, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_uint256t_uint256t_uint16t_uint16": { + "entryPoint": 16963, + "id": null, + "parameterSlots": 2, + "returnSlots": 4 + }, + "abi_decode_uint16": { + "entryPoint": 16520, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_string": { + "entryPoint": 16244, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": 18559, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": 18249, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": 16307, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed": { + "entryPoint": 18159, + "id": null, + "parameterSlots": 5, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": { + "entryPoint": 17830, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_uint256_t_address__to_t_address_t_uint256_t_address__fromStack_reversed": { + "entryPoint": 17999, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_contract$_IERC20_$4513__to_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_enum$_BookingStatus_$13040__to_t_uint8__fromStack_reversed": { + "entryPoint": 16703, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_enum$_CancellationProposalStatus_$14549_t_uint256_t_address_t_address_t_bool_t_bool_t_uint32_t_uint32__to_t_uint8_t_uint256_t_address_t_address_t_bool_t_bool_t_uint32_t_uint32__fromStack_reversed": { + "entryPoint": 17358, + "id": null, + "parameterSlots": 9, + "returnSlots": 1 + }, + "abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": 16288, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint16_t_uint16__to_t_uint16_t_uint16__fromStack_reversed": { + "entryPoint": 18034, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint16_t_uint16_t_uint16__to_t_uint16_t_uint16_t_uint16__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16__to_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16__fromStack_reversed": { + "entryPoint": 17182, + "id": null, + "parameterSlots": 9, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_bool_t_bool_t_uint32_t_uint32__to_t_uint256_t_bool_t_bool_t_uint32_t_uint32__fromStack_reversed": { + "entryPoint": 18115, + "id": null, + "parameterSlots": 6, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_contract$_IERC20_$4513__to_t_uint256_t_address__fromStack_reversed": { + "entryPoint": 16134, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_enum$_BookingStatus_$13040__to_t_uint256_t_uint8__fromStack_reversed": { + "entryPoint": 17801, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_enum$_CancellationProposalStatus_$14549__to_t_uint256_t_uint8__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": 17897, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256_t_contract$_IERC20_$4513_t_uint256_t_bool__to_t_uint256_t_uint256_t_address_t_uint256_t_bool__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 6, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": 17977, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed": { + "entryPoint": 17877, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "array_dataslot_string_storage": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "checked_add_t_uint256": { + "entryPoint": 17933, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_sub_t_uint256": { + "entryPoint": 18587, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "clean_up_bytearray_end_slots_string_storage": { + "entryPoint": 18296, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage": { + "entryPoint": 18368, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "copy_memory_to_memory_with_cleanup": { + "entryPoint": 16208, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "extract_byte_array_length": { + "entryPoint": 17714, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "extract_used_part_and_set_length_of_short_byte_array": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "increment_t_uint256": { + "entryPoint": 17952, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "increment_t_uint32": { + "entryPoint": 18080, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "panic_error_0x11": { + "entryPoint": 17911, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x12": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x21": { + "entryPoint": 16651, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x31": { + "entryPoint": 18606, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x32": { + "entryPoint": 17855, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x41": { + "entryPoint": 16722, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "validator_assert_enum_BookingStatus": { + "entryPoint": 16673, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_address": { + "entryPoint": 16327, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_bool": { + "entryPoint": 17122, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_bytes4": { + "entryPoint": 16157, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nativeSrc": "0:23796:61", + "nodeType": "YulBlock", + "src": "0:23796:61", + "statements": [ + { + "nativeSrc": "6:3:61", + "nodeType": "YulBlock", + "src": "6:3:61", + "statements": [] + }, + { + "body": { + "nativeSrc": "84:110:61", + "nodeType": "YulBlock", + "src": "84:110:61", + "statements": [ + { + "body": { + "nativeSrc": "130:16:61", + "nodeType": "YulBlock", + "src": "130:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "139:1:61", + "nodeType": "YulLiteral", + "src": "139:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "142:1:61", + "nodeType": "YulLiteral", + "src": "142:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "132:6:61", + "nodeType": "YulIdentifier", + "src": "132:6:61" + }, + "nativeSrc": "132:12:61", + "nodeType": "YulFunctionCall", + "src": "132:12:61" + }, + "nativeSrc": "132:12:61", + "nodeType": "YulExpressionStatement", + "src": "132:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "105:7:61", + "nodeType": "YulIdentifier", + "src": "105:7:61" + }, + { + "name": "headStart", + "nativeSrc": "114:9:61", + "nodeType": "YulIdentifier", + "src": "114:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "101:3:61", + "nodeType": "YulIdentifier", + "src": "101:3:61" + }, + "nativeSrc": "101:23:61", + "nodeType": "YulFunctionCall", + "src": "101:23:61" + }, + { + "kind": "number", + "nativeSrc": "126:2:61", + "nodeType": "YulLiteral", + "src": "126:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "97:3:61", + "nodeType": "YulIdentifier", + "src": "97:3:61" + }, + "nativeSrc": "97:32:61", + "nodeType": "YulFunctionCall", + "src": "97:32:61" + }, + "nativeSrc": "94:52:61", + "nodeType": "YulIf", + "src": "94:52:61" + }, + { + "nativeSrc": "155:33:61", + "nodeType": "YulAssignment", + "src": "155:33:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "178:9:61", + "nodeType": "YulIdentifier", + "src": "178:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "165:12:61", + "nodeType": "YulIdentifier", + "src": "165:12:61" + }, + "nativeSrc": "165:23:61", + "nodeType": "YulFunctionCall", + "src": "165:23:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "155:6:61", + "nodeType": "YulIdentifier", + "src": "155:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256", + "nativeSrc": "14:180:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "50:9:61", + "nodeType": "YulTypedName", + "src": "50:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "61:7:61", + "nodeType": "YulTypedName", + "src": "61:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "73:6:61", + "nodeType": "YulTypedName", + "src": "73:6:61", + "type": "" + } + ], + "src": "14:180:61" + }, + { + "body": { + "nativeSrc": "343:145:61", + "nodeType": "YulBlock", + "src": "343:145:61", + "statements": [ + { + "nativeSrc": "353:26:61", + "nodeType": "YulAssignment", + "src": "353:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "365:9:61", + "nodeType": "YulIdentifier", + "src": "365:9:61" + }, + { + "kind": "number", + "nativeSrc": "376:2:61", + "nodeType": "YulLiteral", + "src": "376:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "361:3:61", + "nodeType": "YulIdentifier", + "src": "361:3:61" + }, + "nativeSrc": "361:18:61", + "nodeType": "YulFunctionCall", + "src": "361:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "353:4:61", + "nodeType": "YulIdentifier", + "src": "353:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "395:9:61", + "nodeType": "YulIdentifier", + "src": "395:9:61" + }, + { + "name": "value0", + "nativeSrc": "406:6:61", + "nodeType": "YulIdentifier", + "src": "406:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "388:6:61", + "nodeType": "YulIdentifier", + "src": "388:6:61" + }, + "nativeSrc": "388:25:61", + "nodeType": "YulFunctionCall", + "src": "388:25:61" + }, + "nativeSrc": "388:25:61", + "nodeType": "YulExpressionStatement", + "src": "388:25:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "433:9:61", + "nodeType": "YulIdentifier", + "src": "433:9:61" + }, + { + "kind": "number", + "nativeSrc": "444:2:61", + "nodeType": "YulLiteral", + "src": "444:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "429:3:61", + "nodeType": "YulIdentifier", + "src": "429:3:61" + }, + "nativeSrc": "429:18:61", + "nodeType": "YulFunctionCall", + "src": "429:18:61" + }, + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "453:6:61", + "nodeType": "YulIdentifier", + "src": "453:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "469:3:61", + "nodeType": "YulLiteral", + "src": "469:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "474:1:61", + "nodeType": "YulLiteral", + "src": "474:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "465:3:61", + "nodeType": "YulIdentifier", + "src": "465:3:61" + }, + "nativeSrc": "465:11:61", + "nodeType": "YulFunctionCall", + "src": "465:11:61" + }, + { + "kind": "number", + "nativeSrc": "478:1:61", + "nodeType": "YulLiteral", + "src": "478:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "461:3:61", + "nodeType": "YulIdentifier", + "src": "461:3:61" + }, + "nativeSrc": "461:19:61", + "nodeType": "YulFunctionCall", + "src": "461:19:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "449:3:61", + "nodeType": "YulIdentifier", + "src": "449:3:61" + }, + "nativeSrc": "449:32:61", + "nodeType": "YulFunctionCall", + "src": "449:32:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "422:6:61", + "nodeType": "YulIdentifier", + "src": "422:6:61" + }, + "nativeSrc": "422:60:61", + "nodeType": "YulFunctionCall", + "src": "422:60:61" + }, + "nativeSrc": "422:60:61", + "nodeType": "YulExpressionStatement", + "src": "422:60:61" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_contract$_IERC20_$4513__to_t_uint256_t_address__fromStack_reversed", + "nativeSrc": "199:289:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "304:9:61", + "nodeType": "YulTypedName", + "src": "304:9:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "315:6:61", + "nodeType": "YulTypedName", + "src": "315:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "323:6:61", + "nodeType": "YulTypedName", + "src": "323:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "334:4:61", + "nodeType": "YulTypedName", + "src": "334:4:61", + "type": "" + } + ], + "src": "199:289:61" + }, + { + "body": { + "nativeSrc": "537:87:61", + "nodeType": "YulBlock", + "src": "537:87:61", + "statements": [ + { + "body": { + "nativeSrc": "602:16:61", + "nodeType": "YulBlock", + "src": "602:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "611:1:61", + "nodeType": "YulLiteral", + "src": "611:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "614:1:61", + "nodeType": "YulLiteral", + "src": "614:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "604:6:61", + "nodeType": "YulIdentifier", + "src": "604:6:61" + }, + "nativeSrc": "604:12:61", + "nodeType": "YulFunctionCall", + "src": "604:12:61" + }, + "nativeSrc": "604:12:61", + "nodeType": "YulExpressionStatement", + "src": "604:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "560:5:61", + "nodeType": "YulIdentifier", + "src": "560:5:61" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "571:5:61", + "nodeType": "YulIdentifier", + "src": "571:5:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "582:3:61", + "nodeType": "YulLiteral", + "src": "582:3:61", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "587:10:61", + "nodeType": "YulLiteral", + "src": "587:10:61", + "type": "", + "value": "0xffffffff" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "578:3:61", + "nodeType": "YulIdentifier", + "src": "578:3:61" + }, + "nativeSrc": "578:20:61", + "nodeType": "YulFunctionCall", + "src": "578:20:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "567:3:61", + "nodeType": "YulIdentifier", + "src": "567:3:61" + }, + "nativeSrc": "567:32:61", + "nodeType": "YulFunctionCall", + "src": "567:32:61" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "557:2:61", + "nodeType": "YulIdentifier", + "src": "557:2:61" + }, + "nativeSrc": "557:43:61", + "nodeType": "YulFunctionCall", + "src": "557:43:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "550:6:61", + "nodeType": "YulIdentifier", + "src": "550:6:61" + }, + "nativeSrc": "550:51:61", + "nodeType": "YulFunctionCall", + "src": "550:51:61" + }, + "nativeSrc": "547:71:61", + "nodeType": "YulIf", + "src": "547:71:61" + } + ] + }, + "name": "validator_revert_bytes4", + "nativeSrc": "493:131:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "526:5:61", + "nodeType": "YulTypedName", + "src": "526:5:61", + "type": "" + } + ], + "src": "493:131:61" + }, + { + "body": { + "nativeSrc": "698:176:61", + "nodeType": "YulBlock", + "src": "698:176:61", + "statements": [ + { + "body": { + "nativeSrc": "744:16:61", + "nodeType": "YulBlock", + "src": "744:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "753:1:61", + "nodeType": "YulLiteral", + "src": "753:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "756:1:61", + "nodeType": "YulLiteral", + "src": "756:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "746:6:61", + "nodeType": "YulIdentifier", + "src": "746:6:61" + }, + "nativeSrc": "746:12:61", + "nodeType": "YulFunctionCall", + "src": "746:12:61" + }, + "nativeSrc": "746:12:61", + "nodeType": "YulExpressionStatement", + "src": "746:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "719:7:61", + "nodeType": "YulIdentifier", + "src": "719:7:61" + }, + { + "name": "headStart", + "nativeSrc": "728:9:61", + "nodeType": "YulIdentifier", + "src": "728:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "715:3:61", + "nodeType": "YulIdentifier", + "src": "715:3:61" + }, + "nativeSrc": "715:23:61", + "nodeType": "YulFunctionCall", + "src": "715:23:61" + }, + { + "kind": "number", + "nativeSrc": "740:2:61", + "nodeType": "YulLiteral", + "src": "740:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "711:3:61", + "nodeType": "YulIdentifier", + "src": "711:3:61" + }, + "nativeSrc": "711:32:61", + "nodeType": "YulFunctionCall", + "src": "711:32:61" + }, + "nativeSrc": "708:52:61", + "nodeType": "YulIf", + "src": "708:52:61" + }, + { + "nativeSrc": "769:36:61", + "nodeType": "YulVariableDeclaration", + "src": "769:36:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "795:9:61", + "nodeType": "YulIdentifier", + "src": "795:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "782:12:61", + "nodeType": "YulIdentifier", + "src": "782:12:61" + }, + "nativeSrc": "782:23:61", + "nodeType": "YulFunctionCall", + "src": "782:23:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "773:5:61", + "nodeType": "YulTypedName", + "src": "773:5:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "838:5:61", + "nodeType": "YulIdentifier", + "src": "838:5:61" + } + ], + "functionName": { + "name": "validator_revert_bytes4", + "nativeSrc": "814:23:61", + "nodeType": "YulIdentifier", + "src": "814:23:61" + }, + "nativeSrc": "814:30:61", + "nodeType": "YulFunctionCall", + "src": "814:30:61" + }, + "nativeSrc": "814:30:61", + "nodeType": "YulExpressionStatement", + "src": "814:30:61" + }, + { + "nativeSrc": "853:15:61", + "nodeType": "YulAssignment", + "src": "853:15:61", + "value": { + "name": "value", + "nativeSrc": "863:5:61", + "nodeType": "YulIdentifier", + "src": "863:5:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "853:6:61", + "nodeType": "YulIdentifier", + "src": "853:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes4", + "nativeSrc": "629:245:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "664:9:61", + "nodeType": "YulTypedName", + "src": "664:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "675:7:61", + "nodeType": "YulTypedName", + "src": "675:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "687:6:61", + "nodeType": "YulTypedName", + "src": "687:6:61", + "type": "" + } + ], + "src": "629:245:61" + }, + { + "body": { + "nativeSrc": "974:92:61", + "nodeType": "YulBlock", + "src": "974:92:61", + "statements": [ + { + "nativeSrc": "984:26:61", + "nodeType": "YulAssignment", + "src": "984:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "996:9:61", + "nodeType": "YulIdentifier", + "src": "996:9:61" + }, + { + "kind": "number", + "nativeSrc": "1007:2:61", + "nodeType": "YulLiteral", + "src": "1007:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "992:3:61", + "nodeType": "YulIdentifier", + "src": "992:3:61" + }, + "nativeSrc": "992:18:61", + "nodeType": "YulFunctionCall", + "src": "992:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "984:4:61", + "nodeType": "YulIdentifier", + "src": "984:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1026:9:61", + "nodeType": "YulIdentifier", + "src": "1026:9:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "1051:6:61", + "nodeType": "YulIdentifier", + "src": "1051:6:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "1044:6:61", + "nodeType": "YulIdentifier", + "src": "1044:6:61" + }, + "nativeSrc": "1044:14:61", + "nodeType": "YulFunctionCall", + "src": "1044:14:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "1037:6:61", + "nodeType": "YulIdentifier", + "src": "1037:6:61" + }, + "nativeSrc": "1037:22:61", + "nodeType": "YulFunctionCall", + "src": "1037:22:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1019:6:61", + "nodeType": "YulIdentifier", + "src": "1019:6:61" + }, + "nativeSrc": "1019:41:61", + "nodeType": "YulFunctionCall", + "src": "1019:41:61" + }, + "nativeSrc": "1019:41:61", + "nodeType": "YulExpressionStatement", + "src": "1019:41:61" + } + ] + }, + "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", + "nativeSrc": "879:187:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "943:9:61", + "nodeType": "YulTypedName", + "src": "943:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "954:6:61", + "nodeType": "YulTypedName", + "src": "954:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "965:4:61", + "nodeType": "YulTypedName", + "src": "965:4:61", + "type": "" + } + ], + "src": "879:187:61" + }, + { + "body": { + "nativeSrc": "1137:184:61", + "nodeType": "YulBlock", + "src": "1137:184:61", + "statements": [ + { + "nativeSrc": "1147:10:61", + "nodeType": "YulVariableDeclaration", + "src": "1147:10:61", + "value": { + "kind": "number", + "nativeSrc": "1156:1:61", + "nodeType": "YulLiteral", + "src": "1156:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "1151:1:61", + "nodeType": "YulTypedName", + "src": "1151:1:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "1216:63:61", + "nodeType": "YulBlock", + "src": "1216:63:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nativeSrc": "1241:3:61", + "nodeType": "YulIdentifier", + "src": "1241:3:61" + }, + { + "name": "i", + "nativeSrc": "1246:1:61", + "nodeType": "YulIdentifier", + "src": "1246:1:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1237:3:61", + "nodeType": "YulIdentifier", + "src": "1237:3:61" + }, + "nativeSrc": "1237:11:61", + "nodeType": "YulFunctionCall", + "src": "1237:11:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "1260:3:61", + "nodeType": "YulIdentifier", + "src": "1260:3:61" + }, + { + "name": "i", + "nativeSrc": "1265:1:61", + "nodeType": "YulIdentifier", + "src": "1265:1:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1256:3:61", + "nodeType": "YulIdentifier", + "src": "1256:3:61" + }, + "nativeSrc": "1256:11:61", + "nodeType": "YulFunctionCall", + "src": "1256:11:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "1250:5:61", + "nodeType": "YulIdentifier", + "src": "1250:5:61" + }, + "nativeSrc": "1250:18:61", + "nodeType": "YulFunctionCall", + "src": "1250:18:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1230:6:61", + "nodeType": "YulIdentifier", + "src": "1230:6:61" + }, + "nativeSrc": "1230:39:61", + "nodeType": "YulFunctionCall", + "src": "1230:39:61" + }, + "nativeSrc": "1230:39:61", + "nodeType": "YulExpressionStatement", + "src": "1230:39:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "1177:1:61", + "nodeType": "YulIdentifier", + "src": "1177:1:61" + }, + { + "name": "length", + "nativeSrc": "1180:6:61", + "nodeType": "YulIdentifier", + "src": "1180:6:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "1174:2:61", + "nodeType": "YulIdentifier", + "src": "1174:2:61" + }, + "nativeSrc": "1174:13:61", + "nodeType": "YulFunctionCall", + "src": "1174:13:61" + }, + "nativeSrc": "1166:113:61", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "1188:19:61", + "nodeType": "YulBlock", + "src": "1188:19:61", + "statements": [ + { + "nativeSrc": "1190:15:61", + "nodeType": "YulAssignment", + "src": "1190:15:61", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "1199:1:61", + "nodeType": "YulIdentifier", + "src": "1199:1:61" + }, + { + "kind": "number", + "nativeSrc": "1202:2:61", + "nodeType": "YulLiteral", + "src": "1202:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1195:3:61", + "nodeType": "YulIdentifier", + "src": "1195:3:61" + }, + "nativeSrc": "1195:10:61", + "nodeType": "YulFunctionCall", + "src": "1195:10:61" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "1190:1:61", + "nodeType": "YulIdentifier", + "src": "1190:1:61" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "1170:3:61", + "nodeType": "YulBlock", + "src": "1170:3:61", + "statements": [] + }, + "src": "1166:113:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nativeSrc": "1299:3:61", + "nodeType": "YulIdentifier", + "src": "1299:3:61" + }, + { + "name": "length", + "nativeSrc": "1304:6:61", + "nodeType": "YulIdentifier", + "src": "1304:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1295:3:61", + "nodeType": "YulIdentifier", + "src": "1295:3:61" + }, + "nativeSrc": "1295:16:61", + "nodeType": "YulFunctionCall", + "src": "1295:16:61" + }, + { + "kind": "number", + "nativeSrc": "1313:1:61", + "nodeType": "YulLiteral", + "src": "1313:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1288:6:61", + "nodeType": "YulIdentifier", + "src": "1288:6:61" + }, + "nativeSrc": "1288:27:61", + "nodeType": "YulFunctionCall", + "src": "1288:27:61" + }, + "nativeSrc": "1288:27:61", + "nodeType": "YulExpressionStatement", + "src": "1288:27:61" + } + ] + }, + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "1071:250:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nativeSrc": "1115:3:61", + "nodeType": "YulTypedName", + "src": "1115:3:61", + "type": "" + }, + { + "name": "dst", + "nativeSrc": "1120:3:61", + "nodeType": "YulTypedName", + "src": "1120:3:61", + "type": "" + }, + { + "name": "length", + "nativeSrc": "1125:6:61", + "nodeType": "YulTypedName", + "src": "1125:6:61", + "type": "" + } + ], + "src": "1071:250:61" + }, + { + "body": { + "nativeSrc": "1376:221:61", + "nodeType": "YulBlock", + "src": "1376:221:61", + "statements": [ + { + "nativeSrc": "1386:26:61", + "nodeType": "YulVariableDeclaration", + "src": "1386:26:61", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "1406:5:61", + "nodeType": "YulIdentifier", + "src": "1406:5:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "1400:5:61", + "nodeType": "YulIdentifier", + "src": "1400:5:61" + }, + "nativeSrc": "1400:12:61", + "nodeType": "YulFunctionCall", + "src": "1400:12:61" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "1390:6:61", + "nodeType": "YulTypedName", + "src": "1390:6:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "1428:3:61", + "nodeType": "YulIdentifier", + "src": "1428:3:61" + }, + { + "name": "length", + "nativeSrc": "1433:6:61", + "nodeType": "YulIdentifier", + "src": "1433:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1421:6:61", + "nodeType": "YulIdentifier", + "src": "1421:6:61" + }, + "nativeSrc": "1421:19:61", + "nodeType": "YulFunctionCall", + "src": "1421:19:61" + }, + "nativeSrc": "1421:19:61", + "nodeType": "YulExpressionStatement", + "src": "1421:19:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "1488:5:61", + "nodeType": "YulIdentifier", + "src": "1488:5:61" + }, + { + "kind": "number", + "nativeSrc": "1495:4:61", + "nodeType": "YulLiteral", + "src": "1495:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1484:3:61", + "nodeType": "YulIdentifier", + "src": "1484:3:61" + }, + "nativeSrc": "1484:16:61", + "nodeType": "YulFunctionCall", + "src": "1484:16:61" + }, + { + "arguments": [ + { + "name": "pos", + "nativeSrc": "1506:3:61", + "nodeType": "YulIdentifier", + "src": "1506:3:61" + }, + { + "kind": "number", + "nativeSrc": "1511:4:61", + "nodeType": "YulLiteral", + "src": "1511:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1502:3:61", + "nodeType": "YulIdentifier", + "src": "1502:3:61" + }, + "nativeSrc": "1502:14:61", + "nodeType": "YulFunctionCall", + "src": "1502:14:61" + }, + { + "name": "length", + "nativeSrc": "1518:6:61", + "nodeType": "YulIdentifier", + "src": "1518:6:61" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "1449:34:61", + "nodeType": "YulIdentifier", + "src": "1449:34:61" + }, + "nativeSrc": "1449:76:61", + "nodeType": "YulFunctionCall", + "src": "1449:76:61" + }, + "nativeSrc": "1449:76:61", + "nodeType": "YulExpressionStatement", + "src": "1449:76:61" + }, + { + "nativeSrc": "1534:57:61", + "nodeType": "YulAssignment", + "src": "1534:57:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nativeSrc": "1549:3:61", + "nodeType": "YulIdentifier", + "src": "1549:3:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nativeSrc": "1562:6:61", + "nodeType": "YulIdentifier", + "src": "1562:6:61" + }, + { + "kind": "number", + "nativeSrc": "1570:2:61", + "nodeType": "YulLiteral", + "src": "1570:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1558:3:61", + "nodeType": "YulIdentifier", + "src": "1558:3:61" + }, + "nativeSrc": "1558:15:61", + "nodeType": "YulFunctionCall", + "src": "1558:15:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1579:2:61", + "nodeType": "YulLiteral", + "src": "1579:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "1575:3:61", + "nodeType": "YulIdentifier", + "src": "1575:3:61" + }, + "nativeSrc": "1575:7:61", + "nodeType": "YulFunctionCall", + "src": "1575:7:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1554:3:61", + "nodeType": "YulIdentifier", + "src": "1554:3:61" + }, + "nativeSrc": "1554:29:61", + "nodeType": "YulFunctionCall", + "src": "1554:29:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1545:3:61", + "nodeType": "YulIdentifier", + "src": "1545:3:61" + }, + "nativeSrc": "1545:39:61", + "nodeType": "YulFunctionCall", + "src": "1545:39:61" + }, + { + "kind": "number", + "nativeSrc": "1586:4:61", + "nodeType": "YulLiteral", + "src": "1586:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1541:3:61", + "nodeType": "YulIdentifier", + "src": "1541:3:61" + }, + "nativeSrc": "1541:50:61", + "nodeType": "YulFunctionCall", + "src": "1541:50:61" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "1534:3:61", + "nodeType": "YulIdentifier", + "src": "1534:3:61" + } + ] + } + ] + }, + "name": "abi_encode_string", + "nativeSrc": "1326:271:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "1353:5:61", + "nodeType": "YulTypedName", + "src": "1353:5:61", + "type": "" + }, + { + "name": "pos", + "nativeSrc": "1360:3:61", + "nodeType": "YulTypedName", + "src": "1360:3:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "1368:3:61", + "nodeType": "YulTypedName", + "src": "1368:3:61", + "type": "" + } + ], + "src": "1326:271:61" + }, + { + "body": { + "nativeSrc": "1723:99:61", + "nodeType": "YulBlock", + "src": "1723:99:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1740:9:61", + "nodeType": "YulIdentifier", + "src": "1740:9:61" + }, + { + "kind": "number", + "nativeSrc": "1751:2:61", + "nodeType": "YulLiteral", + "src": "1751:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1733:6:61", + "nodeType": "YulIdentifier", + "src": "1733:6:61" + }, + "nativeSrc": "1733:21:61", + "nodeType": "YulFunctionCall", + "src": "1733:21:61" + }, + "nativeSrc": "1733:21:61", + "nodeType": "YulExpressionStatement", + "src": "1733:21:61" + }, + { + "nativeSrc": "1763:53:61", + "nodeType": "YulAssignment", + "src": "1763:53:61", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "1789:6:61", + "nodeType": "YulIdentifier", + "src": "1789:6:61" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1801:9:61", + "nodeType": "YulIdentifier", + "src": "1801:9:61" + }, + { + "kind": "number", + "nativeSrc": "1812:2:61", + "nodeType": "YulLiteral", + "src": "1812:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1797:3:61", + "nodeType": "YulIdentifier", + "src": "1797:3:61" + }, + "nativeSrc": "1797:18:61", + "nodeType": "YulFunctionCall", + "src": "1797:18:61" + } + ], + "functionName": { + "name": "abi_encode_string", + "nativeSrc": "1771:17:61", + "nodeType": "YulIdentifier", + "src": "1771:17:61" + }, + "nativeSrc": "1771:45:61", + "nodeType": "YulFunctionCall", + "src": "1771:45:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "1763:4:61", + "nodeType": "YulIdentifier", + "src": "1763:4:61" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed", + "nativeSrc": "1602:220:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "1692:9:61", + "nodeType": "YulTypedName", + "src": "1692:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "1703:6:61", + "nodeType": "YulTypedName", + "src": "1703:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "1714:4:61", + "nodeType": "YulTypedName", + "src": "1714:4:61", + "type": "" + } + ], + "src": "1602:220:61" + }, + { + "body": { + "nativeSrc": "1928:102:61", + "nodeType": "YulBlock", + "src": "1928:102:61", + "statements": [ + { + "nativeSrc": "1938:26:61", + "nodeType": "YulAssignment", + "src": "1938:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1950:9:61", + "nodeType": "YulIdentifier", + "src": "1950:9:61" + }, + { + "kind": "number", + "nativeSrc": "1961:2:61", + "nodeType": "YulLiteral", + "src": "1961:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1946:3:61", + "nodeType": "YulIdentifier", + "src": "1946:3:61" + }, + "nativeSrc": "1946:18:61", + "nodeType": "YulFunctionCall", + "src": "1946:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "1938:4:61", + "nodeType": "YulIdentifier", + "src": "1938:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1980:9:61", + "nodeType": "YulIdentifier", + "src": "1980:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "1995:6:61", + "nodeType": "YulIdentifier", + "src": "1995:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2011:3:61", + "nodeType": "YulLiteral", + "src": "2011:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "2016:1:61", + "nodeType": "YulLiteral", + "src": "2016:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "2007:3:61", + "nodeType": "YulIdentifier", + "src": "2007:3:61" + }, + "nativeSrc": "2007:11:61", + "nodeType": "YulFunctionCall", + "src": "2007:11:61" + }, + { + "kind": "number", + "nativeSrc": "2020:1:61", + "nodeType": "YulLiteral", + "src": "2020:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "2003:3:61", + "nodeType": "YulIdentifier", + "src": "2003:3:61" + }, + "nativeSrc": "2003:19:61", + "nodeType": "YulFunctionCall", + "src": "2003:19:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1991:3:61", + "nodeType": "YulIdentifier", + "src": "1991:3:61" + }, + "nativeSrc": "1991:32:61", + "nodeType": "YulFunctionCall", + "src": "1991:32:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1973:6:61", + "nodeType": "YulIdentifier", + "src": "1973:6:61" + }, + "nativeSrc": "1973:51:61", + "nodeType": "YulFunctionCall", + "src": "1973:51:61" + }, + "nativeSrc": "1973:51:61", + "nodeType": "YulExpressionStatement", + "src": "1973:51:61" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nativeSrc": "1827:203:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "1897:9:61", + "nodeType": "YulTypedName", + "src": "1897:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "1908:6:61", + "nodeType": "YulTypedName", + "src": "1908:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "1919:4:61", + "nodeType": "YulTypedName", + "src": "1919:4:61", + "type": "" + } + ], + "src": "1827:203:61" + }, + { + "body": { + "nativeSrc": "2080:86:61", + "nodeType": "YulBlock", + "src": "2080:86:61", + "statements": [ + { + "body": { + "nativeSrc": "2144:16:61", + "nodeType": "YulBlock", + "src": "2144:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2153:1:61", + "nodeType": "YulLiteral", + "src": "2153:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2156:1:61", + "nodeType": "YulLiteral", + "src": "2156:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2146:6:61", + "nodeType": "YulIdentifier", + "src": "2146:6:61" + }, + "nativeSrc": "2146:12:61", + "nodeType": "YulFunctionCall", + "src": "2146:12:61" + }, + "nativeSrc": "2146:12:61", + "nodeType": "YulExpressionStatement", + "src": "2146:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "2103:5:61", + "nodeType": "YulIdentifier", + "src": "2103:5:61" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "2114:5:61", + "nodeType": "YulIdentifier", + "src": "2114:5:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2129:3:61", + "nodeType": "YulLiteral", + "src": "2129:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "2134:1:61", + "nodeType": "YulLiteral", + "src": "2134:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "2125:3:61", + "nodeType": "YulIdentifier", + "src": "2125:3:61" + }, + "nativeSrc": "2125:11:61", + "nodeType": "YulFunctionCall", + "src": "2125:11:61" + }, + { + "kind": "number", + "nativeSrc": "2138:1:61", + "nodeType": "YulLiteral", + "src": "2138:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "2121:3:61", + "nodeType": "YulIdentifier", + "src": "2121:3:61" + }, + "nativeSrc": "2121:19:61", + "nodeType": "YulFunctionCall", + "src": "2121:19:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "2110:3:61", + "nodeType": "YulIdentifier", + "src": "2110:3:61" + }, + "nativeSrc": "2110:31:61", + "nodeType": "YulFunctionCall", + "src": "2110:31:61" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "2100:2:61", + "nodeType": "YulIdentifier", + "src": "2100:2:61" + }, + "nativeSrc": "2100:42:61", + "nodeType": "YulFunctionCall", + "src": "2100:42:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "2093:6:61", + "nodeType": "YulIdentifier", + "src": "2093:6:61" + }, + "nativeSrc": "2093:50:61", + "nodeType": "YulFunctionCall", + "src": "2093:50:61" + }, + "nativeSrc": "2090:70:61", + "nodeType": "YulIf", + "src": "2090:70:61" + } + ] + }, + "name": "validator_revert_address", + "nativeSrc": "2035:131:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "2069:5:61", + "nodeType": "YulTypedName", + "src": "2069:5:61", + "type": "" + } + ], + "src": "2035:131:61" + }, + { + "body": { + "nativeSrc": "2258:228:61", + "nodeType": "YulBlock", + "src": "2258:228:61", + "statements": [ + { + "body": { + "nativeSrc": "2304:16:61", + "nodeType": "YulBlock", + "src": "2304:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2313:1:61", + "nodeType": "YulLiteral", + "src": "2313:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2316:1:61", + "nodeType": "YulLiteral", + "src": "2316:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2306:6:61", + "nodeType": "YulIdentifier", + "src": "2306:6:61" + }, + "nativeSrc": "2306:12:61", + "nodeType": "YulFunctionCall", + "src": "2306:12:61" + }, + "nativeSrc": "2306:12:61", + "nodeType": "YulExpressionStatement", + "src": "2306:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "2279:7:61", + "nodeType": "YulIdentifier", + "src": "2279:7:61" + }, + { + "name": "headStart", + "nativeSrc": "2288:9:61", + "nodeType": "YulIdentifier", + "src": "2288:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "2275:3:61", + "nodeType": "YulIdentifier", + "src": "2275:3:61" + }, + "nativeSrc": "2275:23:61", + "nodeType": "YulFunctionCall", + "src": "2275:23:61" + }, + { + "kind": "number", + "nativeSrc": "2300:2:61", + "nodeType": "YulLiteral", + "src": "2300:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "2271:3:61", + "nodeType": "YulIdentifier", + "src": "2271:3:61" + }, + "nativeSrc": "2271:32:61", + "nodeType": "YulFunctionCall", + "src": "2271:32:61" + }, + "nativeSrc": "2268:52:61", + "nodeType": "YulIf", + "src": "2268:52:61" + }, + { + "nativeSrc": "2329:36:61", + "nodeType": "YulVariableDeclaration", + "src": "2329:36:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2355:9:61", + "nodeType": "YulIdentifier", + "src": "2355:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "2342:12:61", + "nodeType": "YulIdentifier", + "src": "2342:12:61" + }, + "nativeSrc": "2342:23:61", + "nodeType": "YulFunctionCall", + "src": "2342:23:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "2333:5:61", + "nodeType": "YulTypedName", + "src": "2333:5:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "2399:5:61", + "nodeType": "YulIdentifier", + "src": "2399:5:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "2374:24:61", + "nodeType": "YulIdentifier", + "src": "2374:24:61" + }, + "nativeSrc": "2374:31:61", + "nodeType": "YulFunctionCall", + "src": "2374:31:61" + }, + "nativeSrc": "2374:31:61", + "nodeType": "YulExpressionStatement", + "src": "2374:31:61" + }, + { + "nativeSrc": "2414:15:61", + "nodeType": "YulAssignment", + "src": "2414:15:61", + "value": { + "name": "value", + "nativeSrc": "2424:5:61", + "nodeType": "YulIdentifier", + "src": "2424:5:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "2414:6:61", + "nodeType": "YulIdentifier", + "src": "2414:6:61" + } + ] + }, + { + "nativeSrc": "2438:42:61", + "nodeType": "YulAssignment", + "src": "2438:42:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2465:9:61", + "nodeType": "YulIdentifier", + "src": "2465:9:61" + }, + { + "kind": "number", + "nativeSrc": "2476:2:61", + "nodeType": "YulLiteral", + "src": "2476:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2461:3:61", + "nodeType": "YulIdentifier", + "src": "2461:3:61" + }, + "nativeSrc": "2461:18:61", + "nodeType": "YulFunctionCall", + "src": "2461:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "2448:12:61", + "nodeType": "YulIdentifier", + "src": "2448:12:61" + }, + "nativeSrc": "2448:32:61", + "nodeType": "YulFunctionCall", + "src": "2448:32:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "2438:6:61", + "nodeType": "YulIdentifier", + "src": "2438:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_uint256", + "nativeSrc": "2171:315:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "2216:9:61", + "nodeType": "YulTypedName", + "src": "2216:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "2227:7:61", + "nodeType": "YulTypedName", + "src": "2227:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "2239:6:61", + "nodeType": "YulTypedName", + "src": "2239:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "2247:6:61", + "nodeType": "YulTypedName", + "src": "2247:6:61", + "type": "" + } + ], + "src": "2171:315:61" + }, + { + "body": { + "nativeSrc": "2592:76:61", + "nodeType": "YulBlock", + "src": "2592:76:61", + "statements": [ + { + "nativeSrc": "2602:26:61", + "nodeType": "YulAssignment", + "src": "2602:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2614:9:61", + "nodeType": "YulIdentifier", + "src": "2614:9:61" + }, + { + "kind": "number", + "nativeSrc": "2625:2:61", + "nodeType": "YulLiteral", + "src": "2625:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2610:3:61", + "nodeType": "YulIdentifier", + "src": "2610:3:61" + }, + "nativeSrc": "2610:18:61", + "nodeType": "YulFunctionCall", + "src": "2610:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "2602:4:61", + "nodeType": "YulIdentifier", + "src": "2602:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2644:9:61", + "nodeType": "YulIdentifier", + "src": "2644:9:61" + }, + { + "name": "value0", + "nativeSrc": "2655:6:61", + "nodeType": "YulIdentifier", + "src": "2655:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2637:6:61", + "nodeType": "YulIdentifier", + "src": "2637:6:61" + }, + "nativeSrc": "2637:25:61", + "nodeType": "YulFunctionCall", + "src": "2637:25:61" + }, + "nativeSrc": "2637:25:61", + "nodeType": "YulExpressionStatement", + "src": "2637:25:61" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nativeSrc": "2491:177:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "2561:9:61", + "nodeType": "YulTypedName", + "src": "2561:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "2572:6:61", + "nodeType": "YulTypedName", + "src": "2572:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "2583:4:61", + "nodeType": "YulTypedName", + "src": "2583:4:61", + "type": "" + } + ], + "src": "2491:177:61" + }, + { + "body": { + "nativeSrc": "2743:177:61", + "nodeType": "YulBlock", + "src": "2743:177:61", + "statements": [ + { + "body": { + "nativeSrc": "2789:16:61", + "nodeType": "YulBlock", + "src": "2789:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2798:1:61", + "nodeType": "YulLiteral", + "src": "2798:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2801:1:61", + "nodeType": "YulLiteral", + "src": "2801:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2791:6:61", + "nodeType": "YulIdentifier", + "src": "2791:6:61" + }, + "nativeSrc": "2791:12:61", + "nodeType": "YulFunctionCall", + "src": "2791:12:61" + }, + "nativeSrc": "2791:12:61", + "nodeType": "YulExpressionStatement", + "src": "2791:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "2764:7:61", + "nodeType": "YulIdentifier", + "src": "2764:7:61" + }, + { + "name": "headStart", + "nativeSrc": "2773:9:61", + "nodeType": "YulIdentifier", + "src": "2773:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "2760:3:61", + "nodeType": "YulIdentifier", + "src": "2760:3:61" + }, + "nativeSrc": "2760:23:61", + "nodeType": "YulFunctionCall", + "src": "2760:23:61" + }, + { + "kind": "number", + "nativeSrc": "2785:2:61", + "nodeType": "YulLiteral", + "src": "2785:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "2756:3:61", + "nodeType": "YulIdentifier", + "src": "2756:3:61" + }, + "nativeSrc": "2756:32:61", + "nodeType": "YulFunctionCall", + "src": "2756:32:61" + }, + "nativeSrc": "2753:52:61", + "nodeType": "YulIf", + "src": "2753:52:61" + }, + { + "nativeSrc": "2814:36:61", + "nodeType": "YulVariableDeclaration", + "src": "2814:36:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2840:9:61", + "nodeType": "YulIdentifier", + "src": "2840:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "2827:12:61", + "nodeType": "YulIdentifier", + "src": "2827:12:61" + }, + "nativeSrc": "2827:23:61", + "nodeType": "YulFunctionCall", + "src": "2827:23:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "2818:5:61", + "nodeType": "YulTypedName", + "src": "2818:5:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "2884:5:61", + "nodeType": "YulIdentifier", + "src": "2884:5:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "2859:24:61", + "nodeType": "YulIdentifier", + "src": "2859:24:61" + }, + "nativeSrc": "2859:31:61", + "nodeType": "YulFunctionCall", + "src": "2859:31:61" + }, + "nativeSrc": "2859:31:61", + "nodeType": "YulExpressionStatement", + "src": "2859:31:61" + }, + { + "nativeSrc": "2899:15:61", + "nodeType": "YulAssignment", + "src": "2899:15:61", + "value": { + "name": "value", + "nativeSrc": "2909:5:61", + "nodeType": "YulIdentifier", + "src": "2909:5:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "2899:6:61", + "nodeType": "YulIdentifier", + "src": "2899:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nativeSrc": "2673:247:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "2709:9:61", + "nodeType": "YulTypedName", + "src": "2709:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "2720:7:61", + "nodeType": "YulTypedName", + "src": "2720:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "2732:6:61", + "nodeType": "YulTypedName", + "src": "2732:6:61", + "type": "" + } + ], + "src": "2673:247:61" + }, + { + "body": { + "nativeSrc": "3012:161:61", + "nodeType": "YulBlock", + "src": "3012:161:61", + "statements": [ + { + "body": { + "nativeSrc": "3058:16:61", + "nodeType": "YulBlock", + "src": "3058:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3067:1:61", + "nodeType": "YulLiteral", + "src": "3067:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "3070:1:61", + "nodeType": "YulLiteral", + "src": "3070:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "3060:6:61", + "nodeType": "YulIdentifier", + "src": "3060:6:61" + }, + "nativeSrc": "3060:12:61", + "nodeType": "YulFunctionCall", + "src": "3060:12:61" + }, + "nativeSrc": "3060:12:61", + "nodeType": "YulExpressionStatement", + "src": "3060:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "3033:7:61", + "nodeType": "YulIdentifier", + "src": "3033:7:61" + }, + { + "name": "headStart", + "nativeSrc": "3042:9:61", + "nodeType": "YulIdentifier", + "src": "3042:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "3029:3:61", + "nodeType": "YulIdentifier", + "src": "3029:3:61" + }, + "nativeSrc": "3029:23:61", + "nodeType": "YulFunctionCall", + "src": "3029:23:61" + }, + { + "kind": "number", + "nativeSrc": "3054:2:61", + "nodeType": "YulLiteral", + "src": "3054:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "3025:3:61", + "nodeType": "YulIdentifier", + "src": "3025:3:61" + }, + "nativeSrc": "3025:32:61", + "nodeType": "YulFunctionCall", + "src": "3025:32:61" + }, + "nativeSrc": "3022:52:61", + "nodeType": "YulIf", + "src": "3022:52:61" + }, + { + "nativeSrc": "3083:33:61", + "nodeType": "YulAssignment", + "src": "3083:33:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3106:9:61", + "nodeType": "YulIdentifier", + "src": "3106:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "3093:12:61", + "nodeType": "YulIdentifier", + "src": "3093:12:61" + }, + "nativeSrc": "3093:23:61", + "nodeType": "YulFunctionCall", + "src": "3093:23:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "3083:6:61", + "nodeType": "YulIdentifier", + "src": "3083:6:61" + } + ] + }, + { + "nativeSrc": "3125:42:61", + "nodeType": "YulAssignment", + "src": "3125:42:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3152:9:61", + "nodeType": "YulIdentifier", + "src": "3152:9:61" + }, + { + "kind": "number", + "nativeSrc": "3163:2:61", + "nodeType": "YulLiteral", + "src": "3163:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3148:3:61", + "nodeType": "YulIdentifier", + "src": "3148:3:61" + }, + "nativeSrc": "3148:18:61", + "nodeType": "YulFunctionCall", + "src": "3148:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "3135:12:61", + "nodeType": "YulIdentifier", + "src": "3135:12:61" + }, + "nativeSrc": "3135:32:61", + "nodeType": "YulFunctionCall", + "src": "3135:32:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "3125:6:61", + "nodeType": "YulIdentifier", + "src": "3125:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_uint256", + "nativeSrc": "2925:248:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "2970:9:61", + "nodeType": "YulTypedName", + "src": "2970:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "2981:7:61", + "nodeType": "YulTypedName", + "src": "2981:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "2993:6:61", + "nodeType": "YulTypedName", + "src": "2993:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "3001:6:61", + "nodeType": "YulTypedName", + "src": "3001:6:61", + "type": "" + } + ], + "src": "2925:248:61" + }, + { + "body": { + "nativeSrc": "3282:352:61", + "nodeType": "YulBlock", + "src": "3282:352:61", + "statements": [ + { + "body": { + "nativeSrc": "3328:16:61", + "nodeType": "YulBlock", + "src": "3328:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3337:1:61", + "nodeType": "YulLiteral", + "src": "3337:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "3340:1:61", + "nodeType": "YulLiteral", + "src": "3340:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "3330:6:61", + "nodeType": "YulIdentifier", + "src": "3330:6:61" + }, + "nativeSrc": "3330:12:61", + "nodeType": "YulFunctionCall", + "src": "3330:12:61" + }, + "nativeSrc": "3330:12:61", + "nodeType": "YulExpressionStatement", + "src": "3330:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "3303:7:61", + "nodeType": "YulIdentifier", + "src": "3303:7:61" + }, + { + "name": "headStart", + "nativeSrc": "3312:9:61", + "nodeType": "YulIdentifier", + "src": "3312:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "3299:3:61", + "nodeType": "YulIdentifier", + "src": "3299:3:61" + }, + "nativeSrc": "3299:23:61", + "nodeType": "YulFunctionCall", + "src": "3299:23:61" + }, + { + "kind": "number", + "nativeSrc": "3324:2:61", + "nodeType": "YulLiteral", + "src": "3324:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "3295:3:61", + "nodeType": "YulIdentifier", + "src": "3295:3:61" + }, + "nativeSrc": "3295:32:61", + "nodeType": "YulFunctionCall", + "src": "3295:32:61" + }, + "nativeSrc": "3292:52:61", + "nodeType": "YulIf", + "src": "3292:52:61" + }, + { + "nativeSrc": "3353:36:61", + "nodeType": "YulVariableDeclaration", + "src": "3353:36:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3379:9:61", + "nodeType": "YulIdentifier", + "src": "3379:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "3366:12:61", + "nodeType": "YulIdentifier", + "src": "3366:12:61" + }, + "nativeSrc": "3366:23:61", + "nodeType": "YulFunctionCall", + "src": "3366:23:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "3357:5:61", + "nodeType": "YulTypedName", + "src": "3357:5:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "3423:5:61", + "nodeType": "YulIdentifier", + "src": "3423:5:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "3398:24:61", + "nodeType": "YulIdentifier", + "src": "3398:24:61" + }, + "nativeSrc": "3398:31:61", + "nodeType": "YulFunctionCall", + "src": "3398:31:61" + }, + "nativeSrc": "3398:31:61", + "nodeType": "YulExpressionStatement", + "src": "3398:31:61" + }, + { + "nativeSrc": "3438:15:61", + "nodeType": "YulAssignment", + "src": "3438:15:61", + "value": { + "name": "value", + "nativeSrc": "3448:5:61", + "nodeType": "YulIdentifier", + "src": "3448:5:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "3438:6:61", + "nodeType": "YulIdentifier", + "src": "3438:6:61" + } + ] + }, + { + "nativeSrc": "3462:47:61", + "nodeType": "YulVariableDeclaration", + "src": "3462:47:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3494:9:61", + "nodeType": "YulIdentifier", + "src": "3494:9:61" + }, + { + "kind": "number", + "nativeSrc": "3505:2:61", + "nodeType": "YulLiteral", + "src": "3505:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3490:3:61", + "nodeType": "YulIdentifier", + "src": "3490:3:61" + }, + "nativeSrc": "3490:18:61", + "nodeType": "YulFunctionCall", + "src": "3490:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "3477:12:61", + "nodeType": "YulIdentifier", + "src": "3477:12:61" + }, + "nativeSrc": "3477:32:61", + "nodeType": "YulFunctionCall", + "src": "3477:32:61" + }, + "variables": [ + { + "name": "value_1", + "nativeSrc": "3466:7:61", + "nodeType": "YulTypedName", + "src": "3466:7:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nativeSrc": "3543:7:61", + "nodeType": "YulIdentifier", + "src": "3543:7:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "3518:24:61", + "nodeType": "YulIdentifier", + "src": "3518:24:61" + }, + "nativeSrc": "3518:33:61", + "nodeType": "YulFunctionCall", + "src": "3518:33:61" + }, + "nativeSrc": "3518:33:61", + "nodeType": "YulExpressionStatement", + "src": "3518:33:61" + }, + { + "nativeSrc": "3560:17:61", + "nodeType": "YulAssignment", + "src": "3560:17:61", + "value": { + "name": "value_1", + "nativeSrc": "3570:7:61", + "nodeType": "YulIdentifier", + "src": "3570:7:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "3560:6:61", + "nodeType": "YulIdentifier", + "src": "3560:6:61" + } + ] + }, + { + "nativeSrc": "3586:42:61", + "nodeType": "YulAssignment", + "src": "3586:42:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3613:9:61", + "nodeType": "YulIdentifier", + "src": "3613:9:61" + }, + { + "kind": "number", + "nativeSrc": "3624:2:61", + "nodeType": "YulLiteral", + "src": "3624:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3609:3:61", + "nodeType": "YulIdentifier", + "src": "3609:3:61" + }, + "nativeSrc": "3609:18:61", + "nodeType": "YulFunctionCall", + "src": "3609:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "3596:12:61", + "nodeType": "YulIdentifier", + "src": "3596:12:61" + }, + "nativeSrc": "3596:32:61", + "nodeType": "YulFunctionCall", + "src": "3596:32:61" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "3586:6:61", + "nodeType": "YulIdentifier", + "src": "3586:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_uint256", + "nativeSrc": "3178:456:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "3232:9:61", + "nodeType": "YulTypedName", + "src": "3232:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "3243:7:61", + "nodeType": "YulTypedName", + "src": "3243:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "3255:6:61", + "nodeType": "YulTypedName", + "src": "3255:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "3263:6:61", + "nodeType": "YulTypedName", + "src": "3263:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "3271:6:61", + "nodeType": "YulTypedName", + "src": "3271:6:61", + "type": "" + } + ], + "src": "3178:456:61" + }, + { + "body": { + "nativeSrc": "3709:110:61", + "nodeType": "YulBlock", + "src": "3709:110:61", + "statements": [ + { + "body": { + "nativeSrc": "3755:16:61", + "nodeType": "YulBlock", + "src": "3755:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3764:1:61", + "nodeType": "YulLiteral", + "src": "3764:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "3767:1:61", + "nodeType": "YulLiteral", + "src": "3767:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "3757:6:61", + "nodeType": "YulIdentifier", + "src": "3757:6:61" + }, + "nativeSrc": "3757:12:61", + "nodeType": "YulFunctionCall", + "src": "3757:12:61" + }, + "nativeSrc": "3757:12:61", + "nodeType": "YulExpressionStatement", + "src": "3757:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "3730:7:61", + "nodeType": "YulIdentifier", + "src": "3730:7:61" + }, + { + "name": "headStart", + "nativeSrc": "3739:9:61", + "nodeType": "YulIdentifier", + "src": "3739:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "3726:3:61", + "nodeType": "YulIdentifier", + "src": "3726:3:61" + }, + "nativeSrc": "3726:23:61", + "nodeType": "YulFunctionCall", + "src": "3726:23:61" + }, + { + "kind": "number", + "nativeSrc": "3751:2:61", + "nodeType": "YulLiteral", + "src": "3751:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "3722:3:61", + "nodeType": "YulIdentifier", + "src": "3722:3:61" + }, + "nativeSrc": "3722:32:61", + "nodeType": "YulFunctionCall", + "src": "3722:32:61" + }, + "nativeSrc": "3719:52:61", + "nodeType": "YulIf", + "src": "3719:52:61" + }, + { + "nativeSrc": "3780:33:61", + "nodeType": "YulAssignment", + "src": "3780:33:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3803:9:61", + "nodeType": "YulIdentifier", + "src": "3803:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "3790:12:61", + "nodeType": "YulIdentifier", + "src": "3790:12:61" + }, + "nativeSrc": "3790:23:61", + "nodeType": "YulFunctionCall", + "src": "3790:23:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "3780:6:61", + "nodeType": "YulIdentifier", + "src": "3780:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32", + "nativeSrc": "3639:180:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "3675:9:61", + "nodeType": "YulTypedName", + "src": "3675:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "3686:7:61", + "nodeType": "YulTypedName", + "src": "3686:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "3698:6:61", + "nodeType": "YulTypedName", + "src": "3698:6:61", + "type": "" + } + ], + "src": "3639:180:61" + }, + { + "body": { + "nativeSrc": "3925:76:61", + "nodeType": "YulBlock", + "src": "3925:76:61", + "statements": [ + { + "nativeSrc": "3935:26:61", + "nodeType": "YulAssignment", + "src": "3935:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3947:9:61", + "nodeType": "YulIdentifier", + "src": "3947:9:61" + }, + { + "kind": "number", + "nativeSrc": "3958:2:61", + "nodeType": "YulLiteral", + "src": "3958:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3943:3:61", + "nodeType": "YulIdentifier", + "src": "3943:3:61" + }, + "nativeSrc": "3943:18:61", + "nodeType": "YulFunctionCall", + "src": "3943:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "3935:4:61", + "nodeType": "YulIdentifier", + "src": "3935:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3977:9:61", + "nodeType": "YulIdentifier", + "src": "3977:9:61" + }, + { + "name": "value0", + "nativeSrc": "3988:6:61", + "nodeType": "YulIdentifier", + "src": "3988:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3970:6:61", + "nodeType": "YulIdentifier", + "src": "3970:6:61" + }, + "nativeSrc": "3970:25:61", + "nodeType": "YulFunctionCall", + "src": "3970:25:61" + }, + "nativeSrc": "3970:25:61", + "nodeType": "YulExpressionStatement", + "src": "3970:25:61" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed", + "nativeSrc": "3824:177:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "3894:9:61", + "nodeType": "YulTypedName", + "src": "3894:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "3905:6:61", + "nodeType": "YulTypedName", + "src": "3905:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "3916:4:61", + "nodeType": "YulTypedName", + "src": "3916:4:61", + "type": "" + } + ], + "src": "3824:177:61" + }, + { + "body": { + "nativeSrc": "4054:111:61", + "nodeType": "YulBlock", + "src": "4054:111:61", + "statements": [ + { + "nativeSrc": "4064:29:61", + "nodeType": "YulAssignment", + "src": "4064:29:61", + "value": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "4086:6:61", + "nodeType": "YulIdentifier", + "src": "4086:6:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "4073:12:61", + "nodeType": "YulIdentifier", + "src": "4073:12:61" + }, + "nativeSrc": "4073:20:61", + "nodeType": "YulFunctionCall", + "src": "4073:20:61" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "4064:5:61", + "nodeType": "YulIdentifier", + "src": "4064:5:61" + } + ] + }, + { + "body": { + "nativeSrc": "4143:16:61", + "nodeType": "YulBlock", + "src": "4143:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4152:1:61", + "nodeType": "YulLiteral", + "src": "4152:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "4155:1:61", + "nodeType": "YulLiteral", + "src": "4155:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "4145:6:61", + "nodeType": "YulIdentifier", + "src": "4145:6:61" + }, + "nativeSrc": "4145:12:61", + "nodeType": "YulFunctionCall", + "src": "4145:12:61" + }, + "nativeSrc": "4145:12:61", + "nodeType": "YulExpressionStatement", + "src": "4145:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "4115:5:61", + "nodeType": "YulIdentifier", + "src": "4115:5:61" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "4126:5:61", + "nodeType": "YulIdentifier", + "src": "4126:5:61" + }, + { + "kind": "number", + "nativeSrc": "4133:6:61", + "nodeType": "YulLiteral", + "src": "4133:6:61", + "type": "", + "value": "0xffff" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "4122:3:61", + "nodeType": "YulIdentifier", + "src": "4122:3:61" + }, + "nativeSrc": "4122:18:61", + "nodeType": "YulFunctionCall", + "src": "4122:18:61" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "4112:2:61", + "nodeType": "YulIdentifier", + "src": "4112:2:61" + }, + "nativeSrc": "4112:29:61", + "nodeType": "YulFunctionCall", + "src": "4112:29:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "4105:6:61", + "nodeType": "YulIdentifier", + "src": "4105:6:61" + }, + "nativeSrc": "4105:37:61", + "nodeType": "YulFunctionCall", + "src": "4105:37:61" + }, + "nativeSrc": "4102:57:61", + "nodeType": "YulIf", + "src": "4102:57:61" + } + ] + }, + "name": "abi_decode_uint16", + "nativeSrc": "4006:159:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nativeSrc": "4033:6:61", + "nodeType": "YulTypedName", + "src": "4033:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nativeSrc": "4044:5:61", + "nodeType": "YulTypedName", + "src": "4044:5:61", + "type": "" + } + ], + "src": "4006:159:61" + }, + { + "body": { + "nativeSrc": "4272:222:61", + "nodeType": "YulBlock", + "src": "4272:222:61", + "statements": [ + { + "body": { + "nativeSrc": "4318:16:61", + "nodeType": "YulBlock", + "src": "4318:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4327:1:61", + "nodeType": "YulLiteral", + "src": "4327:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "4330:1:61", + "nodeType": "YulLiteral", + "src": "4330:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "4320:6:61", + "nodeType": "YulIdentifier", + "src": "4320:6:61" + }, + "nativeSrc": "4320:12:61", + "nodeType": "YulFunctionCall", + "src": "4320:12:61" + }, + "nativeSrc": "4320:12:61", + "nodeType": "YulExpressionStatement", + "src": "4320:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "4293:7:61", + "nodeType": "YulIdentifier", + "src": "4293:7:61" + }, + { + "name": "headStart", + "nativeSrc": "4302:9:61", + "nodeType": "YulIdentifier", + "src": "4302:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "4289:3:61", + "nodeType": "YulIdentifier", + "src": "4289:3:61" + }, + "nativeSrc": "4289:23:61", + "nodeType": "YulFunctionCall", + "src": "4289:23:61" + }, + { + "kind": "number", + "nativeSrc": "4314:2:61", + "nodeType": "YulLiteral", + "src": "4314:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "4285:3:61", + "nodeType": "YulIdentifier", + "src": "4285:3:61" + }, + "nativeSrc": "4285:32:61", + "nodeType": "YulFunctionCall", + "src": "4285:32:61" + }, + "nativeSrc": "4282:52:61", + "nodeType": "YulIf", + "src": "4282:52:61" + }, + { + "nativeSrc": "4343:33:61", + "nodeType": "YulAssignment", + "src": "4343:33:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4366:9:61", + "nodeType": "YulIdentifier", + "src": "4366:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "4353:12:61", + "nodeType": "YulIdentifier", + "src": "4353:12:61" + }, + "nativeSrc": "4353:23:61", + "nodeType": "YulFunctionCall", + "src": "4353:23:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "4343:6:61", + "nodeType": "YulIdentifier", + "src": "4343:6:61" + } + ] + }, + { + "nativeSrc": "4385:47:61", + "nodeType": "YulAssignment", + "src": "4385:47:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4417:9:61", + "nodeType": "YulIdentifier", + "src": "4417:9:61" + }, + { + "kind": "number", + "nativeSrc": "4428:2:61", + "nodeType": "YulLiteral", + "src": "4428:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4413:3:61", + "nodeType": "YulIdentifier", + "src": "4413:3:61" + }, + "nativeSrc": "4413:18:61", + "nodeType": "YulFunctionCall", + "src": "4413:18:61" + } + ], + "functionName": { + "name": "abi_decode_uint16", + "nativeSrc": "4395:17:61", + "nodeType": "YulIdentifier", + "src": "4395:17:61" + }, + "nativeSrc": "4395:37:61", + "nodeType": "YulFunctionCall", + "src": "4395:37:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "4385:6:61", + "nodeType": "YulIdentifier", + "src": "4385:6:61" + } + ] + }, + { + "nativeSrc": "4441:47:61", + "nodeType": "YulAssignment", + "src": "4441:47:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4473:9:61", + "nodeType": "YulIdentifier", + "src": "4473:9:61" + }, + { + "kind": "number", + "nativeSrc": "4484:2:61", + "nodeType": "YulLiteral", + "src": "4484:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4469:3:61", + "nodeType": "YulIdentifier", + "src": "4469:3:61" + }, + "nativeSrc": "4469:18:61", + "nodeType": "YulFunctionCall", + "src": "4469:18:61" + } + ], + "functionName": { + "name": "abi_decode_uint16", + "nativeSrc": "4451:17:61", + "nodeType": "YulIdentifier", + "src": "4451:17:61" + }, + "nativeSrc": "4451:37:61", + "nodeType": "YulFunctionCall", + "src": "4451:37:61" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "4441:6:61", + "nodeType": "YulIdentifier", + "src": "4441:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_uint16t_uint16", + "nativeSrc": "4170:324:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "4222:9:61", + "nodeType": "YulTypedName", + "src": "4222:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "4233:7:61", + "nodeType": "YulTypedName", + "src": "4233:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "4245:6:61", + "nodeType": "YulTypedName", + "src": "4245:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "4253:6:61", + "nodeType": "YulTypedName", + "src": "4253:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "4261:6:61", + "nodeType": "YulTypedName", + "src": "4261:6:61", + "type": "" + } + ], + "src": "4170:324:61" + }, + { + "body": { + "nativeSrc": "4586:228:61", + "nodeType": "YulBlock", + "src": "4586:228:61", + "statements": [ + { + "body": { + "nativeSrc": "4632:16:61", + "nodeType": "YulBlock", + "src": "4632:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4641:1:61", + "nodeType": "YulLiteral", + "src": "4641:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "4644:1:61", + "nodeType": "YulLiteral", + "src": "4644:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "4634:6:61", + "nodeType": "YulIdentifier", + "src": "4634:6:61" + }, + "nativeSrc": "4634:12:61", + "nodeType": "YulFunctionCall", + "src": "4634:12:61" + }, + "nativeSrc": "4634:12:61", + "nodeType": "YulExpressionStatement", + "src": "4634:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "4607:7:61", + "nodeType": "YulIdentifier", + "src": "4607:7:61" + }, + { + "name": "headStart", + "nativeSrc": "4616:9:61", + "nodeType": "YulIdentifier", + "src": "4616:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "4603:3:61", + "nodeType": "YulIdentifier", + "src": "4603:3:61" + }, + "nativeSrc": "4603:23:61", + "nodeType": "YulFunctionCall", + "src": "4603:23:61" + }, + { + "kind": "number", + "nativeSrc": "4628:2:61", + "nodeType": "YulLiteral", + "src": "4628:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "4599:3:61", + "nodeType": "YulIdentifier", + "src": "4599:3:61" + }, + "nativeSrc": "4599:32:61", + "nodeType": "YulFunctionCall", + "src": "4599:32:61" + }, + "nativeSrc": "4596:52:61", + "nodeType": "YulIf", + "src": "4596:52:61" + }, + { + "nativeSrc": "4657:33:61", + "nodeType": "YulAssignment", + "src": "4657:33:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4680:9:61", + "nodeType": "YulIdentifier", + "src": "4680:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "4667:12:61", + "nodeType": "YulIdentifier", + "src": "4667:12:61" + }, + "nativeSrc": "4667:23:61", + "nodeType": "YulFunctionCall", + "src": "4667:23:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "4657:6:61", + "nodeType": "YulIdentifier", + "src": "4657:6:61" + } + ] + }, + { + "nativeSrc": "4699:45:61", + "nodeType": "YulVariableDeclaration", + "src": "4699:45:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4729:9:61", + "nodeType": "YulIdentifier", + "src": "4729:9:61" + }, + { + "kind": "number", + "nativeSrc": "4740:2:61", + "nodeType": "YulLiteral", + "src": "4740:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4725:3:61", + "nodeType": "YulIdentifier", + "src": "4725:3:61" + }, + "nativeSrc": "4725:18:61", + "nodeType": "YulFunctionCall", + "src": "4725:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "4712:12:61", + "nodeType": "YulIdentifier", + "src": "4712:12:61" + }, + "nativeSrc": "4712:32:61", + "nodeType": "YulFunctionCall", + "src": "4712:32:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "4703:5:61", + "nodeType": "YulTypedName", + "src": "4703:5:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "4778:5:61", + "nodeType": "YulIdentifier", + "src": "4778:5:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "4753:24:61", + "nodeType": "YulIdentifier", + "src": "4753:24:61" + }, + "nativeSrc": "4753:31:61", + "nodeType": "YulFunctionCall", + "src": "4753:31:61" + }, + "nativeSrc": "4753:31:61", + "nodeType": "YulExpressionStatement", + "src": "4753:31:61" + }, + { + "nativeSrc": "4793:15:61", + "nodeType": "YulAssignment", + "src": "4793:15:61", + "value": { + "name": "value", + "nativeSrc": "4803:5:61", + "nodeType": "YulIdentifier", + "src": "4803:5:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "4793:6:61", + "nodeType": "YulIdentifier", + "src": "4793:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_address", + "nativeSrc": "4499:315:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "4544:9:61", + "nodeType": "YulTypedName", + "src": "4544:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "4555:7:61", + "nodeType": "YulTypedName", + "src": "4555:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "4567:6:61", + "nodeType": "YulTypedName", + "src": "4567:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "4575:6:61", + "nodeType": "YulTypedName", + "src": "4575:6:61", + "type": "" + } + ], + "src": "4499:315:61" + }, + { + "body": { + "nativeSrc": "4851:95:61", + "nodeType": "YulBlock", + "src": "4851:95:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4868:1:61", + "nodeType": "YulLiteral", + "src": "4868:1:61", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4875:3:61", + "nodeType": "YulLiteral", + "src": "4875:3:61", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "4880:10:61", + "nodeType": "YulLiteral", + "src": "4880:10:61", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "4871:3:61", + "nodeType": "YulIdentifier", + "src": "4871:3:61" + }, + "nativeSrc": "4871:20:61", + "nodeType": "YulFunctionCall", + "src": "4871:20:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4861:6:61", + "nodeType": "YulIdentifier", + "src": "4861:6:61" + }, + "nativeSrc": "4861:31:61", + "nodeType": "YulFunctionCall", + "src": "4861:31:61" + }, + "nativeSrc": "4861:31:61", + "nodeType": "YulExpressionStatement", + "src": "4861:31:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4908:1:61", + "nodeType": "YulLiteral", + "src": "4908:1:61", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "4911:4:61", + "nodeType": "YulLiteral", + "src": "4911:4:61", + "type": "", + "value": "0x21" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4901:6:61", + "nodeType": "YulIdentifier", + "src": "4901:6:61" + }, + "nativeSrc": "4901:15:61", + "nodeType": "YulFunctionCall", + "src": "4901:15:61" + }, + "nativeSrc": "4901:15:61", + "nodeType": "YulExpressionStatement", + "src": "4901:15:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4932:1:61", + "nodeType": "YulLiteral", + "src": "4932:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "4935:4:61", + "nodeType": "YulLiteral", + "src": "4935:4:61", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "4925:6:61", + "nodeType": "YulIdentifier", + "src": "4925:6:61" + }, + "nativeSrc": "4925:15:61", + "nodeType": "YulFunctionCall", + "src": "4925:15:61" + }, + "nativeSrc": "4925:15:61", + "nodeType": "YulExpressionStatement", + "src": "4925:15:61" + } + ] + }, + "name": "panic_error_0x21", + "nativeSrc": "4819:127:61", + "nodeType": "YulFunctionDefinition", + "src": "4819:127:61" + }, + { + "body": { + "nativeSrc": "5007:159:61", + "nodeType": "YulBlock", + "src": "5007:159:61", + "statements": [ + { + "body": { + "nativeSrc": "5049:111:61", + "nodeType": "YulBlock", + "src": "5049:111:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5070:1:61", + "nodeType": "YulLiteral", + "src": "5070:1:61", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5077:3:61", + "nodeType": "YulLiteral", + "src": "5077:3:61", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "5082:10:61", + "nodeType": "YulLiteral", + "src": "5082:10:61", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "5073:3:61", + "nodeType": "YulIdentifier", + "src": "5073:3:61" + }, + "nativeSrc": "5073:20:61", + "nodeType": "YulFunctionCall", + "src": "5073:20:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5063:6:61", + "nodeType": "YulIdentifier", + "src": "5063:6:61" + }, + "nativeSrc": "5063:31:61", + "nodeType": "YulFunctionCall", + "src": "5063:31:61" + }, + "nativeSrc": "5063:31:61", + "nodeType": "YulExpressionStatement", + "src": "5063:31:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5114:1:61", + "nodeType": "YulLiteral", + "src": "5114:1:61", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "5117:4:61", + "nodeType": "YulLiteral", + "src": "5117:4:61", + "type": "", + "value": "0x21" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5107:6:61", + "nodeType": "YulIdentifier", + "src": "5107:6:61" + }, + "nativeSrc": "5107:15:61", + "nodeType": "YulFunctionCall", + "src": "5107:15:61" + }, + "nativeSrc": "5107:15:61", + "nodeType": "YulExpressionStatement", + "src": "5107:15:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5142:1:61", + "nodeType": "YulLiteral", + "src": "5142:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "5145:4:61", + "nodeType": "YulLiteral", + "src": "5145:4:61", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "5135:6:61", + "nodeType": "YulIdentifier", + "src": "5135:6:61" + }, + "nativeSrc": "5135:15:61", + "nodeType": "YulFunctionCall", + "src": "5135:15:61" + }, + "nativeSrc": "5135:15:61", + "nodeType": "YulExpressionStatement", + "src": "5135:15:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "5030:5:61", + "nodeType": "YulIdentifier", + "src": "5030:5:61" + }, + { + "kind": "number", + "nativeSrc": "5037:1:61", + "nodeType": "YulLiteral", + "src": "5037:1:61", + "type": "", + "value": "5" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "5027:2:61", + "nodeType": "YulIdentifier", + "src": "5027:2:61" + }, + "nativeSrc": "5027:12:61", + "nodeType": "YulFunctionCall", + "src": "5027:12:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "5020:6:61", + "nodeType": "YulIdentifier", + "src": "5020:6:61" + }, + "nativeSrc": "5020:20:61", + "nodeType": "YulFunctionCall", + "src": "5020:20:61" + }, + "nativeSrc": "5017:143:61", + "nodeType": "YulIf", + "src": "5017:143:61" + } + ] + }, + "name": "validator_assert_enum_BookingStatus", + "nativeSrc": "4951:215:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "4996:5:61", + "nodeType": "YulTypedName", + "src": "4996:5:61", + "type": "" + } + ], + "src": "4951:215:61" + }, + { + "body": { + "nativeSrc": "5289:128:61", + "nodeType": "YulBlock", + "src": "5289:128:61", + "statements": [ + { + "nativeSrc": "5299:26:61", + "nodeType": "YulAssignment", + "src": "5299:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5311:9:61", + "nodeType": "YulIdentifier", + "src": "5311:9:61" + }, + { + "kind": "number", + "nativeSrc": "5322:2:61", + "nodeType": "YulLiteral", + "src": "5322:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5307:3:61", + "nodeType": "YulIdentifier", + "src": "5307:3:61" + }, + "nativeSrc": "5307:18:61", + "nodeType": "YulFunctionCall", + "src": "5307:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "5299:4:61", + "nodeType": "YulIdentifier", + "src": "5299:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "5370:6:61", + "nodeType": "YulIdentifier", + "src": "5370:6:61" + } + ], + "functionName": { + "name": "validator_assert_enum_BookingStatus", + "nativeSrc": "5334:35:61", + "nodeType": "YulIdentifier", + "src": "5334:35:61" + }, + "nativeSrc": "5334:43:61", + "nodeType": "YulFunctionCall", + "src": "5334:43:61" + }, + "nativeSrc": "5334:43:61", + "nodeType": "YulExpressionStatement", + "src": "5334:43:61" + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5393:9:61", + "nodeType": "YulIdentifier", + "src": "5393:9:61" + }, + { + "name": "value0", + "nativeSrc": "5404:6:61", + "nodeType": "YulIdentifier", + "src": "5404:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5386:6:61", + "nodeType": "YulIdentifier", + "src": "5386:6:61" + }, + "nativeSrc": "5386:25:61", + "nodeType": "YulFunctionCall", + "src": "5386:25:61" + }, + "nativeSrc": "5386:25:61", + "nodeType": "YulExpressionStatement", + "src": "5386:25:61" + } + ] + }, + "name": "abi_encode_tuple_t_enum$_BookingStatus_$13040__to_t_uint8__fromStack_reversed", + "nativeSrc": "5171:246:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "5258:9:61", + "nodeType": "YulTypedName", + "src": "5258:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "5269:6:61", + "nodeType": "YulTypedName", + "src": "5269:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "5280:4:61", + "nodeType": "YulTypedName", + "src": "5280:4:61", + "type": "" + } + ], + "src": "5171:246:61" + }, + { + "body": { + "nativeSrc": "5454:95:61", + "nodeType": "YulBlock", + "src": "5454:95:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5471:1:61", + "nodeType": "YulLiteral", + "src": "5471:1:61", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5478:3:61", + "nodeType": "YulLiteral", + "src": "5478:3:61", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "5483:10:61", + "nodeType": "YulLiteral", + "src": "5483:10:61", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "5474:3:61", + "nodeType": "YulIdentifier", + "src": "5474:3:61" + }, + "nativeSrc": "5474:20:61", + "nodeType": "YulFunctionCall", + "src": "5474:20:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5464:6:61", + "nodeType": "YulIdentifier", + "src": "5464:6:61" + }, + "nativeSrc": "5464:31:61", + "nodeType": "YulFunctionCall", + "src": "5464:31:61" + }, + "nativeSrc": "5464:31:61", + "nodeType": "YulExpressionStatement", + "src": "5464:31:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5511:1:61", + "nodeType": "YulLiteral", + "src": "5511:1:61", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "5514:4:61", + "nodeType": "YulLiteral", + "src": "5514:4:61", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5504:6:61", + "nodeType": "YulIdentifier", + "src": "5504:6:61" + }, + "nativeSrc": "5504:15:61", + "nodeType": "YulFunctionCall", + "src": "5504:15:61" + }, + "nativeSrc": "5504:15:61", + "nodeType": "YulExpressionStatement", + "src": "5504:15:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5535:1:61", + "nodeType": "YulLiteral", + "src": "5535:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "5538:4:61", + "nodeType": "YulLiteral", + "src": "5538:4:61", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "5528:6:61", + "nodeType": "YulIdentifier", + "src": "5528:6:61" + }, + "nativeSrc": "5528:15:61", + "nodeType": "YulFunctionCall", + "src": "5528:15:61" + }, + "nativeSrc": "5528:15:61", + "nodeType": "YulExpressionStatement", + "src": "5528:15:61" + } + ] + }, + "name": "panic_error_0x41", + "nativeSrc": "5422:127:61", + "nodeType": "YulFunctionDefinition", + "src": "5422:127:61" + }, + { + "body": { + "nativeSrc": "5606:666:61", + "nodeType": "YulBlock", + "src": "5606:666:61", + "statements": [ + { + "body": { + "nativeSrc": "5655:16:61", + "nodeType": "YulBlock", + "src": "5655:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5664:1:61", + "nodeType": "YulLiteral", + "src": "5664:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "5667:1:61", + "nodeType": "YulLiteral", + "src": "5667:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "5657:6:61", + "nodeType": "YulIdentifier", + "src": "5657:6:61" + }, + "nativeSrc": "5657:12:61", + "nodeType": "YulFunctionCall", + "src": "5657:12:61" + }, + "nativeSrc": "5657:12:61", + "nodeType": "YulExpressionStatement", + "src": "5657:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nativeSrc": "5634:6:61", + "nodeType": "YulIdentifier", + "src": "5634:6:61" + }, + { + "kind": "number", + "nativeSrc": "5642:4:61", + "nodeType": "YulLiteral", + "src": "5642:4:61", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5630:3:61", + "nodeType": "YulIdentifier", + "src": "5630:3:61" + }, + "nativeSrc": "5630:17:61", + "nodeType": "YulFunctionCall", + "src": "5630:17:61" + }, + { + "name": "end", + "nativeSrc": "5649:3:61", + "nodeType": "YulIdentifier", + "src": "5649:3:61" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "5626:3:61", + "nodeType": "YulIdentifier", + "src": "5626:3:61" + }, + "nativeSrc": "5626:27:61", + "nodeType": "YulFunctionCall", + "src": "5626:27:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "5619:6:61", + "nodeType": "YulIdentifier", + "src": "5619:6:61" + }, + "nativeSrc": "5619:35:61", + "nodeType": "YulFunctionCall", + "src": "5619:35:61" + }, + "nativeSrc": "5616:55:61", + "nodeType": "YulIf", + "src": "5616:55:61" + }, + { + "nativeSrc": "5680:30:61", + "nodeType": "YulVariableDeclaration", + "src": "5680:30:61", + "value": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "5703:6:61", + "nodeType": "YulIdentifier", + "src": "5703:6:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "5690:12:61", + "nodeType": "YulIdentifier", + "src": "5690:12:61" + }, + "nativeSrc": "5690:20:61", + "nodeType": "YulFunctionCall", + "src": "5690:20:61" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "5684:2:61", + "nodeType": "YulTypedName", + "src": "5684:2:61", + "type": "" + } + ] + }, + { + "nativeSrc": "5719:28:61", + "nodeType": "YulVariableDeclaration", + "src": "5719:28:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5737:2:61", + "nodeType": "YulLiteral", + "src": "5737:2:61", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "5741:1:61", + "nodeType": "YulLiteral", + "src": "5741:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "5733:3:61", + "nodeType": "YulIdentifier", + "src": "5733:3:61" + }, + "nativeSrc": "5733:10:61", + "nodeType": "YulFunctionCall", + "src": "5733:10:61" + }, + { + "kind": "number", + "nativeSrc": "5745:1:61", + "nodeType": "YulLiteral", + "src": "5745:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "5729:3:61", + "nodeType": "YulIdentifier", + "src": "5729:3:61" + }, + "nativeSrc": "5729:18:61", + "nodeType": "YulFunctionCall", + "src": "5729:18:61" + }, + "variables": [ + { + "name": "_2", + "nativeSrc": "5723:2:61", + "nodeType": "YulTypedName", + "src": "5723:2:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "5770:22:61", + "nodeType": "YulBlock", + "src": "5770:22:61", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "5772:16:61", + "nodeType": "YulIdentifier", + "src": "5772:16:61" + }, + "nativeSrc": "5772:18:61", + "nodeType": "YulFunctionCall", + "src": "5772:18:61" + }, + "nativeSrc": "5772:18:61", + "nodeType": "YulExpressionStatement", + "src": "5772:18:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "_1", + "nativeSrc": "5762:2:61", + "nodeType": "YulIdentifier", + "src": "5762:2:61" + }, + { + "name": "_2", + "nativeSrc": "5766:2:61", + "nodeType": "YulIdentifier", + "src": "5766:2:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "5759:2:61", + "nodeType": "YulIdentifier", + "src": "5759:2:61" + }, + "nativeSrc": "5759:10:61", + "nodeType": "YulFunctionCall", + "src": "5759:10:61" + }, + "nativeSrc": "5756:36:61", + "nodeType": "YulIf", + "src": "5756:36:61" + }, + { + "nativeSrc": "5801:17:61", + "nodeType": "YulVariableDeclaration", + "src": "5801:17:61", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5815:2:61", + "nodeType": "YulLiteral", + "src": "5815:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "5811:3:61", + "nodeType": "YulIdentifier", + "src": "5811:3:61" + }, + "nativeSrc": "5811:7:61", + "nodeType": "YulFunctionCall", + "src": "5811:7:61" + }, + "variables": [ + { + "name": "_3", + "nativeSrc": "5805:2:61", + "nodeType": "YulTypedName", + "src": "5805:2:61", + "type": "" + } + ] + }, + { + "nativeSrc": "5827:23:61", + "nodeType": "YulVariableDeclaration", + "src": "5827:23:61", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5847:2:61", + "nodeType": "YulLiteral", + "src": "5847:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "5841:5:61", + "nodeType": "YulIdentifier", + "src": "5841:5:61" + }, + "nativeSrc": "5841:9:61", + "nodeType": "YulFunctionCall", + "src": "5841:9:61" + }, + "variables": [ + { + "name": "memPtr", + "nativeSrc": "5831:6:61", + "nodeType": "YulTypedName", + "src": "5831:6:61", + "type": "" + } + ] + }, + { + "nativeSrc": "5859:71:61", + "nodeType": "YulVariableDeclaration", + "src": "5859:71:61", + "value": { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "5881:6:61", + "nodeType": "YulIdentifier", + "src": "5881:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nativeSrc": "5905:2:61", + "nodeType": "YulIdentifier", + "src": "5905:2:61" + }, + { + "kind": "number", + "nativeSrc": "5909:4:61", + "nodeType": "YulLiteral", + "src": "5909:4:61", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5901:3:61", + "nodeType": "YulIdentifier", + "src": "5901:3:61" + }, + "nativeSrc": "5901:13:61", + "nodeType": "YulFunctionCall", + "src": "5901:13:61" + }, + { + "name": "_3", + "nativeSrc": "5916:2:61", + "nodeType": "YulIdentifier", + "src": "5916:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "5897:3:61", + "nodeType": "YulIdentifier", + "src": "5897:3:61" + }, + "nativeSrc": "5897:22:61", + "nodeType": "YulFunctionCall", + "src": "5897:22:61" + }, + { + "kind": "number", + "nativeSrc": "5921:2:61", + "nodeType": "YulLiteral", + "src": "5921:2:61", + "type": "", + "value": "63" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5893:3:61", + "nodeType": "YulIdentifier", + "src": "5893:3:61" + }, + "nativeSrc": "5893:31:61", + "nodeType": "YulFunctionCall", + "src": "5893:31:61" + }, + { + "name": "_3", + "nativeSrc": "5926:2:61", + "nodeType": "YulIdentifier", + "src": "5926:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "5889:3:61", + "nodeType": "YulIdentifier", + "src": "5889:3:61" + }, + "nativeSrc": "5889:40:61", + "nodeType": "YulFunctionCall", + "src": "5889:40:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5877:3:61", + "nodeType": "YulIdentifier", + "src": "5877:3:61" + }, + "nativeSrc": "5877:53:61", + "nodeType": "YulFunctionCall", + "src": "5877:53:61" + }, + "variables": [ + { + "name": "newFreePtr", + "nativeSrc": "5863:10:61", + "nodeType": "YulTypedName", + "src": "5863:10:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "5989:22:61", + "nodeType": "YulBlock", + "src": "5989:22:61", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "5991:16:61", + "nodeType": "YulIdentifier", + "src": "5991:16:61" + }, + "nativeSrc": "5991:18:61", + "nodeType": "YulFunctionCall", + "src": "5991:18:61" + }, + "nativeSrc": "5991:18:61", + "nodeType": "YulExpressionStatement", + "src": "5991:18:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nativeSrc": "5948:10:61", + "nodeType": "YulIdentifier", + "src": "5948:10:61" + }, + { + "name": "_2", + "nativeSrc": "5960:2:61", + "nodeType": "YulIdentifier", + "src": "5960:2:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "5945:2:61", + "nodeType": "YulIdentifier", + "src": "5945:2:61" + }, + "nativeSrc": "5945:18:61", + "nodeType": "YulFunctionCall", + "src": "5945:18:61" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nativeSrc": "5968:10:61", + "nodeType": "YulIdentifier", + "src": "5968:10:61" + }, + { + "name": "memPtr", + "nativeSrc": "5980:6:61", + "nodeType": "YulIdentifier", + "src": "5980:6:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "5965:2:61", + "nodeType": "YulIdentifier", + "src": "5965:2:61" + }, + "nativeSrc": "5965:22:61", + "nodeType": "YulFunctionCall", + "src": "5965:22:61" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "5942:2:61", + "nodeType": "YulIdentifier", + "src": "5942:2:61" + }, + "nativeSrc": "5942:46:61", + "nodeType": "YulFunctionCall", + "src": "5942:46:61" + }, + "nativeSrc": "5939:72:61", + "nodeType": "YulIf", + "src": "5939:72:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6027:2:61", + "nodeType": "YulLiteral", + "src": "6027:2:61", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nativeSrc": "6031:10:61", + "nodeType": "YulIdentifier", + "src": "6031:10:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6020:6:61", + "nodeType": "YulIdentifier", + "src": "6020:6:61" + }, + "nativeSrc": "6020:22:61", + "nodeType": "YulFunctionCall", + "src": "6020:22:61" + }, + "nativeSrc": "6020:22:61", + "nodeType": "YulExpressionStatement", + "src": "6020:22:61" + }, + { + "expression": { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "6058:6:61", + "nodeType": "YulIdentifier", + "src": "6058:6:61" + }, + { + "name": "_1", + "nativeSrc": "6066:2:61", + "nodeType": "YulIdentifier", + "src": "6066:2:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6051:6:61", + "nodeType": "YulIdentifier", + "src": "6051:6:61" + }, + "nativeSrc": "6051:18:61", + "nodeType": "YulFunctionCall", + "src": "6051:18:61" + }, + "nativeSrc": "6051:18:61", + "nodeType": "YulExpressionStatement", + "src": "6051:18:61" + }, + { + "body": { + "nativeSrc": "6117:16:61", + "nodeType": "YulBlock", + "src": "6117:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6126:1:61", + "nodeType": "YulLiteral", + "src": "6126:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "6129:1:61", + "nodeType": "YulLiteral", + "src": "6129:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "6119:6:61", + "nodeType": "YulIdentifier", + "src": "6119:6:61" + }, + "nativeSrc": "6119:12:61", + "nodeType": "YulFunctionCall", + "src": "6119:12:61" + }, + "nativeSrc": "6119:12:61", + "nodeType": "YulExpressionStatement", + "src": "6119:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nativeSrc": "6092:6:61", + "nodeType": "YulIdentifier", + "src": "6092:6:61" + }, + { + "name": "_1", + "nativeSrc": "6100:2:61", + "nodeType": "YulIdentifier", + "src": "6100:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6088:3:61", + "nodeType": "YulIdentifier", + "src": "6088:3:61" + }, + "nativeSrc": "6088:15:61", + "nodeType": "YulFunctionCall", + "src": "6088:15:61" + }, + { + "kind": "number", + "nativeSrc": "6105:4:61", + "nodeType": "YulLiteral", + "src": "6105:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6084:3:61", + "nodeType": "YulIdentifier", + "src": "6084:3:61" + }, + "nativeSrc": "6084:26:61", + "nodeType": "YulFunctionCall", + "src": "6084:26:61" + }, + { + "name": "end", + "nativeSrc": "6112:3:61", + "nodeType": "YulIdentifier", + "src": "6112:3:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "6081:2:61", + "nodeType": "YulIdentifier", + "src": "6081:2:61" + }, + "nativeSrc": "6081:35:61", + "nodeType": "YulFunctionCall", + "src": "6081:35:61" + }, + "nativeSrc": "6078:55:61", + "nodeType": "YulIf", + "src": "6078:55:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "6159:6:61", + "nodeType": "YulIdentifier", + "src": "6159:6:61" + }, + { + "kind": "number", + "nativeSrc": "6167:4:61", + "nodeType": "YulLiteral", + "src": "6167:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6155:3:61", + "nodeType": "YulIdentifier", + "src": "6155:3:61" + }, + "nativeSrc": "6155:17:61", + "nodeType": "YulFunctionCall", + "src": "6155:17:61" + }, + { + "arguments": [ + { + "name": "offset", + "nativeSrc": "6178:6:61", + "nodeType": "YulIdentifier", + "src": "6178:6:61" + }, + { + "kind": "number", + "nativeSrc": "6186:4:61", + "nodeType": "YulLiteral", + "src": "6186:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6174:3:61", + "nodeType": "YulIdentifier", + "src": "6174:3:61" + }, + "nativeSrc": "6174:17:61", + "nodeType": "YulFunctionCall", + "src": "6174:17:61" + }, + { + "name": "_1", + "nativeSrc": "6193:2:61", + "nodeType": "YulIdentifier", + "src": "6193:2:61" + } + ], + "functionName": { + "name": "calldatacopy", + "nativeSrc": "6142:12:61", + "nodeType": "YulIdentifier", + "src": "6142:12:61" + }, + "nativeSrc": "6142:54:61", + "nodeType": "YulFunctionCall", + "src": "6142:54:61" + }, + "nativeSrc": "6142:54:61", + "nodeType": "YulExpressionStatement", + "src": "6142:54:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "6220:6:61", + "nodeType": "YulIdentifier", + "src": "6220:6:61" + }, + { + "name": "_1", + "nativeSrc": "6228:2:61", + "nodeType": "YulIdentifier", + "src": "6228:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6216:3:61", + "nodeType": "YulIdentifier", + "src": "6216:3:61" + }, + "nativeSrc": "6216:15:61", + "nodeType": "YulFunctionCall", + "src": "6216:15:61" + }, + { + "kind": "number", + "nativeSrc": "6233:4:61", + "nodeType": "YulLiteral", + "src": "6233:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6212:3:61", + "nodeType": "YulIdentifier", + "src": "6212:3:61" + }, + "nativeSrc": "6212:26:61", + "nodeType": "YulFunctionCall", + "src": "6212:26:61" + }, + { + "kind": "number", + "nativeSrc": "6240:1:61", + "nodeType": "YulLiteral", + "src": "6240:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6205:6:61", + "nodeType": "YulIdentifier", + "src": "6205:6:61" + }, + "nativeSrc": "6205:37:61", + "nodeType": "YulFunctionCall", + "src": "6205:37:61" + }, + "nativeSrc": "6205:37:61", + "nodeType": "YulExpressionStatement", + "src": "6205:37:61" + }, + { + "nativeSrc": "6251:15:61", + "nodeType": "YulAssignment", + "src": "6251:15:61", + "value": { + "name": "memPtr", + "nativeSrc": "6260:6:61", + "nodeType": "YulIdentifier", + "src": "6260:6:61" + }, + "variableNames": [ + { + "name": "array", + "nativeSrc": "6251:5:61", + "nodeType": "YulIdentifier", + "src": "6251:5:61" + } + ] + } + ] + }, + "name": "abi_decode_bytes", + "nativeSrc": "5554:718:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nativeSrc": "5580:6:61", + "nodeType": "YulTypedName", + "src": "5580:6:61", + "type": "" + }, + { + "name": "end", + "nativeSrc": "5588:3:61", + "nodeType": "YulTypedName", + "src": "5588:3:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nativeSrc": "5596:5:61", + "nodeType": "YulTypedName", + "src": "5596:5:61", + "type": "" + } + ], + "src": "5554:718:61" + }, + { + "body": { + "nativeSrc": "6373:359:61", + "nodeType": "YulBlock", + "src": "6373:359:61", + "statements": [ + { + "body": { + "nativeSrc": "6419:16:61", + "nodeType": "YulBlock", + "src": "6419:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6428:1:61", + "nodeType": "YulLiteral", + "src": "6428:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "6431:1:61", + "nodeType": "YulLiteral", + "src": "6431:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "6421:6:61", + "nodeType": "YulIdentifier", + "src": "6421:6:61" + }, + "nativeSrc": "6421:12:61", + "nodeType": "YulFunctionCall", + "src": "6421:12:61" + }, + "nativeSrc": "6421:12:61", + "nodeType": "YulExpressionStatement", + "src": "6421:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "6394:7:61", + "nodeType": "YulIdentifier", + "src": "6394:7:61" + }, + { + "name": "headStart", + "nativeSrc": "6403:9:61", + "nodeType": "YulIdentifier", + "src": "6403:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "6390:3:61", + "nodeType": "YulIdentifier", + "src": "6390:3:61" + }, + "nativeSrc": "6390:23:61", + "nodeType": "YulFunctionCall", + "src": "6390:23:61" + }, + { + "kind": "number", + "nativeSrc": "6415:2:61", + "nodeType": "YulLiteral", + "src": "6415:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "6386:3:61", + "nodeType": "YulIdentifier", + "src": "6386:3:61" + }, + "nativeSrc": "6386:32:61", + "nodeType": "YulFunctionCall", + "src": "6386:32:61" + }, + "nativeSrc": "6383:52:61", + "nodeType": "YulIf", + "src": "6383:52:61" + }, + { + "nativeSrc": "6444:36:61", + "nodeType": "YulVariableDeclaration", + "src": "6444:36:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6470:9:61", + "nodeType": "YulIdentifier", + "src": "6470:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "6457:12:61", + "nodeType": "YulIdentifier", + "src": "6457:12:61" + }, + "nativeSrc": "6457:23:61", + "nodeType": "YulFunctionCall", + "src": "6457:23:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "6448:5:61", + "nodeType": "YulTypedName", + "src": "6448:5:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "6514:5:61", + "nodeType": "YulIdentifier", + "src": "6514:5:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "6489:24:61", + "nodeType": "YulIdentifier", + "src": "6489:24:61" + }, + "nativeSrc": "6489:31:61", + "nodeType": "YulFunctionCall", + "src": "6489:31:61" + }, + "nativeSrc": "6489:31:61", + "nodeType": "YulExpressionStatement", + "src": "6489:31:61" + }, + { + "nativeSrc": "6529:15:61", + "nodeType": "YulAssignment", + "src": "6529:15:61", + "value": { + "name": "value", + "nativeSrc": "6539:5:61", + "nodeType": "YulIdentifier", + "src": "6539:5:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "6529:6:61", + "nodeType": "YulIdentifier", + "src": "6529:6:61" + } + ] + }, + { + "nativeSrc": "6553:46:61", + "nodeType": "YulVariableDeclaration", + "src": "6553:46:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6584:9:61", + "nodeType": "YulIdentifier", + "src": "6584:9:61" + }, + { + "kind": "number", + "nativeSrc": "6595:2:61", + "nodeType": "YulLiteral", + "src": "6595:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6580:3:61", + "nodeType": "YulIdentifier", + "src": "6580:3:61" + }, + "nativeSrc": "6580:18:61", + "nodeType": "YulFunctionCall", + "src": "6580:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "6567:12:61", + "nodeType": "YulIdentifier", + "src": "6567:12:61" + }, + "nativeSrc": "6567:32:61", + "nodeType": "YulFunctionCall", + "src": "6567:32:61" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "6557:6:61", + "nodeType": "YulTypedName", + "src": "6557:6:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "6642:16:61", + "nodeType": "YulBlock", + "src": "6642:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6651:1:61", + "nodeType": "YulLiteral", + "src": "6651:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "6654:1:61", + "nodeType": "YulLiteral", + "src": "6654:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "6644:6:61", + "nodeType": "YulIdentifier", + "src": "6644:6:61" + }, + "nativeSrc": "6644:12:61", + "nodeType": "YulFunctionCall", + "src": "6644:12:61" + }, + "nativeSrc": "6644:12:61", + "nodeType": "YulExpressionStatement", + "src": "6644:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "6614:6:61", + "nodeType": "YulIdentifier", + "src": "6614:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6630:2:61", + "nodeType": "YulLiteral", + "src": "6630:2:61", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "6634:1:61", + "nodeType": "YulLiteral", + "src": "6634:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "6626:3:61", + "nodeType": "YulIdentifier", + "src": "6626:3:61" + }, + "nativeSrc": "6626:10:61", + "nodeType": "YulFunctionCall", + "src": "6626:10:61" + }, + { + "kind": "number", + "nativeSrc": "6638:1:61", + "nodeType": "YulLiteral", + "src": "6638:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "6622:3:61", + "nodeType": "YulIdentifier", + "src": "6622:3:61" + }, + "nativeSrc": "6622:18:61", + "nodeType": "YulFunctionCall", + "src": "6622:18:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "6611:2:61", + "nodeType": "YulIdentifier", + "src": "6611:2:61" + }, + "nativeSrc": "6611:30:61", + "nodeType": "YulFunctionCall", + "src": "6611:30:61" + }, + "nativeSrc": "6608:50:61", + "nodeType": "YulIf", + "src": "6608:50:61" + }, + { + "nativeSrc": "6667:59:61", + "nodeType": "YulAssignment", + "src": "6667:59:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6698:9:61", + "nodeType": "YulIdentifier", + "src": "6698:9:61" + }, + { + "name": "offset", + "nativeSrc": "6709:6:61", + "nodeType": "YulIdentifier", + "src": "6709:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6694:3:61", + "nodeType": "YulIdentifier", + "src": "6694:3:61" + }, + "nativeSrc": "6694:22:61", + "nodeType": "YulFunctionCall", + "src": "6694:22:61" + }, + { + "name": "dataEnd", + "nativeSrc": "6718:7:61", + "nodeType": "YulIdentifier", + "src": "6718:7:61" + } + ], + "functionName": { + "name": "abi_decode_bytes", + "nativeSrc": "6677:16:61", + "nodeType": "YulIdentifier", + "src": "6677:16:61" + }, + "nativeSrc": "6677:49:61", + "nodeType": "YulFunctionCall", + "src": "6677:49:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "6667:6:61", + "nodeType": "YulIdentifier", + "src": "6667:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_bytes_memory_ptr", + "nativeSrc": "6277:455:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "6331:9:61", + "nodeType": "YulTypedName", + "src": "6331:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "6342:7:61", + "nodeType": "YulTypedName", + "src": "6342:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "6354:6:61", + "nodeType": "YulTypedName", + "src": "6354:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "6362:6:61", + "nodeType": "YulTypedName", + "src": "6362:6:61", + "type": "" + } + ], + "src": "6277:455:61" + }, + { + "body": { + "nativeSrc": "6888:214:61", + "nodeType": "YulBlock", + "src": "6888:214:61", + "statements": [ + { + "nativeSrc": "6898:26:61", + "nodeType": "YulAssignment", + "src": "6898:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6910:9:61", + "nodeType": "YulIdentifier", + "src": "6910:9:61" + }, + { + "kind": "number", + "nativeSrc": "6921:2:61", + "nodeType": "YulLiteral", + "src": "6921:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6906:3:61", + "nodeType": "YulIdentifier", + "src": "6906:3:61" + }, + "nativeSrc": "6906:18:61", + "nodeType": "YulFunctionCall", + "src": "6906:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "6898:4:61", + "nodeType": "YulIdentifier", + "src": "6898:4:61" + } + ] + }, + { + "nativeSrc": "6933:16:61", + "nodeType": "YulVariableDeclaration", + "src": "6933:16:61", + "value": { + "kind": "number", + "nativeSrc": "6943:6:61", + "nodeType": "YulLiteral", + "src": "6943:6:61", + "type": "", + "value": "0xffff" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "6937:2:61", + "nodeType": "YulTypedName", + "src": "6937:2:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6965:9:61", + "nodeType": "YulIdentifier", + "src": "6965:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "6980:6:61", + "nodeType": "YulIdentifier", + "src": "6980:6:61" + }, + { + "name": "_1", + "nativeSrc": "6988:2:61", + "nodeType": "YulIdentifier", + "src": "6988:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "6976:3:61", + "nodeType": "YulIdentifier", + "src": "6976:3:61" + }, + "nativeSrc": "6976:15:61", + "nodeType": "YulFunctionCall", + "src": "6976:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6958:6:61", + "nodeType": "YulIdentifier", + "src": "6958:6:61" + }, + "nativeSrc": "6958:34:61", + "nodeType": "YulFunctionCall", + "src": "6958:34:61" + }, + "nativeSrc": "6958:34:61", + "nodeType": "YulExpressionStatement", + "src": "6958:34:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7012:9:61", + "nodeType": "YulIdentifier", + "src": "7012:9:61" + }, + { + "kind": "number", + "nativeSrc": "7023:2:61", + "nodeType": "YulLiteral", + "src": "7023:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7008:3:61", + "nodeType": "YulIdentifier", + "src": "7008:3:61" + }, + "nativeSrc": "7008:18:61", + "nodeType": "YulFunctionCall", + "src": "7008:18:61" + }, + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "7032:6:61", + "nodeType": "YulIdentifier", + "src": "7032:6:61" + }, + { + "name": "_1", + "nativeSrc": "7040:2:61", + "nodeType": "YulIdentifier", + "src": "7040:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "7028:3:61", + "nodeType": "YulIdentifier", + "src": "7028:3:61" + }, + "nativeSrc": "7028:15:61", + "nodeType": "YulFunctionCall", + "src": "7028:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7001:6:61", + "nodeType": "YulIdentifier", + "src": "7001:6:61" + }, + "nativeSrc": "7001:43:61", + "nodeType": "YulFunctionCall", + "src": "7001:43:61" + }, + "nativeSrc": "7001:43:61", + "nodeType": "YulExpressionStatement", + "src": "7001:43:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7064:9:61", + "nodeType": "YulIdentifier", + "src": "7064:9:61" + }, + { + "kind": "number", + "nativeSrc": "7075:2:61", + "nodeType": "YulLiteral", + "src": "7075:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7060:3:61", + "nodeType": "YulIdentifier", + "src": "7060:3:61" + }, + "nativeSrc": "7060:18:61", + "nodeType": "YulFunctionCall", + "src": "7060:18:61" + }, + { + "arguments": [ + { + "name": "value2", + "nativeSrc": "7084:6:61", + "nodeType": "YulIdentifier", + "src": "7084:6:61" + }, + { + "name": "_1", + "nativeSrc": "7092:2:61", + "nodeType": "YulIdentifier", + "src": "7092:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "7080:3:61", + "nodeType": "YulIdentifier", + "src": "7080:3:61" + }, + "nativeSrc": "7080:15:61", + "nodeType": "YulFunctionCall", + "src": "7080:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7053:6:61", + "nodeType": "YulIdentifier", + "src": "7053:6:61" + }, + "nativeSrc": "7053:43:61", + "nodeType": "YulFunctionCall", + "src": "7053:43:61" + }, + "nativeSrc": "7053:43:61", + "nodeType": "YulExpressionStatement", + "src": "7053:43:61" + } + ] + }, + "name": "abi_encode_tuple_t_uint16_t_uint16_t_uint16__to_t_uint16_t_uint16_t_uint16__fromStack_reversed", + "nativeSrc": "6737:365:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "6841:9:61", + "nodeType": "YulTypedName", + "src": "6841:9:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "6852:6:61", + "nodeType": "YulTypedName", + "src": "6852:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "6860:6:61", + "nodeType": "YulTypedName", + "src": "6860:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "6868:6:61", + "nodeType": "YulTypedName", + "src": "6868:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "6879:4:61", + "nodeType": "YulTypedName", + "src": "6879:4:61", + "type": "" + } + ], + "src": "6737:365:61" + }, + { + "body": { + "nativeSrc": "7226:274:61", + "nodeType": "YulBlock", + "src": "7226:274:61", + "statements": [ + { + "body": { + "nativeSrc": "7273:16:61", + "nodeType": "YulBlock", + "src": "7273:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7282:1:61", + "nodeType": "YulLiteral", + "src": "7282:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "7285:1:61", + "nodeType": "YulLiteral", + "src": "7285:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "7275:6:61", + "nodeType": "YulIdentifier", + "src": "7275:6:61" + }, + "nativeSrc": "7275:12:61", + "nodeType": "YulFunctionCall", + "src": "7275:12:61" + }, + "nativeSrc": "7275:12:61", + "nodeType": "YulExpressionStatement", + "src": "7275:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "7247:7:61", + "nodeType": "YulIdentifier", + "src": "7247:7:61" + }, + { + "name": "headStart", + "nativeSrc": "7256:9:61", + "nodeType": "YulIdentifier", + "src": "7256:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "7243:3:61", + "nodeType": "YulIdentifier", + "src": "7243:3:61" + }, + "nativeSrc": "7243:23:61", + "nodeType": "YulFunctionCall", + "src": "7243:23:61" + }, + { + "kind": "number", + "nativeSrc": "7268:3:61", + "nodeType": "YulLiteral", + "src": "7268:3:61", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "7239:3:61", + "nodeType": "YulIdentifier", + "src": "7239:3:61" + }, + "nativeSrc": "7239:33:61", + "nodeType": "YulFunctionCall", + "src": "7239:33:61" + }, + "nativeSrc": "7236:53:61", + "nodeType": "YulIf", + "src": "7236:53:61" + }, + { + "nativeSrc": "7298:33:61", + "nodeType": "YulAssignment", + "src": "7298:33:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7321:9:61", + "nodeType": "YulIdentifier", + "src": "7321:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "7308:12:61", + "nodeType": "YulIdentifier", + "src": "7308:12:61" + }, + "nativeSrc": "7308:23:61", + "nodeType": "YulFunctionCall", + "src": "7308:23:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "7298:6:61", + "nodeType": "YulIdentifier", + "src": "7298:6:61" + } + ] + }, + { + "nativeSrc": "7340:42:61", + "nodeType": "YulAssignment", + "src": "7340:42:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7367:9:61", + "nodeType": "YulIdentifier", + "src": "7367:9:61" + }, + { + "kind": "number", + "nativeSrc": "7378:2:61", + "nodeType": "YulLiteral", + "src": "7378:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7363:3:61", + "nodeType": "YulIdentifier", + "src": "7363:3:61" + }, + "nativeSrc": "7363:18:61", + "nodeType": "YulFunctionCall", + "src": "7363:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "7350:12:61", + "nodeType": "YulIdentifier", + "src": "7350:12:61" + }, + "nativeSrc": "7350:32:61", + "nodeType": "YulFunctionCall", + "src": "7350:32:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "7340:6:61", + "nodeType": "YulIdentifier", + "src": "7340:6:61" + } + ] + }, + { + "nativeSrc": "7391:47:61", + "nodeType": "YulAssignment", + "src": "7391:47:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7423:9:61", + "nodeType": "YulIdentifier", + "src": "7423:9:61" + }, + { + "kind": "number", + "nativeSrc": "7434:2:61", + "nodeType": "YulLiteral", + "src": "7434:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7419:3:61", + "nodeType": "YulIdentifier", + "src": "7419:3:61" + }, + "nativeSrc": "7419:18:61", + "nodeType": "YulFunctionCall", + "src": "7419:18:61" + } + ], + "functionName": { + "name": "abi_decode_uint16", + "nativeSrc": "7401:17:61", + "nodeType": "YulIdentifier", + "src": "7401:17:61" + }, + "nativeSrc": "7401:37:61", + "nodeType": "YulFunctionCall", + "src": "7401:37:61" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "7391:6:61", + "nodeType": "YulIdentifier", + "src": "7391:6:61" + } + ] + }, + { + "nativeSrc": "7447:47:61", + "nodeType": "YulAssignment", + "src": "7447:47:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7479:9:61", + "nodeType": "YulIdentifier", + "src": "7479:9:61" + }, + { + "kind": "number", + "nativeSrc": "7490:2:61", + "nodeType": "YulLiteral", + "src": "7490:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7475:3:61", + "nodeType": "YulIdentifier", + "src": "7475:3:61" + }, + "nativeSrc": "7475:18:61", + "nodeType": "YulFunctionCall", + "src": "7475:18:61" + } + ], + "functionName": { + "name": "abi_decode_uint16", + "nativeSrc": "7457:17:61", + "nodeType": "YulIdentifier", + "src": "7457:17:61" + }, + "nativeSrc": "7457:37:61", + "nodeType": "YulFunctionCall", + "src": "7457:37:61" + }, + "variableNames": [ + { + "name": "value3", + "nativeSrc": "7447:6:61", + "nodeType": "YulIdentifier", + "src": "7447:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_uint256t_uint16t_uint16", + "nativeSrc": "7107:393:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "7168:9:61", + "nodeType": "YulTypedName", + "src": "7168:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "7179:7:61", + "nodeType": "YulTypedName", + "src": "7179:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "7191:6:61", + "nodeType": "YulTypedName", + "src": "7191:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "7199:6:61", + "nodeType": "YulTypedName", + "src": "7199:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "7207:6:61", + "nodeType": "YulTypedName", + "src": "7207:6:61", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "7215:6:61", + "nodeType": "YulTypedName", + "src": "7215:6:61", + "type": "" + } + ], + "src": "7107:393:61" + }, + { + "body": { + "nativeSrc": "7612:434:61", + "nodeType": "YulBlock", + "src": "7612:434:61", + "statements": [ + { + "body": { + "nativeSrc": "7658:16:61", + "nodeType": "YulBlock", + "src": "7658:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7667:1:61", + "nodeType": "YulLiteral", + "src": "7667:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "7670:1:61", + "nodeType": "YulLiteral", + "src": "7670:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "7660:6:61", + "nodeType": "YulIdentifier", + "src": "7660:6:61" + }, + "nativeSrc": "7660:12:61", + "nodeType": "YulFunctionCall", + "src": "7660:12:61" + }, + "nativeSrc": "7660:12:61", + "nodeType": "YulExpressionStatement", + "src": "7660:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "7633:7:61", + "nodeType": "YulIdentifier", + "src": "7633:7:61" + }, + { + "name": "headStart", + "nativeSrc": "7642:9:61", + "nodeType": "YulIdentifier", + "src": "7642:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "7629:3:61", + "nodeType": "YulIdentifier", + "src": "7629:3:61" + }, + "nativeSrc": "7629:23:61", + "nodeType": "YulFunctionCall", + "src": "7629:23:61" + }, + { + "kind": "number", + "nativeSrc": "7654:2:61", + "nodeType": "YulLiteral", + "src": "7654:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "7625:3:61", + "nodeType": "YulIdentifier", + "src": "7625:3:61" + }, + "nativeSrc": "7625:32:61", + "nodeType": "YulFunctionCall", + "src": "7625:32:61" + }, + "nativeSrc": "7622:52:61", + "nodeType": "YulIf", + "src": "7622:52:61" + }, + { + "nativeSrc": "7683:37:61", + "nodeType": "YulVariableDeclaration", + "src": "7683:37:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7710:9:61", + "nodeType": "YulIdentifier", + "src": "7710:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "7697:12:61", + "nodeType": "YulIdentifier", + "src": "7697:12:61" + }, + "nativeSrc": "7697:23:61", + "nodeType": "YulFunctionCall", + "src": "7697:23:61" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "7687:6:61", + "nodeType": "YulTypedName", + "src": "7687:6:61", + "type": "" + } + ] + }, + { + "nativeSrc": "7729:28:61", + "nodeType": "YulVariableDeclaration", + "src": "7729:28:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7747:2:61", + "nodeType": "YulLiteral", + "src": "7747:2:61", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "7751:1:61", + "nodeType": "YulLiteral", + "src": "7751:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "7743:3:61", + "nodeType": "YulIdentifier", + "src": "7743:3:61" + }, + "nativeSrc": "7743:10:61", + "nodeType": "YulFunctionCall", + "src": "7743:10:61" + }, + { + "kind": "number", + "nativeSrc": "7755:1:61", + "nodeType": "YulLiteral", + "src": "7755:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "7739:3:61", + "nodeType": "YulIdentifier", + "src": "7739:3:61" + }, + "nativeSrc": "7739:18:61", + "nodeType": "YulFunctionCall", + "src": "7739:18:61" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "7733:2:61", + "nodeType": "YulTypedName", + "src": "7733:2:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "7784:16:61", + "nodeType": "YulBlock", + "src": "7784:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7793:1:61", + "nodeType": "YulLiteral", + "src": "7793:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "7796:1:61", + "nodeType": "YulLiteral", + "src": "7796:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "7786:6:61", + "nodeType": "YulIdentifier", + "src": "7786:6:61" + }, + "nativeSrc": "7786:12:61", + "nodeType": "YulFunctionCall", + "src": "7786:12:61" + }, + "nativeSrc": "7786:12:61", + "nodeType": "YulExpressionStatement", + "src": "7786:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "7772:6:61", + "nodeType": "YulIdentifier", + "src": "7772:6:61" + }, + { + "name": "_1", + "nativeSrc": "7780:2:61", + "nodeType": "YulIdentifier", + "src": "7780:2:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "7769:2:61", + "nodeType": "YulIdentifier", + "src": "7769:2:61" + }, + "nativeSrc": "7769:14:61", + "nodeType": "YulFunctionCall", + "src": "7769:14:61" + }, + "nativeSrc": "7766:34:61", + "nodeType": "YulIf", + "src": "7766:34:61" + }, + { + "nativeSrc": "7809:59:61", + "nodeType": "YulAssignment", + "src": "7809:59:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7840:9:61", + "nodeType": "YulIdentifier", + "src": "7840:9:61" + }, + { + "name": "offset", + "nativeSrc": "7851:6:61", + "nodeType": "YulIdentifier", + "src": "7851:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7836:3:61", + "nodeType": "YulIdentifier", + "src": "7836:3:61" + }, + "nativeSrc": "7836:22:61", + "nodeType": "YulFunctionCall", + "src": "7836:22:61" + }, + { + "name": "dataEnd", + "nativeSrc": "7860:7:61", + "nodeType": "YulIdentifier", + "src": "7860:7:61" + } + ], + "functionName": { + "name": "abi_decode_bytes", + "nativeSrc": "7819:16:61", + "nodeType": "YulIdentifier", + "src": "7819:16:61" + }, + "nativeSrc": "7819:49:61", + "nodeType": "YulFunctionCall", + "src": "7819:49:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "7809:6:61", + "nodeType": "YulIdentifier", + "src": "7809:6:61" + } + ] + }, + { + "nativeSrc": "7877:48:61", + "nodeType": "YulVariableDeclaration", + "src": "7877:48:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7910:9:61", + "nodeType": "YulIdentifier", + "src": "7910:9:61" + }, + { + "kind": "number", + "nativeSrc": "7921:2:61", + "nodeType": "YulLiteral", + "src": "7921:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7906:3:61", + "nodeType": "YulIdentifier", + "src": "7906:3:61" + }, + "nativeSrc": "7906:18:61", + "nodeType": "YulFunctionCall", + "src": "7906:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "7893:12:61", + "nodeType": "YulIdentifier", + "src": "7893:12:61" + }, + "nativeSrc": "7893:32:61", + "nodeType": "YulFunctionCall", + "src": "7893:32:61" + }, + "variables": [ + { + "name": "offset_1", + "nativeSrc": "7881:8:61", + "nodeType": "YulTypedName", + "src": "7881:8:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "7954:16:61", + "nodeType": "YulBlock", + "src": "7954:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7963:1:61", + "nodeType": "YulLiteral", + "src": "7963:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "7966:1:61", + "nodeType": "YulLiteral", + "src": "7966:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "7956:6:61", + "nodeType": "YulIdentifier", + "src": "7956:6:61" + }, + "nativeSrc": "7956:12:61", + "nodeType": "YulFunctionCall", + "src": "7956:12:61" + }, + "nativeSrc": "7956:12:61", + "nodeType": "YulExpressionStatement", + "src": "7956:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset_1", + "nativeSrc": "7940:8:61", + "nodeType": "YulIdentifier", + "src": "7940:8:61" + }, + { + "name": "_1", + "nativeSrc": "7950:2:61", + "nodeType": "YulIdentifier", + "src": "7950:2:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "7937:2:61", + "nodeType": "YulIdentifier", + "src": "7937:2:61" + }, + "nativeSrc": "7937:16:61", + "nodeType": "YulFunctionCall", + "src": "7937:16:61" + }, + "nativeSrc": "7934:36:61", + "nodeType": "YulIf", + "src": "7934:36:61" + }, + { + "nativeSrc": "7979:61:61", + "nodeType": "YulAssignment", + "src": "7979:61:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8010:9:61", + "nodeType": "YulIdentifier", + "src": "8010:9:61" + }, + { + "name": "offset_1", + "nativeSrc": "8021:8:61", + "nodeType": "YulIdentifier", + "src": "8021:8:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8006:3:61", + "nodeType": "YulIdentifier", + "src": "8006:3:61" + }, + "nativeSrc": "8006:24:61", + "nodeType": "YulFunctionCall", + "src": "8006:24:61" + }, + { + "name": "dataEnd", + "nativeSrc": "8032:7:61", + "nodeType": "YulIdentifier", + "src": "8032:7:61" + } + ], + "functionName": { + "name": "abi_decode_bytes", + "nativeSrc": "7989:16:61", + "nodeType": "YulIdentifier", + "src": "7989:16:61" + }, + "nativeSrc": "7989:51:61", + "nodeType": "YulFunctionCall", + "src": "7989:51:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "7979:6:61", + "nodeType": "YulIdentifier", + "src": "7979:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr", + "nativeSrc": "7505:541:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "7570:9:61", + "nodeType": "YulTypedName", + "src": "7570:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "7581:7:61", + "nodeType": "YulTypedName", + "src": "7581:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "7593:6:61", + "nodeType": "YulTypedName", + "src": "7593:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "7601:6:61", + "nodeType": "YulTypedName", + "src": "7601:6:61", + "type": "" + } + ], + "src": "7505:541:61" + }, + { + "body": { + "nativeSrc": "8093:76:61", + "nodeType": "YulBlock", + "src": "8093:76:61", + "statements": [ + { + "body": { + "nativeSrc": "8147:16:61", + "nodeType": "YulBlock", + "src": "8147:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8156:1:61", + "nodeType": "YulLiteral", + "src": "8156:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "8159:1:61", + "nodeType": "YulLiteral", + "src": "8159:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "8149:6:61", + "nodeType": "YulIdentifier", + "src": "8149:6:61" + }, + "nativeSrc": "8149:12:61", + "nodeType": "YulFunctionCall", + "src": "8149:12:61" + }, + "nativeSrc": "8149:12:61", + "nodeType": "YulExpressionStatement", + "src": "8149:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "8116:5:61", + "nodeType": "YulIdentifier", + "src": "8116:5:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "8137:5:61", + "nodeType": "YulIdentifier", + "src": "8137:5:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "8130:6:61", + "nodeType": "YulIdentifier", + "src": "8130:6:61" + }, + "nativeSrc": "8130:13:61", + "nodeType": "YulFunctionCall", + "src": "8130:13:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "8123:6:61", + "nodeType": "YulIdentifier", + "src": "8123:6:61" + }, + "nativeSrc": "8123:21:61", + "nodeType": "YulFunctionCall", + "src": "8123:21:61" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "8113:2:61", + "nodeType": "YulIdentifier", + "src": "8113:2:61" + }, + "nativeSrc": "8113:32:61", + "nodeType": "YulFunctionCall", + "src": "8113:32:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "8106:6:61", + "nodeType": "YulIdentifier", + "src": "8106:6:61" + }, + "nativeSrc": "8106:40:61", + "nodeType": "YulFunctionCall", + "src": "8106:40:61" + }, + "nativeSrc": "8103:60:61", + "nodeType": "YulIf", + "src": "8103:60:61" + } + ] + }, + "name": "validator_revert_bool", + "nativeSrc": "8051:118:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "8082:5:61", + "nodeType": "YulTypedName", + "src": "8082:5:61", + "type": "" + } + ], + "src": "8051:118:61" + }, + { + "body": { + "nativeSrc": "8258:298:61", + "nodeType": "YulBlock", + "src": "8258:298:61", + "statements": [ + { + "body": { + "nativeSrc": "8304:16:61", + "nodeType": "YulBlock", + "src": "8304:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8313:1:61", + "nodeType": "YulLiteral", + "src": "8313:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "8316:1:61", + "nodeType": "YulLiteral", + "src": "8316:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "8306:6:61", + "nodeType": "YulIdentifier", + "src": "8306:6:61" + }, + "nativeSrc": "8306:12:61", + "nodeType": "YulFunctionCall", + "src": "8306:12:61" + }, + "nativeSrc": "8306:12:61", + "nodeType": "YulExpressionStatement", + "src": "8306:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "8279:7:61", + "nodeType": "YulIdentifier", + "src": "8279:7:61" + }, + { + "name": "headStart", + "nativeSrc": "8288:9:61", + "nodeType": "YulIdentifier", + "src": "8288:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "8275:3:61", + "nodeType": "YulIdentifier", + "src": "8275:3:61" + }, + "nativeSrc": "8275:23:61", + "nodeType": "YulFunctionCall", + "src": "8275:23:61" + }, + { + "kind": "number", + "nativeSrc": "8300:2:61", + "nodeType": "YulLiteral", + "src": "8300:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "8271:3:61", + "nodeType": "YulIdentifier", + "src": "8271:3:61" + }, + "nativeSrc": "8271:32:61", + "nodeType": "YulFunctionCall", + "src": "8271:32:61" + }, + "nativeSrc": "8268:52:61", + "nodeType": "YulIf", + "src": "8268:52:61" + }, + { + "nativeSrc": "8329:36:61", + "nodeType": "YulVariableDeclaration", + "src": "8329:36:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8355:9:61", + "nodeType": "YulIdentifier", + "src": "8355:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "8342:12:61", + "nodeType": "YulIdentifier", + "src": "8342:12:61" + }, + "nativeSrc": "8342:23:61", + "nodeType": "YulFunctionCall", + "src": "8342:23:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "8333:5:61", + "nodeType": "YulTypedName", + "src": "8333:5:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "8399:5:61", + "nodeType": "YulIdentifier", + "src": "8399:5:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "8374:24:61", + "nodeType": "YulIdentifier", + "src": "8374:24:61" + }, + "nativeSrc": "8374:31:61", + "nodeType": "YulFunctionCall", + "src": "8374:31:61" + }, + "nativeSrc": "8374:31:61", + "nodeType": "YulExpressionStatement", + "src": "8374:31:61" + }, + { + "nativeSrc": "8414:15:61", + "nodeType": "YulAssignment", + "src": "8414:15:61", + "value": { + "name": "value", + "nativeSrc": "8424:5:61", + "nodeType": "YulIdentifier", + "src": "8424:5:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "8414:6:61", + "nodeType": "YulIdentifier", + "src": "8414:6:61" + } + ] + }, + { + "nativeSrc": "8438:47:61", + "nodeType": "YulVariableDeclaration", + "src": "8438:47:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8470:9:61", + "nodeType": "YulIdentifier", + "src": "8470:9:61" + }, + { + "kind": "number", + "nativeSrc": "8481:2:61", + "nodeType": "YulLiteral", + "src": "8481:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8466:3:61", + "nodeType": "YulIdentifier", + "src": "8466:3:61" + }, + "nativeSrc": "8466:18:61", + "nodeType": "YulFunctionCall", + "src": "8466:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "8453:12:61", + "nodeType": "YulIdentifier", + "src": "8453:12:61" + }, + "nativeSrc": "8453:32:61", + "nodeType": "YulFunctionCall", + "src": "8453:32:61" + }, + "variables": [ + { + "name": "value_1", + "nativeSrc": "8442:7:61", + "nodeType": "YulTypedName", + "src": "8442:7:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nativeSrc": "8516:7:61", + "nodeType": "YulIdentifier", + "src": "8516:7:61" + } + ], + "functionName": { + "name": "validator_revert_bool", + "nativeSrc": "8494:21:61", + "nodeType": "YulIdentifier", + "src": "8494:21:61" + }, + "nativeSrc": "8494:30:61", + "nodeType": "YulFunctionCall", + "src": "8494:30:61" + }, + "nativeSrc": "8494:30:61", + "nodeType": "YulExpressionStatement", + "src": "8494:30:61" + }, + { + "nativeSrc": "8533:17:61", + "nodeType": "YulAssignment", + "src": "8533:17:61", + "value": { + "name": "value_1", + "nativeSrc": "8543:7:61", + "nodeType": "YulIdentifier", + "src": "8543:7:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "8533:6:61", + "nodeType": "YulIdentifier", + "src": "8533:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_bool", + "nativeSrc": "8174:382:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "8216:9:61", + "nodeType": "YulTypedName", + "src": "8216:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "8227:7:61", + "nodeType": "YulTypedName", + "src": "8227:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "8239:6:61", + "nodeType": "YulTypedName", + "src": "8239:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "8247:6:61", + "nodeType": "YulTypedName", + "src": "8247:6:61", + "type": "" + } + ], + "src": "8174:382:61" + }, + { + "body": { + "nativeSrc": "8842:479:61", + "nodeType": "YulBlock", + "src": "8842:479:61", + "statements": [ + { + "nativeSrc": "8852:27:61", + "nodeType": "YulAssignment", + "src": "8852:27:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8864:9:61", + "nodeType": "YulIdentifier", + "src": "8864:9:61" + }, + { + "kind": "number", + "nativeSrc": "8875:3:61", + "nodeType": "YulLiteral", + "src": "8875:3:61", + "type": "", + "value": "256" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8860:3:61", + "nodeType": "YulIdentifier", + "src": "8860:3:61" + }, + "nativeSrc": "8860:19:61", + "nodeType": "YulFunctionCall", + "src": "8860:19:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "8852:4:61", + "nodeType": "YulIdentifier", + "src": "8852:4:61" + } + ] + }, + { + "nativeSrc": "8888:16:61", + "nodeType": "YulVariableDeclaration", + "src": "8888:16:61", + "value": { + "kind": "number", + "nativeSrc": "8898:6:61", + "nodeType": "YulLiteral", + "src": "8898:6:61", + "type": "", + "value": "0xffff" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "8892:2:61", + "nodeType": "YulTypedName", + "src": "8892:2:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8920:9:61", + "nodeType": "YulIdentifier", + "src": "8920:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "8935:6:61", + "nodeType": "YulIdentifier", + "src": "8935:6:61" + }, + { + "name": "_1", + "nativeSrc": "8943:2:61", + "nodeType": "YulIdentifier", + "src": "8943:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "8931:3:61", + "nodeType": "YulIdentifier", + "src": "8931:3:61" + }, + "nativeSrc": "8931:15:61", + "nodeType": "YulFunctionCall", + "src": "8931:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8913:6:61", + "nodeType": "YulIdentifier", + "src": "8913:6:61" + }, + "nativeSrc": "8913:34:61", + "nodeType": "YulFunctionCall", + "src": "8913:34:61" + }, + "nativeSrc": "8913:34:61", + "nodeType": "YulExpressionStatement", + "src": "8913:34:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8967:9:61", + "nodeType": "YulIdentifier", + "src": "8967:9:61" + }, + { + "kind": "number", + "nativeSrc": "8978:2:61", + "nodeType": "YulLiteral", + "src": "8978:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8963:3:61", + "nodeType": "YulIdentifier", + "src": "8963:3:61" + }, + "nativeSrc": "8963:18:61", + "nodeType": "YulFunctionCall", + "src": "8963:18:61" + }, + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "8987:6:61", + "nodeType": "YulIdentifier", + "src": "8987:6:61" + }, + { + "name": "_1", + "nativeSrc": "8995:2:61", + "nodeType": "YulIdentifier", + "src": "8995:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "8983:3:61", + "nodeType": "YulIdentifier", + "src": "8983:3:61" + }, + "nativeSrc": "8983:15:61", + "nodeType": "YulFunctionCall", + "src": "8983:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8956:6:61", + "nodeType": "YulIdentifier", + "src": "8956:6:61" + }, + "nativeSrc": "8956:43:61", + "nodeType": "YulFunctionCall", + "src": "8956:43:61" + }, + "nativeSrc": "8956:43:61", + "nodeType": "YulExpressionStatement", + "src": "8956:43:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "9019:9:61", + "nodeType": "YulIdentifier", + "src": "9019:9:61" + }, + { + "kind": "number", + "nativeSrc": "9030:2:61", + "nodeType": "YulLiteral", + "src": "9030:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9015:3:61", + "nodeType": "YulIdentifier", + "src": "9015:3:61" + }, + "nativeSrc": "9015:18:61", + "nodeType": "YulFunctionCall", + "src": "9015:18:61" + }, + { + "arguments": [ + { + "name": "value2", + "nativeSrc": "9039:6:61", + "nodeType": "YulIdentifier", + "src": "9039:6:61" + }, + { + "name": "_1", + "nativeSrc": "9047:2:61", + "nodeType": "YulIdentifier", + "src": "9047:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "9035:3:61", + "nodeType": "YulIdentifier", + "src": "9035:3:61" + }, + "nativeSrc": "9035:15:61", + "nodeType": "YulFunctionCall", + "src": "9035:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9008:6:61", + "nodeType": "YulIdentifier", + "src": "9008:6:61" + }, + "nativeSrc": "9008:43:61", + "nodeType": "YulFunctionCall", + "src": "9008:43:61" + }, + "nativeSrc": "9008:43:61", + "nodeType": "YulExpressionStatement", + "src": "9008:43:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "9071:9:61", + "nodeType": "YulIdentifier", + "src": "9071:9:61" + }, + { + "kind": "number", + "nativeSrc": "9082:2:61", + "nodeType": "YulLiteral", + "src": "9082:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9067:3:61", + "nodeType": "YulIdentifier", + "src": "9067:3:61" + }, + "nativeSrc": "9067:18:61", + "nodeType": "YulFunctionCall", + "src": "9067:18:61" + }, + { + "arguments": [ + { + "name": "value3", + "nativeSrc": "9091:6:61", + "nodeType": "YulIdentifier", + "src": "9091:6:61" + }, + { + "name": "_1", + "nativeSrc": "9099:2:61", + "nodeType": "YulIdentifier", + "src": "9099:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "9087:3:61", + "nodeType": "YulIdentifier", + "src": "9087:3:61" + }, + "nativeSrc": "9087:15:61", + "nodeType": "YulFunctionCall", + "src": "9087:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9060:6:61", + "nodeType": "YulIdentifier", + "src": "9060:6:61" + }, + "nativeSrc": "9060:43:61", + "nodeType": "YulFunctionCall", + "src": "9060:43:61" + }, + "nativeSrc": "9060:43:61", + "nodeType": "YulExpressionStatement", + "src": "9060:43:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "9123:9:61", + "nodeType": "YulIdentifier", + "src": "9123:9:61" + }, + { + "kind": "number", + "nativeSrc": "9134:3:61", + "nodeType": "YulLiteral", + "src": "9134:3:61", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9119:3:61", + "nodeType": "YulIdentifier", + "src": "9119:3:61" + }, + "nativeSrc": "9119:19:61", + "nodeType": "YulFunctionCall", + "src": "9119:19:61" + }, + { + "arguments": [ + { + "name": "value4", + "nativeSrc": "9144:6:61", + "nodeType": "YulIdentifier", + "src": "9144:6:61" + }, + { + "name": "_1", + "nativeSrc": "9152:2:61", + "nodeType": "YulIdentifier", + "src": "9152:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "9140:3:61", + "nodeType": "YulIdentifier", + "src": "9140:3:61" + }, + "nativeSrc": "9140:15:61", + "nodeType": "YulFunctionCall", + "src": "9140:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9112:6:61", + "nodeType": "YulIdentifier", + "src": "9112:6:61" + }, + "nativeSrc": "9112:44:61", + "nodeType": "YulFunctionCall", + "src": "9112:44:61" + }, + "nativeSrc": "9112:44:61", + "nodeType": "YulExpressionStatement", + "src": "9112:44:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "9176:9:61", + "nodeType": "YulIdentifier", + "src": "9176:9:61" + }, + { + "kind": "number", + "nativeSrc": "9187:3:61", + "nodeType": "YulLiteral", + "src": "9187:3:61", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9172:3:61", + "nodeType": "YulIdentifier", + "src": "9172:3:61" + }, + "nativeSrc": "9172:19:61", + "nodeType": "YulFunctionCall", + "src": "9172:19:61" + }, + { + "arguments": [ + { + "name": "value5", + "nativeSrc": "9197:6:61", + "nodeType": "YulIdentifier", + "src": "9197:6:61" + }, + { + "name": "_1", + "nativeSrc": "9205:2:61", + "nodeType": "YulIdentifier", + "src": "9205:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "9193:3:61", + "nodeType": "YulIdentifier", + "src": "9193:3:61" + }, + "nativeSrc": "9193:15:61", + "nodeType": "YulFunctionCall", + "src": "9193:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9165:6:61", + "nodeType": "YulIdentifier", + "src": "9165:6:61" + }, + "nativeSrc": "9165:44:61", + "nodeType": "YulFunctionCall", + "src": "9165:44:61" + }, + "nativeSrc": "9165:44:61", + "nodeType": "YulExpressionStatement", + "src": "9165:44:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "9229:9:61", + "nodeType": "YulIdentifier", + "src": "9229:9:61" + }, + { + "kind": "number", + "nativeSrc": "9240:3:61", + "nodeType": "YulLiteral", + "src": "9240:3:61", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9225:3:61", + "nodeType": "YulIdentifier", + "src": "9225:3:61" + }, + "nativeSrc": "9225:19:61", + "nodeType": "YulFunctionCall", + "src": "9225:19:61" + }, + { + "arguments": [ + { + "name": "value6", + "nativeSrc": "9250:6:61", + "nodeType": "YulIdentifier", + "src": "9250:6:61" + }, + { + "name": "_1", + "nativeSrc": "9258:2:61", + "nodeType": "YulIdentifier", + "src": "9258:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "9246:3:61", + "nodeType": "YulIdentifier", + "src": "9246:3:61" + }, + "nativeSrc": "9246:15:61", + "nodeType": "YulFunctionCall", + "src": "9246:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9218:6:61", + "nodeType": "YulIdentifier", + "src": "9218:6:61" + }, + "nativeSrc": "9218:44:61", + "nodeType": "YulFunctionCall", + "src": "9218:44:61" + }, + "nativeSrc": "9218:44:61", + "nodeType": "YulExpressionStatement", + "src": "9218:44:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "9282:9:61", + "nodeType": "YulIdentifier", + "src": "9282:9:61" + }, + { + "kind": "number", + "nativeSrc": "9293:3:61", + "nodeType": "YulLiteral", + "src": "9293:3:61", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9278:3:61", + "nodeType": "YulIdentifier", + "src": "9278:3:61" + }, + "nativeSrc": "9278:19:61", + "nodeType": "YulFunctionCall", + "src": "9278:19:61" + }, + { + "arguments": [ + { + "name": "value7", + "nativeSrc": "9303:6:61", + "nodeType": "YulIdentifier", + "src": "9303:6:61" + }, + { + "name": "_1", + "nativeSrc": "9311:2:61", + "nodeType": "YulIdentifier", + "src": "9311:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "9299:3:61", + "nodeType": "YulIdentifier", + "src": "9299:3:61" + }, + "nativeSrc": "9299:15:61", + "nodeType": "YulFunctionCall", + "src": "9299:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9271:6:61", + "nodeType": "YulIdentifier", + "src": "9271:6:61" + }, + "nativeSrc": "9271:44:61", + "nodeType": "YulFunctionCall", + "src": "9271:44:61" + }, + "nativeSrc": "9271:44:61", + "nodeType": "YulExpressionStatement", + "src": "9271:44:61" + } + ] + }, + "name": "abi_encode_tuple_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16__to_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16__fromStack_reversed", + "nativeSrc": "8561:760:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "8755:9:61", + "nodeType": "YulTypedName", + "src": "8755:9:61", + "type": "" + }, + { + "name": "value7", + "nativeSrc": "8766:6:61", + "nodeType": "YulTypedName", + "src": "8766:6:61", + "type": "" + }, + { + "name": "value6", + "nativeSrc": "8774:6:61", + "nodeType": "YulTypedName", + "src": "8774:6:61", + "type": "" + }, + { + "name": "value5", + "nativeSrc": "8782:6:61", + "nodeType": "YulTypedName", + "src": "8782:6:61", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "8790:6:61", + "nodeType": "YulTypedName", + "src": "8790:6:61", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "8798:6:61", + "nodeType": "YulTypedName", + "src": "8798:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "8806:6:61", + "nodeType": "YulTypedName", + "src": "8806:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "8814:6:61", + "nodeType": "YulTypedName", + "src": "8814:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "8822:6:61", + "nodeType": "YulTypedName", + "src": "8822:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "8833:4:61", + "nodeType": "YulTypedName", + "src": "8833:4:61", + "type": "" + } + ], + "src": "8561:760:61" + }, + { + "body": { + "nativeSrc": "9442:102:61", + "nodeType": "YulBlock", + "src": "9442:102:61", + "statements": [ + { + "nativeSrc": "9452:26:61", + "nodeType": "YulAssignment", + "src": "9452:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "9464:9:61", + "nodeType": "YulIdentifier", + "src": "9464:9:61" + }, + { + "kind": "number", + "nativeSrc": "9475:2:61", + "nodeType": "YulLiteral", + "src": "9475:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9460:3:61", + "nodeType": "YulIdentifier", + "src": "9460:3:61" + }, + "nativeSrc": "9460:18:61", + "nodeType": "YulFunctionCall", + "src": "9460:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "9452:4:61", + "nodeType": "YulIdentifier", + "src": "9452:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "9494:9:61", + "nodeType": "YulIdentifier", + "src": "9494:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "9509:6:61", + "nodeType": "YulIdentifier", + "src": "9509:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9525:3:61", + "nodeType": "YulLiteral", + "src": "9525:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "9530:1:61", + "nodeType": "YulLiteral", + "src": "9530:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "9521:3:61", + "nodeType": "YulIdentifier", + "src": "9521:3:61" + }, + "nativeSrc": "9521:11:61", + "nodeType": "YulFunctionCall", + "src": "9521:11:61" + }, + { + "kind": "number", + "nativeSrc": "9534:1:61", + "nodeType": "YulLiteral", + "src": "9534:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "9517:3:61", + "nodeType": "YulIdentifier", + "src": "9517:3:61" + }, + "nativeSrc": "9517:19:61", + "nodeType": "YulFunctionCall", + "src": "9517:19:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "9505:3:61", + "nodeType": "YulIdentifier", + "src": "9505:3:61" + }, + "nativeSrc": "9505:32:61", + "nodeType": "YulFunctionCall", + "src": "9505:32:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9487:6:61", + "nodeType": "YulIdentifier", + "src": "9487:6:61" + }, + "nativeSrc": "9487:51:61", + "nodeType": "YulFunctionCall", + "src": "9487:51:61" + }, + "nativeSrc": "9487:51:61", + "nodeType": "YulExpressionStatement", + "src": "9487:51:61" + } + ] + }, + "name": "abi_encode_tuple_t_contract$_IERC20_$4513__to_t_address__fromStack_reversed", + "nativeSrc": "9326:218:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "9411:9:61", + "nodeType": "YulTypedName", + "src": "9411:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "9422:6:61", + "nodeType": "YulTypedName", + "src": "9422:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "9433:4:61", + "nodeType": "YulTypedName", + "src": "9433:4:61", + "type": "" + } + ], + "src": "9326:218:61" + }, + { + "body": { + "nativeSrc": "9679:535:61", + "nodeType": "YulBlock", + "src": "9679:535:61", + "statements": [ + { + "body": { + "nativeSrc": "9726:16:61", + "nodeType": "YulBlock", + "src": "9726:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9735:1:61", + "nodeType": "YulLiteral", + "src": "9735:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "9738:1:61", + "nodeType": "YulLiteral", + "src": "9738:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "9728:6:61", + "nodeType": "YulIdentifier", + "src": "9728:6:61" + }, + "nativeSrc": "9728:12:61", + "nodeType": "YulFunctionCall", + "src": "9728:12:61" + }, + "nativeSrc": "9728:12:61", + "nodeType": "YulExpressionStatement", + "src": "9728:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "9700:7:61", + "nodeType": "YulIdentifier", + "src": "9700:7:61" + }, + { + "name": "headStart", + "nativeSrc": "9709:9:61", + "nodeType": "YulIdentifier", + "src": "9709:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "9696:3:61", + "nodeType": "YulIdentifier", + "src": "9696:3:61" + }, + "nativeSrc": "9696:23:61", + "nodeType": "YulFunctionCall", + "src": "9696:23:61" + }, + { + "kind": "number", + "nativeSrc": "9721:3:61", + "nodeType": "YulLiteral", + "src": "9721:3:61", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "9692:3:61", + "nodeType": "YulIdentifier", + "src": "9692:3:61" + }, + "nativeSrc": "9692:33:61", + "nodeType": "YulFunctionCall", + "src": "9692:33:61" + }, + "nativeSrc": "9689:53:61", + "nodeType": "YulIf", + "src": "9689:53:61" + }, + { + "nativeSrc": "9751:36:61", + "nodeType": "YulVariableDeclaration", + "src": "9751:36:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "9777:9:61", + "nodeType": "YulIdentifier", + "src": "9777:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "9764:12:61", + "nodeType": "YulIdentifier", + "src": "9764:12:61" + }, + "nativeSrc": "9764:23:61", + "nodeType": "YulFunctionCall", + "src": "9764:23:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "9755:5:61", + "nodeType": "YulTypedName", + "src": "9755:5:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "9821:5:61", + "nodeType": "YulIdentifier", + "src": "9821:5:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "9796:24:61", + "nodeType": "YulIdentifier", + "src": "9796:24:61" + }, + "nativeSrc": "9796:31:61", + "nodeType": "YulFunctionCall", + "src": "9796:31:61" + }, + "nativeSrc": "9796:31:61", + "nodeType": "YulExpressionStatement", + "src": "9796:31:61" + }, + { + "nativeSrc": "9836:15:61", + "nodeType": "YulAssignment", + "src": "9836:15:61", + "value": { + "name": "value", + "nativeSrc": "9846:5:61", + "nodeType": "YulIdentifier", + "src": "9846:5:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "9836:6:61", + "nodeType": "YulIdentifier", + "src": "9836:6:61" + } + ] + }, + { + "nativeSrc": "9860:47:61", + "nodeType": "YulVariableDeclaration", + "src": "9860:47:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "9892:9:61", + "nodeType": "YulIdentifier", + "src": "9892:9:61" + }, + { + "kind": "number", + "nativeSrc": "9903:2:61", + "nodeType": "YulLiteral", + "src": "9903:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9888:3:61", + "nodeType": "YulIdentifier", + "src": "9888:3:61" + }, + "nativeSrc": "9888:18:61", + "nodeType": "YulFunctionCall", + "src": "9888:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "9875:12:61", + "nodeType": "YulIdentifier", + "src": "9875:12:61" + }, + "nativeSrc": "9875:32:61", + "nodeType": "YulFunctionCall", + "src": "9875:32:61" + }, + "variables": [ + { + "name": "value_1", + "nativeSrc": "9864:7:61", + "nodeType": "YulTypedName", + "src": "9864:7:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nativeSrc": "9941:7:61", + "nodeType": "YulIdentifier", + "src": "9941:7:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "9916:24:61", + "nodeType": "YulIdentifier", + "src": "9916:24:61" + }, + "nativeSrc": "9916:33:61", + "nodeType": "YulFunctionCall", + "src": "9916:33:61" + }, + "nativeSrc": "9916:33:61", + "nodeType": "YulExpressionStatement", + "src": "9916:33:61" + }, + { + "nativeSrc": "9958:17:61", + "nodeType": "YulAssignment", + "src": "9958:17:61", + "value": { + "name": "value_1", + "nativeSrc": "9968:7:61", + "nodeType": "YulIdentifier", + "src": "9968:7:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "9958:6:61", + "nodeType": "YulIdentifier", + "src": "9958:6:61" + } + ] + }, + { + "nativeSrc": "9984:42:61", + "nodeType": "YulAssignment", + "src": "9984:42:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10011:9:61", + "nodeType": "YulIdentifier", + "src": "10011:9:61" + }, + { + "kind": "number", + "nativeSrc": "10022:2:61", + "nodeType": "YulLiteral", + "src": "10022:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10007:3:61", + "nodeType": "YulIdentifier", + "src": "10007:3:61" + }, + "nativeSrc": "10007:18:61", + "nodeType": "YulFunctionCall", + "src": "10007:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "9994:12:61", + "nodeType": "YulIdentifier", + "src": "9994:12:61" + }, + "nativeSrc": "9994:32:61", + "nodeType": "YulFunctionCall", + "src": "9994:32:61" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "9984:6:61", + "nodeType": "YulIdentifier", + "src": "9984:6:61" + } + ] + }, + { + "nativeSrc": "10035:46:61", + "nodeType": "YulVariableDeclaration", + "src": "10035:46:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10066:9:61", + "nodeType": "YulIdentifier", + "src": "10066:9:61" + }, + { + "kind": "number", + "nativeSrc": "10077:2:61", + "nodeType": "YulLiteral", + "src": "10077:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10062:3:61", + "nodeType": "YulIdentifier", + "src": "10062:3:61" + }, + "nativeSrc": "10062:18:61", + "nodeType": "YulFunctionCall", + "src": "10062:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "10049:12:61", + "nodeType": "YulIdentifier", + "src": "10049:12:61" + }, + "nativeSrc": "10049:32:61", + "nodeType": "YulFunctionCall", + "src": "10049:32:61" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "10039:6:61", + "nodeType": "YulTypedName", + "src": "10039:6:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "10124:16:61", + "nodeType": "YulBlock", + "src": "10124:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10133:1:61", + "nodeType": "YulLiteral", + "src": "10133:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "10136:1:61", + "nodeType": "YulLiteral", + "src": "10136:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "10126:6:61", + "nodeType": "YulIdentifier", + "src": "10126:6:61" + }, + "nativeSrc": "10126:12:61", + "nodeType": "YulFunctionCall", + "src": "10126:12:61" + }, + "nativeSrc": "10126:12:61", + "nodeType": "YulExpressionStatement", + "src": "10126:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "10096:6:61", + "nodeType": "YulIdentifier", + "src": "10096:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10112:2:61", + "nodeType": "YulLiteral", + "src": "10112:2:61", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "10116:1:61", + "nodeType": "YulLiteral", + "src": "10116:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "10108:3:61", + "nodeType": "YulIdentifier", + "src": "10108:3:61" + }, + "nativeSrc": "10108:10:61", + "nodeType": "YulFunctionCall", + "src": "10108:10:61" + }, + { + "kind": "number", + "nativeSrc": "10120:1:61", + "nodeType": "YulLiteral", + "src": "10120:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "10104:3:61", + "nodeType": "YulIdentifier", + "src": "10104:3:61" + }, + "nativeSrc": "10104:18:61", + "nodeType": "YulFunctionCall", + "src": "10104:18:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "10093:2:61", + "nodeType": "YulIdentifier", + "src": "10093:2:61" + }, + "nativeSrc": "10093:30:61", + "nodeType": "YulFunctionCall", + "src": "10093:30:61" + }, + "nativeSrc": "10090:50:61", + "nodeType": "YulIf", + "src": "10090:50:61" + }, + { + "nativeSrc": "10149:59:61", + "nodeType": "YulAssignment", + "src": "10149:59:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10180:9:61", + "nodeType": "YulIdentifier", + "src": "10180:9:61" + }, + { + "name": "offset", + "nativeSrc": "10191:6:61", + "nodeType": "YulIdentifier", + "src": "10191:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10176:3:61", + "nodeType": "YulIdentifier", + "src": "10176:3:61" + }, + "nativeSrc": "10176:22:61", + "nodeType": "YulFunctionCall", + "src": "10176:22:61" + }, + { + "name": "dataEnd", + "nativeSrc": "10200:7:61", + "nodeType": "YulIdentifier", + "src": "10200:7:61" + } + ], + "functionName": { + "name": "abi_decode_bytes", + "nativeSrc": "10159:16:61", + "nodeType": "YulIdentifier", + "src": "10159:16:61" + }, + "nativeSrc": "10159:49:61", + "nodeType": "YulFunctionCall", + "src": "10159:49:61" + }, + "variableNames": [ + { + "name": "value3", + "nativeSrc": "10149:6:61", + "nodeType": "YulIdentifier", + "src": "10149:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr", + "nativeSrc": "9549:665:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "9621:9:61", + "nodeType": "YulTypedName", + "src": "9621:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "9632:7:61", + "nodeType": "YulTypedName", + "src": "9632:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "9644:6:61", + "nodeType": "YulTypedName", + "src": "9644:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "9652:6:61", + "nodeType": "YulTypedName", + "src": "9652:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "9660:6:61", + "nodeType": "YulTypedName", + "src": "9660:6:61", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "9668:6:61", + "nodeType": "YulTypedName", + "src": "9668:6:61", + "type": "" + } + ], + "src": "9549:665:61" + }, + { + "body": { + "nativeSrc": "10530:569:61", + "nodeType": "YulBlock", + "src": "10530:569:61", + "statements": [ + { + "nativeSrc": "10540:27:61", + "nodeType": "YulAssignment", + "src": "10540:27:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10552:9:61", + "nodeType": "YulIdentifier", + "src": "10552:9:61" + }, + { + "kind": "number", + "nativeSrc": "10563:3:61", + "nodeType": "YulLiteral", + "src": "10563:3:61", + "type": "", + "value": "256" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10548:3:61", + "nodeType": "YulIdentifier", + "src": "10548:3:61" + }, + "nativeSrc": "10548:19:61", + "nodeType": "YulFunctionCall", + "src": "10548:19:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "10540:4:61", + "nodeType": "YulIdentifier", + "src": "10540:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "10612:6:61", + "nodeType": "YulIdentifier", + "src": "10612:6:61" + } + ], + "functionName": { + "name": "validator_assert_enum_BookingStatus", + "nativeSrc": "10576:35:61", + "nodeType": "YulIdentifier", + "src": "10576:35:61" + }, + "nativeSrc": "10576:43:61", + "nodeType": "YulFunctionCall", + "src": "10576:43:61" + }, + "nativeSrc": "10576:43:61", + "nodeType": "YulExpressionStatement", + "src": "10576:43:61" + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10635:9:61", + "nodeType": "YulIdentifier", + "src": "10635:9:61" + }, + { + "name": "value0", + "nativeSrc": "10646:6:61", + "nodeType": "YulIdentifier", + "src": "10646:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "10628:6:61", + "nodeType": "YulIdentifier", + "src": "10628:6:61" + }, + "nativeSrc": "10628:25:61", + "nodeType": "YulFunctionCall", + "src": "10628:25:61" + }, + "nativeSrc": "10628:25:61", + "nodeType": "YulExpressionStatement", + "src": "10628:25:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10673:9:61", + "nodeType": "YulIdentifier", + "src": "10673:9:61" + }, + { + "kind": "number", + "nativeSrc": "10684:2:61", + "nodeType": "YulLiteral", + "src": "10684:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10669:3:61", + "nodeType": "YulIdentifier", + "src": "10669:3:61" + }, + "nativeSrc": "10669:18:61", + "nodeType": "YulFunctionCall", + "src": "10669:18:61" + }, + { + "name": "value1", + "nativeSrc": "10689:6:61", + "nodeType": "YulIdentifier", + "src": "10689:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "10662:6:61", + "nodeType": "YulIdentifier", + "src": "10662:6:61" + }, + "nativeSrc": "10662:34:61", + "nodeType": "YulFunctionCall", + "src": "10662:34:61" + }, + "nativeSrc": "10662:34:61", + "nodeType": "YulExpressionStatement", + "src": "10662:34:61" + }, + { + "nativeSrc": "10705:29:61", + "nodeType": "YulVariableDeclaration", + "src": "10705:29:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10723:3:61", + "nodeType": "YulLiteral", + "src": "10723:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "10728:1:61", + "nodeType": "YulLiteral", + "src": "10728:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "10719:3:61", + "nodeType": "YulIdentifier", + "src": "10719:3:61" + }, + "nativeSrc": "10719:11:61", + "nodeType": "YulFunctionCall", + "src": "10719:11:61" + }, + { + "kind": "number", + "nativeSrc": "10732:1:61", + "nodeType": "YulLiteral", + "src": "10732:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "10715:3:61", + "nodeType": "YulIdentifier", + "src": "10715:3:61" + }, + "nativeSrc": "10715:19:61", + "nodeType": "YulFunctionCall", + "src": "10715:19:61" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "10709:2:61", + "nodeType": "YulTypedName", + "src": "10709:2:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10754:9:61", + "nodeType": "YulIdentifier", + "src": "10754:9:61" + }, + { + "kind": "number", + "nativeSrc": "10765:2:61", + "nodeType": "YulLiteral", + "src": "10765:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10750:3:61", + "nodeType": "YulIdentifier", + "src": "10750:3:61" + }, + "nativeSrc": "10750:18:61", + "nodeType": "YulFunctionCall", + "src": "10750:18:61" + }, + { + "arguments": [ + { + "name": "value2", + "nativeSrc": "10774:6:61", + "nodeType": "YulIdentifier", + "src": "10774:6:61" + }, + { + "name": "_1", + "nativeSrc": "10782:2:61", + "nodeType": "YulIdentifier", + "src": "10782:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "10770:3:61", + "nodeType": "YulIdentifier", + "src": "10770:3:61" + }, + "nativeSrc": "10770:15:61", + "nodeType": "YulFunctionCall", + "src": "10770:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "10743:6:61", + "nodeType": "YulIdentifier", + "src": "10743:6:61" + }, + "nativeSrc": "10743:43:61", + "nodeType": "YulFunctionCall", + "src": "10743:43:61" + }, + "nativeSrc": "10743:43:61", + "nodeType": "YulExpressionStatement", + "src": "10743:43:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10806:9:61", + "nodeType": "YulIdentifier", + "src": "10806:9:61" + }, + { + "kind": "number", + "nativeSrc": "10817:2:61", + "nodeType": "YulLiteral", + "src": "10817:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10802:3:61", + "nodeType": "YulIdentifier", + "src": "10802:3:61" + }, + "nativeSrc": "10802:18:61", + "nodeType": "YulFunctionCall", + "src": "10802:18:61" + }, + { + "arguments": [ + { + "name": "value3", + "nativeSrc": "10826:6:61", + "nodeType": "YulIdentifier", + "src": "10826:6:61" + }, + { + "name": "_1", + "nativeSrc": "10834:2:61", + "nodeType": "YulIdentifier", + "src": "10834:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "10822:3:61", + "nodeType": "YulIdentifier", + "src": "10822:3:61" + }, + "nativeSrc": "10822:15:61", + "nodeType": "YulFunctionCall", + "src": "10822:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "10795:6:61", + "nodeType": "YulIdentifier", + "src": "10795:6:61" + }, + "nativeSrc": "10795:43:61", + "nodeType": "YulFunctionCall", + "src": "10795:43:61" + }, + "nativeSrc": "10795:43:61", + "nodeType": "YulExpressionStatement", + "src": "10795:43:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10858:9:61", + "nodeType": "YulIdentifier", + "src": "10858:9:61" + }, + { + "kind": "number", + "nativeSrc": "10869:3:61", + "nodeType": "YulLiteral", + "src": "10869:3:61", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10854:3:61", + "nodeType": "YulIdentifier", + "src": "10854:3:61" + }, + "nativeSrc": "10854:19:61", + "nodeType": "YulFunctionCall", + "src": "10854:19:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value4", + "nativeSrc": "10889:6:61", + "nodeType": "YulIdentifier", + "src": "10889:6:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "10882:6:61", + "nodeType": "YulIdentifier", + "src": "10882:6:61" + }, + "nativeSrc": "10882:14:61", + "nodeType": "YulFunctionCall", + "src": "10882:14:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "10875:6:61", + "nodeType": "YulIdentifier", + "src": "10875:6:61" + }, + "nativeSrc": "10875:22:61", + "nodeType": "YulFunctionCall", + "src": "10875:22:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "10847:6:61", + "nodeType": "YulIdentifier", + "src": "10847:6:61" + }, + "nativeSrc": "10847:51:61", + "nodeType": "YulFunctionCall", + "src": "10847:51:61" + }, + "nativeSrc": "10847:51:61", + "nodeType": "YulExpressionStatement", + "src": "10847:51:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10918:9:61", + "nodeType": "YulIdentifier", + "src": "10918:9:61" + }, + { + "kind": "number", + "nativeSrc": "10929:3:61", + "nodeType": "YulLiteral", + "src": "10929:3:61", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10914:3:61", + "nodeType": "YulIdentifier", + "src": "10914:3:61" + }, + "nativeSrc": "10914:19:61", + "nodeType": "YulFunctionCall", + "src": "10914:19:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value5", + "nativeSrc": "10949:6:61", + "nodeType": "YulIdentifier", + "src": "10949:6:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "10942:6:61", + "nodeType": "YulIdentifier", + "src": "10942:6:61" + }, + "nativeSrc": "10942:14:61", + "nodeType": "YulFunctionCall", + "src": "10942:14:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "10935:6:61", + "nodeType": "YulIdentifier", + "src": "10935:6:61" + }, + "nativeSrc": "10935:22:61", + "nodeType": "YulFunctionCall", + "src": "10935:22:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "10907:6:61", + "nodeType": "YulIdentifier", + "src": "10907:6:61" + }, + "nativeSrc": "10907:51:61", + "nodeType": "YulFunctionCall", + "src": "10907:51:61" + }, + "nativeSrc": "10907:51:61", + "nodeType": "YulExpressionStatement", + "src": "10907:51:61" + }, + { + "nativeSrc": "10967:20:61", + "nodeType": "YulVariableDeclaration", + "src": "10967:20:61", + "value": { + "kind": "number", + "nativeSrc": "10977:10:61", + "nodeType": "YulLiteral", + "src": "10977:10:61", + "type": "", + "value": "0xffffffff" + }, + "variables": [ + { + "name": "_2", + "nativeSrc": "10971:2:61", + "nodeType": "YulTypedName", + "src": "10971:2:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11007:9:61", + "nodeType": "YulIdentifier", + "src": "11007:9:61" + }, + { + "kind": "number", + "nativeSrc": "11018:3:61", + "nodeType": "YulLiteral", + "src": "11018:3:61", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11003:3:61", + "nodeType": "YulIdentifier", + "src": "11003:3:61" + }, + "nativeSrc": "11003:19:61", + "nodeType": "YulFunctionCall", + "src": "11003:19:61" + }, + { + "arguments": [ + { + "name": "value6", + "nativeSrc": "11028:6:61", + "nodeType": "YulIdentifier", + "src": "11028:6:61" + }, + { + "name": "_2", + "nativeSrc": "11036:2:61", + "nodeType": "YulIdentifier", + "src": "11036:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "11024:3:61", + "nodeType": "YulIdentifier", + "src": "11024:3:61" + }, + "nativeSrc": "11024:15:61", + "nodeType": "YulFunctionCall", + "src": "11024:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "10996:6:61", + "nodeType": "YulIdentifier", + "src": "10996:6:61" + }, + "nativeSrc": "10996:44:61", + "nodeType": "YulFunctionCall", + "src": "10996:44:61" + }, + "nativeSrc": "10996:44:61", + "nodeType": "YulExpressionStatement", + "src": "10996:44:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11060:9:61", + "nodeType": "YulIdentifier", + "src": "11060:9:61" + }, + { + "kind": "number", + "nativeSrc": "11071:3:61", + "nodeType": "YulLiteral", + "src": "11071:3:61", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11056:3:61", + "nodeType": "YulIdentifier", + "src": "11056:3:61" + }, + "nativeSrc": "11056:19:61", + "nodeType": "YulFunctionCall", + "src": "11056:19:61" + }, + { + "arguments": [ + { + "name": "value7", + "nativeSrc": "11081:6:61", + "nodeType": "YulIdentifier", + "src": "11081:6:61" + }, + { + "name": "_2", + "nativeSrc": "11089:2:61", + "nodeType": "YulIdentifier", + "src": "11089:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "11077:3:61", + "nodeType": "YulIdentifier", + "src": "11077:3:61" + }, + "nativeSrc": "11077:15:61", + "nodeType": "YulFunctionCall", + "src": "11077:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11049:6:61", + "nodeType": "YulIdentifier", + "src": "11049:6:61" + }, + "nativeSrc": "11049:44:61", + "nodeType": "YulFunctionCall", + "src": "11049:44:61" + }, + "nativeSrc": "11049:44:61", + "nodeType": "YulExpressionStatement", + "src": "11049:44:61" + } + ] + }, + "name": "abi_encode_tuple_t_enum$_CancellationProposalStatus_$14549_t_uint256_t_address_t_address_t_bool_t_bool_t_uint32_t_uint32__to_t_uint8_t_uint256_t_address_t_address_t_bool_t_bool_t_uint32_t_uint32__fromStack_reversed", + "nativeSrc": "10219:880:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "10443:9:61", + "nodeType": "YulTypedName", + "src": "10443:9:61", + "type": "" + }, + { + "name": "value7", + "nativeSrc": "10454:6:61", + "nodeType": "YulTypedName", + "src": "10454:6:61", + "type": "" + }, + { + "name": "value6", + "nativeSrc": "10462:6:61", + "nodeType": "YulTypedName", + "src": "10462:6:61", + "type": "" + }, + { + "name": "value5", + "nativeSrc": "10470:6:61", + "nodeType": "YulTypedName", + "src": "10470:6:61", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "10478:6:61", + "nodeType": "YulTypedName", + "src": "10478:6:61", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "10486:6:61", + "nodeType": "YulTypedName", + "src": "10486:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "10494:6:61", + "nodeType": "YulTypedName", + "src": "10494:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "10502:6:61", + "nodeType": "YulTypedName", + "src": "10502:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "10510:6:61", + "nodeType": "YulTypedName", + "src": "10510:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "10521:4:61", + "nodeType": "YulTypedName", + "src": "10521:4:61", + "type": "" + } + ], + "src": "10219:880:61" + }, + { + "body": { + "nativeSrc": "11208:425:61", + "nodeType": "YulBlock", + "src": "11208:425:61", + "statements": [ + { + "body": { + "nativeSrc": "11254:16:61", + "nodeType": "YulBlock", + "src": "11254:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "11263:1:61", + "nodeType": "YulLiteral", + "src": "11263:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "11266:1:61", + "nodeType": "YulLiteral", + "src": "11266:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "11256:6:61", + "nodeType": "YulIdentifier", + "src": "11256:6:61" + }, + "nativeSrc": "11256:12:61", + "nodeType": "YulFunctionCall", + "src": "11256:12:61" + }, + "nativeSrc": "11256:12:61", + "nodeType": "YulExpressionStatement", + "src": "11256:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "11229:7:61", + "nodeType": "YulIdentifier", + "src": "11229:7:61" + }, + { + "name": "headStart", + "nativeSrc": "11238:9:61", + "nodeType": "YulIdentifier", + "src": "11238:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "11225:3:61", + "nodeType": "YulIdentifier", + "src": "11225:3:61" + }, + "nativeSrc": "11225:23:61", + "nodeType": "YulFunctionCall", + "src": "11225:23:61" + }, + { + "kind": "number", + "nativeSrc": "11250:2:61", + "nodeType": "YulLiteral", + "src": "11250:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "11221:3:61", + "nodeType": "YulIdentifier", + "src": "11221:3:61" + }, + "nativeSrc": "11221:32:61", + "nodeType": "YulFunctionCall", + "src": "11221:32:61" + }, + "nativeSrc": "11218:52:61", + "nodeType": "YulIf", + "src": "11218:52:61" + }, + { + "nativeSrc": "11279:36:61", + "nodeType": "YulVariableDeclaration", + "src": "11279:36:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11305:9:61", + "nodeType": "YulIdentifier", + "src": "11305:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "11292:12:61", + "nodeType": "YulIdentifier", + "src": "11292:12:61" + }, + "nativeSrc": "11292:23:61", + "nodeType": "YulFunctionCall", + "src": "11292:23:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "11283:5:61", + "nodeType": "YulTypedName", + "src": "11283:5:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "11349:5:61", + "nodeType": "YulIdentifier", + "src": "11349:5:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "11324:24:61", + "nodeType": "YulIdentifier", + "src": "11324:24:61" + }, + "nativeSrc": "11324:31:61", + "nodeType": "YulFunctionCall", + "src": "11324:31:61" + }, + "nativeSrc": "11324:31:61", + "nodeType": "YulExpressionStatement", + "src": "11324:31:61" + }, + { + "nativeSrc": "11364:15:61", + "nodeType": "YulAssignment", + "src": "11364:15:61", + "value": { + "name": "value", + "nativeSrc": "11374:5:61", + "nodeType": "YulIdentifier", + "src": "11374:5:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "11364:6:61", + "nodeType": "YulIdentifier", + "src": "11364:6:61" + } + ] + }, + { + "nativeSrc": "11388:47:61", + "nodeType": "YulVariableDeclaration", + "src": "11388:47:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11420:9:61", + "nodeType": "YulIdentifier", + "src": "11420:9:61" + }, + { + "kind": "number", + "nativeSrc": "11431:2:61", + "nodeType": "YulLiteral", + "src": "11431:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11416:3:61", + "nodeType": "YulIdentifier", + "src": "11416:3:61" + }, + "nativeSrc": "11416:18:61", + "nodeType": "YulFunctionCall", + "src": "11416:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "11403:12:61", + "nodeType": "YulIdentifier", + "src": "11403:12:61" + }, + "nativeSrc": "11403:32:61", + "nodeType": "YulFunctionCall", + "src": "11403:32:61" + }, + "variables": [ + { + "name": "value_1", + "nativeSrc": "11392:7:61", + "nodeType": "YulTypedName", + "src": "11392:7:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nativeSrc": "11469:7:61", + "nodeType": "YulIdentifier", + "src": "11469:7:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "11444:24:61", + "nodeType": "YulIdentifier", + "src": "11444:24:61" + }, + "nativeSrc": "11444:33:61", + "nodeType": "YulFunctionCall", + "src": "11444:33:61" + }, + "nativeSrc": "11444:33:61", + "nodeType": "YulExpressionStatement", + "src": "11444:33:61" + }, + { + "nativeSrc": "11486:17:61", + "nodeType": "YulAssignment", + "src": "11486:17:61", + "value": { + "name": "value_1", + "nativeSrc": "11496:7:61", + "nodeType": "YulIdentifier", + "src": "11496:7:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "11486:6:61", + "nodeType": "YulIdentifier", + "src": "11486:6:61" + } + ] + }, + { + "nativeSrc": "11512:47:61", + "nodeType": "YulVariableDeclaration", + "src": "11512:47:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11544:9:61", + "nodeType": "YulIdentifier", + "src": "11544:9:61" + }, + { + "kind": "number", + "nativeSrc": "11555:2:61", + "nodeType": "YulLiteral", + "src": "11555:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11540:3:61", + "nodeType": "YulIdentifier", + "src": "11540:3:61" + }, + "nativeSrc": "11540:18:61", + "nodeType": "YulFunctionCall", + "src": "11540:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "11527:12:61", + "nodeType": "YulIdentifier", + "src": "11527:12:61" + }, + "nativeSrc": "11527:32:61", + "nodeType": "YulFunctionCall", + "src": "11527:32:61" + }, + "variables": [ + { + "name": "value_2", + "nativeSrc": "11516:7:61", + "nodeType": "YulTypedName", + "src": "11516:7:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_2", + "nativeSrc": "11593:7:61", + "nodeType": "YulIdentifier", + "src": "11593:7:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "11568:24:61", + "nodeType": "YulIdentifier", + "src": "11568:24:61" + }, + "nativeSrc": "11568:33:61", + "nodeType": "YulFunctionCall", + "src": "11568:33:61" + }, + "nativeSrc": "11568:33:61", + "nodeType": "YulExpressionStatement", + "src": "11568:33:61" + }, + { + "nativeSrc": "11610:17:61", + "nodeType": "YulAssignment", + "src": "11610:17:61", + "value": { + "name": "value_2", + "nativeSrc": "11620:7:61", + "nodeType": "YulIdentifier", + "src": "11620:7:61" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "11610:6:61", + "nodeType": "YulIdentifier", + "src": "11610:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_address", + "nativeSrc": "11104:529:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "11158:9:61", + "nodeType": "YulTypedName", + "src": "11158:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "11169:7:61", + "nodeType": "YulTypedName", + "src": "11169:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "11181:6:61", + "nodeType": "YulTypedName", + "src": "11181:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "11189:6:61", + "nodeType": "YulTypedName", + "src": "11189:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "11197:6:61", + "nodeType": "YulTypedName", + "src": "11197:6:61", + "type": "" + } + ], + "src": "11104:529:61" + }, + { + "body": { + "nativeSrc": "11832:761:61", + "nodeType": "YulBlock", + "src": "11832:761:61", + "statements": [ + { + "body": { + "nativeSrc": "11879:16:61", + "nodeType": "YulBlock", + "src": "11879:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "11888:1:61", + "nodeType": "YulLiteral", + "src": "11888:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "11891:1:61", + "nodeType": "YulLiteral", + "src": "11891:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "11881:6:61", + "nodeType": "YulIdentifier", + "src": "11881:6:61" + }, + "nativeSrc": "11881:12:61", + "nodeType": "YulFunctionCall", + "src": "11881:12:61" + }, + "nativeSrc": "11881:12:61", + "nodeType": "YulExpressionStatement", + "src": "11881:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "11853:7:61", + "nodeType": "YulIdentifier", + "src": "11853:7:61" + }, + { + "name": "headStart", + "nativeSrc": "11862:9:61", + "nodeType": "YulIdentifier", + "src": "11862:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "11849:3:61", + "nodeType": "YulIdentifier", + "src": "11849:3:61" + }, + "nativeSrc": "11849:23:61", + "nodeType": "YulFunctionCall", + "src": "11849:23:61" + }, + { + "kind": "number", + "nativeSrc": "11874:3:61", + "nodeType": "YulLiteral", + "src": "11874:3:61", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "11845:3:61", + "nodeType": "YulIdentifier", + "src": "11845:3:61" + }, + "nativeSrc": "11845:33:61", + "nodeType": "YulFunctionCall", + "src": "11845:33:61" + }, + "nativeSrc": "11842:53:61", + "nodeType": "YulIf", + "src": "11842:53:61" + }, + { + "nativeSrc": "11904:36:61", + "nodeType": "YulVariableDeclaration", + "src": "11904:36:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11930:9:61", + "nodeType": "YulIdentifier", + "src": "11930:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "11917:12:61", + "nodeType": "YulIdentifier", + "src": "11917:12:61" + }, + "nativeSrc": "11917:23:61", + "nodeType": "YulFunctionCall", + "src": "11917:23:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "11908:5:61", + "nodeType": "YulTypedName", + "src": "11908:5:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "11974:5:61", + "nodeType": "YulIdentifier", + "src": "11974:5:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "11949:24:61", + "nodeType": "YulIdentifier", + "src": "11949:24:61" + }, + "nativeSrc": "11949:31:61", + "nodeType": "YulFunctionCall", + "src": "11949:31:61" + }, + "nativeSrc": "11949:31:61", + "nodeType": "YulExpressionStatement", + "src": "11949:31:61" + }, + { + "nativeSrc": "11989:15:61", + "nodeType": "YulAssignment", + "src": "11989:15:61", + "value": { + "name": "value", + "nativeSrc": "11999:5:61", + "nodeType": "YulIdentifier", + "src": "11999:5:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "11989:6:61", + "nodeType": "YulIdentifier", + "src": "11989:6:61" + } + ] + }, + { + "nativeSrc": "12013:46:61", + "nodeType": "YulVariableDeclaration", + "src": "12013:46:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12044:9:61", + "nodeType": "YulIdentifier", + "src": "12044:9:61" + }, + { + "kind": "number", + "nativeSrc": "12055:2:61", + "nodeType": "YulLiteral", + "src": "12055:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12040:3:61", + "nodeType": "YulIdentifier", + "src": "12040:3:61" + }, + "nativeSrc": "12040:18:61", + "nodeType": "YulFunctionCall", + "src": "12040:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "12027:12:61", + "nodeType": "YulIdentifier", + "src": "12027:12:61" + }, + "nativeSrc": "12027:32:61", + "nodeType": "YulFunctionCall", + "src": "12027:32:61" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "12017:6:61", + "nodeType": "YulTypedName", + "src": "12017:6:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "12102:16:61", + "nodeType": "YulBlock", + "src": "12102:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12111:1:61", + "nodeType": "YulLiteral", + "src": "12111:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "12114:1:61", + "nodeType": "YulLiteral", + "src": "12114:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "12104:6:61", + "nodeType": "YulIdentifier", + "src": "12104:6:61" + }, + "nativeSrc": "12104:12:61", + "nodeType": "YulFunctionCall", + "src": "12104:12:61" + }, + "nativeSrc": "12104:12:61", + "nodeType": "YulExpressionStatement", + "src": "12104:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "12074:6:61", + "nodeType": "YulIdentifier", + "src": "12074:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12090:2:61", + "nodeType": "YulLiteral", + "src": "12090:2:61", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "12094:1:61", + "nodeType": "YulLiteral", + "src": "12094:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "12086:3:61", + "nodeType": "YulIdentifier", + "src": "12086:3:61" + }, + "nativeSrc": "12086:10:61", + "nodeType": "YulFunctionCall", + "src": "12086:10:61" + }, + { + "kind": "number", + "nativeSrc": "12098:1:61", + "nodeType": "YulLiteral", + "src": "12098:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "12082:3:61", + "nodeType": "YulIdentifier", + "src": "12082:3:61" + }, + "nativeSrc": "12082:18:61", + "nodeType": "YulFunctionCall", + "src": "12082:18:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "12071:2:61", + "nodeType": "YulIdentifier", + "src": "12071:2:61" + }, + "nativeSrc": "12071:30:61", + "nodeType": "YulFunctionCall", + "src": "12071:30:61" + }, + "nativeSrc": "12068:50:61", + "nodeType": "YulIf", + "src": "12068:50:61" + }, + { + "nativeSrc": "12127:59:61", + "nodeType": "YulAssignment", + "src": "12127:59:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12158:9:61", + "nodeType": "YulIdentifier", + "src": "12158:9:61" + }, + { + "name": "offset", + "nativeSrc": "12169:6:61", + "nodeType": "YulIdentifier", + "src": "12169:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12154:3:61", + "nodeType": "YulIdentifier", + "src": "12154:3:61" + }, + "nativeSrc": "12154:22:61", + "nodeType": "YulFunctionCall", + "src": "12154:22:61" + }, + { + "name": "dataEnd", + "nativeSrc": "12178:7:61", + "nodeType": "YulIdentifier", + "src": "12178:7:61" + } + ], + "functionName": { + "name": "abi_decode_bytes", + "nativeSrc": "12137:16:61", + "nodeType": "YulIdentifier", + "src": "12137:16:61" + }, + "nativeSrc": "12137:49:61", + "nodeType": "YulFunctionCall", + "src": "12137:49:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "12127:6:61", + "nodeType": "YulIdentifier", + "src": "12127:6:61" + } + ] + }, + { + "nativeSrc": "12195:42:61", + "nodeType": "YulAssignment", + "src": "12195:42:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12222:9:61", + "nodeType": "YulIdentifier", + "src": "12222:9:61" + }, + { + "kind": "number", + "nativeSrc": "12233:2:61", + "nodeType": "YulLiteral", + "src": "12233:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12218:3:61", + "nodeType": "YulIdentifier", + "src": "12218:3:61" + }, + "nativeSrc": "12218:18:61", + "nodeType": "YulFunctionCall", + "src": "12218:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "12205:12:61", + "nodeType": "YulIdentifier", + "src": "12205:12:61" + }, + "nativeSrc": "12205:32:61", + "nodeType": "YulFunctionCall", + "src": "12205:32:61" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "12195:6:61", + "nodeType": "YulIdentifier", + "src": "12195:6:61" + } + ] + }, + { + "nativeSrc": "12246:42:61", + "nodeType": "YulAssignment", + "src": "12246:42:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12273:9:61", + "nodeType": "YulIdentifier", + "src": "12273:9:61" + }, + { + "kind": "number", + "nativeSrc": "12284:2:61", + "nodeType": "YulLiteral", + "src": "12284:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12269:3:61", + "nodeType": "YulIdentifier", + "src": "12269:3:61" + }, + "nativeSrc": "12269:18:61", + "nodeType": "YulFunctionCall", + "src": "12269:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "12256:12:61", + "nodeType": "YulIdentifier", + "src": "12256:12:61" + }, + "nativeSrc": "12256:32:61", + "nodeType": "YulFunctionCall", + "src": "12256:32:61" + }, + "variableNames": [ + { + "name": "value3", + "nativeSrc": "12246:6:61", + "nodeType": "YulIdentifier", + "src": "12246:6:61" + } + ] + }, + { + "nativeSrc": "12297:48:61", + "nodeType": "YulVariableDeclaration", + "src": "12297:48:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12329:9:61", + "nodeType": "YulIdentifier", + "src": "12329:9:61" + }, + { + "kind": "number", + "nativeSrc": "12340:3:61", + "nodeType": "YulLiteral", + "src": "12340:3:61", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12325:3:61", + "nodeType": "YulIdentifier", + "src": "12325:3:61" + }, + "nativeSrc": "12325:19:61", + "nodeType": "YulFunctionCall", + "src": "12325:19:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "12312:12:61", + "nodeType": "YulIdentifier", + "src": "12312:12:61" + }, + "nativeSrc": "12312:33:61", + "nodeType": "YulFunctionCall", + "src": "12312:33:61" + }, + "variables": [ + { + "name": "value_1", + "nativeSrc": "12301:7:61", + "nodeType": "YulTypedName", + "src": "12301:7:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nativeSrc": "12379:7:61", + "nodeType": "YulIdentifier", + "src": "12379:7:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "12354:24:61", + "nodeType": "YulIdentifier", + "src": "12354:24:61" + }, + "nativeSrc": "12354:33:61", + "nodeType": "YulFunctionCall", + "src": "12354:33:61" + }, + "nativeSrc": "12354:33:61", + "nodeType": "YulExpressionStatement", + "src": "12354:33:61" + }, + { + "nativeSrc": "12396:17:61", + "nodeType": "YulAssignment", + "src": "12396:17:61", + "value": { + "name": "value_1", + "nativeSrc": "12406:7:61", + "nodeType": "YulIdentifier", + "src": "12406:7:61" + }, + "variableNames": [ + { + "name": "value4", + "nativeSrc": "12396:6:61", + "nodeType": "YulIdentifier", + "src": "12396:6:61" + } + ] + }, + { + "nativeSrc": "12422:43:61", + "nodeType": "YulAssignment", + "src": "12422:43:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12449:9:61", + "nodeType": "YulIdentifier", + "src": "12449:9:61" + }, + { + "kind": "number", + "nativeSrc": "12460:3:61", + "nodeType": "YulLiteral", + "src": "12460:3:61", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12445:3:61", + "nodeType": "YulIdentifier", + "src": "12445:3:61" + }, + "nativeSrc": "12445:19:61", + "nodeType": "YulFunctionCall", + "src": "12445:19:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "12432:12:61", + "nodeType": "YulIdentifier", + "src": "12432:12:61" + }, + "nativeSrc": "12432:33:61", + "nodeType": "YulFunctionCall", + "src": "12432:33:61" + }, + "variableNames": [ + { + "name": "value5", + "nativeSrc": "12422:6:61", + "nodeType": "YulIdentifier", + "src": "12422:6:61" + } + ] + }, + { + "nativeSrc": "12474:48:61", + "nodeType": "YulVariableDeclaration", + "src": "12474:48:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12506:9:61", + "nodeType": "YulIdentifier", + "src": "12506:9:61" + }, + { + "kind": "number", + "nativeSrc": "12517:3:61", + "nodeType": "YulLiteral", + "src": "12517:3:61", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12502:3:61", + "nodeType": "YulIdentifier", + "src": "12502:3:61" + }, + "nativeSrc": "12502:19:61", + "nodeType": "YulFunctionCall", + "src": "12502:19:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "12489:12:61", + "nodeType": "YulIdentifier", + "src": "12489:12:61" + }, + "nativeSrc": "12489:33:61", + "nodeType": "YulFunctionCall", + "src": "12489:33:61" + }, + "variables": [ + { + "name": "value_2", + "nativeSrc": "12478:7:61", + "nodeType": "YulTypedName", + "src": "12478:7:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_2", + "nativeSrc": "12553:7:61", + "nodeType": "YulIdentifier", + "src": "12553:7:61" + } + ], + "functionName": { + "name": "validator_revert_bool", + "nativeSrc": "12531:21:61", + "nodeType": "YulIdentifier", + "src": "12531:21:61" + }, + "nativeSrc": "12531:30:61", + "nodeType": "YulFunctionCall", + "src": "12531:30:61" + }, + "nativeSrc": "12531:30:61", + "nodeType": "YulExpressionStatement", + "src": "12531:30:61" + }, + { + "nativeSrc": "12570:17:61", + "nodeType": "YulAssignment", + "src": "12570:17:61", + "value": { + "name": "value_2", + "nativeSrc": "12580:7:61", + "nodeType": "YulIdentifier", + "src": "12580:7:61" + }, + "variableNames": [ + { + "name": "value6", + "nativeSrc": "12570:6:61", + "nodeType": "YulIdentifier", + "src": "12570:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_string_memory_ptrt_uint256t_uint256t_contract$_IERC20_$4513t_uint256t_bool", + "nativeSrc": "11638:955:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "11750:9:61", + "nodeType": "YulTypedName", + "src": "11750:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "11761:7:61", + "nodeType": "YulTypedName", + "src": "11761:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "11773:6:61", + "nodeType": "YulTypedName", + "src": "11773:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "11781:6:61", + "nodeType": "YulTypedName", + "src": "11781:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "11789:6:61", + "nodeType": "YulTypedName", + "src": "11789:6:61", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "11797:6:61", + "nodeType": "YulTypedName", + "src": "11797:6:61", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "11805:6:61", + "nodeType": "YulTypedName", + "src": "11805:6:61", + "type": "" + }, + { + "name": "value5", + "nativeSrc": "11813:6:61", + "nodeType": "YulTypedName", + "src": "11813:6:61", + "type": "" + }, + { + "name": "value6", + "nativeSrc": "11821:6:61", + "nodeType": "YulTypedName", + "src": "11821:6:61", + "type": "" + } + ], + "src": "11638:955:61" + }, + { + "body": { + "nativeSrc": "12685:301:61", + "nodeType": "YulBlock", + "src": "12685:301:61", + "statements": [ + { + "body": { + "nativeSrc": "12731:16:61", + "nodeType": "YulBlock", + "src": "12731:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12740:1:61", + "nodeType": "YulLiteral", + "src": "12740:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "12743:1:61", + "nodeType": "YulLiteral", + "src": "12743:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "12733:6:61", + "nodeType": "YulIdentifier", + "src": "12733:6:61" + }, + "nativeSrc": "12733:12:61", + "nodeType": "YulFunctionCall", + "src": "12733:12:61" + }, + "nativeSrc": "12733:12:61", + "nodeType": "YulExpressionStatement", + "src": "12733:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "12706:7:61", + "nodeType": "YulIdentifier", + "src": "12706:7:61" + }, + { + "name": "headStart", + "nativeSrc": "12715:9:61", + "nodeType": "YulIdentifier", + "src": "12715:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "12702:3:61", + "nodeType": "YulIdentifier", + "src": "12702:3:61" + }, + "nativeSrc": "12702:23:61", + "nodeType": "YulFunctionCall", + "src": "12702:23:61" + }, + { + "kind": "number", + "nativeSrc": "12727:2:61", + "nodeType": "YulLiteral", + "src": "12727:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "12698:3:61", + "nodeType": "YulIdentifier", + "src": "12698:3:61" + }, + "nativeSrc": "12698:32:61", + "nodeType": "YulFunctionCall", + "src": "12698:32:61" + }, + "nativeSrc": "12695:52:61", + "nodeType": "YulIf", + "src": "12695:52:61" + }, + { + "nativeSrc": "12756:36:61", + "nodeType": "YulVariableDeclaration", + "src": "12756:36:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12782:9:61", + "nodeType": "YulIdentifier", + "src": "12782:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "12769:12:61", + "nodeType": "YulIdentifier", + "src": "12769:12:61" + }, + "nativeSrc": "12769:23:61", + "nodeType": "YulFunctionCall", + "src": "12769:23:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "12760:5:61", + "nodeType": "YulTypedName", + "src": "12760:5:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "12826:5:61", + "nodeType": "YulIdentifier", + "src": "12826:5:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "12801:24:61", + "nodeType": "YulIdentifier", + "src": "12801:24:61" + }, + "nativeSrc": "12801:31:61", + "nodeType": "YulFunctionCall", + "src": "12801:31:61" + }, + "nativeSrc": "12801:31:61", + "nodeType": "YulExpressionStatement", + "src": "12801:31:61" + }, + { + "nativeSrc": "12841:15:61", + "nodeType": "YulAssignment", + "src": "12841:15:61", + "value": { + "name": "value", + "nativeSrc": "12851:5:61", + "nodeType": "YulIdentifier", + "src": "12851:5:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "12841:6:61", + "nodeType": "YulIdentifier", + "src": "12841:6:61" + } + ] + }, + { + "nativeSrc": "12865:47:61", + "nodeType": "YulVariableDeclaration", + "src": "12865:47:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12897:9:61", + "nodeType": "YulIdentifier", + "src": "12897:9:61" + }, + { + "kind": "number", + "nativeSrc": "12908:2:61", + "nodeType": "YulLiteral", + "src": "12908:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12893:3:61", + "nodeType": "YulIdentifier", + "src": "12893:3:61" + }, + "nativeSrc": "12893:18:61", + "nodeType": "YulFunctionCall", + "src": "12893:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "12880:12:61", + "nodeType": "YulIdentifier", + "src": "12880:12:61" + }, + "nativeSrc": "12880:32:61", + "nodeType": "YulFunctionCall", + "src": "12880:32:61" + }, + "variables": [ + { + "name": "value_1", + "nativeSrc": "12869:7:61", + "nodeType": "YulTypedName", + "src": "12869:7:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nativeSrc": "12946:7:61", + "nodeType": "YulIdentifier", + "src": "12946:7:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "12921:24:61", + "nodeType": "YulIdentifier", + "src": "12921:24:61" + }, + "nativeSrc": "12921:33:61", + "nodeType": "YulFunctionCall", + "src": "12921:33:61" + }, + "nativeSrc": "12921:33:61", + "nodeType": "YulExpressionStatement", + "src": "12921:33:61" + }, + { + "nativeSrc": "12963:17:61", + "nodeType": "YulAssignment", + "src": "12963:17:61", + "value": { + "name": "value_1", + "nativeSrc": "12973:7:61", + "nodeType": "YulIdentifier", + "src": "12973:7:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "12963:6:61", + "nodeType": "YulIdentifier", + "src": "12963:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_address", + "nativeSrc": "12598:388:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "12643:9:61", + "nodeType": "YulTypedName", + "src": "12643:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "12654:7:61", + "nodeType": "YulTypedName", + "src": "12654:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "12666:6:61", + "nodeType": "YulTypedName", + "src": "12666:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "12674:6:61", + "nodeType": "YulTypedName", + "src": "12674:6:61", + "type": "" + } + ], + "src": "12598:388:61" + }, + { + "body": { + "nativeSrc": "13046:325:61", + "nodeType": "YulBlock", + "src": "13046:325:61", + "statements": [ + { + "nativeSrc": "13056:22:61", + "nodeType": "YulAssignment", + "src": "13056:22:61", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13070:1:61", + "nodeType": "YulLiteral", + "src": "13070:1:61", + "type": "", + "value": "1" + }, + { + "name": "data", + "nativeSrc": "13073:4:61", + "nodeType": "YulIdentifier", + "src": "13073:4:61" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "13066:3:61", + "nodeType": "YulIdentifier", + "src": "13066:3:61" + }, + "nativeSrc": "13066:12:61", + "nodeType": "YulFunctionCall", + "src": "13066:12:61" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "13056:6:61", + "nodeType": "YulIdentifier", + "src": "13056:6:61" + } + ] + }, + { + "nativeSrc": "13087:38:61", + "nodeType": "YulVariableDeclaration", + "src": "13087:38:61", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "13117:4:61", + "nodeType": "YulIdentifier", + "src": "13117:4:61" + }, + { + "kind": "number", + "nativeSrc": "13123:1:61", + "nodeType": "YulLiteral", + "src": "13123:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "13113:3:61", + "nodeType": "YulIdentifier", + "src": "13113:3:61" + }, + "nativeSrc": "13113:12:61", + "nodeType": "YulFunctionCall", + "src": "13113:12:61" + }, + "variables": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "13091:18:61", + "nodeType": "YulTypedName", + "src": "13091:18:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "13164:31:61", + "nodeType": "YulBlock", + "src": "13164:31:61", + "statements": [ + { + "nativeSrc": "13166:27:61", + "nodeType": "YulAssignment", + "src": "13166:27:61", + "value": { + "arguments": [ + { + "name": "length", + "nativeSrc": "13180:6:61", + "nodeType": "YulIdentifier", + "src": "13180:6:61" + }, + { + "kind": "number", + "nativeSrc": "13188:4:61", + "nodeType": "YulLiteral", + "src": "13188:4:61", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "13176:3:61", + "nodeType": "YulIdentifier", + "src": "13176:3:61" + }, + "nativeSrc": "13176:17:61", + "nodeType": "YulFunctionCall", + "src": "13176:17:61" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "13166:6:61", + "nodeType": "YulIdentifier", + "src": "13166:6:61" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "13144:18:61", + "nodeType": "YulIdentifier", + "src": "13144:18:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "13137:6:61", + "nodeType": "YulIdentifier", + "src": "13137:6:61" + }, + "nativeSrc": "13137:26:61", + "nodeType": "YulFunctionCall", + "src": "13137:26:61" + }, + "nativeSrc": "13134:61:61", + "nodeType": "YulIf", + "src": "13134:61:61" + }, + { + "body": { + "nativeSrc": "13254:111:61", + "nodeType": "YulBlock", + "src": "13254:111:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13275:1:61", + "nodeType": "YulLiteral", + "src": "13275:1:61", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13282:3:61", + "nodeType": "YulLiteral", + "src": "13282:3:61", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "13287:10:61", + "nodeType": "YulLiteral", + "src": "13287:10:61", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "13278:3:61", + "nodeType": "YulIdentifier", + "src": "13278:3:61" + }, + "nativeSrc": "13278:20:61", + "nodeType": "YulFunctionCall", + "src": "13278:20:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13268:6:61", + "nodeType": "YulIdentifier", + "src": "13268:6:61" + }, + "nativeSrc": "13268:31:61", + "nodeType": "YulFunctionCall", + "src": "13268:31:61" + }, + "nativeSrc": "13268:31:61", + "nodeType": "YulExpressionStatement", + "src": "13268:31:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13319:1:61", + "nodeType": "YulLiteral", + "src": "13319:1:61", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "13322:4:61", + "nodeType": "YulLiteral", + "src": "13322:4:61", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13312:6:61", + "nodeType": "YulIdentifier", + "src": "13312:6:61" + }, + "nativeSrc": "13312:15:61", + "nodeType": "YulFunctionCall", + "src": "13312:15:61" + }, + "nativeSrc": "13312:15:61", + "nodeType": "YulExpressionStatement", + "src": "13312:15:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13347:1:61", + "nodeType": "YulLiteral", + "src": "13347:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "13350:4:61", + "nodeType": "YulLiteral", + "src": "13350:4:61", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "13340:6:61", + "nodeType": "YulIdentifier", + "src": "13340:6:61" + }, + "nativeSrc": "13340:15:61", + "nodeType": "YulFunctionCall", + "src": "13340:15:61" + }, + "nativeSrc": "13340:15:61", + "nodeType": "YulExpressionStatement", + "src": "13340:15:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "13210:18:61", + "nodeType": "YulIdentifier", + "src": "13210:18:61" + }, + { + "arguments": [ + { + "name": "length", + "nativeSrc": "13233:6:61", + "nodeType": "YulIdentifier", + "src": "13233:6:61" + }, + { + "kind": "number", + "nativeSrc": "13241:2:61", + "nodeType": "YulLiteral", + "src": "13241:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "13230:2:61", + "nodeType": "YulIdentifier", + "src": "13230:2:61" + }, + "nativeSrc": "13230:14:61", + "nodeType": "YulFunctionCall", + "src": "13230:14:61" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "13207:2:61", + "nodeType": "YulIdentifier", + "src": "13207:2:61" + }, + "nativeSrc": "13207:38:61", + "nodeType": "YulFunctionCall", + "src": "13207:38:61" + }, + "nativeSrc": "13204:161:61", + "nodeType": "YulIf", + "src": "13204:161:61" + } + ] + }, + "name": "extract_byte_array_length", + "nativeSrc": "12991:380:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nativeSrc": "13026:4:61", + "nodeType": "YulTypedName", + "src": "13026:4:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nativeSrc": "13035:6:61", + "nodeType": "YulTypedName", + "src": "13035:6:61", + "type": "" + } + ], + "src": "12991:380:61" + }, + { + "body": { + "nativeSrc": "13454:167:61", + "nodeType": "YulBlock", + "src": "13454:167:61", + "statements": [ + { + "body": { + "nativeSrc": "13500:16:61", + "nodeType": "YulBlock", + "src": "13500:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13509:1:61", + "nodeType": "YulLiteral", + "src": "13509:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "13512:1:61", + "nodeType": "YulLiteral", + "src": "13512:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "13502:6:61", + "nodeType": "YulIdentifier", + "src": "13502:6:61" + }, + "nativeSrc": "13502:12:61", + "nodeType": "YulFunctionCall", + "src": "13502:12:61" + }, + "nativeSrc": "13502:12:61", + "nodeType": "YulExpressionStatement", + "src": "13502:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "13475:7:61", + "nodeType": "YulIdentifier", + "src": "13475:7:61" + }, + { + "name": "headStart", + "nativeSrc": "13484:9:61", + "nodeType": "YulIdentifier", + "src": "13484:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "13471:3:61", + "nodeType": "YulIdentifier", + "src": "13471:3:61" + }, + "nativeSrc": "13471:23:61", + "nodeType": "YulFunctionCall", + "src": "13471:23:61" + }, + { + "kind": "number", + "nativeSrc": "13496:2:61", + "nodeType": "YulLiteral", + "src": "13496:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "13467:3:61", + "nodeType": "YulIdentifier", + "src": "13467:3:61" + }, + "nativeSrc": "13467:32:61", + "nodeType": "YulFunctionCall", + "src": "13467:32:61" + }, + "nativeSrc": "13464:52:61", + "nodeType": "YulIf", + "src": "13464:52:61" + }, + { + "nativeSrc": "13525:29:61", + "nodeType": "YulVariableDeclaration", + "src": "13525:29:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "13544:9:61", + "nodeType": "YulIdentifier", + "src": "13544:9:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "13538:5:61", + "nodeType": "YulIdentifier", + "src": "13538:5:61" + }, + "nativeSrc": "13538:16:61", + "nodeType": "YulFunctionCall", + "src": "13538:16:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "13529:5:61", + "nodeType": "YulTypedName", + "src": "13529:5:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "13585:5:61", + "nodeType": "YulIdentifier", + "src": "13585:5:61" + } + ], + "functionName": { + "name": "validator_revert_bool", + "nativeSrc": "13563:21:61", + "nodeType": "YulIdentifier", + "src": "13563:21:61" + }, + "nativeSrc": "13563:28:61", + "nodeType": "YulFunctionCall", + "src": "13563:28:61" + }, + "nativeSrc": "13563:28:61", + "nodeType": "YulExpressionStatement", + "src": "13563:28:61" + }, + { + "nativeSrc": "13600:15:61", + "nodeType": "YulAssignment", + "src": "13600:15:61", + "value": { + "name": "value", + "nativeSrc": "13610:5:61", + "nodeType": "YulIdentifier", + "src": "13610:5:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "13600:6:61", + "nodeType": "YulIdentifier", + "src": "13600:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bool_fromMemory", + "nativeSrc": "13376:245:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "13420:9:61", + "nodeType": "YulTypedName", + "src": "13420:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "13431:7:61", + "nodeType": "YulTypedName", + "src": "13431:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "13443:6:61", + "nodeType": "YulTypedName", + "src": "13443:6:61", + "type": "" + } + ], + "src": "13376:245:61" + }, + { + "body": { + "nativeSrc": "13772:171:61", + "nodeType": "YulBlock", + "src": "13772:171:61", + "statements": [ + { + "nativeSrc": "13782:26:61", + "nodeType": "YulAssignment", + "src": "13782:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "13794:9:61", + "nodeType": "YulIdentifier", + "src": "13794:9:61" + }, + { + "kind": "number", + "nativeSrc": "13805:2:61", + "nodeType": "YulLiteral", + "src": "13805:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13790:3:61", + "nodeType": "YulIdentifier", + "src": "13790:3:61" + }, + "nativeSrc": "13790:18:61", + "nodeType": "YulFunctionCall", + "src": "13790:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "13782:4:61", + "nodeType": "YulIdentifier", + "src": "13782:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "13824:9:61", + "nodeType": "YulIdentifier", + "src": "13824:9:61" + }, + { + "name": "value0", + "nativeSrc": "13835:6:61", + "nodeType": "YulIdentifier", + "src": "13835:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13817:6:61", + "nodeType": "YulIdentifier", + "src": "13817:6:61" + }, + "nativeSrc": "13817:25:61", + "nodeType": "YulFunctionCall", + "src": "13817:25:61" + }, + "nativeSrc": "13817:25:61", + "nodeType": "YulExpressionStatement", + "src": "13817:25:61" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nativeSrc": "13887:6:61", + "nodeType": "YulIdentifier", + "src": "13887:6:61" + } + ], + "functionName": { + "name": "validator_assert_enum_BookingStatus", + "nativeSrc": "13851:35:61", + "nodeType": "YulIdentifier", + "src": "13851:35:61" + }, + "nativeSrc": "13851:43:61", + "nodeType": "YulFunctionCall", + "src": "13851:43:61" + }, + "nativeSrc": "13851:43:61", + "nodeType": "YulExpressionStatement", + "src": "13851:43:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "13914:9:61", + "nodeType": "YulIdentifier", + "src": "13914:9:61" + }, + { + "kind": "number", + "nativeSrc": "13925:2:61", + "nodeType": "YulLiteral", + "src": "13925:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13910:3:61", + "nodeType": "YulIdentifier", + "src": "13910:3:61" + }, + "nativeSrc": "13910:18:61", + "nodeType": "YulFunctionCall", + "src": "13910:18:61" + }, + { + "name": "value1", + "nativeSrc": "13930:6:61", + "nodeType": "YulIdentifier", + "src": "13930:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13903:6:61", + "nodeType": "YulIdentifier", + "src": "13903:6:61" + }, + "nativeSrc": "13903:34:61", + "nodeType": "YulFunctionCall", + "src": "13903:34:61" + }, + "nativeSrc": "13903:34:61", + "nodeType": "YulExpressionStatement", + "src": "13903:34:61" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_enum$_BookingStatus_$13040__to_t_uint256_t_uint8__fromStack_reversed", + "nativeSrc": "13626:317:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "13733:9:61", + "nodeType": "YulTypedName", + "src": "13733:9:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "13744:6:61", + "nodeType": "YulTypedName", + "src": "13744:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "13752:6:61", + "nodeType": "YulTypedName", + "src": "13752:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "13763:4:61", + "nodeType": "YulTypedName", + "src": "13763:4:61", + "type": "" + } + ], + "src": "13626:317:61" + }, + { + "body": { + "nativeSrc": "14077:145:61", + "nodeType": "YulBlock", + "src": "14077:145:61", + "statements": [ + { + "nativeSrc": "14087:26:61", + "nodeType": "YulAssignment", + "src": "14087:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "14099:9:61", + "nodeType": "YulIdentifier", + "src": "14099:9:61" + }, + { + "kind": "number", + "nativeSrc": "14110:2:61", + "nodeType": "YulLiteral", + "src": "14110:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14095:3:61", + "nodeType": "YulIdentifier", + "src": "14095:3:61" + }, + "nativeSrc": "14095:18:61", + "nodeType": "YulFunctionCall", + "src": "14095:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "14087:4:61", + "nodeType": "YulIdentifier", + "src": "14087:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "14129:9:61", + "nodeType": "YulIdentifier", + "src": "14129:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "14144:6:61", + "nodeType": "YulIdentifier", + "src": "14144:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14160:3:61", + "nodeType": "YulLiteral", + "src": "14160:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "14165:1:61", + "nodeType": "YulLiteral", + "src": "14165:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "14156:3:61", + "nodeType": "YulIdentifier", + "src": "14156:3:61" + }, + "nativeSrc": "14156:11:61", + "nodeType": "YulFunctionCall", + "src": "14156:11:61" + }, + { + "kind": "number", + "nativeSrc": "14169:1:61", + "nodeType": "YulLiteral", + "src": "14169:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "14152:3:61", + "nodeType": "YulIdentifier", + "src": "14152:3:61" + }, + "nativeSrc": "14152:19:61", + "nodeType": "YulFunctionCall", + "src": "14152:19:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "14140:3:61", + "nodeType": "YulIdentifier", + "src": "14140:3:61" + }, + "nativeSrc": "14140:32:61", + "nodeType": "YulFunctionCall", + "src": "14140:32:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "14122:6:61", + "nodeType": "YulIdentifier", + "src": "14122:6:61" + }, + "nativeSrc": "14122:51:61", + "nodeType": "YulFunctionCall", + "src": "14122:51:61" + }, + "nativeSrc": "14122:51:61", + "nodeType": "YulExpressionStatement", + "src": "14122:51:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "14193:9:61", + "nodeType": "YulIdentifier", + "src": "14193:9:61" + }, + { + "kind": "number", + "nativeSrc": "14204:2:61", + "nodeType": "YulLiteral", + "src": "14204:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14189:3:61", + "nodeType": "YulIdentifier", + "src": "14189:3:61" + }, + "nativeSrc": "14189:18:61", + "nodeType": "YulFunctionCall", + "src": "14189:18:61" + }, + { + "name": "value1", + "nativeSrc": "14209:6:61", + "nodeType": "YulIdentifier", + "src": "14209:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "14182:6:61", + "nodeType": "YulIdentifier", + "src": "14182:6:61" + }, + "nativeSrc": "14182:34:61", + "nodeType": "YulFunctionCall", + "src": "14182:34:61" + }, + "nativeSrc": "14182:34:61", + "nodeType": "YulExpressionStatement", + "src": "14182:34:61" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed", + "nativeSrc": "13948:274:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "14038:9:61", + "nodeType": "YulTypedName", + "src": "14038:9:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "14049:6:61", + "nodeType": "YulTypedName", + "src": "14049:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "14057:6:61", + "nodeType": "YulTypedName", + "src": "14057:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "14068:4:61", + "nodeType": "YulTypedName", + "src": "14068:4:61", + "type": "" + } + ], + "src": "13948:274:61" + }, + { + "body": { + "nativeSrc": "14259:95:61", + "nodeType": "YulBlock", + "src": "14259:95:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14276:1:61", + "nodeType": "YulLiteral", + "src": "14276:1:61", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14283:3:61", + "nodeType": "YulLiteral", + "src": "14283:3:61", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "14288:10:61", + "nodeType": "YulLiteral", + "src": "14288:10:61", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "14279:3:61", + "nodeType": "YulIdentifier", + "src": "14279:3:61" + }, + "nativeSrc": "14279:20:61", + "nodeType": "YulFunctionCall", + "src": "14279:20:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "14269:6:61", + "nodeType": "YulIdentifier", + "src": "14269:6:61" + }, + "nativeSrc": "14269:31:61", + "nodeType": "YulFunctionCall", + "src": "14269:31:61" + }, + "nativeSrc": "14269:31:61", + "nodeType": "YulExpressionStatement", + "src": "14269:31:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14316:1:61", + "nodeType": "YulLiteral", + "src": "14316:1:61", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "14319:4:61", + "nodeType": "YulLiteral", + "src": "14319:4:61", + "type": "", + "value": "0x32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "14309:6:61", + "nodeType": "YulIdentifier", + "src": "14309:6:61" + }, + "nativeSrc": "14309:15:61", + "nodeType": "YulFunctionCall", + "src": "14309:15:61" + }, + "nativeSrc": "14309:15:61", + "nodeType": "YulExpressionStatement", + "src": "14309:15:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14340:1:61", + "nodeType": "YulLiteral", + "src": "14340:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "14343:4:61", + "nodeType": "YulLiteral", + "src": "14343:4:61", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "14333:6:61", + "nodeType": "YulIdentifier", + "src": "14333:6:61" + }, + "nativeSrc": "14333:15:61", + "nodeType": "YulFunctionCall", + "src": "14333:15:61" + }, + "nativeSrc": "14333:15:61", + "nodeType": "YulExpressionStatement", + "src": "14333:15:61" + } + ] + }, + "name": "panic_error_0x32", + "nativeSrc": "14227:127:61", + "nodeType": "YulFunctionDefinition", + "src": "14227:127:61" + }, + { + "body": { + "nativeSrc": "14458:101:61", + "nodeType": "YulBlock", + "src": "14458:101:61", + "statements": [ + { + "nativeSrc": "14468:26:61", + "nodeType": "YulAssignment", + "src": "14468:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "14480:9:61", + "nodeType": "YulIdentifier", + "src": "14480:9:61" + }, + { + "kind": "number", + "nativeSrc": "14491:2:61", + "nodeType": "YulLiteral", + "src": "14491:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14476:3:61", + "nodeType": "YulIdentifier", + "src": "14476:3:61" + }, + "nativeSrc": "14476:18:61", + "nodeType": "YulFunctionCall", + "src": "14476:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "14468:4:61", + "nodeType": "YulIdentifier", + "src": "14468:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "14510:9:61", + "nodeType": "YulIdentifier", + "src": "14510:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "14525:6:61", + "nodeType": "YulIdentifier", + "src": "14525:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14541:2:61", + "nodeType": "YulLiteral", + "src": "14541:2:61", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "14545:1:61", + "nodeType": "YulLiteral", + "src": "14545:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "14537:3:61", + "nodeType": "YulIdentifier", + "src": "14537:3:61" + }, + "nativeSrc": "14537:10:61", + "nodeType": "YulFunctionCall", + "src": "14537:10:61" + }, + { + "kind": "number", + "nativeSrc": "14549:1:61", + "nodeType": "YulLiteral", + "src": "14549:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "14533:3:61", + "nodeType": "YulIdentifier", + "src": "14533:3:61" + }, + "nativeSrc": "14533:18:61", + "nodeType": "YulFunctionCall", + "src": "14533:18:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "14521:3:61", + "nodeType": "YulIdentifier", + "src": "14521:3:61" + }, + "nativeSrc": "14521:31:61", + "nodeType": "YulFunctionCall", + "src": "14521:31:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "14503:6:61", + "nodeType": "YulIdentifier", + "src": "14503:6:61" + }, + "nativeSrc": "14503:50:61", + "nodeType": "YulFunctionCall", + "src": "14503:50:61" + }, + "nativeSrc": "14503:50:61", + "nodeType": "YulExpressionStatement", + "src": "14503:50:61" + } + ] + }, + "name": "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed", + "nativeSrc": "14359:200:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "14427:9:61", + "nodeType": "YulTypedName", + "src": "14427:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "14438:6:61", + "nodeType": "YulTypedName", + "src": "14438:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "14449:4:61", + "nodeType": "YulTypedName", + "src": "14449:4:61", + "type": "" + } + ], + "src": "14359:200:61" + }, + { + "body": { + "nativeSrc": "14693:175:61", + "nodeType": "YulBlock", + "src": "14693:175:61", + "statements": [ + { + "nativeSrc": "14703:26:61", + "nodeType": "YulAssignment", + "src": "14703:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "14715:9:61", + "nodeType": "YulIdentifier", + "src": "14715:9:61" + }, + { + "kind": "number", + "nativeSrc": "14726:2:61", + "nodeType": "YulLiteral", + "src": "14726:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14711:3:61", + "nodeType": "YulIdentifier", + "src": "14711:3:61" + }, + "nativeSrc": "14711:18:61", + "nodeType": "YulFunctionCall", + "src": "14711:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "14703:4:61", + "nodeType": "YulIdentifier", + "src": "14703:4:61" + } + ] + }, + { + "nativeSrc": "14738:29:61", + "nodeType": "YulVariableDeclaration", + "src": "14738:29:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14756:3:61", + "nodeType": "YulLiteral", + "src": "14756:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "14761:1:61", + "nodeType": "YulLiteral", + "src": "14761:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "14752:3:61", + "nodeType": "YulIdentifier", + "src": "14752:3:61" + }, + "nativeSrc": "14752:11:61", + "nodeType": "YulFunctionCall", + "src": "14752:11:61" + }, + { + "kind": "number", + "nativeSrc": "14765:1:61", + "nodeType": "YulLiteral", + "src": "14765:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "14748:3:61", + "nodeType": "YulIdentifier", + "src": "14748:3:61" + }, + "nativeSrc": "14748:19:61", + "nodeType": "YulFunctionCall", + "src": "14748:19:61" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "14742:2:61", + "nodeType": "YulTypedName", + "src": "14742:2:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "14783:9:61", + "nodeType": "YulIdentifier", + "src": "14783:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "14798:6:61", + "nodeType": "YulIdentifier", + "src": "14798:6:61" + }, + { + "name": "_1", + "nativeSrc": "14806:2:61", + "nodeType": "YulIdentifier", + "src": "14806:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "14794:3:61", + "nodeType": "YulIdentifier", + "src": "14794:3:61" + }, + "nativeSrc": "14794:15:61", + "nodeType": "YulFunctionCall", + "src": "14794:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "14776:6:61", + "nodeType": "YulIdentifier", + "src": "14776:6:61" + }, + "nativeSrc": "14776:34:61", + "nodeType": "YulFunctionCall", + "src": "14776:34:61" + }, + "nativeSrc": "14776:34:61", + "nodeType": "YulExpressionStatement", + "src": "14776:34:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "14830:9:61", + "nodeType": "YulIdentifier", + "src": "14830:9:61" + }, + { + "kind": "number", + "nativeSrc": "14841:2:61", + "nodeType": "YulLiteral", + "src": "14841:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14826:3:61", + "nodeType": "YulIdentifier", + "src": "14826:3:61" + }, + "nativeSrc": "14826:18:61", + "nodeType": "YulFunctionCall", + "src": "14826:18:61" + }, + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "14850:6:61", + "nodeType": "YulIdentifier", + "src": "14850:6:61" + }, + { + "name": "_1", + "nativeSrc": "14858:2:61", + "nodeType": "YulIdentifier", + "src": "14858:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "14846:3:61", + "nodeType": "YulIdentifier", + "src": "14846:3:61" + }, + "nativeSrc": "14846:15:61", + "nodeType": "YulFunctionCall", + "src": "14846:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "14819:6:61", + "nodeType": "YulIdentifier", + "src": "14819:6:61" + }, + "nativeSrc": "14819:43:61", + "nodeType": "YulFunctionCall", + "src": "14819:43:61" + }, + "nativeSrc": "14819:43:61", + "nodeType": "YulExpressionStatement", + "src": "14819:43:61" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed", + "nativeSrc": "14564:304:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "14654:9:61", + "nodeType": "YulTypedName", + "src": "14654:9:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "14665:6:61", + "nodeType": "YulTypedName", + "src": "14665:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "14673:6:61", + "nodeType": "YulTypedName", + "src": "14673:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "14684:4:61", + "nodeType": "YulTypedName", + "src": "14684:4:61", + "type": "" + } + ], + "src": "14564:304:61" + }, + { + "body": { + "nativeSrc": "15002:119:61", + "nodeType": "YulBlock", + "src": "15002:119:61", + "statements": [ + { + "nativeSrc": "15012:26:61", + "nodeType": "YulAssignment", + "src": "15012:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "15024:9:61", + "nodeType": "YulIdentifier", + "src": "15024:9:61" + }, + { + "kind": "number", + "nativeSrc": "15035:2:61", + "nodeType": "YulLiteral", + "src": "15035:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15020:3:61", + "nodeType": "YulIdentifier", + "src": "15020:3:61" + }, + "nativeSrc": "15020:18:61", + "nodeType": "YulFunctionCall", + "src": "15020:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "15012:4:61", + "nodeType": "YulIdentifier", + "src": "15012:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "15054:9:61", + "nodeType": "YulIdentifier", + "src": "15054:9:61" + }, + { + "name": "value0", + "nativeSrc": "15065:6:61", + "nodeType": "YulIdentifier", + "src": "15065:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "15047:6:61", + "nodeType": "YulIdentifier", + "src": "15047:6:61" + }, + "nativeSrc": "15047:25:61", + "nodeType": "YulFunctionCall", + "src": "15047:25:61" + }, + "nativeSrc": "15047:25:61", + "nodeType": "YulExpressionStatement", + "src": "15047:25:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "15092:9:61", + "nodeType": "YulIdentifier", + "src": "15092:9:61" + }, + { + "kind": "number", + "nativeSrc": "15103:2:61", + "nodeType": "YulLiteral", + "src": "15103:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15088:3:61", + "nodeType": "YulIdentifier", + "src": "15088:3:61" + }, + "nativeSrc": "15088:18:61", + "nodeType": "YulFunctionCall", + "src": "15088:18:61" + }, + { + "name": "value1", + "nativeSrc": "15108:6:61", + "nodeType": "YulIdentifier", + "src": "15108:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "15081:6:61", + "nodeType": "YulIdentifier", + "src": "15081:6:61" + }, + "nativeSrc": "15081:34:61", + "nodeType": "YulFunctionCall", + "src": "15081:34:61" + }, + "nativeSrc": "15081:34:61", + "nodeType": "YulExpressionStatement", + "src": "15081:34:61" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed", + "nativeSrc": "14873:248:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "14963:9:61", + "nodeType": "YulTypedName", + "src": "14963:9:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "14974:6:61", + "nodeType": "YulTypedName", + "src": "14974:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "14982:6:61", + "nodeType": "YulTypedName", + "src": "14982:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "14993:4:61", + "nodeType": "YulTypedName", + "src": "14993:4:61", + "type": "" + } + ], + "src": "14873:248:61" + }, + { + "body": { + "nativeSrc": "15255:145:61", + "nodeType": "YulBlock", + "src": "15255:145:61", + "statements": [ + { + "nativeSrc": "15265:26:61", + "nodeType": "YulAssignment", + "src": "15265:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "15277:9:61", + "nodeType": "YulIdentifier", + "src": "15277:9:61" + }, + { + "kind": "number", + "nativeSrc": "15288:2:61", + "nodeType": "YulLiteral", + "src": "15288:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15273:3:61", + "nodeType": "YulIdentifier", + "src": "15273:3:61" + }, + "nativeSrc": "15273:18:61", + "nodeType": "YulFunctionCall", + "src": "15273:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "15265:4:61", + "nodeType": "YulIdentifier", + "src": "15265:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "15307:9:61", + "nodeType": "YulIdentifier", + "src": "15307:9:61" + }, + { + "name": "value0", + "nativeSrc": "15318:6:61", + "nodeType": "YulIdentifier", + "src": "15318:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "15300:6:61", + "nodeType": "YulIdentifier", + "src": "15300:6:61" + }, + "nativeSrc": "15300:25:61", + "nodeType": "YulFunctionCall", + "src": "15300:25:61" + }, + "nativeSrc": "15300:25:61", + "nodeType": "YulExpressionStatement", + "src": "15300:25:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "15345:9:61", + "nodeType": "YulIdentifier", + "src": "15345:9:61" + }, + { + "kind": "number", + "nativeSrc": "15356:2:61", + "nodeType": "YulLiteral", + "src": "15356:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15341:3:61", + "nodeType": "YulIdentifier", + "src": "15341:3:61" + }, + "nativeSrc": "15341:18:61", + "nodeType": "YulFunctionCall", + "src": "15341:18:61" + }, + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "15365:6:61", + "nodeType": "YulIdentifier", + "src": "15365:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "15381:3:61", + "nodeType": "YulLiteral", + "src": "15381:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "15386:1:61", + "nodeType": "YulLiteral", + "src": "15386:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "15377:3:61", + "nodeType": "YulIdentifier", + "src": "15377:3:61" + }, + "nativeSrc": "15377:11:61", + "nodeType": "YulFunctionCall", + "src": "15377:11:61" + }, + { + "kind": "number", + "nativeSrc": "15390:1:61", + "nodeType": "YulLiteral", + "src": "15390:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "15373:3:61", + "nodeType": "YulIdentifier", + "src": "15373:3:61" + }, + "nativeSrc": "15373:19:61", + "nodeType": "YulFunctionCall", + "src": "15373:19:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "15361:3:61", + "nodeType": "YulIdentifier", + "src": "15361:3:61" + }, + "nativeSrc": "15361:32:61", + "nodeType": "YulFunctionCall", + "src": "15361:32:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "15334:6:61", + "nodeType": "YulIdentifier", + "src": "15334:6:61" + }, + "nativeSrc": "15334:60:61", + "nodeType": "YulFunctionCall", + "src": "15334:60:61" + }, + "nativeSrc": "15334:60:61", + "nodeType": "YulExpressionStatement", + "src": "15334:60:61" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed", + "nativeSrc": "15126:274:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "15216:9:61", + "nodeType": "YulTypedName", + "src": "15216:9:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "15227:6:61", + "nodeType": "YulTypedName", + "src": "15227:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "15235:6:61", + "nodeType": "YulTypedName", + "src": "15235:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "15246:4:61", + "nodeType": "YulTypedName", + "src": "15246:4:61", + "type": "" + } + ], + "src": "15126:274:61" + }, + { + "body": { + "nativeSrc": "15513:101:61", + "nodeType": "YulBlock", + "src": "15513:101:61", + "statements": [ + { + "nativeSrc": "15523:26:61", + "nodeType": "YulAssignment", + "src": "15523:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "15535:9:61", + "nodeType": "YulIdentifier", + "src": "15535:9:61" + }, + { + "kind": "number", + "nativeSrc": "15546:2:61", + "nodeType": "YulLiteral", + "src": "15546:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15531:3:61", + "nodeType": "YulIdentifier", + "src": "15531:3:61" + }, + "nativeSrc": "15531:18:61", + "nodeType": "YulFunctionCall", + "src": "15531:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "15523:4:61", + "nodeType": "YulIdentifier", + "src": "15523:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "15565:9:61", + "nodeType": "YulIdentifier", + "src": "15565:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "15580:6:61", + "nodeType": "YulIdentifier", + "src": "15580:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "15596:2:61", + "nodeType": "YulLiteral", + "src": "15596:2:61", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "15600:1:61", + "nodeType": "YulLiteral", + "src": "15600:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "15592:3:61", + "nodeType": "YulIdentifier", + "src": "15592:3:61" + }, + "nativeSrc": "15592:10:61", + "nodeType": "YulFunctionCall", + "src": "15592:10:61" + }, + { + "kind": "number", + "nativeSrc": "15604:1:61", + "nodeType": "YulLiteral", + "src": "15604:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "15588:3:61", + "nodeType": "YulIdentifier", + "src": "15588:3:61" + }, + "nativeSrc": "15588:18:61", + "nodeType": "YulFunctionCall", + "src": "15588:18:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "15576:3:61", + "nodeType": "YulIdentifier", + "src": "15576:3:61" + }, + "nativeSrc": "15576:31:61", + "nodeType": "YulFunctionCall", + "src": "15576:31:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "15558:6:61", + "nodeType": "YulIdentifier", + "src": "15558:6:61" + }, + "nativeSrc": "15558:50:61", + "nodeType": "YulFunctionCall", + "src": "15558:50:61" + }, + "nativeSrc": "15558:50:61", + "nodeType": "YulExpressionStatement", + "src": "15558:50:61" + } + ] + }, + "name": "abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed", + "nativeSrc": "15405:209:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "15482:9:61", + "nodeType": "YulTypedName", + "src": "15482:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "15493:6:61", + "nodeType": "YulTypedName", + "src": "15493:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "15504:4:61", + "nodeType": "YulTypedName", + "src": "15504:4:61", + "type": "" + } + ], + "src": "15405:209:61" + }, + { + "body": { + "nativeSrc": "15651:95:61", + "nodeType": "YulBlock", + "src": "15651:95:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "15668:1:61", + "nodeType": "YulLiteral", + "src": "15668:1:61", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "15675:3:61", + "nodeType": "YulLiteral", + "src": "15675:3:61", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "15680:10:61", + "nodeType": "YulLiteral", + "src": "15680:10:61", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "15671:3:61", + "nodeType": "YulIdentifier", + "src": "15671:3:61" + }, + "nativeSrc": "15671:20:61", + "nodeType": "YulFunctionCall", + "src": "15671:20:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "15661:6:61", + "nodeType": "YulIdentifier", + "src": "15661:6:61" + }, + "nativeSrc": "15661:31:61", + "nodeType": "YulFunctionCall", + "src": "15661:31:61" + }, + "nativeSrc": "15661:31:61", + "nodeType": "YulExpressionStatement", + "src": "15661:31:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "15708:1:61", + "nodeType": "YulLiteral", + "src": "15708:1:61", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "15711:4:61", + "nodeType": "YulLiteral", + "src": "15711:4:61", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "15701:6:61", + "nodeType": "YulIdentifier", + "src": "15701:6:61" + }, + "nativeSrc": "15701:15:61", + "nodeType": "YulFunctionCall", + "src": "15701:15:61" + }, + "nativeSrc": "15701:15:61", + "nodeType": "YulExpressionStatement", + "src": "15701:15:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "15732:1:61", + "nodeType": "YulLiteral", + "src": "15732:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "15735:4:61", + "nodeType": "YulLiteral", + "src": "15735:4:61", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "15725:6:61", + "nodeType": "YulIdentifier", + "src": "15725:6:61" + }, + "nativeSrc": "15725:15:61", + "nodeType": "YulFunctionCall", + "src": "15725:15:61" + }, + "nativeSrc": "15725:15:61", + "nodeType": "YulExpressionStatement", + "src": "15725:15:61" + } + ] + }, + "name": "panic_error_0x11", + "nativeSrc": "15619:127:61", + "nodeType": "YulFunctionDefinition", + "src": "15619:127:61" + }, + { + "body": { + "nativeSrc": "15799:77:61", + "nodeType": "YulBlock", + "src": "15799:77:61", + "statements": [ + { + "nativeSrc": "15809:16:61", + "nodeType": "YulAssignment", + "src": "15809:16:61", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "15820:1:61", + "nodeType": "YulIdentifier", + "src": "15820:1:61" + }, + { + "name": "y", + "nativeSrc": "15823:1:61", + "nodeType": "YulIdentifier", + "src": "15823:1:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15816:3:61", + "nodeType": "YulIdentifier", + "src": "15816:3:61" + }, + "nativeSrc": "15816:9:61", + "nodeType": "YulFunctionCall", + "src": "15816:9:61" + }, + "variableNames": [ + { + "name": "sum", + "nativeSrc": "15809:3:61", + "nodeType": "YulIdentifier", + "src": "15809:3:61" + } + ] + }, + { + "body": { + "nativeSrc": "15848:22:61", + "nodeType": "YulBlock", + "src": "15848:22:61", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nativeSrc": "15850:16:61", + "nodeType": "YulIdentifier", + "src": "15850:16:61" + }, + "nativeSrc": "15850:18:61", + "nodeType": "YulFunctionCall", + "src": "15850:18:61" + }, + "nativeSrc": "15850:18:61", + "nodeType": "YulExpressionStatement", + "src": "15850:18:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nativeSrc": "15840:1:61", + "nodeType": "YulIdentifier", + "src": "15840:1:61" + }, + { + "name": "sum", + "nativeSrc": "15843:3:61", + "nodeType": "YulIdentifier", + "src": "15843:3:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "15837:2:61", + "nodeType": "YulIdentifier", + "src": "15837:2:61" + }, + "nativeSrc": "15837:10:61", + "nodeType": "YulFunctionCall", + "src": "15837:10:61" + }, + "nativeSrc": "15834:36:61", + "nodeType": "YulIf", + "src": "15834:36:61" + } + ] + }, + "name": "checked_add_t_uint256", + "nativeSrc": "15751:125:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nativeSrc": "15782:1:61", + "nodeType": "YulTypedName", + "src": "15782:1:61", + "type": "" + }, + { + "name": "y", + "nativeSrc": "15785:1:61", + "nodeType": "YulTypedName", + "src": "15785:1:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nativeSrc": "15791:3:61", + "nodeType": "YulTypedName", + "src": "15791:3:61", + "type": "" + } + ], + "src": "15751:125:61" + }, + { + "body": { + "nativeSrc": "15928:88:61", + "nodeType": "YulBlock", + "src": "15928:88:61", + "statements": [ + { + "body": { + "nativeSrc": "15959:22:61", + "nodeType": "YulBlock", + "src": "15959:22:61", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nativeSrc": "15961:16:61", + "nodeType": "YulIdentifier", + "src": "15961:16:61" + }, + "nativeSrc": "15961:18:61", + "nodeType": "YulFunctionCall", + "src": "15961:18:61" + }, + "nativeSrc": "15961:18:61", + "nodeType": "YulExpressionStatement", + "src": "15961:18:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value", + "nativeSrc": "15944:5:61", + "nodeType": "YulIdentifier", + "src": "15944:5:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "15955:1:61", + "nodeType": "YulLiteral", + "src": "15955:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "15951:3:61", + "nodeType": "YulIdentifier", + "src": "15951:3:61" + }, + "nativeSrc": "15951:6:61", + "nodeType": "YulFunctionCall", + "src": "15951:6:61" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "15941:2:61", + "nodeType": "YulIdentifier", + "src": "15941:2:61" + }, + "nativeSrc": "15941:17:61", + "nodeType": "YulFunctionCall", + "src": "15941:17:61" + }, + "nativeSrc": "15938:43:61", + "nodeType": "YulIf", + "src": "15938:43:61" + }, + { + "nativeSrc": "15990:20:61", + "nodeType": "YulAssignment", + "src": "15990:20:61", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "16001:5:61", + "nodeType": "YulIdentifier", + "src": "16001:5:61" + }, + { + "kind": "number", + "nativeSrc": "16008:1:61", + "nodeType": "YulLiteral", + "src": "16008:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15997:3:61", + "nodeType": "YulIdentifier", + "src": "15997:3:61" + }, + "nativeSrc": "15997:13:61", + "nodeType": "YulFunctionCall", + "src": "15997:13:61" + }, + "variableNames": [ + { + "name": "ret", + "nativeSrc": "15990:3:61", + "nodeType": "YulIdentifier", + "src": "15990:3:61" + } + ] + } + ] + }, + "name": "increment_t_uint256", + "nativeSrc": "15881:135:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "15910:5:61", + "nodeType": "YulTypedName", + "src": "15910:5:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nativeSrc": "15920:3:61", + "nodeType": "YulTypedName", + "src": "15920:3:61", + "type": "" + } + ], + "src": "15881:135:61" + }, + { + "body": { + "nativeSrc": "16243:292:61", + "nodeType": "YulBlock", + "src": "16243:292:61", + "statements": [ + { + "nativeSrc": "16253:27:61", + "nodeType": "YulAssignment", + "src": "16253:27:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "16265:9:61", + "nodeType": "YulIdentifier", + "src": "16265:9:61" + }, + { + "kind": "number", + "nativeSrc": "16276:3:61", + "nodeType": "YulLiteral", + "src": "16276:3:61", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16261:3:61", + "nodeType": "YulIdentifier", + "src": "16261:3:61" + }, + "nativeSrc": "16261:19:61", + "nodeType": "YulFunctionCall", + "src": "16261:19:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "16253:4:61", + "nodeType": "YulIdentifier", + "src": "16253:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "16296:9:61", + "nodeType": "YulIdentifier", + "src": "16296:9:61" + }, + { + "name": "value0", + "nativeSrc": "16307:6:61", + "nodeType": "YulIdentifier", + "src": "16307:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "16289:6:61", + "nodeType": "YulIdentifier", + "src": "16289:6:61" + }, + "nativeSrc": "16289:25:61", + "nodeType": "YulFunctionCall", + "src": "16289:25:61" + }, + "nativeSrc": "16289:25:61", + "nodeType": "YulExpressionStatement", + "src": "16289:25:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "16334:9:61", + "nodeType": "YulIdentifier", + "src": "16334:9:61" + }, + { + "kind": "number", + "nativeSrc": "16345:2:61", + "nodeType": "YulLiteral", + "src": "16345:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16330:3:61", + "nodeType": "YulIdentifier", + "src": "16330:3:61" + }, + "nativeSrc": "16330:18:61", + "nodeType": "YulFunctionCall", + "src": "16330:18:61" + }, + { + "name": "value1", + "nativeSrc": "16350:6:61", + "nodeType": "YulIdentifier", + "src": "16350:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "16323:6:61", + "nodeType": "YulIdentifier", + "src": "16323:6:61" + }, + "nativeSrc": "16323:34:61", + "nodeType": "YulFunctionCall", + "src": "16323:34:61" + }, + "nativeSrc": "16323:34:61", + "nodeType": "YulExpressionStatement", + "src": "16323:34:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "16377:9:61", + "nodeType": "YulIdentifier", + "src": "16377:9:61" + }, + { + "kind": "number", + "nativeSrc": "16388:2:61", + "nodeType": "YulLiteral", + "src": "16388:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16373:3:61", + "nodeType": "YulIdentifier", + "src": "16373:3:61" + }, + "nativeSrc": "16373:18:61", + "nodeType": "YulFunctionCall", + "src": "16373:18:61" + }, + { + "arguments": [ + { + "name": "value2", + "nativeSrc": "16397:6:61", + "nodeType": "YulIdentifier", + "src": "16397:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "16413:3:61", + "nodeType": "YulLiteral", + "src": "16413:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "16418:1:61", + "nodeType": "YulLiteral", + "src": "16418:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "16409:3:61", + "nodeType": "YulIdentifier", + "src": "16409:3:61" + }, + "nativeSrc": "16409:11:61", + "nodeType": "YulFunctionCall", + "src": "16409:11:61" + }, + { + "kind": "number", + "nativeSrc": "16422:1:61", + "nodeType": "YulLiteral", + "src": "16422:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "16405:3:61", + "nodeType": "YulIdentifier", + "src": "16405:3:61" + }, + "nativeSrc": "16405:19:61", + "nodeType": "YulFunctionCall", + "src": "16405:19:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "16393:3:61", + "nodeType": "YulIdentifier", + "src": "16393:3:61" + }, + "nativeSrc": "16393:32:61", + "nodeType": "YulFunctionCall", + "src": "16393:32:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "16366:6:61", + "nodeType": "YulIdentifier", + "src": "16366:6:61" + }, + "nativeSrc": "16366:60:61", + "nodeType": "YulFunctionCall", + "src": "16366:60:61" + }, + "nativeSrc": "16366:60:61", + "nodeType": "YulExpressionStatement", + "src": "16366:60:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "16446:9:61", + "nodeType": "YulIdentifier", + "src": "16446:9:61" + }, + { + "kind": "number", + "nativeSrc": "16457:2:61", + "nodeType": "YulLiteral", + "src": "16457:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16442:3:61", + "nodeType": "YulIdentifier", + "src": "16442:3:61" + }, + "nativeSrc": "16442:18:61", + "nodeType": "YulFunctionCall", + "src": "16442:18:61" + }, + { + "name": "value3", + "nativeSrc": "16462:6:61", + "nodeType": "YulIdentifier", + "src": "16462:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "16435:6:61", + "nodeType": "YulIdentifier", + "src": "16435:6:61" + }, + "nativeSrc": "16435:34:61", + "nodeType": "YulFunctionCall", + "src": "16435:34:61" + }, + "nativeSrc": "16435:34:61", + "nodeType": "YulExpressionStatement", + "src": "16435:34:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "16489:9:61", + "nodeType": "YulIdentifier", + "src": "16489:9:61" + }, + { + "kind": "number", + "nativeSrc": "16500:3:61", + "nodeType": "YulLiteral", + "src": "16500:3:61", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16485:3:61", + "nodeType": "YulIdentifier", + "src": "16485:3:61" + }, + "nativeSrc": "16485:19:61", + "nodeType": "YulFunctionCall", + "src": "16485:19:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value4", + "nativeSrc": "16520:6:61", + "nodeType": "YulIdentifier", + "src": "16520:6:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "16513:6:61", + "nodeType": "YulIdentifier", + "src": "16513:6:61" + }, + "nativeSrc": "16513:14:61", + "nodeType": "YulFunctionCall", + "src": "16513:14:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "16506:6:61", + "nodeType": "YulIdentifier", + "src": "16506:6:61" + }, + "nativeSrc": "16506:22:61", + "nodeType": "YulFunctionCall", + "src": "16506:22:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "16478:6:61", + "nodeType": "YulIdentifier", + "src": "16478:6:61" + }, + "nativeSrc": "16478:51:61", + "nodeType": "YulFunctionCall", + "src": "16478:51:61" + }, + "nativeSrc": "16478:51:61", + "nodeType": "YulExpressionStatement", + "src": "16478:51:61" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256_t_contract$_IERC20_$4513_t_uint256_t_bool__to_t_uint256_t_uint256_t_address_t_uint256_t_bool__fromStack_reversed", + "nativeSrc": "16021:514:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "16180:9:61", + "nodeType": "YulTypedName", + "src": "16180:9:61", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "16191:6:61", + "nodeType": "YulTypedName", + "src": "16191:6:61", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "16199:6:61", + "nodeType": "YulTypedName", + "src": "16199:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "16207:6:61", + "nodeType": "YulTypedName", + "src": "16207:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "16215:6:61", + "nodeType": "YulTypedName", + "src": "16215:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "16223:6:61", + "nodeType": "YulTypedName", + "src": "16223:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "16234:4:61", + "nodeType": "YulTypedName", + "src": "16234:4:61", + "type": "" + } + ], + "src": "16021:514:61" + }, + { + "body": { + "nativeSrc": "16699:171:61", + "nodeType": "YulBlock", + "src": "16699:171:61", + "statements": [ + { + "nativeSrc": "16709:26:61", + "nodeType": "YulAssignment", + "src": "16709:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "16721:9:61", + "nodeType": "YulIdentifier", + "src": "16721:9:61" + }, + { + "kind": "number", + "nativeSrc": "16732:2:61", + "nodeType": "YulLiteral", + "src": "16732:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16717:3:61", + "nodeType": "YulIdentifier", + "src": "16717:3:61" + }, + "nativeSrc": "16717:18:61", + "nodeType": "YulFunctionCall", + "src": "16717:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "16709:4:61", + "nodeType": "YulIdentifier", + "src": "16709:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "16751:9:61", + "nodeType": "YulIdentifier", + "src": "16751:9:61" + }, + { + "name": "value0", + "nativeSrc": "16762:6:61", + "nodeType": "YulIdentifier", + "src": "16762:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "16744:6:61", + "nodeType": "YulIdentifier", + "src": "16744:6:61" + }, + "nativeSrc": "16744:25:61", + "nodeType": "YulFunctionCall", + "src": "16744:25:61" + }, + "nativeSrc": "16744:25:61", + "nodeType": "YulExpressionStatement", + "src": "16744:25:61" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nativeSrc": "16814:6:61", + "nodeType": "YulIdentifier", + "src": "16814:6:61" + } + ], + "functionName": { + "name": "validator_assert_enum_BookingStatus", + "nativeSrc": "16778:35:61", + "nodeType": "YulIdentifier", + "src": "16778:35:61" + }, + "nativeSrc": "16778:43:61", + "nodeType": "YulFunctionCall", + "src": "16778:43:61" + }, + "nativeSrc": "16778:43:61", + "nodeType": "YulExpressionStatement", + "src": "16778:43:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "16841:9:61", + "nodeType": "YulIdentifier", + "src": "16841:9:61" + }, + { + "kind": "number", + "nativeSrc": "16852:2:61", + "nodeType": "YulLiteral", + "src": "16852:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "16837:3:61", + "nodeType": "YulIdentifier", + "src": "16837:3:61" + }, + "nativeSrc": "16837:18:61", + "nodeType": "YulFunctionCall", + "src": "16837:18:61" + }, + { + "name": "value1", + "nativeSrc": "16857:6:61", + "nodeType": "YulIdentifier", + "src": "16857:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "16830:6:61", + "nodeType": "YulIdentifier", + "src": "16830:6:61" + }, + "nativeSrc": "16830:34:61", + "nodeType": "YulFunctionCall", + "src": "16830:34:61" + }, + "nativeSrc": "16830:34:61", + "nodeType": "YulExpressionStatement", + "src": "16830:34:61" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_enum$_CancellationProposalStatus_$14549__to_t_uint256_t_uint8__fromStack_reversed", + "nativeSrc": "16540:330:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "16660:9:61", + "nodeType": "YulTypedName", + "src": "16660:9:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "16671:6:61", + "nodeType": "YulTypedName", + "src": "16671:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "16679:6:61", + "nodeType": "YulTypedName", + "src": "16679:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "16690:4:61", + "nodeType": "YulTypedName", + "src": "16690:4:61", + "type": "" + } + ], + "src": "16540:330:61" + }, + { + "body": { + "nativeSrc": "17032:162:61", + "nodeType": "YulBlock", + "src": "17032:162:61", + "statements": [ + { + "nativeSrc": "17042:26:61", + "nodeType": "YulAssignment", + "src": "17042:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "17054:9:61", + "nodeType": "YulIdentifier", + "src": "17054:9:61" + }, + { + "kind": "number", + "nativeSrc": "17065:2:61", + "nodeType": "YulLiteral", + "src": "17065:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17050:3:61", + "nodeType": "YulIdentifier", + "src": "17050:3:61" + }, + "nativeSrc": "17050:18:61", + "nodeType": "YulFunctionCall", + "src": "17050:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "17042:4:61", + "nodeType": "YulIdentifier", + "src": "17042:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "17084:9:61", + "nodeType": "YulIdentifier", + "src": "17084:9:61" + }, + { + "name": "value0", + "nativeSrc": "17095:6:61", + "nodeType": "YulIdentifier", + "src": "17095:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "17077:6:61", + "nodeType": "YulIdentifier", + "src": "17077:6:61" + }, + "nativeSrc": "17077:25:61", + "nodeType": "YulFunctionCall", + "src": "17077:25:61" + }, + "nativeSrc": "17077:25:61", + "nodeType": "YulExpressionStatement", + "src": "17077:25:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "17122:9:61", + "nodeType": "YulIdentifier", + "src": "17122:9:61" + }, + { + "kind": "number", + "nativeSrc": "17133:2:61", + "nodeType": "YulLiteral", + "src": "17133:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17118:3:61", + "nodeType": "YulIdentifier", + "src": "17118:3:61" + }, + "nativeSrc": "17118:18:61", + "nodeType": "YulFunctionCall", + "src": "17118:18:61" + }, + { + "name": "value1", + "nativeSrc": "17138:6:61", + "nodeType": "YulIdentifier", + "src": "17138:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "17111:6:61", + "nodeType": "YulIdentifier", + "src": "17111:6:61" + }, + "nativeSrc": "17111:34:61", + "nodeType": "YulFunctionCall", + "src": "17111:34:61" + }, + "nativeSrc": "17111:34:61", + "nodeType": "YulExpressionStatement", + "src": "17111:34:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "17165:9:61", + "nodeType": "YulIdentifier", + "src": "17165:9:61" + }, + { + "kind": "number", + "nativeSrc": "17176:2:61", + "nodeType": "YulLiteral", + "src": "17176:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17161:3:61", + "nodeType": "YulIdentifier", + "src": "17161:3:61" + }, + "nativeSrc": "17161:18:61", + "nodeType": "YulFunctionCall", + "src": "17161:18:61" + }, + { + "name": "value2", + "nativeSrc": "17181:6:61", + "nodeType": "YulIdentifier", + "src": "17181:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "17154:6:61", + "nodeType": "YulIdentifier", + "src": "17154:6:61" + }, + "nativeSrc": "17154:34:61", + "nodeType": "YulFunctionCall", + "src": "17154:34:61" + }, + "nativeSrc": "17154:34:61", + "nodeType": "YulExpressionStatement", + "src": "17154:34:61" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed", + "nativeSrc": "16875:319:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "16985:9:61", + "nodeType": "YulTypedName", + "src": "16985:9:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "16996:6:61", + "nodeType": "YulTypedName", + "src": "16996:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "17004:6:61", + "nodeType": "YulTypedName", + "src": "17004:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "17012:6:61", + "nodeType": "YulTypedName", + "src": "17012:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "17023:4:61", + "nodeType": "YulTypedName", + "src": "17023:4:61", + "type": "" + } + ], + "src": "16875:319:61" + }, + { + "body": { + "nativeSrc": "17356:218:61", + "nodeType": "YulBlock", + "src": "17356:218:61", + "statements": [ + { + "nativeSrc": "17366:26:61", + "nodeType": "YulAssignment", + "src": "17366:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "17378:9:61", + "nodeType": "YulIdentifier", + "src": "17378:9:61" + }, + { + "kind": "number", + "nativeSrc": "17389:2:61", + "nodeType": "YulLiteral", + "src": "17389:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17374:3:61", + "nodeType": "YulIdentifier", + "src": "17374:3:61" + }, + "nativeSrc": "17374:18:61", + "nodeType": "YulFunctionCall", + "src": "17374:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "17366:4:61", + "nodeType": "YulIdentifier", + "src": "17366:4:61" + } + ] + }, + { + "nativeSrc": "17401:29:61", + "nodeType": "YulVariableDeclaration", + "src": "17401:29:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "17419:3:61", + "nodeType": "YulLiteral", + "src": "17419:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "17424:1:61", + "nodeType": "YulLiteral", + "src": "17424:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "17415:3:61", + "nodeType": "YulIdentifier", + "src": "17415:3:61" + }, + "nativeSrc": "17415:11:61", + "nodeType": "YulFunctionCall", + "src": "17415:11:61" + }, + { + "kind": "number", + "nativeSrc": "17428:1:61", + "nodeType": "YulLiteral", + "src": "17428:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "17411:3:61", + "nodeType": "YulIdentifier", + "src": "17411:3:61" + }, + "nativeSrc": "17411:19:61", + "nodeType": "YulFunctionCall", + "src": "17411:19:61" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "17405:2:61", + "nodeType": "YulTypedName", + "src": "17405:2:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "17446:9:61", + "nodeType": "YulIdentifier", + "src": "17446:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "17461:6:61", + "nodeType": "YulIdentifier", + "src": "17461:6:61" + }, + { + "name": "_1", + "nativeSrc": "17469:2:61", + "nodeType": "YulIdentifier", + "src": "17469:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "17457:3:61", + "nodeType": "YulIdentifier", + "src": "17457:3:61" + }, + "nativeSrc": "17457:15:61", + "nodeType": "YulFunctionCall", + "src": "17457:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "17439:6:61", + "nodeType": "YulIdentifier", + "src": "17439:6:61" + }, + "nativeSrc": "17439:34:61", + "nodeType": "YulFunctionCall", + "src": "17439:34:61" + }, + "nativeSrc": "17439:34:61", + "nodeType": "YulExpressionStatement", + "src": "17439:34:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "17493:9:61", + "nodeType": "YulIdentifier", + "src": "17493:9:61" + }, + { + "kind": "number", + "nativeSrc": "17504:2:61", + "nodeType": "YulLiteral", + "src": "17504:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17489:3:61", + "nodeType": "YulIdentifier", + "src": "17489:3:61" + }, + "nativeSrc": "17489:18:61", + "nodeType": "YulFunctionCall", + "src": "17489:18:61" + }, + { + "name": "value1", + "nativeSrc": "17509:6:61", + "nodeType": "YulIdentifier", + "src": "17509:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "17482:6:61", + "nodeType": "YulIdentifier", + "src": "17482:6:61" + }, + "nativeSrc": "17482:34:61", + "nodeType": "YulFunctionCall", + "src": "17482:34:61" + }, + "nativeSrc": "17482:34:61", + "nodeType": "YulExpressionStatement", + "src": "17482:34:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "17536:9:61", + "nodeType": "YulIdentifier", + "src": "17536:9:61" + }, + { + "kind": "number", + "nativeSrc": "17547:2:61", + "nodeType": "YulLiteral", + "src": "17547:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17532:3:61", + "nodeType": "YulIdentifier", + "src": "17532:3:61" + }, + "nativeSrc": "17532:18:61", + "nodeType": "YulFunctionCall", + "src": "17532:18:61" + }, + { + "arguments": [ + { + "name": "value2", + "nativeSrc": "17556:6:61", + "nodeType": "YulIdentifier", + "src": "17556:6:61" + }, + { + "name": "_1", + "nativeSrc": "17564:2:61", + "nodeType": "YulIdentifier", + "src": "17564:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "17552:3:61", + "nodeType": "YulIdentifier", + "src": "17552:3:61" + }, + "nativeSrc": "17552:15:61", + "nodeType": "YulFunctionCall", + "src": "17552:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "17525:6:61", + "nodeType": "YulIdentifier", + "src": "17525:6:61" + }, + "nativeSrc": "17525:43:61", + "nodeType": "YulFunctionCall", + "src": "17525:43:61" + }, + "nativeSrc": "17525:43:61", + "nodeType": "YulExpressionStatement", + "src": "17525:43:61" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint256_t_address__to_t_address_t_uint256_t_address__fromStack_reversed", + "nativeSrc": "17199:375:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "17309:9:61", + "nodeType": "YulTypedName", + "src": "17309:9:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "17320:6:61", + "nodeType": "YulTypedName", + "src": "17320:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "17328:6:61", + "nodeType": "YulTypedName", + "src": "17328:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "17336:6:61", + "nodeType": "YulTypedName", + "src": "17336:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "17347:4:61", + "nodeType": "YulTypedName", + "src": "17347:4:61", + "type": "" + } + ], + "src": "17199:375:61" + }, + { + "body": { + "nativeSrc": "17704:162:61", + "nodeType": "YulBlock", + "src": "17704:162:61", + "statements": [ + { + "nativeSrc": "17714:26:61", + "nodeType": "YulAssignment", + "src": "17714:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "17726:9:61", + "nodeType": "YulIdentifier", + "src": "17726:9:61" + }, + { + "kind": "number", + "nativeSrc": "17737:2:61", + "nodeType": "YulLiteral", + "src": "17737:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17722:3:61", + "nodeType": "YulIdentifier", + "src": "17722:3:61" + }, + "nativeSrc": "17722:18:61", + "nodeType": "YulFunctionCall", + "src": "17722:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "17714:4:61", + "nodeType": "YulIdentifier", + "src": "17714:4:61" + } + ] + }, + { + "nativeSrc": "17749:16:61", + "nodeType": "YulVariableDeclaration", + "src": "17749:16:61", + "value": { + "kind": "number", + "nativeSrc": "17759:6:61", + "nodeType": "YulLiteral", + "src": "17759:6:61", + "type": "", + "value": "0xffff" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "17753:2:61", + "nodeType": "YulTypedName", + "src": "17753:2:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "17781:9:61", + "nodeType": "YulIdentifier", + "src": "17781:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "17796:6:61", + "nodeType": "YulIdentifier", + "src": "17796:6:61" + }, + { + "name": "_1", + "nativeSrc": "17804:2:61", + "nodeType": "YulIdentifier", + "src": "17804:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "17792:3:61", + "nodeType": "YulIdentifier", + "src": "17792:3:61" + }, + "nativeSrc": "17792:15:61", + "nodeType": "YulFunctionCall", + "src": "17792:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "17774:6:61", + "nodeType": "YulIdentifier", + "src": "17774:6:61" + }, + "nativeSrc": "17774:34:61", + "nodeType": "YulFunctionCall", + "src": "17774:34:61" + }, + "nativeSrc": "17774:34:61", + "nodeType": "YulExpressionStatement", + "src": "17774:34:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "17828:9:61", + "nodeType": "YulIdentifier", + "src": "17828:9:61" + }, + { + "kind": "number", + "nativeSrc": "17839:2:61", + "nodeType": "YulLiteral", + "src": "17839:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "17824:3:61", + "nodeType": "YulIdentifier", + "src": "17824:3:61" + }, + "nativeSrc": "17824:18:61", + "nodeType": "YulFunctionCall", + "src": "17824:18:61" + }, + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "17848:6:61", + "nodeType": "YulIdentifier", + "src": "17848:6:61" + }, + { + "name": "_1", + "nativeSrc": "17856:2:61", + "nodeType": "YulIdentifier", + "src": "17856:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "17844:3:61", + "nodeType": "YulIdentifier", + "src": "17844:3:61" + }, + "nativeSrc": "17844:15:61", + "nodeType": "YulFunctionCall", + "src": "17844:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "17817:6:61", + "nodeType": "YulIdentifier", + "src": "17817:6:61" + }, + "nativeSrc": "17817:43:61", + "nodeType": "YulFunctionCall", + "src": "17817:43:61" + }, + "nativeSrc": "17817:43:61", + "nodeType": "YulExpressionStatement", + "src": "17817:43:61" + } + ] + }, + "name": "abi_encode_tuple_t_uint16_t_uint16__to_t_uint16_t_uint16__fromStack_reversed", + "nativeSrc": "17579:287:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "17665:9:61", + "nodeType": "YulTypedName", + "src": "17665:9:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "17676:6:61", + "nodeType": "YulTypedName", + "src": "17676:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "17684:6:61", + "nodeType": "YulTypedName", + "src": "17684:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "17695:4:61", + "nodeType": "YulTypedName", + "src": "17695:4:61", + "type": "" + } + ], + "src": "17579:287:61" + }, + { + "body": { + "nativeSrc": "17952:103:61", + "nodeType": "YulBlock", + "src": "17952:103:61", + "statements": [ + { + "body": { + "nativeSrc": "17998:16:61", + "nodeType": "YulBlock", + "src": "17998:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "18007:1:61", + "nodeType": "YulLiteral", + "src": "18007:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "18010:1:61", + "nodeType": "YulLiteral", + "src": "18010:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "18000:6:61", + "nodeType": "YulIdentifier", + "src": "18000:6:61" + }, + "nativeSrc": "18000:12:61", + "nodeType": "YulFunctionCall", + "src": "18000:12:61" + }, + "nativeSrc": "18000:12:61", + "nodeType": "YulExpressionStatement", + "src": "18000:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "17973:7:61", + "nodeType": "YulIdentifier", + "src": "17973:7:61" + }, + { + "name": "headStart", + "nativeSrc": "17982:9:61", + "nodeType": "YulIdentifier", + "src": "17982:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "17969:3:61", + "nodeType": "YulIdentifier", + "src": "17969:3:61" + }, + "nativeSrc": "17969:23:61", + "nodeType": "YulFunctionCall", + "src": "17969:23:61" + }, + { + "kind": "number", + "nativeSrc": "17994:2:61", + "nodeType": "YulLiteral", + "src": "17994:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "17965:3:61", + "nodeType": "YulIdentifier", + "src": "17965:3:61" + }, + "nativeSrc": "17965:32:61", + "nodeType": "YulFunctionCall", + "src": "17965:32:61" + }, + "nativeSrc": "17962:52:61", + "nodeType": "YulIf", + "src": "17962:52:61" + }, + { + "nativeSrc": "18023:26:61", + "nodeType": "YulAssignment", + "src": "18023:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "18039:9:61", + "nodeType": "YulIdentifier", + "src": "18039:9:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "18033:5:61", + "nodeType": "YulIdentifier", + "src": "18033:5:61" + }, + "nativeSrc": "18033:16:61", + "nodeType": "YulFunctionCall", + "src": "18033:16:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "18023:6:61", + "nodeType": "YulIdentifier", + "src": "18023:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32_fromMemory", + "nativeSrc": "17871:184:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "17918:9:61", + "nodeType": "YulTypedName", + "src": "17918:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "17929:7:61", + "nodeType": "YulTypedName", + "src": "17929:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "17941:6:61", + "nodeType": "YulTypedName", + "src": "17941:6:61", + "type": "" + } + ], + "src": "17871:184:61" + }, + { + "body": { + "nativeSrc": "18106:155:61", + "nodeType": "YulBlock", + "src": "18106:155:61", + "statements": [ + { + "nativeSrc": "18116:20:61", + "nodeType": "YulVariableDeclaration", + "src": "18116:20:61", + "value": { + "kind": "number", + "nativeSrc": "18126:10:61", + "nodeType": "YulLiteral", + "src": "18126:10:61", + "type": "", + "value": "0xffffffff" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "18120:2:61", + "nodeType": "YulTypedName", + "src": "18120:2:61", + "type": "" + } + ] + }, + { + "nativeSrc": "18145:29:61", + "nodeType": "YulVariableDeclaration", + "src": "18145:29:61", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "18164:5:61", + "nodeType": "YulIdentifier", + "src": "18164:5:61" + }, + { + "name": "_1", + "nativeSrc": "18171:2:61", + "nodeType": "YulIdentifier", + "src": "18171:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "18160:3:61", + "nodeType": "YulIdentifier", + "src": "18160:3:61" + }, + "nativeSrc": "18160:14:61", + "nodeType": "YulFunctionCall", + "src": "18160:14:61" + }, + "variables": [ + { + "name": "value_1", + "nativeSrc": "18149:7:61", + "nodeType": "YulTypedName", + "src": "18149:7:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "18202:22:61", + "nodeType": "YulBlock", + "src": "18202:22:61", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nativeSrc": "18204:16:61", + "nodeType": "YulIdentifier", + "src": "18204:16:61" + }, + "nativeSrc": "18204:18:61", + "nodeType": "YulFunctionCall", + "src": "18204:18:61" + }, + "nativeSrc": "18204:18:61", + "nodeType": "YulExpressionStatement", + "src": "18204:18:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "value_1", + "nativeSrc": "18189:7:61", + "nodeType": "YulIdentifier", + "src": "18189:7:61" + }, + { + "name": "_1", + "nativeSrc": "18198:2:61", + "nodeType": "YulIdentifier", + "src": "18198:2:61" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "18186:2:61", + "nodeType": "YulIdentifier", + "src": "18186:2:61" + }, + "nativeSrc": "18186:15:61", + "nodeType": "YulFunctionCall", + "src": "18186:15:61" + }, + "nativeSrc": "18183:41:61", + "nodeType": "YulIf", + "src": "18183:41:61" + }, + { + "nativeSrc": "18233:22:61", + "nodeType": "YulAssignment", + "src": "18233:22:61", + "value": { + "arguments": [ + { + "name": "value_1", + "nativeSrc": "18244:7:61", + "nodeType": "YulIdentifier", + "src": "18244:7:61" + }, + { + "kind": "number", + "nativeSrc": "18253:1:61", + "nodeType": "YulLiteral", + "src": "18253:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18240:3:61", + "nodeType": "YulIdentifier", + "src": "18240:3:61" + }, + "nativeSrc": "18240:15:61", + "nodeType": "YulFunctionCall", + "src": "18240:15:61" + }, + "variableNames": [ + { + "name": "ret", + "nativeSrc": "18233:3:61", + "nodeType": "YulIdentifier", + "src": "18233:3:61" + } + ] + } + ] + }, + "name": "increment_t_uint32", + "nativeSrc": "18060:201:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "18088:5:61", + "nodeType": "YulTypedName", + "src": "18088:5:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nativeSrc": "18098:3:61", + "nodeType": "YulTypedName", + "src": "18098:3:61", + "type": "" + } + ], + "src": "18060:201:61" + }, + { + "body": { + "nativeSrc": "18463:329:61", + "nodeType": "YulBlock", + "src": "18463:329:61", + "statements": [ + { + "nativeSrc": "18473:27:61", + "nodeType": "YulAssignment", + "src": "18473:27:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "18485:9:61", + "nodeType": "YulIdentifier", + "src": "18485:9:61" + }, + { + "kind": "number", + "nativeSrc": "18496:3:61", + "nodeType": "YulLiteral", + "src": "18496:3:61", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18481:3:61", + "nodeType": "YulIdentifier", + "src": "18481:3:61" + }, + "nativeSrc": "18481:19:61", + "nodeType": "YulFunctionCall", + "src": "18481:19:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "18473:4:61", + "nodeType": "YulIdentifier", + "src": "18473:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "18516:9:61", + "nodeType": "YulIdentifier", + "src": "18516:9:61" + }, + { + "name": "value0", + "nativeSrc": "18527:6:61", + "nodeType": "YulIdentifier", + "src": "18527:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18509:6:61", + "nodeType": "YulIdentifier", + "src": "18509:6:61" + }, + "nativeSrc": "18509:25:61", + "nodeType": "YulFunctionCall", + "src": "18509:25:61" + }, + "nativeSrc": "18509:25:61", + "nodeType": "YulExpressionStatement", + "src": "18509:25:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "18554:9:61", + "nodeType": "YulIdentifier", + "src": "18554:9:61" + }, + { + "kind": "number", + "nativeSrc": "18565:2:61", + "nodeType": "YulLiteral", + "src": "18565:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18550:3:61", + "nodeType": "YulIdentifier", + "src": "18550:3:61" + }, + "nativeSrc": "18550:18:61", + "nodeType": "YulFunctionCall", + "src": "18550:18:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "18584:6:61", + "nodeType": "YulIdentifier", + "src": "18584:6:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "18577:6:61", + "nodeType": "YulIdentifier", + "src": "18577:6:61" + }, + "nativeSrc": "18577:14:61", + "nodeType": "YulFunctionCall", + "src": "18577:14:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "18570:6:61", + "nodeType": "YulIdentifier", + "src": "18570:6:61" + }, + "nativeSrc": "18570:22:61", + "nodeType": "YulFunctionCall", + "src": "18570:22:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18543:6:61", + "nodeType": "YulIdentifier", + "src": "18543:6:61" + }, + "nativeSrc": "18543:50:61", + "nodeType": "YulFunctionCall", + "src": "18543:50:61" + }, + "nativeSrc": "18543:50:61", + "nodeType": "YulExpressionStatement", + "src": "18543:50:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "18613:9:61", + "nodeType": "YulIdentifier", + "src": "18613:9:61" + }, + { + "kind": "number", + "nativeSrc": "18624:2:61", + "nodeType": "YulLiteral", + "src": "18624:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18609:3:61", + "nodeType": "YulIdentifier", + "src": "18609:3:61" + }, + "nativeSrc": "18609:18:61", + "nodeType": "YulFunctionCall", + "src": "18609:18:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value2", + "nativeSrc": "18643:6:61", + "nodeType": "YulIdentifier", + "src": "18643:6:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "18636:6:61", + "nodeType": "YulIdentifier", + "src": "18636:6:61" + }, + "nativeSrc": "18636:14:61", + "nodeType": "YulFunctionCall", + "src": "18636:14:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "18629:6:61", + "nodeType": "YulIdentifier", + "src": "18629:6:61" + }, + "nativeSrc": "18629:22:61", + "nodeType": "YulFunctionCall", + "src": "18629:22:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18602:6:61", + "nodeType": "YulIdentifier", + "src": "18602:6:61" + }, + "nativeSrc": "18602:50:61", + "nodeType": "YulFunctionCall", + "src": "18602:50:61" + }, + "nativeSrc": "18602:50:61", + "nodeType": "YulExpressionStatement", + "src": "18602:50:61" + }, + { + "nativeSrc": "18661:20:61", + "nodeType": "YulVariableDeclaration", + "src": "18661:20:61", + "value": { + "kind": "number", + "nativeSrc": "18671:10:61", + "nodeType": "YulLiteral", + "src": "18671:10:61", + "type": "", + "value": "0xffffffff" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "18665:2:61", + "nodeType": "YulTypedName", + "src": "18665:2:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "18701:9:61", + "nodeType": "YulIdentifier", + "src": "18701:9:61" + }, + { + "kind": "number", + "nativeSrc": "18712:2:61", + "nodeType": "YulLiteral", + "src": "18712:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18697:3:61", + "nodeType": "YulIdentifier", + "src": "18697:3:61" + }, + "nativeSrc": "18697:18:61", + "nodeType": "YulFunctionCall", + "src": "18697:18:61" + }, + { + "arguments": [ + { + "name": "value3", + "nativeSrc": "18721:6:61", + "nodeType": "YulIdentifier", + "src": "18721:6:61" + }, + { + "name": "_1", + "nativeSrc": "18729:2:61", + "nodeType": "YulIdentifier", + "src": "18729:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "18717:3:61", + "nodeType": "YulIdentifier", + "src": "18717:3:61" + }, + "nativeSrc": "18717:15:61", + "nodeType": "YulFunctionCall", + "src": "18717:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18690:6:61", + "nodeType": "YulIdentifier", + "src": "18690:6:61" + }, + "nativeSrc": "18690:43:61", + "nodeType": "YulFunctionCall", + "src": "18690:43:61" + }, + "nativeSrc": "18690:43:61", + "nodeType": "YulExpressionStatement", + "src": "18690:43:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "18753:9:61", + "nodeType": "YulIdentifier", + "src": "18753:9:61" + }, + { + "kind": "number", + "nativeSrc": "18764:3:61", + "nodeType": "YulLiteral", + "src": "18764:3:61", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "18749:3:61", + "nodeType": "YulIdentifier", + "src": "18749:3:61" + }, + "nativeSrc": "18749:19:61", + "nodeType": "YulFunctionCall", + "src": "18749:19:61" + }, + { + "arguments": [ + { + "name": "value4", + "nativeSrc": "18774:6:61", + "nodeType": "YulIdentifier", + "src": "18774:6:61" + }, + { + "name": "_1", + "nativeSrc": "18782:2:61", + "nodeType": "YulIdentifier", + "src": "18782:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "18770:3:61", + "nodeType": "YulIdentifier", + "src": "18770:3:61" + }, + "nativeSrc": "18770:15:61", + "nodeType": "YulFunctionCall", + "src": "18770:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "18742:6:61", + "nodeType": "YulIdentifier", + "src": "18742:6:61" + }, + "nativeSrc": "18742:44:61", + "nodeType": "YulFunctionCall", + "src": "18742:44:61" + }, + "nativeSrc": "18742:44:61", + "nodeType": "YulExpressionStatement", + "src": "18742:44:61" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_bool_t_bool_t_uint32_t_uint32__to_t_uint256_t_bool_t_bool_t_uint32_t_uint32__fromStack_reversed", + "nativeSrc": "18266:526:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "18400:9:61", + "nodeType": "YulTypedName", + "src": "18400:9:61", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "18411:6:61", + "nodeType": "YulTypedName", + "src": "18411:6:61", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "18419:6:61", + "nodeType": "YulTypedName", + "src": "18419:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "18427:6:61", + "nodeType": "YulTypedName", + "src": "18427:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "18435:6:61", + "nodeType": "YulTypedName", + "src": "18435:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "18443:6:61", + "nodeType": "YulTypedName", + "src": "18443:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "18454:4:61", + "nodeType": "YulTypedName", + "src": "18454:4:61", + "type": "" + } + ], + "src": "18266:526:61" + }, + { + "body": { + "nativeSrc": "19000:286:61", + "nodeType": "YulBlock", + "src": "19000:286:61", + "statements": [ + { + "nativeSrc": "19010:29:61", + "nodeType": "YulVariableDeclaration", + "src": "19010:29:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "19028:3:61", + "nodeType": "YulLiteral", + "src": "19028:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "19033:1:61", + "nodeType": "YulLiteral", + "src": "19033:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "19024:3:61", + "nodeType": "YulIdentifier", + "src": "19024:3:61" + }, + "nativeSrc": "19024:11:61", + "nodeType": "YulFunctionCall", + "src": "19024:11:61" + }, + { + "kind": "number", + "nativeSrc": "19037:1:61", + "nodeType": "YulLiteral", + "src": "19037:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "19020:3:61", + "nodeType": "YulIdentifier", + "src": "19020:3:61" + }, + "nativeSrc": "19020:19:61", + "nodeType": "YulFunctionCall", + "src": "19020:19:61" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "19014:2:61", + "nodeType": "YulTypedName", + "src": "19014:2:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "19055:9:61", + "nodeType": "YulIdentifier", + "src": "19055:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "19070:6:61", + "nodeType": "YulIdentifier", + "src": "19070:6:61" + }, + { + "name": "_1", + "nativeSrc": "19078:2:61", + "nodeType": "YulIdentifier", + "src": "19078:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "19066:3:61", + "nodeType": "YulIdentifier", + "src": "19066:3:61" + }, + "nativeSrc": "19066:15:61", + "nodeType": "YulFunctionCall", + "src": "19066:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "19048:6:61", + "nodeType": "YulIdentifier", + "src": "19048:6:61" + }, + "nativeSrc": "19048:34:61", + "nodeType": "YulFunctionCall", + "src": "19048:34:61" + }, + "nativeSrc": "19048:34:61", + "nodeType": "YulExpressionStatement", + "src": "19048:34:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "19102:9:61", + "nodeType": "YulIdentifier", + "src": "19102:9:61" + }, + { + "kind": "number", + "nativeSrc": "19113:2:61", + "nodeType": "YulLiteral", + "src": "19113:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19098:3:61", + "nodeType": "YulIdentifier", + "src": "19098:3:61" + }, + "nativeSrc": "19098:18:61", + "nodeType": "YulFunctionCall", + "src": "19098:18:61" + }, + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "19122:6:61", + "nodeType": "YulIdentifier", + "src": "19122:6:61" + }, + { + "name": "_1", + "nativeSrc": "19130:2:61", + "nodeType": "YulIdentifier", + "src": "19130:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "19118:3:61", + "nodeType": "YulIdentifier", + "src": "19118:3:61" + }, + "nativeSrc": "19118:15:61", + "nodeType": "YulFunctionCall", + "src": "19118:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "19091:6:61", + "nodeType": "YulIdentifier", + "src": "19091:6:61" + }, + "nativeSrc": "19091:43:61", + "nodeType": "YulFunctionCall", + "src": "19091:43:61" + }, + "nativeSrc": "19091:43:61", + "nodeType": "YulExpressionStatement", + "src": "19091:43:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "19154:9:61", + "nodeType": "YulIdentifier", + "src": "19154:9:61" + }, + { + "kind": "number", + "nativeSrc": "19165:2:61", + "nodeType": "YulLiteral", + "src": "19165:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19150:3:61", + "nodeType": "YulIdentifier", + "src": "19150:3:61" + }, + "nativeSrc": "19150:18:61", + "nodeType": "YulFunctionCall", + "src": "19150:18:61" + }, + { + "name": "value2", + "nativeSrc": "19170:6:61", + "nodeType": "YulIdentifier", + "src": "19170:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "19143:6:61", + "nodeType": "YulIdentifier", + "src": "19143:6:61" + }, + "nativeSrc": "19143:34:61", + "nodeType": "YulFunctionCall", + "src": "19143:34:61" + }, + "nativeSrc": "19143:34:61", + "nodeType": "YulExpressionStatement", + "src": "19143:34:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "19197:9:61", + "nodeType": "YulIdentifier", + "src": "19197:9:61" + }, + { + "kind": "number", + "nativeSrc": "19208:2:61", + "nodeType": "YulLiteral", + "src": "19208:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19193:3:61", + "nodeType": "YulIdentifier", + "src": "19193:3:61" + }, + "nativeSrc": "19193:18:61", + "nodeType": "YulFunctionCall", + "src": "19193:18:61" + }, + { + "kind": "number", + "nativeSrc": "19213:3:61", + "nodeType": "YulLiteral", + "src": "19213:3:61", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "19186:6:61", + "nodeType": "YulIdentifier", + "src": "19186:6:61" + }, + "nativeSrc": "19186:31:61", + "nodeType": "YulFunctionCall", + "src": "19186:31:61" + }, + "nativeSrc": "19186:31:61", + "nodeType": "YulExpressionStatement", + "src": "19186:31:61" + }, + { + "nativeSrc": "19226:54:61", + "nodeType": "YulAssignment", + "src": "19226:54:61", + "value": { + "arguments": [ + { + "name": "value3", + "nativeSrc": "19252:6:61", + "nodeType": "YulIdentifier", + "src": "19252:6:61" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "19264:9:61", + "nodeType": "YulIdentifier", + "src": "19264:9:61" + }, + { + "kind": "number", + "nativeSrc": "19275:3:61", + "nodeType": "YulLiteral", + "src": "19275:3:61", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19260:3:61", + "nodeType": "YulIdentifier", + "src": "19260:3:61" + }, + "nativeSrc": "19260:19:61", + "nodeType": "YulFunctionCall", + "src": "19260:19:61" + } + ], + "functionName": { + "name": "abi_encode_string", + "nativeSrc": "19234:17:61", + "nodeType": "YulIdentifier", + "src": "19234:17:61" + }, + "nativeSrc": "19234:46:61", + "nodeType": "YulFunctionCall", + "src": "19234:46:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "19226:4:61", + "nodeType": "YulIdentifier", + "src": "19226:4:61" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed", + "nativeSrc": "18797:489:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "18945:9:61", + "nodeType": "YulTypedName", + "src": "18945:9:61", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "18956:6:61", + "nodeType": "YulTypedName", + "src": "18956:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "18964:6:61", + "nodeType": "YulTypedName", + "src": "18964:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "18972:6:61", + "nodeType": "YulTypedName", + "src": "18972:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "18980:6:61", + "nodeType": "YulTypedName", + "src": "18980:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "18991:4:61", + "nodeType": "YulTypedName", + "src": "18991:4:61", + "type": "" + } + ], + "src": "18797:489:61" + }, + { + "body": { + "nativeSrc": "19371:169:61", + "nodeType": "YulBlock", + "src": "19371:169:61", + "statements": [ + { + "body": { + "nativeSrc": "19417:16:61", + "nodeType": "YulBlock", + "src": "19417:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "19426:1:61", + "nodeType": "YulLiteral", + "src": "19426:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "19429:1:61", + "nodeType": "YulLiteral", + "src": "19429:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "19419:6:61", + "nodeType": "YulIdentifier", + "src": "19419:6:61" + }, + "nativeSrc": "19419:12:61", + "nodeType": "YulFunctionCall", + "src": "19419:12:61" + }, + "nativeSrc": "19419:12:61", + "nodeType": "YulExpressionStatement", + "src": "19419:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "19392:7:61", + "nodeType": "YulIdentifier", + "src": "19392:7:61" + }, + { + "name": "headStart", + "nativeSrc": "19401:9:61", + "nodeType": "YulIdentifier", + "src": "19401:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "19388:3:61", + "nodeType": "YulIdentifier", + "src": "19388:3:61" + }, + "nativeSrc": "19388:23:61", + "nodeType": "YulFunctionCall", + "src": "19388:23:61" + }, + { + "kind": "number", + "nativeSrc": "19413:2:61", + "nodeType": "YulLiteral", + "src": "19413:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "19384:3:61", + "nodeType": "YulIdentifier", + "src": "19384:3:61" + }, + "nativeSrc": "19384:32:61", + "nodeType": "YulFunctionCall", + "src": "19384:32:61" + }, + "nativeSrc": "19381:52:61", + "nodeType": "YulIf", + "src": "19381:52:61" + }, + { + "nativeSrc": "19442:29:61", + "nodeType": "YulVariableDeclaration", + "src": "19442:29:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "19461:9:61", + "nodeType": "YulIdentifier", + "src": "19461:9:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "19455:5:61", + "nodeType": "YulIdentifier", + "src": "19455:5:61" + }, + "nativeSrc": "19455:16:61", + "nodeType": "YulFunctionCall", + "src": "19455:16:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "19446:5:61", + "nodeType": "YulTypedName", + "src": "19446:5:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "19504:5:61", + "nodeType": "YulIdentifier", + "src": "19504:5:61" + } + ], + "functionName": { + "name": "validator_revert_bytes4", + "nativeSrc": "19480:23:61", + "nodeType": "YulIdentifier", + "src": "19480:23:61" + }, + "nativeSrc": "19480:30:61", + "nodeType": "YulFunctionCall", + "src": "19480:30:61" + }, + "nativeSrc": "19480:30:61", + "nodeType": "YulExpressionStatement", + "src": "19480:30:61" + }, + { + "nativeSrc": "19519:15:61", + "nodeType": "YulAssignment", + "src": "19519:15:61", + "value": { + "name": "value", + "nativeSrc": "19529:5:61", + "nodeType": "YulIdentifier", + "src": "19529:5:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "19519:6:61", + "nodeType": "YulIdentifier", + "src": "19519:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes4_fromMemory", + "nativeSrc": "19291:249:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "19337:9:61", + "nodeType": "YulTypedName", + "src": "19337:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "19348:7:61", + "nodeType": "YulTypedName", + "src": "19348:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "19360:6:61", + "nodeType": "YulTypedName", + "src": "19360:6:61", + "type": "" + } + ], + "src": "19291:249:61" + }, + { + "body": { + "nativeSrc": "19732:309:61", + "nodeType": "YulBlock", + "src": "19732:309:61", + "statements": [ + { + "nativeSrc": "19742:27:61", + "nodeType": "YulVariableDeclaration", + "src": "19742:27:61", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "19762:6:61", + "nodeType": "YulIdentifier", + "src": "19762:6:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "19756:5:61", + "nodeType": "YulIdentifier", + "src": "19756:5:61" + }, + "nativeSrc": "19756:13:61", + "nodeType": "YulFunctionCall", + "src": "19756:13:61" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "19746:6:61", + "nodeType": "YulTypedName", + "src": "19746:6:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "19817:6:61", + "nodeType": "YulIdentifier", + "src": "19817:6:61" + }, + { + "kind": "number", + "nativeSrc": "19825:4:61", + "nodeType": "YulLiteral", + "src": "19825:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19813:3:61", + "nodeType": "YulIdentifier", + "src": "19813:3:61" + }, + "nativeSrc": "19813:17:61", + "nodeType": "YulFunctionCall", + "src": "19813:17:61" + }, + { + "name": "pos", + "nativeSrc": "19832:3:61", + "nodeType": "YulIdentifier", + "src": "19832:3:61" + }, + { + "name": "length", + "nativeSrc": "19837:6:61", + "nodeType": "YulIdentifier", + "src": "19837:6:61" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "19778:34:61", + "nodeType": "YulIdentifier", + "src": "19778:34:61" + }, + "nativeSrc": "19778:66:61", + "nodeType": "YulFunctionCall", + "src": "19778:66:61" + }, + "nativeSrc": "19778:66:61", + "nodeType": "YulExpressionStatement", + "src": "19778:66:61" + }, + { + "nativeSrc": "19853:29:61", + "nodeType": "YulVariableDeclaration", + "src": "19853:29:61", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "19870:3:61", + "nodeType": "YulIdentifier", + "src": "19870:3:61" + }, + { + "name": "length", + "nativeSrc": "19875:6:61", + "nodeType": "YulIdentifier", + "src": "19875:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19866:3:61", + "nodeType": "YulIdentifier", + "src": "19866:3:61" + }, + "nativeSrc": "19866:16:61", + "nodeType": "YulFunctionCall", + "src": "19866:16:61" + }, + "variables": [ + { + "name": "end_1", + "nativeSrc": "19857:5:61", + "nodeType": "YulTypedName", + "src": "19857:5:61", + "type": "" + } + ] + }, + { + "nativeSrc": "19891:29:61", + "nodeType": "YulVariableDeclaration", + "src": "19891:29:61", + "value": { + "arguments": [ + { + "name": "value1", + "nativeSrc": "19913:6:61", + "nodeType": "YulIdentifier", + "src": "19913:6:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "19907:5:61", + "nodeType": "YulIdentifier", + "src": "19907:5:61" + }, + "nativeSrc": "19907:13:61", + "nodeType": "YulFunctionCall", + "src": "19907:13:61" + }, + "variables": [ + { + "name": "length_1", + "nativeSrc": "19895:8:61", + "nodeType": "YulTypedName", + "src": "19895:8:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "19968:6:61", + "nodeType": "YulIdentifier", + "src": "19968:6:61" + }, + { + "kind": "number", + "nativeSrc": "19976:4:61", + "nodeType": "YulLiteral", + "src": "19976:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "19964:3:61", + "nodeType": "YulIdentifier", + "src": "19964:3:61" + }, + "nativeSrc": "19964:17:61", + "nodeType": "YulFunctionCall", + "src": "19964:17:61" + }, + { + "name": "end_1", + "nativeSrc": "19983:5:61", + "nodeType": "YulIdentifier", + "src": "19983:5:61" + }, + { + "name": "length_1", + "nativeSrc": "19990:8:61", + "nodeType": "YulIdentifier", + "src": "19990:8:61" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "19929:34:61", + "nodeType": "YulIdentifier", + "src": "19929:34:61" + }, + "nativeSrc": "19929:70:61", + "nodeType": "YulFunctionCall", + "src": "19929:70:61" + }, + "nativeSrc": "19929:70:61", + "nodeType": "YulExpressionStatement", + "src": "19929:70:61" + }, + { + "nativeSrc": "20008:27:61", + "nodeType": "YulAssignment", + "src": "20008:27:61", + "value": { + "arguments": [ + { + "name": "end_1", + "nativeSrc": "20019:5:61", + "nodeType": "YulIdentifier", + "src": "20019:5:61" + }, + { + "name": "length_1", + "nativeSrc": "20026:8:61", + "nodeType": "YulIdentifier", + "src": "20026:8:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20015:3:61", + "nodeType": "YulIdentifier", + "src": "20015:3:61" + }, + "nativeSrc": "20015:20:61", + "nodeType": "YulFunctionCall", + "src": "20015:20:61" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "20008:3:61", + "nodeType": "YulIdentifier", + "src": "20008:3:61" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nativeSrc": "19545:496:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "19700:3:61", + "nodeType": "YulTypedName", + "src": "19700:3:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "19705:6:61", + "nodeType": "YulTypedName", + "src": "19705:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "19713:6:61", + "nodeType": "YulTypedName", + "src": "19713:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "19724:3:61", + "nodeType": "YulTypedName", + "src": "19724:3:61", + "type": "" + } + ], + "src": "19545:496:61" + }, + { + "body": { + "nativeSrc": "20102:65:61", + "nodeType": "YulBlock", + "src": "20102:65:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20119:1:61", + "nodeType": "YulLiteral", + "src": "20119:1:61", + "type": "", + "value": "0" + }, + { + "name": "ptr", + "nativeSrc": "20122:3:61", + "nodeType": "YulIdentifier", + "src": "20122:3:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "20112:6:61", + "nodeType": "YulIdentifier", + "src": "20112:6:61" + }, + "nativeSrc": "20112:14:61", + "nodeType": "YulFunctionCall", + "src": "20112:14:61" + }, + "nativeSrc": "20112:14:61", + "nodeType": "YulExpressionStatement", + "src": "20112:14:61" + }, + { + "nativeSrc": "20135:26:61", + "nodeType": "YulAssignment", + "src": "20135:26:61", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20153:1:61", + "nodeType": "YulLiteral", + "src": "20153:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "20156:4:61", + "nodeType": "YulLiteral", + "src": "20156:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "20143:9:61", + "nodeType": "YulIdentifier", + "src": "20143:9:61" + }, + "nativeSrc": "20143:18:61", + "nodeType": "YulFunctionCall", + "src": "20143:18:61" + }, + "variableNames": [ + { + "name": "data", + "nativeSrc": "20135:4:61", + "nodeType": "YulIdentifier", + "src": "20135:4:61" + } + ] + } + ] + }, + "name": "array_dataslot_string_storage", + "nativeSrc": "20046:121:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "ptr", + "nativeSrc": "20085:3:61", + "nodeType": "YulTypedName", + "src": "20085:3:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "data", + "nativeSrc": "20093:4:61", + "nodeType": "YulTypedName", + "src": "20093:4:61", + "type": "" + } + ], + "src": "20046:121:61" + }, + { + "body": { + "nativeSrc": "20253:462:61", + "nodeType": "YulBlock", + "src": "20253:462:61", + "statements": [ + { + "body": { + "nativeSrc": "20286:423:61", + "nodeType": "YulBlock", + "src": "20286:423:61", + "statements": [ + { + "nativeSrc": "20300:11:61", + "nodeType": "YulVariableDeclaration", + "src": "20300:11:61", + "value": { + "kind": "number", + "nativeSrc": "20310:1:61", + "nodeType": "YulLiteral", + "src": "20310:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "20304:2:61", + "nodeType": "YulTypedName", + "src": "20304:2:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20331:1:61", + "nodeType": "YulLiteral", + "src": "20331:1:61", + "type": "", + "value": "0" + }, + { + "name": "array", + "nativeSrc": "20334:5:61", + "nodeType": "YulIdentifier", + "src": "20334:5:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "20324:6:61", + "nodeType": "YulIdentifier", + "src": "20324:6:61" + }, + "nativeSrc": "20324:16:61", + "nodeType": "YulFunctionCall", + "src": "20324:16:61" + }, + "nativeSrc": "20324:16:61", + "nodeType": "YulExpressionStatement", + "src": "20324:16:61" + }, + { + "nativeSrc": "20353:30:61", + "nodeType": "YulVariableDeclaration", + "src": "20353:30:61", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20375:1:61", + "nodeType": "YulLiteral", + "src": "20375:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "20378:4:61", + "nodeType": "YulLiteral", + "src": "20378:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "20365:9:61", + "nodeType": "YulIdentifier", + "src": "20365:9:61" + }, + "nativeSrc": "20365:18:61", + "nodeType": "YulFunctionCall", + "src": "20365:18:61" + }, + "variables": [ + { + "name": "data", + "nativeSrc": "20357:4:61", + "nodeType": "YulTypedName", + "src": "20357:4:61", + "type": "" + } + ] + }, + { + "nativeSrc": "20396:57:61", + "nodeType": "YulVariableDeclaration", + "src": "20396:57:61", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "20419:4:61", + "nodeType": "YulIdentifier", + "src": "20419:4:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20429:1:61", + "nodeType": "YulLiteral", + "src": "20429:1:61", + "type": "", + "value": "5" + }, + { + "arguments": [ + { + "name": "startIndex", + "nativeSrc": "20436:10:61", + "nodeType": "YulIdentifier", + "src": "20436:10:61" + }, + { + "kind": "number", + "nativeSrc": "20448:2:61", + "nodeType": "YulLiteral", + "src": "20448:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20432:3:61", + "nodeType": "YulIdentifier", + "src": "20432:3:61" + }, + "nativeSrc": "20432:19:61", + "nodeType": "YulFunctionCall", + "src": "20432:19:61" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "20425:3:61", + "nodeType": "YulIdentifier", + "src": "20425:3:61" + }, + "nativeSrc": "20425:27:61", + "nodeType": "YulFunctionCall", + "src": "20425:27:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20415:3:61", + "nodeType": "YulIdentifier", + "src": "20415:3:61" + }, + "nativeSrc": "20415:38:61", + "nodeType": "YulFunctionCall", + "src": "20415:38:61" + }, + "variables": [ + { + "name": "deleteStart", + "nativeSrc": "20400:11:61", + "nodeType": "YulTypedName", + "src": "20400:11:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "20490:23:61", + "nodeType": "YulBlock", + "src": "20490:23:61", + "statements": [ + { + "nativeSrc": "20492:19:61", + "nodeType": "YulAssignment", + "src": "20492:19:61", + "value": { + "name": "data", + "nativeSrc": "20507:4:61", + "nodeType": "YulIdentifier", + "src": "20507:4:61" + }, + "variableNames": [ + { + "name": "deleteStart", + "nativeSrc": "20492:11:61", + "nodeType": "YulIdentifier", + "src": "20492:11:61" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "startIndex", + "nativeSrc": "20472:10:61", + "nodeType": "YulIdentifier", + "src": "20472:10:61" + }, + { + "kind": "number", + "nativeSrc": "20484:4:61", + "nodeType": "YulLiteral", + "src": "20484:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "20469:2:61", + "nodeType": "YulIdentifier", + "src": "20469:2:61" + }, + "nativeSrc": "20469:20:61", + "nodeType": "YulFunctionCall", + "src": "20469:20:61" + }, + "nativeSrc": "20466:47:61", + "nodeType": "YulIf", + "src": "20466:47:61" + }, + { + "nativeSrc": "20526:41:61", + "nodeType": "YulVariableDeclaration", + "src": "20526:41:61", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "20540:4:61", + "nodeType": "YulIdentifier", + "src": "20540:4:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20550:1:61", + "nodeType": "YulLiteral", + "src": "20550:1:61", + "type": "", + "value": "5" + }, + { + "arguments": [ + { + "name": "len", + "nativeSrc": "20557:3:61", + "nodeType": "YulIdentifier", + "src": "20557:3:61" + }, + { + "kind": "number", + "nativeSrc": "20562:2:61", + "nodeType": "YulLiteral", + "src": "20562:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20553:3:61", + "nodeType": "YulIdentifier", + "src": "20553:3:61" + }, + "nativeSrc": "20553:12:61", + "nodeType": "YulFunctionCall", + "src": "20553:12:61" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "20546:3:61", + "nodeType": "YulIdentifier", + "src": "20546:3:61" + }, + "nativeSrc": "20546:20:61", + "nodeType": "YulFunctionCall", + "src": "20546:20:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20536:3:61", + "nodeType": "YulIdentifier", + "src": "20536:3:61" + }, + "nativeSrc": "20536:31:61", + "nodeType": "YulFunctionCall", + "src": "20536:31:61" + }, + "variables": [ + { + "name": "_2", + "nativeSrc": "20530:2:61", + "nodeType": "YulTypedName", + "src": "20530:2:61", + "type": "" + } + ] + }, + { + "nativeSrc": "20580:24:61", + "nodeType": "YulVariableDeclaration", + "src": "20580:24:61", + "value": { + "name": "deleteStart", + "nativeSrc": "20593:11:61", + "nodeType": "YulIdentifier", + "src": "20593:11:61" + }, + "variables": [ + { + "name": "start", + "nativeSrc": "20584:5:61", + "nodeType": "YulTypedName", + "src": "20584:5:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "20678:21:61", + "nodeType": "YulBlock", + "src": "20678:21:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "start", + "nativeSrc": "20687:5:61", + "nodeType": "YulIdentifier", + "src": "20687:5:61" + }, + { + "name": "_1", + "nativeSrc": "20694:2:61", + "nodeType": "YulIdentifier", + "src": "20694:2:61" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "20680:6:61", + "nodeType": "YulIdentifier", + "src": "20680:6:61" + }, + "nativeSrc": "20680:17:61", + "nodeType": "YulFunctionCall", + "src": "20680:17:61" + }, + "nativeSrc": "20680:17:61", + "nodeType": "YulExpressionStatement", + "src": "20680:17:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "start", + "nativeSrc": "20628:5:61", + "nodeType": "YulIdentifier", + "src": "20628:5:61" + }, + { + "name": "_2", + "nativeSrc": "20635:2:61", + "nodeType": "YulIdentifier", + "src": "20635:2:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "20625:2:61", + "nodeType": "YulIdentifier", + "src": "20625:2:61" + }, + "nativeSrc": "20625:13:61", + "nodeType": "YulFunctionCall", + "src": "20625:13:61" + }, + "nativeSrc": "20617:82:61", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "20639:26:61", + "nodeType": "YulBlock", + "src": "20639:26:61", + "statements": [ + { + "nativeSrc": "20641:22:61", + "nodeType": "YulAssignment", + "src": "20641:22:61", + "value": { + "arguments": [ + { + "name": "start", + "nativeSrc": "20654:5:61", + "nodeType": "YulIdentifier", + "src": "20654:5:61" + }, + { + "kind": "number", + "nativeSrc": "20661:1:61", + "nodeType": "YulLiteral", + "src": "20661:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "20650:3:61", + "nodeType": "YulIdentifier", + "src": "20650:3:61" + }, + "nativeSrc": "20650:13:61", + "nodeType": "YulFunctionCall", + "src": "20650:13:61" + }, + "variableNames": [ + { + "name": "start", + "nativeSrc": "20641:5:61", + "nodeType": "YulIdentifier", + "src": "20641:5:61" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "20621:3:61", + "nodeType": "YulBlock", + "src": "20621:3:61", + "statements": [] + }, + "src": "20617:82:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "len", + "nativeSrc": "20269:3:61", + "nodeType": "YulIdentifier", + "src": "20269:3:61" + }, + { + "kind": "number", + "nativeSrc": "20274:2:61", + "nodeType": "YulLiteral", + "src": "20274:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "20266:2:61", + "nodeType": "YulIdentifier", + "src": "20266:2:61" + }, + "nativeSrc": "20266:11:61", + "nodeType": "YulFunctionCall", + "src": "20266:11:61" + }, + "nativeSrc": "20263:446:61", + "nodeType": "YulIf", + "src": "20263:446:61" + } + ] + }, + "name": "clean_up_bytearray_end_slots_string_storage", + "nativeSrc": "20172:543:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "array", + "nativeSrc": "20225:5:61", + "nodeType": "YulTypedName", + "src": "20225:5:61", + "type": "" + }, + { + "name": "len", + "nativeSrc": "20232:3:61", + "nodeType": "YulTypedName", + "src": "20232:3:61", + "type": "" + }, + { + "name": "startIndex", + "nativeSrc": "20237:10:61", + "nodeType": "YulTypedName", + "src": "20237:10:61", + "type": "" + } + ], + "src": "20172:543:61" + }, + { + "body": { + "nativeSrc": "20805:81:61", + "nodeType": "YulBlock", + "src": "20805:81:61", + "statements": [ + { + "nativeSrc": "20815:65:61", + "nodeType": "YulAssignment", + "src": "20815:65:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "data", + "nativeSrc": "20830:4:61", + "nodeType": "YulIdentifier", + "src": "20830:4:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20848:1:61", + "nodeType": "YulLiteral", + "src": "20848:1:61", + "type": "", + "value": "3" + }, + { + "name": "len", + "nativeSrc": "20851:3:61", + "nodeType": "YulIdentifier", + "src": "20851:3:61" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "20844:3:61", + "nodeType": "YulIdentifier", + "src": "20844:3:61" + }, + "nativeSrc": "20844:11:61", + "nodeType": "YulFunctionCall", + "src": "20844:11:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20861:1:61", + "nodeType": "YulLiteral", + "src": "20861:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "20857:3:61", + "nodeType": "YulIdentifier", + "src": "20857:3:61" + }, + "nativeSrc": "20857:6:61", + "nodeType": "YulFunctionCall", + "src": "20857:6:61" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "20840:3:61", + "nodeType": "YulIdentifier", + "src": "20840:3:61" + }, + "nativeSrc": "20840:24:61", + "nodeType": "YulFunctionCall", + "src": "20840:24:61" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "20836:3:61", + "nodeType": "YulIdentifier", + "src": "20836:3:61" + }, + "nativeSrc": "20836:29:61", + "nodeType": "YulFunctionCall", + "src": "20836:29:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "20826:3:61", + "nodeType": "YulIdentifier", + "src": "20826:3:61" + }, + "nativeSrc": "20826:40:61", + "nodeType": "YulFunctionCall", + "src": "20826:40:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "20872:1:61", + "nodeType": "YulLiteral", + "src": "20872:1:61", + "type": "", + "value": "1" + }, + { + "name": "len", + "nativeSrc": "20875:3:61", + "nodeType": "YulIdentifier", + "src": "20875:3:61" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "20868:3:61", + "nodeType": "YulIdentifier", + "src": "20868:3:61" + }, + "nativeSrc": "20868:11:61", + "nodeType": "YulFunctionCall", + "src": "20868:11:61" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "20823:2:61", + "nodeType": "YulIdentifier", + "src": "20823:2:61" + }, + "nativeSrc": "20823:57:61", + "nodeType": "YulFunctionCall", + "src": "20823:57:61" + }, + "variableNames": [ + { + "name": "used", + "nativeSrc": "20815:4:61", + "nodeType": "YulIdentifier", + "src": "20815:4:61" + } + ] + } + ] + }, + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nativeSrc": "20720:166:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nativeSrc": "20782:4:61", + "nodeType": "YulTypedName", + "src": "20782:4:61", + "type": "" + }, + { + "name": "len", + "nativeSrc": "20788:3:61", + "nodeType": "YulTypedName", + "src": "20788:3:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "used", + "nativeSrc": "20796:4:61", + "nodeType": "YulTypedName", + "src": "20796:4:61", + "type": "" + } + ], + "src": "20720:166:61" + }, + { + "body": { + "nativeSrc": "20987:1249:61", + "nodeType": "YulBlock", + "src": "20987:1249:61", + "statements": [ + { + "nativeSrc": "20997:24:61", + "nodeType": "YulVariableDeclaration", + "src": "20997:24:61", + "value": { + "arguments": [ + { + "name": "src", + "nativeSrc": "21017:3:61", + "nodeType": "YulIdentifier", + "src": "21017:3:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "21011:5:61", + "nodeType": "YulIdentifier", + "src": "21011:5:61" + }, + "nativeSrc": "21011:10:61", + "nodeType": "YulFunctionCall", + "src": "21011:10:61" + }, + "variables": [ + { + "name": "newLen", + "nativeSrc": "21001:6:61", + "nodeType": "YulTypedName", + "src": "21001:6:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "21064:22:61", + "nodeType": "YulBlock", + "src": "21064:22:61", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "21066:16:61", + "nodeType": "YulIdentifier", + "src": "21066:16:61" + }, + "nativeSrc": "21066:18:61", + "nodeType": "YulFunctionCall", + "src": "21066:18:61" + }, + "nativeSrc": "21066:18:61", + "nodeType": "YulExpressionStatement", + "src": "21066:18:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "21036:6:61", + "nodeType": "YulIdentifier", + "src": "21036:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21052:2:61", + "nodeType": "YulLiteral", + "src": "21052:2:61", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "21056:1:61", + "nodeType": "YulLiteral", + "src": "21056:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "21048:3:61", + "nodeType": "YulIdentifier", + "src": "21048:3:61" + }, + "nativeSrc": "21048:10:61", + "nodeType": "YulFunctionCall", + "src": "21048:10:61" + }, + { + "kind": "number", + "nativeSrc": "21060:1:61", + "nodeType": "YulLiteral", + "src": "21060:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "21044:3:61", + "nodeType": "YulIdentifier", + "src": "21044:3:61" + }, + "nativeSrc": "21044:18:61", + "nodeType": "YulFunctionCall", + "src": "21044:18:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "21033:2:61", + "nodeType": "YulIdentifier", + "src": "21033:2:61" + }, + "nativeSrc": "21033:30:61", + "nodeType": "YulFunctionCall", + "src": "21033:30:61" + }, + "nativeSrc": "21030:56:61", + "nodeType": "YulIf", + "src": "21030:56:61" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "21139:4:61", + "nodeType": "YulIdentifier", + "src": "21139:4:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "slot", + "nativeSrc": "21177:4:61", + "nodeType": "YulIdentifier", + "src": "21177:4:61" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "21171:5:61", + "nodeType": "YulIdentifier", + "src": "21171:5:61" + }, + "nativeSrc": "21171:11:61", + "nodeType": "YulFunctionCall", + "src": "21171:11:61" + } + ], + "functionName": { + "name": "extract_byte_array_length", + "nativeSrc": "21145:25:61", + "nodeType": "YulIdentifier", + "src": "21145:25:61" + }, + "nativeSrc": "21145:38:61", + "nodeType": "YulFunctionCall", + "src": "21145:38:61" + }, + { + "name": "newLen", + "nativeSrc": "21185:6:61", + "nodeType": "YulIdentifier", + "src": "21185:6:61" + } + ], + "functionName": { + "name": "clean_up_bytearray_end_slots_string_storage", + "nativeSrc": "21095:43:61", + "nodeType": "YulIdentifier", + "src": "21095:43:61" + }, + "nativeSrc": "21095:97:61", + "nodeType": "YulFunctionCall", + "src": "21095:97:61" + }, + "nativeSrc": "21095:97:61", + "nodeType": "YulExpressionStatement", + "src": "21095:97:61" + }, + { + "nativeSrc": "21201:18:61", + "nodeType": "YulVariableDeclaration", + "src": "21201:18:61", + "value": { + "kind": "number", + "nativeSrc": "21218:1:61", + "nodeType": "YulLiteral", + "src": "21218:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "srcOffset", + "nativeSrc": "21205:9:61", + "nodeType": "YulTypedName", + "src": "21205:9:61", + "type": "" + } + ] + }, + { + "nativeSrc": "21228:23:61", + "nodeType": "YulVariableDeclaration", + "src": "21228:23:61", + "value": { + "kind": "number", + "nativeSrc": "21247:4:61", + "nodeType": "YulLiteral", + "src": "21247:4:61", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "srcOffset_1", + "nativeSrc": "21232:11:61", + "nodeType": "YulTypedName", + "src": "21232:11:61", + "type": "" + } + ] + }, + { + "nativeSrc": "21260:17:61", + "nodeType": "YulAssignment", + "src": "21260:17:61", + "value": { + "kind": "number", + "nativeSrc": "21273:4:61", + "nodeType": "YulLiteral", + "src": "21273:4:61", + "type": "", + "value": "0x20" + }, + "variableNames": [ + { + "name": "srcOffset", + "nativeSrc": "21260:9:61", + "nodeType": "YulIdentifier", + "src": "21260:9:61" + } + ] + }, + { + "cases": [ + { + "body": { + "nativeSrc": "21323:656:61", + "nodeType": "YulBlock", + "src": "21323:656:61", + "statements": [ + { + "nativeSrc": "21337:35:61", + "nodeType": "YulVariableDeclaration", + "src": "21337:35:61", + "value": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "21356:6:61", + "nodeType": "YulIdentifier", + "src": "21356:6:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21368:2:61", + "nodeType": "YulLiteral", + "src": "21368:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "21364:3:61", + "nodeType": "YulIdentifier", + "src": "21364:3:61" + }, + "nativeSrc": "21364:7:61", + "nodeType": "YulFunctionCall", + "src": "21364:7:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "21352:3:61", + "nodeType": "YulIdentifier", + "src": "21352:3:61" + }, + "nativeSrc": "21352:20:61", + "nodeType": "YulFunctionCall", + "src": "21352:20:61" + }, + "variables": [ + { + "name": "loopEnd", + "nativeSrc": "21341:7:61", + "nodeType": "YulTypedName", + "src": "21341:7:61", + "type": "" + } + ] + }, + { + "nativeSrc": "21385:49:61", + "nodeType": "YulVariableDeclaration", + "src": "21385:49:61", + "value": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "21429:4:61", + "nodeType": "YulIdentifier", + "src": "21429:4:61" + } + ], + "functionName": { + "name": "array_dataslot_string_storage", + "nativeSrc": "21399:29:61", + "nodeType": "YulIdentifier", + "src": "21399:29:61" + }, + "nativeSrc": "21399:35:61", + "nodeType": "YulFunctionCall", + "src": "21399:35:61" + }, + "variables": [ + { + "name": "dstPtr", + "nativeSrc": "21389:6:61", + "nodeType": "YulTypedName", + "src": "21389:6:61", + "type": "" + } + ] + }, + { + "nativeSrc": "21447:10:61", + "nodeType": "YulVariableDeclaration", + "src": "21447:10:61", + "value": { + "kind": "number", + "nativeSrc": "21456:1:61", + "nodeType": "YulLiteral", + "src": "21456:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "21451:1:61", + "nodeType": "YulTypedName", + "src": "21451:1:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "21534:172:61", + "nodeType": "YulBlock", + "src": "21534:172:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "21559:6:61", + "nodeType": "YulIdentifier", + "src": "21559:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "21577:3:61", + "nodeType": "YulIdentifier", + "src": "21577:3:61" + }, + { + "name": "srcOffset", + "nativeSrc": "21582:9:61", + "nodeType": "YulIdentifier", + "src": "21582:9:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21573:3:61", + "nodeType": "YulIdentifier", + "src": "21573:3:61" + }, + "nativeSrc": "21573:19:61", + "nodeType": "YulFunctionCall", + "src": "21573:19:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "21567:5:61", + "nodeType": "YulIdentifier", + "src": "21567:5:61" + }, + "nativeSrc": "21567:26:61", + "nodeType": "YulFunctionCall", + "src": "21567:26:61" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "21552:6:61", + "nodeType": "YulIdentifier", + "src": "21552:6:61" + }, + "nativeSrc": "21552:42:61", + "nodeType": "YulFunctionCall", + "src": "21552:42:61" + }, + "nativeSrc": "21552:42:61", + "nodeType": "YulExpressionStatement", + "src": "21552:42:61" + }, + { + "nativeSrc": "21611:24:61", + "nodeType": "YulAssignment", + "src": "21611:24:61", + "value": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "21625:6:61", + "nodeType": "YulIdentifier", + "src": "21625:6:61" + }, + { + "kind": "number", + "nativeSrc": "21633:1:61", + "nodeType": "YulLiteral", + "src": "21633:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21621:3:61", + "nodeType": "YulIdentifier", + "src": "21621:3:61" + }, + "nativeSrc": "21621:14:61", + "nodeType": "YulFunctionCall", + "src": "21621:14:61" + }, + "variableNames": [ + { + "name": "dstPtr", + "nativeSrc": "21611:6:61", + "nodeType": "YulIdentifier", + "src": "21611:6:61" + } + ] + }, + { + "nativeSrc": "21652:40:61", + "nodeType": "YulAssignment", + "src": "21652:40:61", + "value": { + "arguments": [ + { + "name": "srcOffset", + "nativeSrc": "21669:9:61", + "nodeType": "YulIdentifier", + "src": "21669:9:61" + }, + { + "name": "srcOffset_1", + "nativeSrc": "21680:11:61", + "nodeType": "YulIdentifier", + "src": "21680:11:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21665:3:61", + "nodeType": "YulIdentifier", + "src": "21665:3:61" + }, + "nativeSrc": "21665:27:61", + "nodeType": "YulFunctionCall", + "src": "21665:27:61" + }, + "variableNames": [ + { + "name": "srcOffset", + "nativeSrc": "21652:9:61", + "nodeType": "YulIdentifier", + "src": "21652:9:61" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "21481:1:61", + "nodeType": "YulIdentifier", + "src": "21481:1:61" + }, + { + "name": "loopEnd", + "nativeSrc": "21484:7:61", + "nodeType": "YulIdentifier", + "src": "21484:7:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "21478:2:61", + "nodeType": "YulIdentifier", + "src": "21478:2:61" + }, + "nativeSrc": "21478:14:61", + "nodeType": "YulFunctionCall", + "src": "21478:14:61" + }, + "nativeSrc": "21470:236:61", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "21493:28:61", + "nodeType": "YulBlock", + "src": "21493:28:61", + "statements": [ + { + "nativeSrc": "21495:24:61", + "nodeType": "YulAssignment", + "src": "21495:24:61", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "21504:1:61", + "nodeType": "YulIdentifier", + "src": "21504:1:61" + }, + { + "name": "srcOffset_1", + "nativeSrc": "21507:11:61", + "nodeType": "YulIdentifier", + "src": "21507:11:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21500:3:61", + "nodeType": "YulIdentifier", + "src": "21500:3:61" + }, + "nativeSrc": "21500:19:61", + "nodeType": "YulFunctionCall", + "src": "21500:19:61" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "21495:1:61", + "nodeType": "YulIdentifier", + "src": "21495:1:61" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "21474:3:61", + "nodeType": "YulBlock", + "src": "21474:3:61", + "statements": [] + }, + "src": "21470:236:61" + }, + { + "body": { + "nativeSrc": "21754:166:61", + "nodeType": "YulBlock", + "src": "21754:166:61", + "statements": [ + { + "nativeSrc": "21772:43:61", + "nodeType": "YulVariableDeclaration", + "src": "21772:43:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "21799:3:61", + "nodeType": "YulIdentifier", + "src": "21799:3:61" + }, + { + "name": "srcOffset", + "nativeSrc": "21804:9:61", + "nodeType": "YulIdentifier", + "src": "21804:9:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21795:3:61", + "nodeType": "YulIdentifier", + "src": "21795:3:61" + }, + "nativeSrc": "21795:19:61", + "nodeType": "YulFunctionCall", + "src": "21795:19:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "21789:5:61", + "nodeType": "YulIdentifier", + "src": "21789:5:61" + }, + "nativeSrc": "21789:26:61", + "nodeType": "YulFunctionCall", + "src": "21789:26:61" + }, + "variables": [ + { + "name": "lastValue", + "nativeSrc": "21776:9:61", + "nodeType": "YulTypedName", + "src": "21776:9:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "21839:6:61", + "nodeType": "YulIdentifier", + "src": "21839:6:61" + }, + { + "arguments": [ + { + "name": "lastValue", + "nativeSrc": "21851:9:61", + "nodeType": "YulIdentifier", + "src": "21851:9:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21878:1:61", + "nodeType": "YulLiteral", + "src": "21878:1:61", + "type": "", + "value": "3" + }, + { + "name": "newLen", + "nativeSrc": "21881:6:61", + "nodeType": "YulIdentifier", + "src": "21881:6:61" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "21874:3:61", + "nodeType": "YulIdentifier", + "src": "21874:3:61" + }, + "nativeSrc": "21874:14:61", + "nodeType": "YulFunctionCall", + "src": "21874:14:61" + }, + { + "kind": "number", + "nativeSrc": "21890:3:61", + "nodeType": "YulLiteral", + "src": "21890:3:61", + "type": "", + "value": "248" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "21870:3:61", + "nodeType": "YulIdentifier", + "src": "21870:3:61" + }, + "nativeSrc": "21870:24:61", + "nodeType": "YulFunctionCall", + "src": "21870:24:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21900:1:61", + "nodeType": "YulLiteral", + "src": "21900:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "21896:3:61", + "nodeType": "YulIdentifier", + "src": "21896:3:61" + }, + "nativeSrc": "21896:6:61", + "nodeType": "YulFunctionCall", + "src": "21896:6:61" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "21866:3:61", + "nodeType": "YulIdentifier", + "src": "21866:3:61" + }, + "nativeSrc": "21866:37:61", + "nodeType": "YulFunctionCall", + "src": "21866:37:61" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "21862:3:61", + "nodeType": "YulIdentifier", + "src": "21862:3:61" + }, + "nativeSrc": "21862:42:61", + "nodeType": "YulFunctionCall", + "src": "21862:42:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "21847:3:61", + "nodeType": "YulIdentifier", + "src": "21847:3:61" + }, + "nativeSrc": "21847:58:61", + "nodeType": "YulFunctionCall", + "src": "21847:58:61" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "21832:6:61", + "nodeType": "YulIdentifier", + "src": "21832:6:61" + }, + "nativeSrc": "21832:74:61", + "nodeType": "YulFunctionCall", + "src": "21832:74:61" + }, + "nativeSrc": "21832:74:61", + "nodeType": "YulExpressionStatement", + "src": "21832:74:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "loopEnd", + "nativeSrc": "21725:7:61", + "nodeType": "YulIdentifier", + "src": "21725:7:61" + }, + { + "name": "newLen", + "nativeSrc": "21734:6:61", + "nodeType": "YulIdentifier", + "src": "21734:6:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "21722:2:61", + "nodeType": "YulIdentifier", + "src": "21722:2:61" + }, + "nativeSrc": "21722:19:61", + "nodeType": "YulFunctionCall", + "src": "21722:19:61" + }, + "nativeSrc": "21719:201:61", + "nodeType": "YulIf", + "src": "21719:201:61" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "21940:4:61", + "nodeType": "YulIdentifier", + "src": "21940:4:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "21954:1:61", + "nodeType": "YulLiteral", + "src": "21954:1:61", + "type": "", + "value": "1" + }, + { + "name": "newLen", + "nativeSrc": "21957:6:61", + "nodeType": "YulIdentifier", + "src": "21957:6:61" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "21950:3:61", + "nodeType": "YulIdentifier", + "src": "21950:3:61" + }, + "nativeSrc": "21950:14:61", + "nodeType": "YulFunctionCall", + "src": "21950:14:61" + }, + { + "kind": "number", + "nativeSrc": "21966:1:61", + "nodeType": "YulLiteral", + "src": "21966:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "21946:3:61", + "nodeType": "YulIdentifier", + "src": "21946:3:61" + }, + "nativeSrc": "21946:22:61", + "nodeType": "YulFunctionCall", + "src": "21946:22:61" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "21933:6:61", + "nodeType": "YulIdentifier", + "src": "21933:6:61" + }, + "nativeSrc": "21933:36:61", + "nodeType": "YulFunctionCall", + "src": "21933:36:61" + }, + "nativeSrc": "21933:36:61", + "nodeType": "YulExpressionStatement", + "src": "21933:36:61" + } + ] + }, + "nativeSrc": "21316:663:61", + "nodeType": "YulCase", + "src": "21316:663:61", + "value": { + "kind": "number", + "nativeSrc": "21321:1:61", + "nodeType": "YulLiteral", + "src": "21321:1:61", + "type": "", + "value": "1" + } + }, + { + "body": { + "nativeSrc": "21996:234:61", + "nodeType": "YulBlock", + "src": "21996:234:61", + "statements": [ + { + "nativeSrc": "22010:14:61", + "nodeType": "YulVariableDeclaration", + "src": "22010:14:61", + "value": { + "kind": "number", + "nativeSrc": "22023:1:61", + "nodeType": "YulLiteral", + "src": "22023:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "22014:5:61", + "nodeType": "YulTypedName", + "src": "22014:5:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "22059:67:61", + "nodeType": "YulBlock", + "src": "22059:67:61", + "statements": [ + { + "nativeSrc": "22077:35:61", + "nodeType": "YulAssignment", + "src": "22077:35:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "22096:3:61", + "nodeType": "YulIdentifier", + "src": "22096:3:61" + }, + { + "name": "srcOffset", + "nativeSrc": "22101:9:61", + "nodeType": "YulIdentifier", + "src": "22101:9:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22092:3:61", + "nodeType": "YulIdentifier", + "src": "22092:3:61" + }, + "nativeSrc": "22092:19:61", + "nodeType": "YulFunctionCall", + "src": "22092:19:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "22086:5:61", + "nodeType": "YulIdentifier", + "src": "22086:5:61" + }, + "nativeSrc": "22086:26:61", + "nodeType": "YulFunctionCall", + "src": "22086:26:61" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "22077:5:61", + "nodeType": "YulIdentifier", + "src": "22077:5:61" + } + ] + } + ] + }, + "condition": { + "name": "newLen", + "nativeSrc": "22040:6:61", + "nodeType": "YulIdentifier", + "src": "22040:6:61" + }, + "nativeSrc": "22037:89:61", + "nodeType": "YulIf", + "src": "22037:89:61" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "22146:4:61", + "nodeType": "YulIdentifier", + "src": "22146:4:61" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "22205:5:61", + "nodeType": "YulIdentifier", + "src": "22205:5:61" + }, + { + "name": "newLen", + "nativeSrc": "22212:6:61", + "nodeType": "YulIdentifier", + "src": "22212:6:61" + } + ], + "functionName": { + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nativeSrc": "22152:52:61", + "nodeType": "YulIdentifier", + "src": "22152:52:61" + }, + "nativeSrc": "22152:67:61", + "nodeType": "YulFunctionCall", + "src": "22152:67:61" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "22139:6:61", + "nodeType": "YulIdentifier", + "src": "22139:6:61" + }, + "nativeSrc": "22139:81:61", + "nodeType": "YulFunctionCall", + "src": "22139:81:61" + }, + "nativeSrc": "22139:81:61", + "nodeType": "YulExpressionStatement", + "src": "22139:81:61" + } + ] + }, + "nativeSrc": "21988:242:61", + "nodeType": "YulCase", + "src": "21988:242:61", + "value": "default" + } + ], + "expression": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "21296:6:61", + "nodeType": "YulIdentifier", + "src": "21296:6:61" + }, + { + "kind": "number", + "nativeSrc": "21304:2:61", + "nodeType": "YulLiteral", + "src": "21304:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "21293:2:61", + "nodeType": "YulIdentifier", + "src": "21293:2:61" + }, + "nativeSrc": "21293:14:61", + "nodeType": "YulFunctionCall", + "src": "21293:14:61" + }, + "nativeSrc": "21286:944:61", + "nodeType": "YulSwitch", + "src": "21286:944:61" + } + ] + }, + "name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage", + "nativeSrc": "20891:1345:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "slot", + "nativeSrc": "20972:4:61", + "nodeType": "YulTypedName", + "src": "20972:4:61", + "type": "" + }, + { + "name": "src", + "nativeSrc": "20978:3:61", + "nodeType": "YulTypedName", + "src": "20978:3:61", + "type": "" + } + ], + "src": "20891:1345:61" + }, + { + "body": { + "nativeSrc": "22432:14:61", + "nodeType": "YulBlock", + "src": "22432:14:61", + "statements": [ + { + "nativeSrc": "22434:10:61", + "nodeType": "YulAssignment", + "src": "22434:10:61", + "value": { + "name": "pos", + "nativeSrc": "22441:3:61", + "nodeType": "YulIdentifier", + "src": "22441:3:61" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "22434:3:61", + "nodeType": "YulIdentifier", + "src": "22434:3:61" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nativeSrc": "22241:205:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "22416:3:61", + "nodeType": "YulTypedName", + "src": "22416:3:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "22424:3:61", + "nodeType": "YulTypedName", + "src": "22424:3:61", + "type": "" + } + ], + "src": "22241:205:61" + }, + { + "body": { + "nativeSrc": "22608:218:61", + "nodeType": "YulBlock", + "src": "22608:218:61", + "statements": [ + { + "nativeSrc": "22618:26:61", + "nodeType": "YulAssignment", + "src": "22618:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "22630:9:61", + "nodeType": "YulIdentifier", + "src": "22630:9:61" + }, + { + "kind": "number", + "nativeSrc": "22641:2:61", + "nodeType": "YulLiteral", + "src": "22641:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22626:3:61", + "nodeType": "YulIdentifier", + "src": "22626:3:61" + }, + "nativeSrc": "22626:18:61", + "nodeType": "YulFunctionCall", + "src": "22626:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "22618:4:61", + "nodeType": "YulIdentifier", + "src": "22618:4:61" + } + ] + }, + { + "nativeSrc": "22653:29:61", + "nodeType": "YulVariableDeclaration", + "src": "22653:29:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "22671:3:61", + "nodeType": "YulLiteral", + "src": "22671:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "22676:1:61", + "nodeType": "YulLiteral", + "src": "22676:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "22667:3:61", + "nodeType": "YulIdentifier", + "src": "22667:3:61" + }, + "nativeSrc": "22667:11:61", + "nodeType": "YulFunctionCall", + "src": "22667:11:61" + }, + { + "kind": "number", + "nativeSrc": "22680:1:61", + "nodeType": "YulLiteral", + "src": "22680:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "22663:3:61", + "nodeType": "YulIdentifier", + "src": "22663:3:61" + }, + "nativeSrc": "22663:19:61", + "nodeType": "YulFunctionCall", + "src": "22663:19:61" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "22657:2:61", + "nodeType": "YulTypedName", + "src": "22657:2:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "22698:9:61", + "nodeType": "YulIdentifier", + "src": "22698:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "22713:6:61", + "nodeType": "YulIdentifier", + "src": "22713:6:61" + }, + { + "name": "_1", + "nativeSrc": "22721:2:61", + "nodeType": "YulIdentifier", + "src": "22721:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "22709:3:61", + "nodeType": "YulIdentifier", + "src": "22709:3:61" + }, + "nativeSrc": "22709:15:61", + "nodeType": "YulFunctionCall", + "src": "22709:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22691:6:61", + "nodeType": "YulIdentifier", + "src": "22691:6:61" + }, + "nativeSrc": "22691:34:61", + "nodeType": "YulFunctionCall", + "src": "22691:34:61" + }, + "nativeSrc": "22691:34:61", + "nodeType": "YulExpressionStatement", + "src": "22691:34:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "22745:9:61", + "nodeType": "YulIdentifier", + "src": "22745:9:61" + }, + { + "kind": "number", + "nativeSrc": "22756:2:61", + "nodeType": "YulLiteral", + "src": "22756:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22741:3:61", + "nodeType": "YulIdentifier", + "src": "22741:3:61" + }, + "nativeSrc": "22741:18:61", + "nodeType": "YulFunctionCall", + "src": "22741:18:61" + }, + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "22765:6:61", + "nodeType": "YulIdentifier", + "src": "22765:6:61" + }, + { + "name": "_1", + "nativeSrc": "22773:2:61", + "nodeType": "YulIdentifier", + "src": "22773:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "22761:3:61", + "nodeType": "YulIdentifier", + "src": "22761:3:61" + }, + "nativeSrc": "22761:15:61", + "nodeType": "YulFunctionCall", + "src": "22761:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22734:6:61", + "nodeType": "YulIdentifier", + "src": "22734:6:61" + }, + "nativeSrc": "22734:43:61", + "nodeType": "YulFunctionCall", + "src": "22734:43:61" + }, + "nativeSrc": "22734:43:61", + "nodeType": "YulExpressionStatement", + "src": "22734:43:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "22797:9:61", + "nodeType": "YulIdentifier", + "src": "22797:9:61" + }, + { + "kind": "number", + "nativeSrc": "22808:2:61", + "nodeType": "YulLiteral", + "src": "22808:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22793:3:61", + "nodeType": "YulIdentifier", + "src": "22793:3:61" + }, + "nativeSrc": "22793:18:61", + "nodeType": "YulFunctionCall", + "src": "22793:18:61" + }, + { + "name": "value2", + "nativeSrc": "22813:6:61", + "nodeType": "YulIdentifier", + "src": "22813:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "22786:6:61", + "nodeType": "YulIdentifier", + "src": "22786:6:61" + }, + "nativeSrc": "22786:34:61", + "nodeType": "YulFunctionCall", + "src": "22786:34:61" + }, + "nativeSrc": "22786:34:61", + "nodeType": "YulExpressionStatement", + "src": "22786:34:61" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed", + "nativeSrc": "22451:375:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "22561:9:61", + "nodeType": "YulTypedName", + "src": "22561:9:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "22572:6:61", + "nodeType": "YulTypedName", + "src": "22572:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "22580:6:61", + "nodeType": "YulTypedName", + "src": "22580:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "22588:6:61", + "nodeType": "YulTypedName", + "src": "22588:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "22599:4:61", + "nodeType": "YulTypedName", + "src": "22599:4:61", + "type": "" + } + ], + "src": "22451:375:61" + }, + { + "body": { + "nativeSrc": "22960:145:61", + "nodeType": "YulBlock", + "src": "22960:145:61", + "statements": [ + { + "nativeSrc": "22970:26:61", + "nodeType": "YulAssignment", + "src": "22970:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "22982:9:61", + "nodeType": "YulIdentifier", + "src": "22982:9:61" + }, + { + "kind": "number", + "nativeSrc": "22993:2:61", + "nodeType": "YulLiteral", + "src": "22993:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "22978:3:61", + "nodeType": "YulIdentifier", + "src": "22978:3:61" + }, + "nativeSrc": "22978:18:61", + "nodeType": "YulFunctionCall", + "src": "22978:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "22970:4:61", + "nodeType": "YulIdentifier", + "src": "22970:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "23012:9:61", + "nodeType": "YulIdentifier", + "src": "23012:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "23027:6:61", + "nodeType": "YulIdentifier", + "src": "23027:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23043:3:61", + "nodeType": "YulLiteral", + "src": "23043:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "23048:1:61", + "nodeType": "YulLiteral", + "src": "23048:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "23039:3:61", + "nodeType": "YulIdentifier", + "src": "23039:3:61" + }, + "nativeSrc": "23039:11:61", + "nodeType": "YulFunctionCall", + "src": "23039:11:61" + }, + { + "kind": "number", + "nativeSrc": "23052:1:61", + "nodeType": "YulLiteral", + "src": "23052:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "23035:3:61", + "nodeType": "YulIdentifier", + "src": "23035:3:61" + }, + "nativeSrc": "23035:19:61", + "nodeType": "YulFunctionCall", + "src": "23035:19:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "23023:3:61", + "nodeType": "YulIdentifier", + "src": "23023:3:61" + }, + "nativeSrc": "23023:32:61", + "nodeType": "YulFunctionCall", + "src": "23023:32:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "23005:6:61", + "nodeType": "YulIdentifier", + "src": "23005:6:61" + }, + "nativeSrc": "23005:51:61", + "nodeType": "YulFunctionCall", + "src": "23005:51:61" + }, + "nativeSrc": "23005:51:61", + "nodeType": "YulExpressionStatement", + "src": "23005:51:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "23076:9:61", + "nodeType": "YulIdentifier", + "src": "23076:9:61" + }, + { + "kind": "number", + "nativeSrc": "23087:2:61", + "nodeType": "YulLiteral", + "src": "23087:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23072:3:61", + "nodeType": "YulIdentifier", + "src": "23072:3:61" + }, + "nativeSrc": "23072:18:61", + "nodeType": "YulFunctionCall", + "src": "23072:18:61" + }, + { + "name": "value1", + "nativeSrc": "23092:6:61", + "nodeType": "YulIdentifier", + "src": "23092:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "23065:6:61", + "nodeType": "YulIdentifier", + "src": "23065:6:61" + }, + "nativeSrc": "23065:34:61", + "nodeType": "YulFunctionCall", + "src": "23065:34:61" + }, + "nativeSrc": "23065:34:61", + "nodeType": "YulExpressionStatement", + "src": "23065:34:61" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed", + "nativeSrc": "22831:274:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "22921:9:61", + "nodeType": "YulTypedName", + "src": "22921:9:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "22932:6:61", + "nodeType": "YulTypedName", + "src": "22932:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "22940:6:61", + "nodeType": "YulTypedName", + "src": "22940:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "22951:4:61", + "nodeType": "YulTypedName", + "src": "22951:4:61", + "type": "" + } + ], + "src": "22831:274:61" + }, + { + "body": { + "nativeSrc": "23247:150:61", + "nodeType": "YulBlock", + "src": "23247:150:61", + "statements": [ + { + "nativeSrc": "23257:27:61", + "nodeType": "YulVariableDeclaration", + "src": "23257:27:61", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "23277:6:61", + "nodeType": "YulIdentifier", + "src": "23277:6:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "23271:5:61", + "nodeType": "YulIdentifier", + "src": "23271:5:61" + }, + "nativeSrc": "23271:13:61", + "nodeType": "YulFunctionCall", + "src": "23271:13:61" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "23261:6:61", + "nodeType": "YulTypedName", + "src": "23261:6:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "23332:6:61", + "nodeType": "YulIdentifier", + "src": "23332:6:61" + }, + { + "kind": "number", + "nativeSrc": "23340:4:61", + "nodeType": "YulLiteral", + "src": "23340:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23328:3:61", + "nodeType": "YulIdentifier", + "src": "23328:3:61" + }, + "nativeSrc": "23328:17:61", + "nodeType": "YulFunctionCall", + "src": "23328:17:61" + }, + { + "name": "pos", + "nativeSrc": "23347:3:61", + "nodeType": "YulIdentifier", + "src": "23347:3:61" + }, + { + "name": "length", + "nativeSrc": "23352:6:61", + "nodeType": "YulIdentifier", + "src": "23352:6:61" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "23293:34:61", + "nodeType": "YulIdentifier", + "src": "23293:34:61" + }, + "nativeSrc": "23293:66:61", + "nodeType": "YulFunctionCall", + "src": "23293:66:61" + }, + "nativeSrc": "23293:66:61", + "nodeType": "YulExpressionStatement", + "src": "23293:66:61" + }, + { + "nativeSrc": "23368:23:61", + "nodeType": "YulAssignment", + "src": "23368:23:61", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "23379:3:61", + "nodeType": "YulIdentifier", + "src": "23379:3:61" + }, + { + "name": "length", + "nativeSrc": "23384:6:61", + "nodeType": "YulIdentifier", + "src": "23384:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "23375:3:61", + "nodeType": "YulIdentifier", + "src": "23375:3:61" + }, + "nativeSrc": "23375:16:61", + "nodeType": "YulFunctionCall", + "src": "23375:16:61" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "23368:3:61", + "nodeType": "YulIdentifier", + "src": "23368:3:61" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nativeSrc": "23110:287:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "23223:3:61", + "nodeType": "YulTypedName", + "src": "23223:3:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "23228:6:61", + "nodeType": "YulTypedName", + "src": "23228:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "23239:3:61", + "nodeType": "YulTypedName", + "src": "23239:3:61", + "type": "" + } + ], + "src": "23110:287:61" + }, + { + "body": { + "nativeSrc": "23434:95:61", + "nodeType": "YulBlock", + "src": "23434:95:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23451:1:61", + "nodeType": "YulLiteral", + "src": "23451:1:61", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23458:3:61", + "nodeType": "YulLiteral", + "src": "23458:3:61", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "23463:10:61", + "nodeType": "YulLiteral", + "src": "23463:10:61", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "23454:3:61", + "nodeType": "YulIdentifier", + "src": "23454:3:61" + }, + "nativeSrc": "23454:20:61", + "nodeType": "YulFunctionCall", + "src": "23454:20:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "23444:6:61", + "nodeType": "YulIdentifier", + "src": "23444:6:61" + }, + "nativeSrc": "23444:31:61", + "nodeType": "YulFunctionCall", + "src": "23444:31:61" + }, + "nativeSrc": "23444:31:61", + "nodeType": "YulExpressionStatement", + "src": "23444:31:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23491:1:61", + "nodeType": "YulLiteral", + "src": "23491:1:61", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "23494:4:61", + "nodeType": "YulLiteral", + "src": "23494:4:61", + "type": "", + "value": "0x12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "23484:6:61", + "nodeType": "YulIdentifier", + "src": "23484:6:61" + }, + "nativeSrc": "23484:15:61", + "nodeType": "YulFunctionCall", + "src": "23484:15:61" + }, + "nativeSrc": "23484:15:61", + "nodeType": "YulExpressionStatement", + "src": "23484:15:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23515:1:61", + "nodeType": "YulLiteral", + "src": "23515:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "23518:4:61", + "nodeType": "YulLiteral", + "src": "23518:4:61", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "23508:6:61", + "nodeType": "YulIdentifier", + "src": "23508:6:61" + }, + "nativeSrc": "23508:15:61", + "nodeType": "YulFunctionCall", + "src": "23508:15:61" + }, + "nativeSrc": "23508:15:61", + "nodeType": "YulExpressionStatement", + "src": "23508:15:61" + } + ] + }, + "name": "panic_error_0x12", + "nativeSrc": "23402:127:61", + "nodeType": "YulFunctionDefinition", + "src": "23402:127:61" + }, + { + "body": { + "nativeSrc": "23583:79:61", + "nodeType": "YulBlock", + "src": "23583:79:61", + "statements": [ + { + "nativeSrc": "23593:17:61", + "nodeType": "YulAssignment", + "src": "23593:17:61", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "23605:1:61", + "nodeType": "YulIdentifier", + "src": "23605:1:61" + }, + { + "name": "y", + "nativeSrc": "23608:1:61", + "nodeType": "YulIdentifier", + "src": "23608:1:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "23601:3:61", + "nodeType": "YulIdentifier", + "src": "23601:3:61" + }, + "nativeSrc": "23601:9:61", + "nodeType": "YulFunctionCall", + "src": "23601:9:61" + }, + "variableNames": [ + { + "name": "diff", + "nativeSrc": "23593:4:61", + "nodeType": "YulIdentifier", + "src": "23593:4:61" + } + ] + }, + { + "body": { + "nativeSrc": "23634:22:61", + "nodeType": "YulBlock", + "src": "23634:22:61", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nativeSrc": "23636:16:61", + "nodeType": "YulIdentifier", + "src": "23636:16:61" + }, + "nativeSrc": "23636:18:61", + "nodeType": "YulFunctionCall", + "src": "23636:18:61" + }, + "nativeSrc": "23636:18:61", + "nodeType": "YulExpressionStatement", + "src": "23636:18:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "diff", + "nativeSrc": "23625:4:61", + "nodeType": "YulIdentifier", + "src": "23625:4:61" + }, + { + "name": "x", + "nativeSrc": "23631:1:61", + "nodeType": "YulIdentifier", + "src": "23631:1:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "23622:2:61", + "nodeType": "YulIdentifier", + "src": "23622:2:61" + }, + "nativeSrc": "23622:11:61", + "nodeType": "YulFunctionCall", + "src": "23622:11:61" + }, + "nativeSrc": "23619:37:61", + "nodeType": "YulIf", + "src": "23619:37:61" + } + ] + }, + "name": "checked_sub_t_uint256", + "nativeSrc": "23534:128:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nativeSrc": "23565:1:61", + "nodeType": "YulTypedName", + "src": "23565:1:61", + "type": "" + }, + { + "name": "y", + "nativeSrc": "23568:1:61", + "nodeType": "YulTypedName", + "src": "23568:1:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nativeSrc": "23574:4:61", + "nodeType": "YulTypedName", + "src": "23574:4:61", + "type": "" + } + ], + "src": "23534:128:61" + }, + { + "body": { + "nativeSrc": "23699:95:61", + "nodeType": "YulBlock", + "src": "23699:95:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23716:1:61", + "nodeType": "YulLiteral", + "src": "23716:1:61", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23723:3:61", + "nodeType": "YulLiteral", + "src": "23723:3:61", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "23728:10:61", + "nodeType": "YulLiteral", + "src": "23728:10:61", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "23719:3:61", + "nodeType": "YulIdentifier", + "src": "23719:3:61" + }, + "nativeSrc": "23719:20:61", + "nodeType": "YulFunctionCall", + "src": "23719:20:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "23709:6:61", + "nodeType": "YulIdentifier", + "src": "23709:6:61" + }, + "nativeSrc": "23709:31:61", + "nodeType": "YulFunctionCall", + "src": "23709:31:61" + }, + "nativeSrc": "23709:31:61", + "nodeType": "YulExpressionStatement", + "src": "23709:31:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23756:1:61", + "nodeType": "YulLiteral", + "src": "23756:1:61", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "23759:4:61", + "nodeType": "YulLiteral", + "src": "23759:4:61", + "type": "", + "value": "0x31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "23749:6:61", + "nodeType": "YulIdentifier", + "src": "23749:6:61" + }, + "nativeSrc": "23749:15:61", + "nodeType": "YulFunctionCall", + "src": "23749:15:61" + }, + "nativeSrc": "23749:15:61", + "nodeType": "YulExpressionStatement", + "src": "23749:15:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "23780:1:61", + "nodeType": "YulLiteral", + "src": "23780:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "23783:4:61", + "nodeType": "YulLiteral", + "src": "23783:4:61", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "23773:6:61", + "nodeType": "YulIdentifier", + "src": "23773:6:61" + }, + "nativeSrc": "23773:15:61", + "nodeType": "YulFunctionCall", + "src": "23773:15:61" + }, + "nativeSrc": "23773:15:61", + "nodeType": "YulExpressionStatement", + "src": "23773:15:61" + } + ] + }, + "name": "panic_error_0x31", + "nativeSrc": "23667:127:61", + "nodeType": "YulFunctionDefinition", + "src": "23667:127:61" + } + ] + }, + "contents": "{\n { }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_uint256_t_contract$_IERC20_$4513__to_t_uint256_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n }\n function validator_revert_bytes4(value)\n {\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_bytes4(value)\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_string(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_string(value0, add(headStart, 32))\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function validator_revert_address(value)\n {\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_decode_tuple_t_uint256t_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n value2 := calldataload(add(headStart, 64))\n }\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_uint16(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_uint256t_uint16t_uint16(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := abi_decode_uint16(add(headStart, 32))\n value2 := abi_decode_uint16(add(headStart, 64))\n }\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n let value := calldataload(add(headStart, 32))\n validator_revert_address(value)\n value1 := value\n }\n function panic_error_0x21()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n function validator_assert_enum_BookingStatus(value)\n {\n if iszero(lt(value, 5))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n }\n function abi_encode_tuple_t_enum$_BookingStatus_$13040__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n validator_assert_enum_BookingStatus(value0)\n mstore(headStart, value0)\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_bytes(offset, end) -> array\n {\n if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n let _1 := calldataload(offset)\n let _2 := sub(shl(64, 1), 1)\n if gt(_1, _2) { panic_error_0x41() }\n let _3 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_1, 0x1f), _3), 63), _3))\n if or(gt(newFreePtr, _2), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _1)\n if gt(add(add(offset, _1), 0x20), end) { revert(0, 0) }\n calldatacopy(add(memPtr, 0x20), add(offset, 0x20), _1)\n mstore(add(add(memPtr, _1), 0x20), 0)\n array := memPtr\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let offset := calldataload(add(headStart, 32))\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\n }\n function abi_encode_tuple_t_uint16_t_uint16_t_uint16__to_t_uint16_t_uint16_t_uint16__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n let _1 := 0xffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), and(value2, _1))\n }\n function abi_decode_tuple_t_uint256t_uint256t_uint16t_uint16(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n value2 := abi_decode_uint16(add(headStart, 64))\n value3 := abi_decode_uint16(add(headStart, 96))\n }\n function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let offset := calldataload(headStart)\n let _1 := sub(shl(64, 1), 1)\n if gt(offset, _1) { revert(0, 0) }\n value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n let offset_1 := calldataload(add(headStart, 32))\n if gt(offset_1, _1) { revert(0, 0) }\n value1 := abi_decode_bytes(add(headStart, offset_1), dataEnd)\n }\n function validator_revert_bool(value)\n {\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_bool(value_1)\n value1 := value_1\n }\n function abi_encode_tuple_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16__to_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16__fromStack_reversed(headStart, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 256)\n let _1 := 0xffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), and(value2, _1))\n mstore(add(headStart, 96), and(value3, _1))\n mstore(add(headStart, 128), and(value4, _1))\n mstore(add(headStart, 160), and(value5, _1))\n mstore(add(headStart, 192), and(value6, _1))\n mstore(add(headStart, 224), and(value7, _1))\n }\n function abi_encode_tuple_t_contract$_IERC20_$4513__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_decode_tuple_t_addresst_addresst_uint256t_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n value2 := calldataload(add(headStart, 64))\n let offset := calldataload(add(headStart, 96))\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n value3 := abi_decode_bytes(add(headStart, offset), dataEnd)\n }\n function abi_encode_tuple_t_enum$_CancellationProposalStatus_$14549_t_uint256_t_address_t_address_t_bool_t_bool_t_uint32_t_uint32__to_t_uint8_t_uint256_t_address_t_address_t_bool_t_bool_t_uint32_t_uint32__fromStack_reversed(headStart, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 256)\n validator_assert_enum_BookingStatus(value0)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n let _1 := sub(shl(160, 1), 1)\n mstore(add(headStart, 64), and(value2, _1))\n mstore(add(headStart, 96), and(value3, _1))\n mstore(add(headStart, 128), iszero(iszero(value4)))\n mstore(add(headStart, 160), iszero(iszero(value5)))\n let _2 := 0xffffffff\n mstore(add(headStart, 192), and(value6, _2))\n mstore(add(headStart, 224), and(value7, _2))\n }\n function abi_decode_tuple_t_addresst_addresst_address(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n let value_2 := calldataload(add(headStart, 64))\n validator_revert_address(value_2)\n value2 := value_2\n }\n function abi_decode_tuple_t_addresst_string_memory_ptrt_uint256t_uint256t_contract$_IERC20_$4513t_uint256t_bool(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n {\n if slt(sub(dataEnd, headStart), 224) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let offset := calldataload(add(headStart, 32))\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\n value2 := calldataload(add(headStart, 64))\n value3 := calldataload(add(headStart, 96))\n let value_1 := calldataload(add(headStart, 128))\n validator_revert_address(value_1)\n value4 := value_1\n value5 := calldataload(add(headStart, 160))\n let value_2 := calldataload(add(headStart, 192))\n validator_revert_bool(value_2)\n value6 := value_2\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_bool(value)\n value0 := value\n }\n function abi_encode_tuple_t_uint256_t_enum$_BookingStatus_$13040__to_t_uint256_t_uint8__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n validator_assert_enum_BookingStatus(value1)\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(64, 1), 1)))\n }\n function abi_encode_tuple_t_address_t_address__to_t_address_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n }\n function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_t_uint256_t_address__to_t_uint256_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n }\n function abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(64, 1), 1)))\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum) { panic_error_0x11() }\n }\n function increment_t_uint256(value) -> ret\n {\n if eq(value, not(0)) { panic_error_0x11() }\n ret := add(value, 1)\n }\n function abi_encode_tuple_t_uint256_t_uint256_t_contract$_IERC20_$4513_t_uint256_t_bool__to_t_uint256_t_uint256_t_address_t_uint256_t_bool__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 160)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), and(value2, sub(shl(160, 1), 1)))\n mstore(add(headStart, 96), value3)\n mstore(add(headStart, 128), iszero(iszero(value4)))\n }\n function abi_encode_tuple_t_uint256_t_enum$_CancellationProposalStatus_$14549__to_t_uint256_t_uint8__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n validator_assert_enum_BookingStatus(value1)\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n }\n function abi_encode_tuple_t_address_t_uint256_t_address__to_t_address_t_uint256_t_address__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), and(value2, _1))\n }\n function abi_encode_tuple_t_uint16_t_uint16__to_t_uint16_t_uint16__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n let _1 := 0xffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n }\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function increment_t_uint32(value) -> ret\n {\n let _1 := 0xffffffff\n let value_1 := and(value, _1)\n if eq(value_1, _1) { panic_error_0x11() }\n ret := add(value_1, 1)\n }\n function abi_encode_tuple_t_uint256_t_bool_t_bool_t_uint32_t_uint32__to_t_uint256_t_bool_t_bool_t_uint32_t_uint32__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 160)\n mstore(headStart, value0)\n mstore(add(headStart, 32), iszero(iszero(value1)))\n mstore(add(headStart, 64), iszero(iszero(value2)))\n let _1 := 0xffffffff\n mstore(add(headStart, 96), and(value3, _1))\n mstore(add(headStart, 128), and(value4, _1))\n }\n function abi_encode_tuple_t_address_t_address_t_uint256_t_bytes_memory_ptr__to_t_address_t_address_t_uint256_t_bytes_memory_ptr__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), 128)\n tail := abi_encode_string(value3, add(headStart, 128))\n }\n function abi_decode_tuple_t_bytes4_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_bytes4(value)\n value0 := value\n }\n function abi_encode_tuple_packed_t_string_memory_ptr_t_string_memory_ptr__to_t_string_memory_ptr_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n let end_1 := add(pos, length)\n let length_1 := mload(value1)\n copy_memory_to_memory_with_cleanup(add(value1, 0x20), end_1, length_1)\n end := add(end_1, length_1)\n }\n function array_dataslot_string_storage(ptr) -> data\n {\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n }\n function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n {\n if gt(len, 31)\n {\n let _1 := 0\n mstore(0, array)\n let data := keccak256(0, 0x20)\n let deleteStart := add(data, shr(5, add(startIndex, 31)))\n if lt(startIndex, 0x20) { deleteStart := data }\n let _2 := add(data, shr(5, add(len, 31)))\n let start := deleteStart\n for { } lt(start, _2) { start := add(start, 1) }\n { sstore(start, _1) }\n }\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n {\n used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n {\n let newLen := mload(src)\n if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n let srcOffset := 0\n let srcOffset_1 := 0x20\n srcOffset := 0x20\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(31))\n let dstPtr := array_dataslot_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, srcOffset_1)\n }\n if lt(loopEnd, newLen)\n {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n }\n sstore(slot, add(shl(1, newLen), 1))\n }\n default {\n let value := 0\n if newLen\n {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n function abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n { end := pos }\n function abi_encode_tuple_t_address_t_address_t_uint256__to_t_address_t_address_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n }\n function abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function panic_error_0x12()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n function checked_sub_t_uint256(x, y) -> diff\n {\n diff := sub(x, y)\n if gt(diff, x) { panic_error_0x11() }\n }\n function panic_error_0x31()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x31)\n revert(0, 0x24)\n }\n}", + "id": 61, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": { + "860": [ + { + "length": 32, + "start": 8779 + }, + { + "length": 32, + "start": 8820 + }, + { + "length": 32, + "start": 9150 + } + ] + }, + "linkReferences": {}, + "object": "60806040526004361061024e5760003560e01c80624fdd3c1461025357806301ffc9a71461028a57806306fdde03146102ba578063081812fc146102dc578063095ea7b3146103095780630e75c1a81461032b57806312b357b51461034e57806318160ddd1461036e5780631c54f0f71461038357806323b872dd14610396578063248a9ca3146103b65780632a119380146103d65780632d3a6329146103f65780632edf5e2c146104165780632f2ff15d146104385780632f745c591461045857806336568abe146104785780633c15b31c1461049857806341431908146104c557806342842e0e146104e55780634f1ef286146105055780634f6ccce714610518578063516a82b81461053857806352d1902d1461055857806354fd4d501461056d5780636352211e1461059a57806370a08231146105ba57806374aa2048146105da57806374fe60e9146105fa57806391d148541461061a57806391da124c1461063a57806395d89b411461065a57806396591edd1461066f578063a0f07c7414610682578063a217fddf14610697578063a22cb465146106ac578063a9bc55a2146106cc578063ad3cb1cc14610700578063b191d09214610731578063b88d4fde14610751578063bb520b4714610771578063be667188146107a5578063bfb26c06146107c5578063c0c53b8b146107da578063c162d7da146107fa578063c87b56dd1461080f578063d547741f1461082f578063db2b26821461084f578063e5a6725c1461086f578063e985e9c51461088f578063f72c0d8b146108af578063f7e45f09146108d1575b600080fd5b34801561025f57600080fd5b5061027361026e366004613eed565b6108f1565b604051610281929190613f06565b60405180910390f35b34801561029657600080fd5b506102aa6102a5366004613f33565b61092e565b6040519015158152602001610281565b3480156102c657600080fd5b506102cf61093f565b6040516102819190613fa0565b3480156102e857600080fd5b506102fc6102f7366004613eed565b6109e0565b6040516102819190613fb3565b34801561031557600080fd5b50610329610324366004613fdc565b6109f5565b005b34801561033757600080fd5b50610340610a04565b604051908152602001610281565b34801561035a57600080fd5b506102aa610369366004614008565b610a19565b34801561037a57600080fd5b50610340610a8f565b610329610391366004614025565b610a9a565b3480156103a257600080fd5b506103296103b1366004614047565b610b9c565b3480156103c257600080fd5b506103406103d1366004613eed565b610bb5565b3480156103e257600080fd5b506103296103f136600461409f565b610bd5565b34801561040257600080fd5b506102aa610411366004613eed565b610c8a565b34801561042257600080fd5b5061034060008051602061496583398151915281565b34801561044457600080fd5b506103296104533660046140db565b610cb0565b34801561046457600080fd5b50610340610473366004613fdc565b610cd2565b34801561048457600080fd5b506103296104933660046140db565b610d34565b3480156104a457600080fd5b506104b86104b3366004613eed565b610d67565b604051610281919061413f565b3480156104d157600080fd5b506103296104e0366004614008565b610d8a565b3480156104f157600080fd5b50610329610500366004614047565b610dc2565b6103296105133660046141f4565b610ddd565b34801561052457600080fd5b50610340610533366004613eed565b610df8565b34801561054457600080fd5b50610329610553366004613eed565b610e59565b34801561056457600080fd5b50610340610e86565b34801561057957600080fd5b50604080516001815260006020820181905291810191909152606001610281565b3480156105a657600080fd5b506102fc6105b5366004613eed565b610ea3565b3480156105c657600080fd5b506103406105d5366004614008565b610eae565b3480156105e657600080fd5b506103296105f5366004614243565b610f06565b34801561060657600080fd5b5061032961061536600461409f565b610fb3565b34801561062657600080fd5b506102aa6106353660046140db565b61105f565b34801561064657600080fd5b50610329610655366004614289565b611095565b34801561066657600080fd5b506102cf611152565b61032961067d366004613eed565b61116f565b34801561068e57600080fd5b506102fc600081565b3480156106a357600080fd5b50610340600081565b3480156106b857600080fd5b506103296106c73660046142f0565b611329565b3480156106d857600080fd5b506106ec6106e7366004613eed565b611334565b60405161028198979695949392919061431e565b34801561070c57600080fd5b506102cf604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561073d57600080fd5b506102fc61074c366004613eed565b6113ba565b34801561075d57600080fd5b5061032961076c366004614363565b6113e6565b34801561077d57600080fd5b5061079161078c366004613eed565b6113fe565b6040516102819897969594939291906143ce565b3480156107b157600080fd5b506103296107c0366004614025565b61147a565b3480156107d157600080fd5b506102fc600181565b3480156107e657600080fd5b506103296107f5366004614426565b61152d565b34801561080657600080fd5b506102fc6116cc565b34801561081b57600080fd5b506102cf61082a366004613eed565b6116e7565b34801561083b57600080fd5b5061032961084a3660046140db565b6116f2565b34801561085b57600080fd5b5061032961086a366004614471565b61170e565b34801561087b57600080fd5b5061032961088a366004613eed565b611861565b34801561089b57600080fd5b506102aa6108aa366004614504565b611969565b3480156108bb57600080fd5b5061034060008051602061492583398151915281565b3480156108dd57600080fd5b506103296108ec366004614243565b6119a8565b60008060006108fe611a55565b6000948552600390810160205260409094209384015460049094015493946001600160a01b039094169392505050565b600061093982611a79565b92915050565b6060600061094b611a9e565b905080600001805461095c90614532565b80601f016020809104026020016040519081016040528092919081815260200182805461098890614532565b80156109d55780601f106109aa576101008083540402835291602001916109d5565b820191906000526020600020905b8154815290600101906020018083116109b857829003601f168201915b505050505091505090565b60006109eb82611ac2565b5061093982611afa565b610a00828233611b23565b5050565b600080610a0f611a55565b6002015492915050565b6000610a236116cc565b6001600160a01b03166312b357b5836040518263ffffffff1660e01b8152600401610a4e9190613fb3565b602060405180830381865afa158015610a6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610939919061456c565b600080610a0f611b30565b33610aa481611b54565b6000610aaf84611ac2565b90506000610abb611a55565b905060036000868152600480840160205260409091205460ff1690811115610ae557610ae561410b565b14610b25576000858152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c92889260ff9091169101614589565b60405180910390fd5b60008581526003820160205260408120600101546001600160a01b031690610b4e828888611b7c565b600088815260038501602090815260408083206004908101548189019093529220805460ff19169092179091559091506001600160a01b0316610b92818387611ce4565b5050505050505050565b610ba581611d92565b610bb0838383611f46565b505050565b600080610bc0611fb7565b60009384526020525050604090206001015490565b33610bdf81611b54565b6000610bea85611ac2565b90506000610bf6611a55565b905060036000878152600480840160205260409091205460ff1690811115610c2057610c2061410b565b14610c57576000868152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c92899260ff9091169101614589565b60008681526003820160205260409020600101546001600160a01b0316610c818382898989611fdb565b50505050505050565b600080610c95611a55565b60009384526003016020525050604090206006015460ff1690565b610cb982610bb5565b610cc28161211d565b610ccc8383612127565b50505050565b600080610cdd611b30565b9050610ce884610eae565b8310610d0b57838360405163295f44f760e21b8152600401610b1c9291906145a6565b6001600160a01b0384166000908152602091825260408082208583529092522054905092915050565b6001600160a01b0381163314610d5d5760405163334bd91960e11b815260040160405180910390fd5b610bb082826121c8565b600080610d72611a55565b60009384526004016020525050604090205460ff1690565b6000610d958161211d565b6000610d9f611a55565b80546001600160a01b0319166001600160a01b0394909416939093179092555050565b610bb0838383604051806020016040528060008152506113e6565b610de5612240565b610dee826122e7565b610a0082826122ff565b600080610e03611b30565b9050610e0d610a8f565b8310610e315760008360405163295f44f760e21b8152600401610b1c9291906145a6565b806002018381548110610e4657610e466145bf565b9060005260206000200154915050919050565b600080516020614965833981519152610e718161211d565b6000610e7b611a55565b600201929092555050565b6000610e906123b3565b5060008051602061494583398151915290565b600061093982611ac2565b600080610eb9611a9e565b90506001600160a01b038316610ee55760006040516322718ad960e21b8152600401610b1c9190613fb3565b6001600160a01b039092166000908152600390920160205250604090205490565b33610f1081611b54565b6000610f1b86611ac2565b90506000610f27611a55565b905060036000888152600480840160205260409091205460ff1690811115610f5157610f5161410b565b14610f88576000878152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c928a9260ff9091169101614589565b60008781526003820160205260409020600101546001600160a01b0316610b9283828a8a8a8a6123fc565b33610fbd81611b54565b6000610fc885611ac2565b90506000610fd4611a55565b905060036000878152600480840160205260409091205460ff1690811115610ffe57610ffe61410b565b14611035576000868152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c92899260ff9091169101614589565b60008681526003820160205260409020600101546001600160a01b0316610c818382898989612635565b60008061106a611fb7565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b600260006110a1612793565b8054909150600160401b900460ff16806110c8575080546001600160401b03808416911610155b156110e65760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160481b0319166001600160401b03831617600160401b17815560006111108161211d565b61111a85856127b7565b50805460ff60401b191681556040516000805160206148e5833981519152906111449084906145d5565b60405180910390a150505050565b6060600061115e611a9e565b905080600101805461095c90614532565b6111776127c9565b3361118181611b54565b600061118b611a55565b600084815260038083016020908152604092839020835160e08101855281546001600160a01b03908116808352600184015482169483019490945260028301549582019590955292810154606084015260048101549093166080830152600583015460a083015260069092015460ff16151560c08201529192503314611238578051604051632663a9c560e11b81526001600160a01b039091166004820152336024820152604401610b1c565b80604001514211156112655783816040015160405163293d73b760e11b8152600401610b1c9291906145e9565b600061127085610ea3565b905081602001516001600160a01b0316816001600160a01b0316146112af57602082015160405163103d145960e31b8152610b1c918791600401613f06565b6112be826020015133876127ff565b6112d5826080015183606001518460200151611ce4565b6000858152600484016020526040808220805460ff1916600317905551339187917fa751fb02c318279a22135a408663ae08ea45eafa950a4351c14ae543cbb950409190a35050505061132661289b565b50565b610a003383836128ac565b600080600080600080600080600061134a612951565b60009a8b5260205250506040909720600281015460039091015461ffff600160c81b830481169a600160d81b840482169a50600160e81b90930481169850808216975062010000820481169650600160201b820481169550600160301b820481169450600160401b909104169150565b6000806113c5611a55565b6000938452600301602052505060409020600401546001600160a01b031690565b6113f1848484610b9c565b610ccc3385858585612975565b6000806000806000806000806000611414612951565b60009a8b52602052505060409097206002810154815460019092015460ff600160c01b80840482169c949b506001600160a01b038084169b5084169950820481169750600160c81b820416955063ffffffff600160a01b91829004811695509104169150565b3361148481611b54565b600061148f84611ac2565b9050600061149b611a55565b905060036000868152600480840160205260409091205460ff16908111156114c5576114c561410b565b146114fc576000858152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c92889260ff9091169101614589565b60008581526003820160205260409020600101546001600160a01b031661152583828888612a8c565b505050505050565b6000611537612793565b805490915060ff600160401b82041615906001600160401b031660008115801561155e5750825b90506000826001600160401b0316600114801561157a5750303b155b905081158015611588575080155b156115a65760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b031916600117855583156115cf57845460ff60401b1916600160401b1785555b6116196040518060400160405280600c81526020016b2137b7b5b4b733aa37b5b2b760a11b815250604051806040016040528060048152602001630545249560e41b8152506127b7565b611621612c6a565b611629612c6a565b611631612c6a565b611639612c6a565b611644600088612127565b5061165d60008051602061492583398151915287612127565b506000611668611a55565b80546001600160a01b0319166001600160a01b038b16178155603c600290910155508315610b9257845460ff60401b191685556040516000805160206148e5833981519152906116ba906001906145d5565b60405180910390a15050505050505050565b6000806116d7611a55565b546001600160a01b031692915050565b606061093982612c72565b6116fb82610bb5565b6117048161211d565b610ccc83836121c8565b3361171881611b54565b61172188611b54565b600061172b611a55565b600281015490915061173d814261460d565b8811611760578781604051630999f7d760e41b8152600401610b1c9291906145e9565b60008511801561177a57506001600160a01b038616600114155b1561179b57604051638fe757e760e01b815260048101869052602401610b1c565b600182018054600091826117ae83614620565b9190505590506117be3382612d92565b6117c8818b612dac565b6117d8818c338c8c8c8c8c612e0a565b6000818152600484016020908152604091829020805460ff1916600117905581518b81529081018a90526001600160a01b0389811682840152606082018990528715156080830152915133928e169184917f1424af4f4cb40d8a1a2d00b2324cb122ba73eac426f98b62c33ff31ca045f0679160a0908290030190a45050505050505050505050565b600061186b611a55565b6000838152600382016020908152604080832060048501909252909120549192509060ff1660028160048111156118a4576118a461410b565b14806118c1575060038160048111156118bf576118bf61410b565b145b806118dd575060048160048111156118db576118db61410b565b145b156118ff57838160405163e4e3b53b60e01b8152600401610b1c929190614589565b8160020154421115611940576000848152600484016020526040808220805460ff1916600217905551859160008051602061490583398151915291a2610ccc565b815460405163d4cde2af60e01b8152610b1c9186916001600160a01b0390911690600401613f06565b600080611974611a9e565b6001600160a01b03948516600090815260059190910160209081526040808320959096168252939093525050205460ff1690565b336119b281611b54565b60006119bd86611ac2565b905060006119c9611a55565b905060036000888152600480840160205260409091205460ff16908111156119f3576119f361410b565b14611a2a576000878152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c928a9260ff9091169101614589565b60008781526003820160205260409020600101546001600160a01b0316610b9283828a8a8a8a612edc565b7f9db9d405bf15683ce835607b1f0b423dc1484d44bb9d5af64a483fa4afd8290090565b60006001600160e01b03198216637965db0b60e01b14806109395750610939826131e6565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930090565b600080611ace8361320b565b90506001600160a01b03811661093957604051637e27328960e01b815260048101849052602401610b1c565b600080611b05611a9e565b6000938452600401602052505060409020546001600160a01b031690565b610bb08383836001613234565b7f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed0090565b611b5d81610a19565b6113265780604051638014575360e01b8152600401610b1c9190613fb3565b6000336001600160a01b03851614611baa57604051636c83fb1b60e01b815260048101849052602401610b1c565b6000611bb4612951565b600085815260209190915260409020905060016002820154600160c01b900460ff166004811115611be757611be761410b565b14611c1a57838160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b80548314611c4157805460405163cc45283760e01b8152610b1c9186918690600401614639565b6001810154600160c01b900460ff16611c705760405163c84052f960e01b815260048101859052602401610b1c565b6001810154600160c81b900460ff16611c995760018101805460ff60c81b1916600160c81b1790555b60028101805460ff60c01b1916600160c21b17905560405184907f17c3690813e5ff9135b87fd91848109978b23db8e471498d18886560da7f286790600090a25490505b9392505050565b6001600160a01b038316611d2957813414611d16573482604051630145611560e21b8152600401610b1c9291906145e9565b610bb06001600160a01b0382163461333e565b6000196001600160a01b03841601611d5c573415610bb0576040516347d6729960e01b8152346004820152602401610b1c565b3415611d7d576040516347d6729960e01b8152346004820152602401610b1c565b610bb06001600160a01b0384163383856133d7565b6000611d9c611a55565b600083815260048201602052604081205491925060ff9091169080611dc085613431565b90925090506001826004811115611dd957611dd961410b565b03611e3a576000611de986611ac2565b60008781526003870160205260409020600101549091506001600160a01b039081169083163314611e2857611e2382828960636001612635565b611e37565b611e3782828960636001611fdb565b50505b6003836004811115611e4e57611e4e61410b565b1480611e6b57506002836004811115611e6957611e6961410b565b145b80611e8757506000836004811115611e8557611e8561410b565b145b15611e93575050505050565b6004836004811115611ea757611ea761410b565b03611ec957848360405163e4e3b53b60e01b8152600401610b1c929190614589565b600085815260038501602052604090206002810154421115611f1d576000868152600486016020526040808220805460ff1916600217905551879160008051602061490583398151915291a2505050505050565b805460405163d4cde2af60e01b8152610b1c9188916001600160a01b0390911690600401613f06565b6001600160a01b038216611f70576000604051633250574960e11b8152600401610b1c9190613fb3565b6000611f7d838333613485565b9050836001600160a01b0316816001600160a01b031614610ccc578382826040516364283d7b60e01b8152600401610b1c9392919061464f565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b8484611fe7828261349a565b6000611ff1612951565b600087815260209190915260409020905060016002820154600160c01b900460ff1660048111156120245761202461410b565b1461205757858160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b60028101546001600160a01b0316331461208757604051631186fdbd60e31b815260048101879052602401610b1c565b6003808201805461ffff878116600160401b0261ffff60401b19918a16600160301b029190911663ffffffff60301b199092169190911717905560028201805460ff60c01b1916600160c01b830217905550857f48e256ce3da490e3bbba80f056bb54ec3d7264f8ad7d152b77bf8c2eca3db5a5868660405161210b929190614672565b60405180910390a25050505050505050565b61132681336134da565b600080612132611fb7565b905061213e848461105f565b6121be576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556121743390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610939565b6000915050610939565b6000806121d3611fb7565b90506121df848461105f565b156121be576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610939565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806122c757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166122bb600080516020614945833981519152546001600160a01b031690565b6001600160a01b031614155b156122e55760405163703e46dd60e11b815260040160405180910390fd5b565b600080516020614925833981519152610a008161211d565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612359575060408051601f3d908101601f1916820190925261235691810190614687565b60015b6123785781604051634c9c8ce360e01b8152600401610b1c9190613fb3565b60008051602061494583398151915281146123a957604051632a87526960e21b815260048101829052602401610b1c565b610bb08383613505565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146122e55760405163703e46dd60e11b815260040160405180910390fd5b8585612408828261349a565b6000612412612951565b600088815260209190915260409020905060016002820154600160c01b900460ff1660048111156124455761244561410b565b1461247857868160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b858155600281018054336001600160a01b0319909116811790915560018201805461ffff60c01b19166001600160a01b038c81168414600160c01b0260ff60c81b191691909117908b16909214600160c81b029190911780825560038301805465ffffffff000019166201000061ffff8a81169190910261ffff60201b191691909117600160201b91891691909102179055600160a01b900463ffffffff16906014612523836146a0565b82546101009290920a63ffffffff8181021990931691831602179091556002830154600184015484546040516001600160a01b0380851696508316948d946000805160206148c5833981519152946125a39493600160c01b820460ff90811694600160c81b840490911693600160a01b93849004821693900416906146c3565b60405180910390a4600281015460038201546040518992600080516020614985833981519152926126229261ffff600160c81b8404811693600160d81b8104821693600160e81b90910482169281831692620100008304811692600160201b8104821692600160301b8204831692600160401b9092049091169061431e565b60405180910390a2505050505050505050565b8484612641828261349a565b600061264b612951565b600087815260209190915260409020905060016002820154600160c01b900460ff16600481111561267e5761267e61410b565b146126b157858160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b60028101546001600160a01b031633036126e157604051633060d8f760e21b815260048101879052602401610b1c565b60028101805460038301805461ffff88811661ffff19909216919091179091558716600160e81b0260ff60c01b191666ffff00000000ff60c01b1990911617600160c11b17808255600160a01b900463ffffffff16906014612742836146a0565b91906101000a81548163ffffffff021916908363ffffffff16021790555050857fab78ba855f2fdb28beb212a9b3f41a33cda034729848cd452f0cc96528c23a80868660405161210b929190614672565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b6127bf61355b565b610a008282613580565b60006127d36135ae565b8054909150600119016127f957604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b6001600160a01b038216612829576000604051633250574960e11b8152600401610b1c9190613fb3565b600061283783836000613485565b90506001600160a01b03811661286357604051637e27328960e01b815260048101839052602401610b1c565b836001600160a01b0316816001600160a01b031614610ccc578382826040516364283d7b60e01b8152600401610b1c9392919061464f565b60006128a56135ae565b6001905550565b60006128b6611a9e565b90506001600160a01b0383166128e15782604051630b61174360e31b8152600401610b1c9190613fb3565b6001600160a01b038481166000818152600584016020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b7f0b8fb32ffc7043fda9e0ee2bcb4236acf95ab448752c73eff6cc7f2640ff850090565b6001600160a01b0383163b15612a8557604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906129b79088908890879087906004016146ef565b6020604051808303816000875af19250505080156129f2575060408051601f3d908101601f191682019092526129ef9181019061472c565b60015b612a52573d808015612a20576040519150601f19603f3d011682016040523d82523d6000602084013e612a25565b606091505b508051600003612a4a5783604051633250574960e11b8152600401610b1c9190613fb3565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b146115255783604051633250574960e11b8152600401610b1c9190613fb3565b5050505050565b8383612a98828261349a565b6000612aa2612951565b600086815260209190915260409020905060016002820154600160c01b900460ff166004811115612ad557612ad561410b565b14612b0857848160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b80548414612b2f57805460405163cc45283760e01b8152610b1c9187918790600401614639565b6001600160a01b0387163303612b595760018101805460ff60c01b1916600160c01b179055612b6f565b60018101805460ff60c81b1916600160c81b1790555b6002810154600182015482546040516001600160a01b0380851694908416938a936000805160206148c583398151915293612bda93919260ff600160c01b8204811693600160c81b83049091169263ffffffff600160a01b93849004811693909204909116906146c3565b60405180910390a460028101546003820154604051879260008051602061498583398151915292612c599261ffff600160c81b8404811693600160d81b8104821693600160e81b90910482169281831692620100008304811692600160201b8104821692600160301b8204831692600160401b9092049091169061431e565b60405180910390a250505050505050565b6122e561355b565b60606000612c7e6135d2565b9050612c8983611ac2565b5060008381526020829052604081208054612ca390614532565b80601f0160208091040260200160405190810160405280929190818152602001828054612ccf90614532565b8015612d1c5780601f10612cf157610100808354040283529160200191612d1c565b820191906000526020600020905b815481529060010190602001808311612cff57829003601f168201915b505050505090506000612d3a60408051602081019091526000815290565b90508051600003612d4d57509392505050565b815115612d80578082604051602001612d67929190614749565b6040516020818303038152906040529350505050919050565b612d89856135f6565b95945050505050565b610a0082826040518060200160405280600081525061366a565b6000612db66135d2565b6000848152602082905260409020909150612dd183826147c0565b506040518381527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a1505050565b6000612e14611a55565b6040805160e0810182526001600160a01b039a8b168152988a166020808b019182528a8301998a5260608b01988952968b1660808b0190815260a08b0196875294151560c08b0190815260009c8d5260039384019097529a20975188546001600160a01b0319908116918b1691909117895599516001890180548c16918b169190911790559551600288015550925193850193909355905160048401805490961694169390931790935591516005830155516006909101805460ff1916911515919091179055565b8585612ee8828261349a565b6000612ef2612951565b600088815260209190915260409020905060046002820154600160c01b900460ff166004811115612f2557612f2561410b565b1480612f50575060016002820154600160c01b900460ff166004811115612f4e57612f4e61410b565b145b15612f8357868160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b60006002820154600160c01b900460ff166004811115612fa557612fa561410b565b03612fbf576001810180546001600160a01b031916331790555b338160020160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550858160000181905550886001600160a01b0316336001600160a01b0316148160010160186101000a81548160ff021916908315150217905550876001600160a01b0316336001600160a01b0316148160010160196101000a81548160ff021916908315150217905550848160020160196101000a81548161ffff021916908361ffff1602179055508381600201601b6101000a81548161ffff021916908361ffff160217905550600081600201601d6101000a81548161ffff021916908361ffff16021790555060008160030160006101000a81548161ffff021916908361ffff16021790555060008160030160026101000a81548161ffff021916908361ffff16021790555060008160030160046101000a81548161ffff021916908361ffff16021790555060008160030160066101000a81548161ffff021916908361ffff16021790555060008160030160086101000a81548161ffff021916908361ffff16021790555060018160020160186101000a81548160ff021916908360048111156131765761317661410b565b02179055506002810154600182015482546040516001600160a01b0380851694908416938c936000805160206148c5833981519152936125a393919260ff600160c01b8204811693600160c81b83049091169263ffffffff600160a01b93849004811693909204909116906146c3565b60006001600160e01b03198216632483248360e11b1480610939575061093982613682565b600080613216611a9e565b6000938452600201602052505060409020546001600160a01b031690565b600061323e611a9e565b9050818061325457506001600160a01b03831615155b1561330d57600061326485611ac2565b90506001600160a01b038416158015906132905750836001600160a01b0316816001600160a01b031614155b80156132a357506132a18185611969565b155b156132c3578360405163a9fbf51f60e01b8152600401610b1c9190613fb3565b821561330b5784866001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b600093845260040160205250506040902080546001600160a01b0319166001600160a01b0392909216919091179055565b8047101561336357478160405163cf47918160e01b8152600401610b1c9291906145e9565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146133b0576040519150601f19603f3d011682016040523d82523d6000602084013e6133b5565b606091505b5050905080610bb05760405163d6bda27560e01b815260040160405180910390fd5b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ccc9085906136a7565b60008061343c612951565b60008481526020919091526040902060020154600160c01b900460ff16613461612951565b600094855260205260409093206002015492936001600160a01b0390931692915050565b600061349284848461370f565b949350505050565b336001600160a01b038316148015906134bc5750336001600160a01b03821614155b15610a0057604051634793d28160e01b815260040160405180910390fd5b6134e4828261105f565b610a0057808260405163e2517d3f60e01b8152600401610b1c9291906145a6565b61350e8261379d565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561355357610bb082826137f9565b610a00613866565b613563613885565b6122e557604051631afcd79f60e31b815260040160405180910390fd5b61358861355b565b6000613592611a9e565b90508061359f84826147c0565b5060018101610ccc83826147c0565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b7f0542a41881ee128a365a727b282c86fa859579490b9bb45aab8503648c8e790090565b606061360182611ac2565b50600061361960408051602081019091526000815290565b905060008151116136395760405180602001604052806000815250611cdd565b806136438461389f565b604051602001613654929190614749565b6040516020818303038152906040529392505050565b6136748383613931565b610bb0336000858585612975565b60006001600160e01b0319821663780e9d6360e01b1480610939575061093982613996565b600080602060008451602086016000885af1806136ca576040513d6000823e3d81fd5b50506000513d915081156136e25780600114156136ef565b6001600160a01b0384163b155b15610ccc5783604051635274afe760e01b8152600401610b1c9190613fb3565b60008061371d8585856139e6565b90506001600160a01b03811661373b5761373684613aed565b61375e565b846001600160a01b0316816001600160a01b03161461375e5761375e8185613b26565b6001600160a01b03851661377a5761377584613bbf565b613492565b846001600160a01b0316816001600160a01b031614613492576134928585613c88565b806001600160a01b03163b6000036137ca5780604051634c9c8ce360e01b8152600401610b1c9190613fb3565b60008051602061494583398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051613816919061487f565b600060405180830381855af49150503d8060008114613851576040519150601f19603f3d011682016040523d82523d6000602084013e613856565b606091505b5091509150612d89858383613ce0565b34156122e55760405163b398979f60e01b815260040160405180910390fd5b600061388f612793565b54600160401b900460ff16919050565b606060006138ac83613d33565b60010190506000816001600160401b038111156138cb576138cb614152565b6040519080825280601f01601f1916602001820160405280156138f5576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846138ff57509392505050565b6001600160a01b03821661395b576000604051633250574960e11b8152600401610b1c9190613fb3565b600061396983836000613485565b90506001600160a01b03811615610bb05760006040516339e3563760e11b8152600401610b1c9190613fb3565b60006001600160e01b031982166380ac58cd60e01b14806139c757506001600160e01b03198216635b5e139f60e01b145b8061093957506301ffc9a760e01b6001600160e01b0319831614610939565b6000806139f1611a9e565b905060006139fe8561320b565b90506001600160a01b03841615613a1a57613a1a818587613e09565b6001600160a01b03811615613a5a57613a37600086600080613234565b6001600160a01b0381166000908152600383016020526040902080546000190190555b6001600160a01b03861615613a8b576001600160a01b03861660009081526003830160205260409020805460010190555b600085815260028301602052604080822080546001600160a01b0319166001600160a01b038a811691821790925591518893918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a495945050505050565b6000613af7611b30565b600281018054600085815260039093016020908152604084208290556001820183559183529120019190915550565b6000613b30611b30565b90506000613b3d84610eae565b60008481526001840160209081526040808320546001600160a01b03891684529186905290912091925090818314613b97576000838152602082815260408083205485845281842081905583526001870190915290208290555b6000948552600190930160209081526040808620869055928552929092528220919091555050565b6000613bc9611b30565b6002810154909150600090613be09060019061489b565b6000848152600384016020526040812054600285018054939450909284908110613c0c57613c0c6145bf565b9060005260206000200154905080846002018381548110613c2f57613c2f6145bf565b600091825260208083209091019290925582815260038601909152604080822084905586825281205560028401805480613c6b57613c6b6148ae565b600190038181906000526020600020016000905590555050505050565b6000613c92611b30565b905060006001613ca185610eae565b613cab919061489b565b6001600160a01b0390941660009081526020838152604080832087845282528083208690559482526001909301909252502055565b606082613cf557613cf082613e5f565b611cdd565b8151158015613d0c57506001600160a01b0384163b155b15613d2c5783604051639996b31560e01b8152600401610b1c9190613fb3565b5080611cdd565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310613d725772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b8310613d9c576904ee2d6d415b85acef8160201b830492506020015b662386f26fc100008310613dba57662386f26fc10000830492506010015b6305f5e1008310613dd2576305f5e100830492506008015b6127108310613de657612710830492506004015b60648310613df8576064830492506002015b600a83106109395760010192915050565b613e14838383613e88565b610bb0576001600160a01b038316613e4257604051637e27328960e01b815260048101829052602401610b1c565b818160405163177e802f60e01b8152600401610b1c9291906145a6565b805115613e6f5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b60006001600160a01b038316158015906134925750826001600160a01b0316846001600160a01b03161480613ec25750613ec28484611969565b806134925750826001600160a01b0316613edb83611afa565b6001600160a01b031614949350505050565b600060208284031215613eff57600080fd5b5035919050565b9182526001600160a01b0316602082015260400190565b6001600160e01b03198116811461132657600080fd5b600060208284031215613f4557600080fd5b8135611cdd81613f1d565b60005b83811015613f6b578181015183820152602001613f53565b50506000910152565b60008151808452613f8c816020860160208601613f50565b601f01601f19169290920160200192915050565b602081526000611cdd6020830184613f74565b6001600160a01b0391909116815260200190565b6001600160a01b038116811461132657600080fd5b60008060408385031215613fef57600080fd5b8235613ffa81613fc7565b946020939093013593505050565b60006020828403121561401a57600080fd5b8135611cdd81613fc7565b6000806040838503121561403857600080fd5b50508035926020909101359150565b60008060006060848603121561405c57600080fd5b833561406781613fc7565b9250602084013561407781613fc7565b929592945050506040919091013590565b803561ffff8116811461409a57600080fd5b919050565b6000806000606084860312156140b457600080fd5b833592506140c460208501614088565b91506140d260408501614088565b90509250925092565b600080604083850312156140ee57600080fd5b82359150602083013561410081613fc7565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b6005811061132657634e487b7160e01b600052602160045260246000fd5b6020810161414c83614121565b91905290565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261417957600080fd5b81356001600160401b038082111561419357614193614152565b604051601f8301601f19908116603f011681019082821181831017156141bb576141bb614152565b816040528381528660208588010111156141d457600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561420757600080fd5b823561421281613fc7565b915060208301356001600160401b0381111561422d57600080fd5b61423985828601614168565b9150509250929050565b6000806000806080858703121561425957600080fd5b843593506020850135925061427060408601614088565b915061427e60608601614088565b905092959194509250565b6000806040838503121561429c57600080fd5b82356001600160401b03808211156142b357600080fd5b6142bf86838701614168565b935060208501359150808211156142d557600080fd5b5061423985828601614168565b801515811461132657600080fd5b6000806040838503121561430357600080fd5b823561430e81613fc7565b91506020830135614100816142e2565b61ffff98891681529688166020880152948716604087015292861660608601529085166080850152841660a0840152831660c083015290911660e08201526101000190565b6000806000806080858703121561437957600080fd5b843561438481613fc7565b9350602085013561439481613fc7565b92506040850135915060608501356001600160401b038111156143b657600080fd5b6143c287828801614168565b91505092959194509250565b61010081016143dc8a614121565b98815260208101979097526001600160a01b0395861660408801529390941660608601529015156080850152151560a084015263ffffffff91821660c08401521660e09091015290565b60008060006060848603121561443b57600080fd5b833561444681613fc7565b9250602084013561445681613fc7565b9150604084013561446681613fc7565b809150509250925092565b600080600080600080600060e0888a03121561448c57600080fd5b873561449781613fc7565b965060208801356001600160401b038111156144b257600080fd5b6144be8a828b01614168565b965050604088013594506060880135935060808801356144dd81613fc7565b925060a0880135915060c08801356144f4816142e2565b8091505092959891949750929550565b6000806040838503121561451757600080fd5b823561452281613fc7565b9150602083013561410081613fc7565b600181811c9082168061454657607f821691505b60208210810361456657634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561457e57600080fd5b8151611cdd816142e2565b8281526040810161459983614121565b8260208301529392505050565b6001600160a01b03929092168252602082015260400190565b634e487b7160e01b600052603260045260246000fd5b6001600160401b0391909116815260200190565b918252602082015260400190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610939576109396145f7565b600060018201614632576146326145f7565b5060010190565b9283526020830191909152604082015260600190565b6001600160a01b0393841681526020810192909252909116604082015260600190565b61ffff92831681529116602082015260400190565b60006020828403121561469957600080fd5b5051919050565b600063ffffffff8083168181036146b9576146b96145f7565b6001019392505050565b9485529215156020850152901515604084015263ffffffff908116606084015216608082015260a00190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061472290830184613f74565b9695505050505050565b60006020828403121561473e57600080fd5b8151611cdd81613f1d565b6000835161475b818460208801613f50565b83519083019061476f818360208801613f50565b01949350505050565b601f821115610bb0576000816000526020600020601f850160051c810160208610156147a15750805b601f850160051c820191505b81811015611525578281556001016147ad565b81516001600160401b038111156147d9576147d9614152565b6147ed816147e78454614532565b84614778565b602080601f831160018114614822576000841561480a5750858301515b600019600386901b1c1916600185901b178555611525565b600085815260208120601f198616915b8281101561485157888601518255948401946001909101908401614832565b508582101561486f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008251614891818460208701613f50565b9190910192915050565b81810381811115610939576109396145f7565b634e487b7160e01b600052603160045260246000fdfe6aafaf6639750382d6dc665bc6a3c73d54e2076a8739a69c860a2314032eb981c7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2c47ab59d5c41a0220b594ece6f7e87863b07f8b33579130f3a59b31d8f7b6eed189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc3ae8648b97d3fd425d26286fc6bb1d50724a93a6a5763921dd2b90405a83b4a4ade2ce8b39037f5140109f53fef47c0491427b8b785ab83d35aa2931295cb790a26469706673582212205ff1ab7ed04f3284c48eefd9c84ebe5b019c0853e20741ae588d1e84fa8d725b64736f6c63430008180033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x24E JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH3 0x4FDD3C EQ PUSH2 0x253 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x28A JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x2BA JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x2DC JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x309 JUMPI DUP1 PUSH4 0xE75C1A8 EQ PUSH2 0x32B JUMPI DUP1 PUSH4 0x12B357B5 EQ PUSH2 0x34E JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x36E JUMPI DUP1 PUSH4 0x1C54F0F7 EQ PUSH2 0x383 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x396 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH2 0x3B6 JUMPI DUP1 PUSH4 0x2A119380 EQ PUSH2 0x3D6 JUMPI DUP1 PUSH4 0x2D3A6329 EQ PUSH2 0x3F6 JUMPI DUP1 PUSH4 0x2EDF5E2C EQ PUSH2 0x416 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH2 0x438 JUMPI DUP1 PUSH4 0x2F745C59 EQ PUSH2 0x458 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH2 0x478 JUMPI DUP1 PUSH4 0x3C15B31C EQ PUSH2 0x498 JUMPI DUP1 PUSH4 0x41431908 EQ PUSH2 0x4C5 JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x4E5 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH2 0x505 JUMPI DUP1 PUSH4 0x4F6CCCE7 EQ PUSH2 0x518 JUMPI DUP1 PUSH4 0x516A82B8 EQ PUSH2 0x538 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH2 0x558 JUMPI DUP1 PUSH4 0x54FD4D50 EQ PUSH2 0x56D JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x59A JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x5BA JUMPI DUP1 PUSH4 0x74AA2048 EQ PUSH2 0x5DA JUMPI DUP1 PUSH4 0x74FE60E9 EQ PUSH2 0x5FA JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH2 0x61A JUMPI DUP1 PUSH4 0x91DA124C EQ PUSH2 0x63A JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x65A JUMPI DUP1 PUSH4 0x96591EDD EQ PUSH2 0x66F JUMPI DUP1 PUSH4 0xA0F07C74 EQ PUSH2 0x682 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH2 0x697 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x6AC JUMPI DUP1 PUSH4 0xA9BC55A2 EQ PUSH2 0x6CC JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH2 0x700 JUMPI DUP1 PUSH4 0xB191D092 EQ PUSH2 0x731 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x751 JUMPI DUP1 PUSH4 0xBB520B47 EQ PUSH2 0x771 JUMPI DUP1 PUSH4 0xBE667188 EQ PUSH2 0x7A5 JUMPI DUP1 PUSH4 0xBFB26C06 EQ PUSH2 0x7C5 JUMPI DUP1 PUSH4 0xC0C53B8B EQ PUSH2 0x7DA JUMPI DUP1 PUSH4 0xC162D7DA EQ PUSH2 0x7FA JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x80F JUMPI DUP1 PUSH4 0xD547741F EQ PUSH2 0x82F JUMPI DUP1 PUSH4 0xDB2B2682 EQ PUSH2 0x84F JUMPI DUP1 PUSH4 0xE5A6725C EQ PUSH2 0x86F JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x88F JUMPI DUP1 PUSH4 0xF72C0D8B EQ PUSH2 0x8AF JUMPI DUP1 PUSH4 0xF7E45F09 EQ PUSH2 0x8D1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x26E CALLDATASIZE PUSH1 0x4 PUSH2 0x3EED JUMP JUMPDEST PUSH2 0x8F1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x281 SWAP3 SWAP2 SWAP1 PUSH2 0x3F06 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x296 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AA PUSH2 0x2A5 CALLDATASIZE PUSH1 0x4 PUSH2 0x3F33 JUMP JUMPDEST PUSH2 0x92E JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x281 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CF PUSH2 0x93F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x281 SWAP2 SWAP1 PUSH2 0x3FA0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2FC PUSH2 0x2F7 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EED JUMP JUMPDEST PUSH2 0x9E0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x281 SWAP2 SWAP1 PUSH2 0x3FB3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x315 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x329 PUSH2 0x324 CALLDATASIZE PUSH1 0x4 PUSH2 0x3FDC JUMP JUMPDEST PUSH2 0x9F5 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x337 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH2 0xA04 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x281 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x35A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AA PUSH2 0x369 CALLDATASIZE PUSH1 0x4 PUSH2 0x4008 JUMP JUMPDEST PUSH2 0xA19 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x37A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH2 0xA8F JUMP JUMPDEST PUSH2 0x329 PUSH2 0x391 CALLDATASIZE PUSH1 0x4 PUSH2 0x4025 JUMP JUMPDEST PUSH2 0xA9A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x329 PUSH2 0x3B1 CALLDATASIZE PUSH1 0x4 PUSH2 0x4047 JUMP JUMPDEST PUSH2 0xB9C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH2 0x3D1 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EED JUMP JUMPDEST PUSH2 0xBB5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x329 PUSH2 0x3F1 CALLDATASIZE PUSH1 0x4 PUSH2 0x409F JUMP JUMPDEST PUSH2 0xBD5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x402 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AA PUSH2 0x411 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EED JUMP JUMPDEST PUSH2 0xC8A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x422 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4965 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x444 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x329 PUSH2 0x453 CALLDATASIZE PUSH1 0x4 PUSH2 0x40DB JUMP JUMPDEST PUSH2 0xCB0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x464 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH2 0x473 CALLDATASIZE PUSH1 0x4 PUSH2 0x3FDC JUMP JUMPDEST PUSH2 0xCD2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x484 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x329 PUSH2 0x493 CALLDATASIZE PUSH1 0x4 PUSH2 0x40DB JUMP JUMPDEST PUSH2 0xD34 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4B8 PUSH2 0x4B3 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EED JUMP JUMPDEST PUSH2 0xD67 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x281 SWAP2 SWAP1 PUSH2 0x413F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x329 PUSH2 0x4E0 CALLDATASIZE PUSH1 0x4 PUSH2 0x4008 JUMP JUMPDEST PUSH2 0xD8A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x329 PUSH2 0x500 CALLDATASIZE PUSH1 0x4 PUSH2 0x4047 JUMP JUMPDEST PUSH2 0xDC2 JUMP JUMPDEST PUSH2 0x329 PUSH2 0x513 CALLDATASIZE PUSH1 0x4 PUSH2 0x41F4 JUMP JUMPDEST PUSH2 0xDDD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x524 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH2 0x533 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EED JUMP JUMPDEST PUSH2 0xDF8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x544 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x329 PUSH2 0x553 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EED JUMP JUMPDEST PUSH2 0xE59 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x564 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH2 0xE86 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x579 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD PUSH2 0x281 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5A6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2FC PUSH2 0x5B5 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EED JUMP JUMPDEST PUSH2 0xEA3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH2 0x5D5 CALLDATASIZE PUSH1 0x4 PUSH2 0x4008 JUMP JUMPDEST PUSH2 0xEAE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x329 PUSH2 0x5F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x4243 JUMP JUMPDEST PUSH2 0xF06 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x606 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x329 PUSH2 0x615 CALLDATASIZE PUSH1 0x4 PUSH2 0x409F JUMP JUMPDEST PUSH2 0xFB3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x626 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AA PUSH2 0x635 CALLDATASIZE PUSH1 0x4 PUSH2 0x40DB JUMP JUMPDEST PUSH2 0x105F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x646 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x329 PUSH2 0x655 CALLDATASIZE PUSH1 0x4 PUSH2 0x4289 JUMP JUMPDEST PUSH2 0x1095 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x666 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CF PUSH2 0x1152 JUMP JUMPDEST PUSH2 0x329 PUSH2 0x67D CALLDATASIZE PUSH1 0x4 PUSH2 0x3EED JUMP JUMPDEST PUSH2 0x116F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x68E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2FC PUSH1 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH1 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x329 PUSH2 0x6C7 CALLDATASIZE PUSH1 0x4 PUSH2 0x42F0 JUMP JUMPDEST PUSH2 0x1329 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6EC PUSH2 0x6E7 CALLDATASIZE PUSH1 0x4 PUSH2 0x3EED JUMP JUMPDEST PUSH2 0x1334 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x281 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x431E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x70C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CF PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x352E302E3 PUSH1 0xDC SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x73D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2FC PUSH2 0x74C CALLDATASIZE PUSH1 0x4 PUSH2 0x3EED JUMP JUMPDEST PUSH2 0x13BA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x75D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x329 PUSH2 0x76C CALLDATASIZE PUSH1 0x4 PUSH2 0x4363 JUMP JUMPDEST PUSH2 0x13E6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x77D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x791 PUSH2 0x78C CALLDATASIZE PUSH1 0x4 PUSH2 0x3EED JUMP JUMPDEST PUSH2 0x13FE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x281 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x43CE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x329 PUSH2 0x7C0 CALLDATASIZE PUSH1 0x4 PUSH2 0x4025 JUMP JUMPDEST PUSH2 0x147A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2FC PUSH1 0x1 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x329 PUSH2 0x7F5 CALLDATASIZE PUSH1 0x4 PUSH2 0x4426 JUMP JUMPDEST PUSH2 0x152D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x806 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2FC PUSH2 0x16CC JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x81B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CF PUSH2 0x82A CALLDATASIZE PUSH1 0x4 PUSH2 0x3EED JUMP JUMPDEST PUSH2 0x16E7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x83B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x329 PUSH2 0x84A CALLDATASIZE PUSH1 0x4 PUSH2 0x40DB JUMP JUMPDEST PUSH2 0x16F2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x85B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x329 PUSH2 0x86A CALLDATASIZE PUSH1 0x4 PUSH2 0x4471 JUMP JUMPDEST PUSH2 0x170E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x87B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x329 PUSH2 0x88A CALLDATASIZE PUSH1 0x4 PUSH2 0x3EED JUMP JUMPDEST PUSH2 0x1861 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x89B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2AA PUSH2 0x8AA CALLDATASIZE PUSH1 0x4 PUSH2 0x4504 JUMP JUMPDEST PUSH2 0x1969 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x340 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4925 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x329 PUSH2 0x8EC CALLDATASIZE PUSH1 0x4 PUSH2 0x4243 JUMP JUMPDEST PUSH2 0x19A8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x8FE PUSH2 0x1A55 JUMP JUMPDEST PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x3 SWAP1 DUP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP5 KECCAK256 SWAP4 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP4 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x939 DUP3 PUSH2 0x1A79 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x94B PUSH2 0x1A9E JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x0 ADD DUP1 SLOAD PUSH2 0x95C SWAP1 PUSH2 0x4532 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x988 SWAP1 PUSH2 0x4532 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x9D5 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x9AA JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x9D5 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x9B8 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9EB DUP3 PUSH2 0x1AC2 JUMP JUMPDEST POP PUSH2 0x939 DUP3 PUSH2 0x1AFA JUMP JUMPDEST PUSH2 0xA00 DUP3 DUP3 CALLER PUSH2 0x1B23 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA0F PUSH2 0x1A55 JUMP JUMPDEST PUSH1 0x2 ADD SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xA23 PUSH2 0x16CC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x12B357B5 DUP4 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xA4E SWAP2 SWAP1 PUSH2 0x3FB3 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA6B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x939 SWAP2 SWAP1 PUSH2 0x456C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xA0F PUSH2 0x1B30 JUMP JUMPDEST CALLER PUSH2 0xAA4 DUP2 PUSH2 0x1B54 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xAAF DUP5 PUSH2 0x1AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xABB PUSH2 0x1A55 JUMP JUMPDEST SWAP1 POP PUSH1 0x3 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x4 DUP1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 DUP2 GT ISZERO PUSH2 0xAE5 JUMPI PUSH2 0xAE5 PUSH2 0x410B JUMP JUMPDEST EQ PUSH2 0xB25 JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x4 DUP1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD SWAP2 MLOAD PUSH4 0xE4E3B53B PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xB1C SWAP3 DUP9 SWAP3 PUSH1 0xFF SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x4589 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x3 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH2 0xB4E DUP3 DUP9 DUP9 PUSH2 0x1B7C JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x3 DUP6 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x4 SWAP1 DUP2 ADD SLOAD DUP2 DUP10 ADD SWAP1 SWAP4 MSTORE SWAP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB92 DUP2 DUP4 DUP8 PUSH2 0x1CE4 JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0xBA5 DUP2 PUSH2 0x1D92 JUMP JUMPDEST PUSH2 0xBB0 DUP4 DUP4 DUP4 PUSH2 0x1F46 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xBC0 PUSH2 0x1FB7 JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH2 0xBDF DUP2 PUSH2 0x1B54 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBEA DUP6 PUSH2 0x1AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xBF6 PUSH2 0x1A55 JUMP JUMPDEST SWAP1 POP PUSH1 0x3 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x4 DUP1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 DUP2 GT ISZERO PUSH2 0xC20 JUMPI PUSH2 0xC20 PUSH2 0x410B JUMP JUMPDEST EQ PUSH2 0xC57 JUMPI PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x4 DUP1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD SWAP2 MLOAD PUSH4 0xE4E3B53B PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xB1C SWAP3 DUP10 SWAP3 PUSH1 0xFF SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x4589 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x3 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xC81 DUP4 DUP3 DUP10 DUP10 DUP10 PUSH2 0x1FDB JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xC95 PUSH2 0x1A55 JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x3 ADD PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x6 ADD SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH2 0xCB9 DUP3 PUSH2 0xBB5 JUMP JUMPDEST PUSH2 0xCC2 DUP2 PUSH2 0x211D JUMP JUMPDEST PUSH2 0xCCC DUP4 DUP4 PUSH2 0x2127 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xCDD PUSH2 0x1B30 JUMP JUMPDEST SWAP1 POP PUSH2 0xCE8 DUP5 PUSH2 0xEAE JUMP JUMPDEST DUP4 LT PUSH2 0xD0B JUMPI DUP4 DUP4 PUSH1 0x40 MLOAD PUSH4 0x295F44F7 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP3 SWAP2 SWAP1 PUSH2 0x45A6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 SWAP2 DUP3 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP6 DUP4 MSTORE SWAP1 SWAP3 MSTORE KECCAK256 SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH2 0xD5D JUMPI PUSH1 0x40 MLOAD PUSH4 0x334BD919 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xBB0 DUP3 DUP3 PUSH2 0x21C8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xD72 PUSH2 0x1A55 JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x4 ADD PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD95 DUP2 PUSH2 0x211D JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD9F PUSH2 0x1A55 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP3 SSTORE POP POP JUMP JUMPDEST PUSH2 0xBB0 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x13E6 JUMP JUMPDEST PUSH2 0xDE5 PUSH2 0x2240 JUMP JUMPDEST PUSH2 0xDEE DUP3 PUSH2 0x22E7 JUMP JUMPDEST PUSH2 0xA00 DUP3 DUP3 PUSH2 0x22FF JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xE03 PUSH2 0x1B30 JUMP JUMPDEST SWAP1 POP PUSH2 0xE0D PUSH2 0xA8F JUMP JUMPDEST DUP4 LT PUSH2 0xE31 JUMPI PUSH1 0x0 DUP4 PUSH1 0x40 MLOAD PUSH4 0x295F44F7 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP3 SWAP2 SWAP1 PUSH2 0x45A6 JUMP JUMPDEST DUP1 PUSH1 0x2 ADD DUP4 DUP2 SLOAD DUP2 LT PUSH2 0xE46 JUMPI PUSH2 0xE46 PUSH2 0x45BF JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4965 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0xE71 DUP2 PUSH2 0x211D JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE7B PUSH2 0x1A55 JUMP JUMPDEST PUSH1 0x2 ADD SWAP3 SWAP1 SWAP3 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE90 PUSH2 0x23B3 JUMP JUMPDEST POP PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4945 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x939 DUP3 PUSH2 0x1AC2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xEB9 PUSH2 0x1A9E JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0xEE5 JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0x22718AD9 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP2 SWAP1 PUSH2 0x3FB3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 SWAP1 SWAP3 ADD PUSH1 0x20 MSTORE POP PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST CALLER PUSH2 0xF10 DUP2 PUSH2 0x1B54 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF1B DUP7 PUSH2 0x1AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xF27 PUSH2 0x1A55 JUMP JUMPDEST SWAP1 POP PUSH1 0x3 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x4 DUP1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 DUP2 GT ISZERO PUSH2 0xF51 JUMPI PUSH2 0xF51 PUSH2 0x410B JUMP JUMPDEST EQ PUSH2 0xF88 JUMPI PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x4 DUP1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD SWAP2 MLOAD PUSH4 0xE4E3B53B PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xB1C SWAP3 DUP11 SWAP3 PUSH1 0xFF SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x4589 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x3 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB92 DUP4 DUP3 DUP11 DUP11 DUP11 DUP11 PUSH2 0x23FC JUMP JUMPDEST CALLER PUSH2 0xFBD DUP2 PUSH2 0x1B54 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xFC8 DUP6 PUSH2 0x1AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xFD4 PUSH2 0x1A55 JUMP JUMPDEST SWAP1 POP PUSH1 0x3 PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x4 DUP1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 DUP2 GT ISZERO PUSH2 0xFFE JUMPI PUSH2 0xFFE PUSH2 0x410B JUMP JUMPDEST EQ PUSH2 0x1035 JUMPI PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x4 DUP1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD SWAP2 MLOAD PUSH4 0xE4E3B53B PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xB1C SWAP3 DUP10 SWAP3 PUSH1 0xFF SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x4589 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x3 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xC81 DUP4 DUP3 DUP10 DUP10 DUP10 PUSH2 0x2635 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x106A PUSH2 0x1FB7 JUMP JUMPDEST PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP7 MSTORE SWAP4 SWAP1 MSTORE POP POP SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 PUSH2 0x10A1 PUSH2 0x2793 JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND DUP1 PUSH2 0x10C8 JUMPI POP DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP5 AND SWAP2 AND LT ISZERO JUMPDEST ISZERO PUSH2 0x10E6 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x48 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP4 AND OR PUSH1 0x1 PUSH1 0x40 SHL OR DUP2 SSTORE PUSH1 0x0 PUSH2 0x1110 DUP2 PUSH2 0x211D JUMP JUMPDEST PUSH2 0x111A DUP6 DUP6 PUSH2 0x27B7 JUMP JUMPDEST POP DUP1 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND DUP2 SSTORE PUSH1 0x40 MLOAD PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x48E5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 PUSH2 0x1144 SWAP1 DUP5 SWAP1 PUSH2 0x45D5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x115E PUSH2 0x1A9E JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 ADD DUP1 SLOAD PUSH2 0x95C SWAP1 PUSH2 0x4532 JUMP JUMPDEST PUSH2 0x1177 PUSH2 0x27C9 JUMP JUMPDEST CALLER PUSH2 0x1181 DUP2 PUSH2 0x1B54 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x118B PUSH2 0x1A55 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x3 DUP1 DUP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 DUP4 MLOAD PUSH1 0xE0 DUP2 ADD DUP6 MSTORE DUP2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP1 DUP4 MSTORE PUSH1 0x1 DUP5 ADD SLOAD DUP3 AND SWAP5 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0x2 DUP4 ADD SLOAD SWAP6 DUP3 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP3 DUP2 ADD SLOAD PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x4 DUP2 ADD SLOAD SWAP1 SWAP4 AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0x5 DUP4 ADD SLOAD PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0x6 SWAP1 SWAP3 ADD SLOAD PUSH1 0xFF AND ISZERO ISZERO PUSH1 0xC0 DUP3 ADD MSTORE SWAP2 SWAP3 POP CALLER EQ PUSH2 0x1238 JUMPI DUP1 MLOAD PUSH1 0x40 MLOAD PUSH4 0x2663A9C5 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND PUSH1 0x4 DUP3 ADD MSTORE CALLER PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH2 0xB1C JUMP JUMPDEST DUP1 PUSH1 0x40 ADD MLOAD TIMESTAMP GT ISZERO PUSH2 0x1265 JUMPI DUP4 DUP2 PUSH1 0x40 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x293D73B7 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP3 SWAP2 SWAP1 PUSH2 0x45E9 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1270 DUP6 PUSH2 0xEA3 JUMP JUMPDEST SWAP1 POP DUP2 PUSH1 0x20 ADD MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x12AF JUMPI PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 MLOAD PUSH4 0x103D1459 PUSH1 0xE3 SHL DUP2 MSTORE PUSH2 0xB1C SWAP2 DUP8 SWAP2 PUSH1 0x4 ADD PUSH2 0x3F06 JUMP JUMPDEST PUSH2 0x12BE DUP3 PUSH1 0x20 ADD MLOAD CALLER DUP8 PUSH2 0x27FF JUMP JUMPDEST PUSH2 0x12D5 DUP3 PUSH1 0x80 ADD MLOAD DUP4 PUSH1 0x60 ADD MLOAD DUP5 PUSH1 0x20 ADD MLOAD PUSH2 0x1CE4 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x3 OR SWAP1 SSTORE MLOAD CALLER SWAP2 DUP8 SWAP2 PUSH32 0xA751FB02C318279A22135A408663AE08EA45EAFA950A4351C14AE543CBB95040 SWAP2 SWAP1 LOG3 POP POP POP POP PUSH2 0x1326 PUSH2 0x289B JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0xA00 CALLER DUP4 DUP4 PUSH2 0x28AC JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x134A PUSH2 0x2951 JUMP JUMPDEST PUSH1 0x0 SWAP11 DUP12 MSTORE PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 SWAP8 KECCAK256 PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0x3 SWAP1 SWAP2 ADD SLOAD PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xC8 SHL DUP4 DIV DUP2 AND SWAP11 PUSH1 0x1 PUSH1 0xD8 SHL DUP5 DIV DUP3 AND SWAP11 POP PUSH1 0x1 PUSH1 0xE8 SHL SWAP1 SWAP4 DIV DUP2 AND SWAP9 POP DUP1 DUP3 AND SWAP8 POP PUSH3 0x10000 DUP3 DIV DUP2 AND SWAP7 POP PUSH1 0x1 PUSH1 0x20 SHL DUP3 DIV DUP2 AND SWAP6 POP PUSH1 0x1 PUSH1 0x30 SHL DUP3 DIV DUP2 AND SWAP5 POP PUSH1 0x1 PUSH1 0x40 SHL SWAP1 SWAP2 DIV AND SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x13C5 PUSH2 0x1A55 JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x3 ADD PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0x13F1 DUP5 DUP5 DUP5 PUSH2 0xB9C JUMP JUMPDEST PUSH2 0xCCC CALLER DUP6 DUP6 DUP6 DUP6 PUSH2 0x2975 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1414 PUSH2 0x2951 JUMP JUMPDEST PUSH1 0x0 SWAP11 DUP12 MSTORE PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 SWAP8 KECCAK256 PUSH1 0x2 DUP2 ADD SLOAD DUP2 SLOAD PUSH1 0x1 SWAP1 SWAP3 ADD SLOAD PUSH1 0xFF PUSH1 0x1 PUSH1 0xC0 SHL DUP1 DUP5 DIV DUP3 AND SWAP13 SWAP5 SWAP12 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP12 POP DUP5 AND SWAP10 POP DUP3 DIV DUP2 AND SWAP8 POP PUSH1 0x1 PUSH1 0xC8 SHL DUP3 DIV AND SWAP6 POP PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0xA0 SHL SWAP2 DUP3 SWAP1 DIV DUP2 AND SWAP6 POP SWAP2 DIV AND SWAP2 POP JUMP JUMPDEST CALLER PUSH2 0x1484 DUP2 PUSH2 0x1B54 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x148F DUP5 PUSH2 0x1AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x149B PUSH2 0x1A55 JUMP JUMPDEST SWAP1 POP PUSH1 0x3 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x4 DUP1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 DUP2 GT ISZERO PUSH2 0x14C5 JUMPI PUSH2 0x14C5 PUSH2 0x410B JUMP JUMPDEST EQ PUSH2 0x14FC JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x4 DUP1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD SWAP2 MLOAD PUSH4 0xE4E3B53B PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xB1C SWAP3 DUP9 SWAP3 PUSH1 0xFF SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x4589 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x3 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1525 DUP4 DUP3 DUP9 DUP9 PUSH2 0x2A8C JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1537 PUSH2 0x2793 JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV AND ISZERO SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x0 DUP2 ISZERO DUP1 ISZERO PUSH2 0x155E JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH2 0x157A JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH2 0x1588 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x15A6 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT AND PUSH1 0x1 OR DUP6 SSTORE DUP4 ISZERO PUSH2 0x15CF JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR DUP6 SSTORE JUMPDEST PUSH2 0x1619 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xC DUP2 MSTORE PUSH1 0x20 ADD PUSH12 0x2137B7B5B4B733AA37B5B2B7 PUSH1 0xA1 SHL DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH4 0x5452495 PUSH1 0xE4 SHL DUP2 MSTORE POP PUSH2 0x27B7 JUMP JUMPDEST PUSH2 0x1621 PUSH2 0x2C6A JUMP JUMPDEST PUSH2 0x1629 PUSH2 0x2C6A JUMP JUMPDEST PUSH2 0x1631 PUSH2 0x2C6A JUMP JUMPDEST PUSH2 0x1639 PUSH2 0x2C6A JUMP JUMPDEST PUSH2 0x1644 PUSH1 0x0 DUP9 PUSH2 0x2127 JUMP JUMPDEST POP PUSH2 0x165D PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4925 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP8 PUSH2 0x2127 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x1668 PUSH2 0x1A55 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND OR DUP2 SSTORE PUSH1 0x3C PUSH1 0x2 SWAP1 SWAP2 ADD SSTORE POP DUP4 ISZERO PUSH2 0xB92 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND DUP6 SSTORE PUSH1 0x40 MLOAD PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x48E5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 PUSH2 0x16BA SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x45D5 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x16D7 PUSH2 0x1A55 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x939 DUP3 PUSH2 0x2C72 JUMP JUMPDEST PUSH2 0x16FB DUP3 PUSH2 0xBB5 JUMP JUMPDEST PUSH2 0x1704 DUP2 PUSH2 0x211D JUMP JUMPDEST PUSH2 0xCCC DUP4 DUP4 PUSH2 0x21C8 JUMP JUMPDEST CALLER PUSH2 0x1718 DUP2 PUSH2 0x1B54 JUMP JUMPDEST PUSH2 0x1721 DUP9 PUSH2 0x1B54 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x172B PUSH2 0x1A55 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD SWAP1 SWAP2 POP PUSH2 0x173D DUP2 TIMESTAMP PUSH2 0x460D JUMP JUMPDEST DUP9 GT PUSH2 0x1760 JUMPI DUP8 DUP2 PUSH1 0x40 MLOAD PUSH4 0x999F7D7 PUSH1 0xE4 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP3 SWAP2 SWAP1 PUSH2 0x45E9 JUMP JUMPDEST PUSH1 0x0 DUP6 GT DUP1 ISZERO PUSH2 0x177A JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x1 EQ ISZERO JUMPDEST ISZERO PUSH2 0x179B JUMPI PUSH1 0x40 MLOAD PUSH4 0x8FE757E7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xB1C JUMP JUMPDEST PUSH1 0x1 DUP3 ADD DUP1 SLOAD PUSH1 0x0 SWAP2 DUP3 PUSH2 0x17AE DUP4 PUSH2 0x4620 JUMP JUMPDEST SWAP2 SWAP1 POP SSTORE SWAP1 POP PUSH2 0x17BE CALLER DUP3 PUSH2 0x2D92 JUMP JUMPDEST PUSH2 0x17C8 DUP2 DUP12 PUSH2 0x2DAC JUMP JUMPDEST PUSH2 0x17D8 DUP2 DUP13 CALLER DUP13 DUP13 DUP13 DUP13 DUP13 PUSH2 0x2E0A JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP2 MLOAD DUP12 DUP2 MSTORE SWAP1 DUP2 ADD DUP11 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 DUP2 AND DUP3 DUP5 ADD MSTORE PUSH1 0x60 DUP3 ADD DUP10 SWAP1 MSTORE DUP8 ISZERO ISZERO PUSH1 0x80 DUP4 ADD MSTORE SWAP2 MLOAD CALLER SWAP3 DUP15 AND SWAP2 DUP5 SWAP2 PUSH32 0x1424AF4F4CB40D8A1A2D00B2324CB122BA73EAC426F98B62C33FF31CA045F067 SWAP2 PUSH1 0xA0 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG4 POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x186B PUSH2 0x1A55 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x3 DUP3 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x4 DUP6 ADD SWAP1 SWAP3 MSTORE SWAP1 SWAP2 KECCAK256 SLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0xFF AND PUSH1 0x2 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x18A4 JUMPI PUSH2 0x18A4 PUSH2 0x410B JUMP JUMPDEST EQ DUP1 PUSH2 0x18C1 JUMPI POP PUSH1 0x3 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x18BF JUMPI PUSH2 0x18BF PUSH2 0x410B JUMP JUMPDEST EQ JUMPDEST DUP1 PUSH2 0x18DD JUMPI POP PUSH1 0x4 DUP2 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x18DB JUMPI PUSH2 0x18DB PUSH2 0x410B JUMP JUMPDEST EQ JUMPDEST ISZERO PUSH2 0x18FF JUMPI DUP4 DUP2 PUSH1 0x40 MLOAD PUSH4 0xE4E3B53B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP3 SWAP2 SWAP1 PUSH2 0x4589 JUMP JUMPDEST DUP2 PUSH1 0x2 ADD SLOAD TIMESTAMP GT ISZERO PUSH2 0x1940 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x4 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x2 OR SWAP1 SSTORE MLOAD DUP6 SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4905 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 LOG2 PUSH2 0xCCC JUMP JUMPDEST DUP2 SLOAD PUSH1 0x40 MLOAD PUSH4 0xD4CDE2AF PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xB1C SWAP2 DUP7 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH1 0x4 ADD PUSH2 0x3F06 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1974 PUSH2 0x1A9E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP6 SWAP1 SWAP7 AND DUP3 MSTORE SWAP4 SWAP1 SWAP4 MSTORE POP POP KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST CALLER PUSH2 0x19B2 DUP2 PUSH2 0x1B54 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x19BD DUP7 PUSH2 0x1AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x19C9 PUSH2 0x1A55 JUMP JUMPDEST SWAP1 POP PUSH1 0x3 PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x4 DUP1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 DUP2 GT ISZERO PUSH2 0x19F3 JUMPI PUSH2 0x19F3 PUSH2 0x410B JUMP JUMPDEST EQ PUSH2 0x1A2A JUMPI PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x4 DUP1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SLOAD SWAP2 MLOAD PUSH4 0xE4E3B53B PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xB1C SWAP3 DUP11 SWAP3 PUSH1 0xFF SWAP1 SWAP2 AND SWAP2 ADD PUSH2 0x4589 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x3 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB92 DUP4 DUP3 DUP11 DUP11 DUP11 DUP11 PUSH2 0x2EDC JUMP JUMPDEST PUSH32 0x9DB9D405BF15683CE835607B1F0B423DC1484D44BB9D5AF64A483FA4AFD82900 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x7965DB0B PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x939 JUMPI POP PUSH2 0x939 DUP3 PUSH2 0x31E6 JUMP JUMPDEST PUSH32 0x80BB2B638CC20BC4D0A60D66940F3AB4A00C1D7B313497CA82FB0B4AB0079300 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1ACE DUP4 PUSH2 0x320B JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x939 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7E273289 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xB1C JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x1B05 PUSH2 0x1A9E JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x4 ADD PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH2 0xBB0 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x3234 JUMP JUMPDEST PUSH32 0x645E039705490088DAAD89BAE25049A34F4A9072D398537B1AB2425F24CBED00 SWAP1 JUMP JUMPDEST PUSH2 0x1B5D DUP2 PUSH2 0xA19 JUMP JUMPDEST PUSH2 0x1326 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x80145753 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP2 SWAP1 PUSH2 0x3FB3 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND EQ PUSH2 0x1BAA JUMPI PUSH1 0x40 MLOAD PUSH4 0x6C83FB1B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xB1C JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1BB4 PUSH2 0x2951 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 POP PUSH1 0x1 PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x1BE7 JUMPI PUSH2 0x1BE7 PUSH2 0x410B JUMP JUMPDEST EQ PUSH2 0x1C1A JUMPI DUP4 DUP2 PUSH1 0x2 ADD PUSH1 0x18 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x40 MLOAD PUSH4 0xD5D8EACB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP3 SWAP2 SWAP1 PUSH2 0x4589 JUMP JUMPDEST DUP1 SLOAD DUP4 EQ PUSH2 0x1C41 JUMPI DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xCC452837 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xB1C SWAP2 DUP7 SWAP2 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0x4639 JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1C70 JUMPI PUSH1 0x40 MLOAD PUSH4 0xC84052F9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xB1C JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0xC8 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x1C99 JUMPI PUSH1 0x1 DUP2 ADD DUP1 SLOAD PUSH1 0xFF PUSH1 0xC8 SHL NOT AND PUSH1 0x1 PUSH1 0xC8 SHL OR SWAP1 SSTORE JUMPDEST PUSH1 0x2 DUP2 ADD DUP1 SLOAD PUSH1 0xFF PUSH1 0xC0 SHL NOT AND PUSH1 0x1 PUSH1 0xC2 SHL OR SWAP1 SSTORE PUSH1 0x40 MLOAD DUP5 SWAP1 PUSH32 0x17C3690813E5FF9135B87FD91848109978B23DB8E471498D18886560DA7F2867 SWAP1 PUSH1 0x0 SWAP1 LOG2 SLOAD SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x1D29 JUMPI DUP2 CALLVALUE EQ PUSH2 0x1D16 JUMPI CALLVALUE DUP3 PUSH1 0x40 MLOAD PUSH4 0x1456115 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP3 SWAP2 SWAP1 PUSH2 0x45E9 JUMP JUMPDEST PUSH2 0xBB0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND CALLVALUE PUSH2 0x333E JUMP JUMPDEST PUSH1 0x0 NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ADD PUSH2 0x1D5C JUMPI CALLVALUE ISZERO PUSH2 0xBB0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x47D67299 PUSH1 0xE0 SHL DUP2 MSTORE CALLVALUE PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xB1C JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x1D7D JUMPI PUSH1 0x40 MLOAD PUSH4 0x47D67299 PUSH1 0xE0 SHL DUP2 MSTORE CALLVALUE PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD PUSH2 0xB1C JUMP JUMPDEST PUSH2 0xBB0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER DUP4 DUP6 PUSH2 0x33D7 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D9C PUSH2 0x1A55 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x4 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP PUSH1 0xFF SWAP1 SWAP2 AND SWAP1 DUP1 PUSH2 0x1DC0 DUP6 PUSH2 0x3431 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP PUSH1 0x1 DUP3 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x1DD9 JUMPI PUSH2 0x1DD9 PUSH2 0x410B JUMP JUMPDEST SUB PUSH2 0x1E3A JUMPI PUSH1 0x0 PUSH2 0x1DE9 DUP7 PUSH2 0x1AC2 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x3 DUP8 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 SWAP2 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND SWAP1 DUP4 AND CALLER EQ PUSH2 0x1E28 JUMPI PUSH2 0x1E23 DUP3 DUP3 DUP10 PUSH1 0x63 PUSH1 0x1 PUSH2 0x2635 JUMP JUMPDEST PUSH2 0x1E37 JUMP JUMPDEST PUSH2 0x1E37 DUP3 DUP3 DUP10 PUSH1 0x63 PUSH1 0x1 PUSH2 0x1FDB JUMP JUMPDEST POP POP JUMPDEST PUSH1 0x3 DUP4 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x1E4E JUMPI PUSH2 0x1E4E PUSH2 0x410B JUMP JUMPDEST EQ DUP1 PUSH2 0x1E6B JUMPI POP PUSH1 0x2 DUP4 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x1E69 JUMPI PUSH2 0x1E69 PUSH2 0x410B JUMP JUMPDEST EQ JUMPDEST DUP1 PUSH2 0x1E87 JUMPI POP PUSH1 0x0 DUP4 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x1E85 JUMPI PUSH2 0x1E85 PUSH2 0x410B JUMP JUMPDEST EQ JUMPDEST ISZERO PUSH2 0x1E93 JUMPI POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 DUP4 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x1EA7 JUMPI PUSH2 0x1EA7 PUSH2 0x410B JUMP JUMPDEST SUB PUSH2 0x1EC9 JUMPI DUP5 DUP4 PUSH1 0x40 MLOAD PUSH4 0xE4E3B53B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP3 SWAP2 SWAP1 PUSH2 0x4589 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x3 DUP6 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 DUP2 ADD SLOAD TIMESTAMP GT ISZERO PUSH2 0x1F1D JUMPI PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x4 DUP7 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x2 OR SWAP1 SSTORE MLOAD DUP8 SWAP2 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4905 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP2 LOG2 POP POP POP POP POP POP JUMP JUMPDEST DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xD4CDE2AF PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xB1C SWAP2 DUP9 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH1 0x4 ADD PUSH2 0x3F06 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x1F70 JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP2 SWAP1 PUSH2 0x3FB3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1F7D DUP4 DUP4 CALLER PUSH2 0x3485 JUMP JUMPDEST SWAP1 POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xCCC JUMPI DUP4 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH4 0x64283D7B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x464F JUMP JUMPDEST PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 SWAP1 JUMP JUMPDEST DUP5 DUP5 PUSH2 0x1FE7 DUP3 DUP3 PUSH2 0x349A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1FF1 PUSH2 0x2951 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 POP PUSH1 0x1 PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x2024 JUMPI PUSH2 0x2024 PUSH2 0x410B JUMP JUMPDEST EQ PUSH2 0x2057 JUMPI DUP6 DUP2 PUSH1 0x2 ADD PUSH1 0x18 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x40 MLOAD PUSH4 0xD5D8EACB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP3 SWAP2 SWAP1 PUSH2 0x4589 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER EQ PUSH2 0x2087 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1186FDBD PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xB1C JUMP JUMPDEST PUSH1 0x3 DUP1 DUP3 ADD DUP1 SLOAD PUSH2 0xFFFF DUP8 DUP2 AND PUSH1 0x1 PUSH1 0x40 SHL MUL PUSH2 0xFFFF PUSH1 0x40 SHL NOT SWAP2 DUP11 AND PUSH1 0x1 PUSH1 0x30 SHL MUL SWAP2 SWAP1 SWAP2 AND PUSH4 0xFFFFFFFF PUSH1 0x30 SHL NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR OR SWAP1 SSTORE PUSH1 0x2 DUP3 ADD DUP1 SLOAD PUSH1 0xFF PUSH1 0xC0 SHL NOT AND PUSH1 0x1 PUSH1 0xC0 SHL DUP4 MUL OR SWAP1 SSTORE POP DUP6 PUSH32 0x48E256CE3DA490E3BBBA80F056BB54EC3D7264F8AD7D152B77BF8C2ECA3DB5A5 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x210B SWAP3 SWAP2 SWAP1 PUSH2 0x4672 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x1326 DUP2 CALLER PUSH2 0x34DA JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x2132 PUSH2 0x1FB7 JUMP JUMPDEST SWAP1 POP PUSH2 0x213E DUP5 DUP5 PUSH2 0x105F JUMP JUMPDEST PUSH2 0x21BE JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH2 0x2174 CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0x939 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x939 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x21D3 PUSH2 0x1FB7 JUMP JUMPDEST SWAP1 POP PUSH2 0x21DF DUP5 DUP5 PUSH2 0x105F JUMP JUMPDEST ISZERO PUSH2 0x21BE JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP8 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH2 0x939 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH2 0x22C7 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x22BB PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4945 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x22E5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4925 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH2 0xA00 DUP2 PUSH2 0x211D JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x2359 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x2356 SWAP2 DUP2 ADD SWAP1 PUSH2 0x4687 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x2378 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP2 SWAP1 PUSH2 0x3FB3 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4945 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 EQ PUSH2 0x23A9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xB1C JUMP JUMPDEST PUSH2 0xBB0 DUP4 DUP4 PUSH2 0x3505 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH2 0x22E5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP6 DUP6 PUSH2 0x2408 DUP3 DUP3 PUSH2 0x349A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2412 PUSH2 0x2951 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 POP PUSH1 0x1 PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x2445 JUMPI PUSH2 0x2445 PUSH2 0x410B JUMP JUMPDEST EQ PUSH2 0x2478 JUMPI DUP7 DUP2 PUSH1 0x2 ADD PUSH1 0x18 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x40 MLOAD PUSH4 0xD5D8EACB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP3 SWAP2 SWAP1 PUSH2 0x4589 JUMP JUMPDEST DUP6 DUP2 SSTORE PUSH1 0x2 DUP2 ADD DUP1 SLOAD CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 SWAP2 AND DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x1 DUP3 ADD DUP1 SLOAD PUSH2 0xFFFF PUSH1 0xC0 SHL NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 DUP2 AND DUP5 EQ PUSH1 0x1 PUSH1 0xC0 SHL MUL PUSH1 0xFF PUSH1 0xC8 SHL NOT AND SWAP2 SWAP1 SWAP2 OR SWAP1 DUP12 AND SWAP1 SWAP3 EQ PUSH1 0x1 PUSH1 0xC8 SHL MUL SWAP2 SWAP1 SWAP2 OR DUP1 DUP3 SSTORE PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH6 0xFFFFFFFF0000 NOT AND PUSH3 0x10000 PUSH2 0xFFFF DUP11 DUP2 AND SWAP2 SWAP1 SWAP2 MUL PUSH2 0xFFFF PUSH1 0x20 SHL NOT AND SWAP2 SWAP1 SWAP2 OR PUSH1 0x1 PUSH1 0x20 SHL SWAP2 DUP10 AND SWAP2 SWAP1 SWAP2 MUL OR SWAP1 SSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP1 PUSH1 0x14 PUSH2 0x2523 DUP4 PUSH2 0x46A0 JUMP JUMPDEST DUP3 SLOAD PUSH2 0x100 SWAP3 SWAP1 SWAP3 EXP PUSH4 0xFFFFFFFF DUP2 DUP2 MUL NOT SWAP1 SWAP4 AND SWAP2 DUP4 AND MUL OR SWAP1 SWAP2 SSTORE PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x1 DUP5 ADD SLOAD DUP5 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP7 POP DUP4 AND SWAP5 DUP14 SWAP5 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x48C5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP5 PUSH2 0x25A3 SWAP5 SWAP4 PUSH1 0x1 PUSH1 0xC0 SHL DUP3 DIV PUSH1 0xFF SWAP1 DUP2 AND SWAP5 PUSH1 0x1 PUSH1 0xC8 SHL DUP5 DIV SWAP1 SWAP2 AND SWAP4 PUSH1 0x1 PUSH1 0xA0 SHL SWAP4 DUP5 SWAP1 DIV DUP3 AND SWAP4 SWAP1 DIV AND SWAP1 PUSH2 0x46C3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0x3 DUP3 ADD SLOAD PUSH1 0x40 MLOAD DUP10 SWAP3 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4985 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP3 PUSH2 0x2622 SWAP3 PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xC8 SHL DUP5 DIV DUP2 AND SWAP4 PUSH1 0x1 PUSH1 0xD8 SHL DUP2 DIV DUP3 AND SWAP4 PUSH1 0x1 PUSH1 0xE8 SHL SWAP1 SWAP2 DIV DUP3 AND SWAP3 DUP2 DUP4 AND SWAP3 PUSH3 0x10000 DUP4 DIV DUP2 AND SWAP3 PUSH1 0x1 PUSH1 0x20 SHL DUP2 DIV DUP3 AND SWAP3 PUSH1 0x1 PUSH1 0x30 SHL DUP3 DIV DUP4 AND SWAP3 PUSH1 0x1 PUSH1 0x40 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND SWAP1 PUSH2 0x431E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP5 DUP5 PUSH2 0x2641 DUP3 DUP3 PUSH2 0x349A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x264B PUSH2 0x2951 JUMP JUMPDEST PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 POP PUSH1 0x1 PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x267E JUMPI PUSH2 0x267E PUSH2 0x410B JUMP JUMPDEST EQ PUSH2 0x26B1 JUMPI DUP6 DUP2 PUSH1 0x2 ADD PUSH1 0x18 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x40 MLOAD PUSH4 0xD5D8EACB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP3 SWAP2 SWAP1 PUSH2 0x4589 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER SUB PUSH2 0x26E1 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3060D8F7 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP8 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xB1C JUMP JUMPDEST PUSH1 0x2 DUP2 ADD DUP1 SLOAD PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH2 0xFFFF DUP9 DUP2 AND PUSH2 0xFFFF NOT SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE DUP8 AND PUSH1 0x1 PUSH1 0xE8 SHL MUL PUSH1 0xFF PUSH1 0xC0 SHL NOT AND PUSH7 0xFFFF00000000FF PUSH1 0xC0 SHL NOT SWAP1 SWAP2 AND OR PUSH1 0x1 PUSH1 0xC1 SHL OR DUP1 DUP3 SSTORE PUSH1 0x1 PUSH1 0xA0 SHL SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP1 PUSH1 0x14 PUSH2 0x2742 DUP4 PUSH2 0x46A0 JUMP JUMPDEST SWAP2 SWAP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP POP DUP6 PUSH32 0xAB78BA855F2FDB28BEB212A9B3F41A33CDA034729848CD452F0CC96528C23A80 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH2 0x210B SWAP3 SWAP2 SWAP1 PUSH2 0x4672 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH2 0x27BF PUSH2 0x355B JUMP JUMPDEST PUSH2 0xA00 DUP3 DUP3 PUSH2 0x3580 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x27D3 PUSH2 0x35AE JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 NOT ADD PUSH2 0x27F9 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3EE5AEB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x2829 JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP2 SWAP1 PUSH2 0x3FB3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2837 DUP4 DUP4 PUSH1 0x0 PUSH2 0x3485 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x2863 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7E273289 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xB1C JUMP JUMPDEST DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xCCC JUMPI DUP4 DUP3 DUP3 PUSH1 0x40 MLOAD PUSH4 0x64283D7B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x464F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28A5 PUSH2 0x35AE JUMP JUMPDEST PUSH1 0x1 SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28B6 PUSH2 0x1A9E JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x28E1 JUMPI DUP3 PUSH1 0x40 MLOAD PUSH4 0xB611743 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP2 SWAP1 PUSH2 0x3FB3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 DUP5 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP9 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND DUP8 ISZERO ISZERO SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE SWAP2 MLOAD SWAP2 DUP3 MSTORE PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH32 0xB8FB32FFC7043FDA9E0EE2BCB4236ACF95AB448752C73EFF6CC7F2640FF8500 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EXTCODESIZE ISZERO PUSH2 0x2A85 JUMPI PUSH1 0x40 MLOAD PUSH4 0xA85BD01 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0x150B7A02 SWAP1 PUSH2 0x29B7 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x46EF JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x29F2 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH2 0x29EF SWAP2 DUP2 ADD SWAP1 PUSH2 0x472C JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH2 0x2A52 JUMPI RETURNDATASIZE DUP1 DUP1 ISZERO PUSH2 0x2A20 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x2A25 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0x2A4A JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP2 SWAP1 PUSH2 0x3FB3 JUMP JUMPDEST DUP1 MLOAD DUP2 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ PUSH2 0x1525 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP2 SWAP1 PUSH2 0x3FB3 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST DUP4 DUP4 PUSH2 0x2A98 DUP3 DUP3 PUSH2 0x349A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2AA2 PUSH2 0x2951 JUMP JUMPDEST PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 POP PUSH1 0x1 PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x2AD5 JUMPI PUSH2 0x2AD5 PUSH2 0x410B JUMP JUMPDEST EQ PUSH2 0x2B08 JUMPI DUP5 DUP2 PUSH1 0x2 ADD PUSH1 0x18 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x40 MLOAD PUSH4 0xD5D8EACB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP3 SWAP2 SWAP1 PUSH2 0x4589 JUMP JUMPDEST DUP1 SLOAD DUP5 EQ PUSH2 0x2B2F JUMPI DUP1 SLOAD PUSH1 0x40 MLOAD PUSH4 0xCC452837 PUSH1 0xE0 SHL DUP2 MSTORE PUSH2 0xB1C SWAP2 DUP8 SWAP2 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0x4639 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND CALLER SUB PUSH2 0x2B59 JUMPI PUSH1 0x1 DUP2 ADD DUP1 SLOAD PUSH1 0xFF PUSH1 0xC0 SHL NOT AND PUSH1 0x1 PUSH1 0xC0 SHL OR SWAP1 SSTORE PUSH2 0x2B6F JUMP JUMPDEST PUSH1 0x1 DUP2 ADD DUP1 SLOAD PUSH1 0xFF PUSH1 0xC8 SHL NOT AND PUSH1 0x1 PUSH1 0xC8 SHL OR SWAP1 SSTORE JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0x1 DUP3 ADD SLOAD DUP3 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP5 SWAP1 DUP5 AND SWAP4 DUP11 SWAP4 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x48C5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP4 PUSH2 0x2BDA SWAP4 SWAP2 SWAP3 PUSH1 0xFF PUSH1 0x1 PUSH1 0xC0 SHL DUP3 DIV DUP2 AND SWAP4 PUSH1 0x1 PUSH1 0xC8 SHL DUP4 DIV SWAP1 SWAP2 AND SWAP3 PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0xA0 SHL SWAP4 DUP5 SWAP1 DIV DUP2 AND SWAP4 SWAP1 SWAP3 DIV SWAP1 SWAP2 AND SWAP1 PUSH2 0x46C3 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0x3 DUP3 ADD SLOAD PUSH1 0x40 MLOAD DUP8 SWAP3 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4985 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP3 PUSH2 0x2C59 SWAP3 PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xC8 SHL DUP5 DIV DUP2 AND SWAP4 PUSH1 0x1 PUSH1 0xD8 SHL DUP2 DIV DUP3 AND SWAP4 PUSH1 0x1 PUSH1 0xE8 SHL SWAP1 SWAP2 DIV DUP3 AND SWAP3 DUP2 DUP4 AND SWAP3 PUSH3 0x10000 DUP4 DIV DUP2 AND SWAP3 PUSH1 0x1 PUSH1 0x20 SHL DUP2 DIV DUP3 AND SWAP3 PUSH1 0x1 PUSH1 0x30 SHL DUP3 DIV DUP4 AND SWAP3 PUSH1 0x1 PUSH1 0x40 SHL SWAP1 SWAP3 DIV SWAP1 SWAP2 AND SWAP1 PUSH2 0x431E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x22E5 PUSH2 0x355B JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x2C7E PUSH2 0x35D2 JUMP JUMPDEST SWAP1 POP PUSH2 0x2C89 DUP4 PUSH2 0x1AC2 JUMP JUMPDEST POP PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 DUP2 KECCAK256 DUP1 SLOAD PUSH2 0x2CA3 SWAP1 PUSH2 0x4532 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x2CCF SWAP1 PUSH2 0x4532 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2D1C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x2CF1 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x2D1C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x2CFF JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x0 PUSH2 0x2D3A PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 SUB PUSH2 0x2D4D JUMPI POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x2D80 JUMPI DUP1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x2D67 SWAP3 SWAP2 SWAP1 PUSH2 0x4749 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP4 POP POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x2D89 DUP6 PUSH2 0x35F6 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0xA00 DUP3 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x366A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2DB6 PUSH2 0x35D2 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH2 0x2DD1 DUP4 DUP3 PUSH2 0x47C0 JUMP JUMPDEST POP PUSH1 0x40 MLOAD DUP4 DUP2 MSTORE PUSH32 0xF8E1A15ABA9398E019F0B49DF1A4FDE98EE17AE345CB5F6B5E2C27F5033E8CE7 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E14 PUSH2 0x1A55 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xE0 DUP2 ADD DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP11 DUP12 AND DUP2 MSTORE SWAP9 DUP11 AND PUSH1 0x20 DUP1 DUP12 ADD SWAP2 DUP3 MSTORE DUP11 DUP4 ADD SWAP10 DUP11 MSTORE PUSH1 0x60 DUP12 ADD SWAP9 DUP10 MSTORE SWAP7 DUP12 AND PUSH1 0x80 DUP12 ADD SWAP1 DUP2 MSTORE PUSH1 0xA0 DUP12 ADD SWAP7 DUP8 MSTORE SWAP5 ISZERO ISZERO PUSH1 0xC0 DUP12 ADD SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP13 DUP14 MSTORE PUSH1 0x3 SWAP4 DUP5 ADD SWAP1 SWAP8 MSTORE SWAP11 KECCAK256 SWAP8 MLOAD DUP9 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT SWAP1 DUP2 AND SWAP2 DUP12 AND SWAP2 SWAP1 SWAP2 OR DUP10 SSTORE SWAP10 MLOAD PUSH1 0x1 DUP10 ADD DUP1 SLOAD DUP13 AND SWAP2 DUP12 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE SWAP6 MLOAD PUSH1 0x2 DUP9 ADD SSTORE POP SWAP3 MLOAD SWAP4 DUP6 ADD SWAP4 SWAP1 SWAP4 SSTORE SWAP1 MLOAD PUSH1 0x4 DUP5 ADD DUP1 SLOAD SWAP1 SWAP7 AND SWAP5 AND SWAP4 SWAP1 SWAP4 OR SWAP1 SWAP4 SSTORE SWAP2 MLOAD PUSH1 0x5 DUP4 ADD SSTORE MLOAD PUSH1 0x6 SWAP1 SWAP2 ADD DUP1 SLOAD PUSH1 0xFF NOT AND SWAP2 ISZERO ISZERO SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP6 DUP6 PUSH2 0x2EE8 DUP3 DUP3 PUSH2 0x349A JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2EF2 PUSH2 0x2951 JUMP JUMPDEST PUSH1 0x0 DUP9 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 POP PUSH1 0x4 PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x2F25 JUMPI PUSH2 0x2F25 PUSH2 0x410B JUMP JUMPDEST EQ DUP1 PUSH2 0x2F50 JUMPI POP PUSH1 0x1 PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x2F4E JUMPI PUSH2 0x2F4E PUSH2 0x410B JUMP JUMPDEST EQ JUMPDEST ISZERO PUSH2 0x2F83 JUMPI DUP7 DUP2 PUSH1 0x2 ADD PUSH1 0x18 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0x40 MLOAD PUSH4 0xD5D8EACB PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP3 SWAP2 SWAP1 PUSH2 0x4589 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x2 DUP3 ADD SLOAD PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x2FA5 JUMPI PUSH2 0x2FA5 PUSH2 0x410B JUMP JUMPDEST SUB PUSH2 0x2FBF JUMPI PUSH1 0x1 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE JUMPDEST CALLER DUP2 PUSH1 0x2 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB MUL NOT AND SWAP1 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND MUL OR SWAP1 SSTORE POP DUP6 DUP2 PUSH1 0x0 ADD DUP2 SWAP1 SSTORE POP DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP2 PUSH1 0x1 ADD PUSH1 0x18 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP2 PUSH1 0x1 ADD PUSH1 0x19 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 ISZERO ISZERO MUL OR SWAP1 SSTORE POP DUP5 DUP2 PUSH1 0x2 ADD PUSH1 0x19 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP DUP4 DUP2 PUSH1 0x2 ADD PUSH1 0x1B PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 DUP2 PUSH1 0x2 ADD PUSH1 0x1D PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 DUP2 PUSH1 0x3 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 DUP2 PUSH1 0x3 ADD PUSH1 0x2 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 DUP2 PUSH1 0x3 ADD PUSH1 0x4 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 DUP2 PUSH1 0x3 ADD PUSH1 0x6 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x0 DUP2 PUSH1 0x3 ADD PUSH1 0x8 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x1 DUP2 PUSH1 0x2 ADD PUSH1 0x18 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0x4 DUP2 GT ISZERO PUSH2 0x3176 JUMPI PUSH2 0x3176 PUSH2 0x410B JUMP JUMPDEST MUL OR SWAP1 SSTORE POP PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0x1 DUP3 ADD SLOAD DUP3 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP5 SWAP1 DUP5 AND SWAP4 DUP13 SWAP4 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x48C5 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP4 PUSH2 0x25A3 SWAP4 SWAP2 SWAP3 PUSH1 0xFF PUSH1 0x1 PUSH1 0xC0 SHL DUP3 DIV DUP2 AND SWAP4 PUSH1 0x1 PUSH1 0xC8 SHL DUP4 DIV SWAP1 SWAP2 AND SWAP3 PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0xA0 SHL SWAP4 DUP5 SWAP1 DIV DUP2 AND SWAP4 SWAP1 SWAP3 DIV SWAP1 SWAP2 AND SWAP1 PUSH2 0x46C3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x24832483 PUSH1 0xE1 SHL EQ DUP1 PUSH2 0x939 JUMPI POP PUSH2 0x939 DUP3 PUSH2 0x3682 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x3216 PUSH2 0x1A9E JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x2 ADD PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x323E PUSH2 0x1A9E JUMP JUMPDEST SWAP1 POP DUP2 DUP1 PUSH2 0x3254 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x330D JUMPI PUSH1 0x0 PUSH2 0x3264 DUP6 PUSH2 0x1AC2 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x3290 JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x32A3 JUMPI POP PUSH2 0x32A1 DUP2 DUP6 PUSH2 0x1969 JUMP JUMPDEST ISZERO JUMPDEST ISZERO PUSH2 0x32C3 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0xA9FBF51F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP2 SWAP1 PUSH2 0x3FB3 JUMP JUMPDEST DUP3 ISZERO PUSH2 0x330B JUMPI DUP5 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 JUMPDEST POP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x4 ADD PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH2 0x3363 JUMPI SELFBALANCE DUP2 PUSH1 0x40 MLOAD PUSH4 0xCF479181 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP3 SWAP2 SWAP1 PUSH2 0x45E9 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x33B0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x33B5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0xBB0 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 DUP1 DUP3 ADD DUP5 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x84 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x23B872DD PUSH1 0xE0 SHL OR SWAP1 MSTORE PUSH2 0xCCC SWAP1 DUP6 SWAP1 PUSH2 0x36A7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x343C PUSH2 0x2951 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x2 ADD SLOAD PUSH1 0x1 PUSH1 0xC0 SHL SWAP1 DIV PUSH1 0xFF AND PUSH2 0x3461 PUSH2 0x2951 JUMP JUMPDEST PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 SWAP4 KECCAK256 PUSH1 0x2 ADD SLOAD SWAP3 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3492 DUP5 DUP5 DUP5 PUSH2 0x370F JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND EQ DUP1 ISZERO SWAP1 PUSH2 0x34BC JUMPI POP CALLER PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND EQ ISZERO JUMPDEST ISZERO PUSH2 0xA00 JUMPI PUSH1 0x40 MLOAD PUSH4 0x4793D281 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x34E4 DUP3 DUP3 PUSH2 0x105F JUMP JUMPDEST PUSH2 0xA00 JUMPI DUP1 DUP3 PUSH1 0x40 MLOAD PUSH4 0xE2517D3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP3 SWAP2 SWAP1 PUSH2 0x45A6 JUMP JUMPDEST PUSH2 0x350E DUP3 PUSH2 0x379D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x3553 JUMPI PUSH2 0xBB0 DUP3 DUP3 PUSH2 0x37F9 JUMP JUMPDEST PUSH2 0xA00 PUSH2 0x3866 JUMP JUMPDEST PUSH2 0x3563 PUSH2 0x3885 JUMP JUMPDEST PUSH2 0x22E5 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1AFCD79F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x3588 PUSH2 0x355B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3592 PUSH2 0x1A9E JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x359F DUP5 DUP3 PUSH2 0x47C0 JUMP JUMPDEST POP PUSH1 0x1 DUP2 ADD PUSH2 0xCCC DUP4 DUP3 PUSH2 0x47C0 JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 SWAP1 JUMP JUMPDEST PUSH32 0x542A41881EE128A365A727B282C86FA859579490B9BB45AAB8503648C8E7900 SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x3601 DUP3 PUSH2 0x1AC2 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x3619 PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x0 DUP2 MSTORE SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD GT PUSH2 0x3639 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x1CDD JUMP JUMPDEST DUP1 PUSH2 0x3643 DUP5 PUSH2 0x389F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x3654 SWAP3 SWAP2 SWAP1 PUSH2 0x4749 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x3674 DUP4 DUP4 PUSH2 0x3931 JUMP JUMPDEST PUSH2 0xBB0 CALLER PUSH1 0x0 DUP6 DUP6 DUP6 PUSH2 0x2975 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x780E9D63 PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x939 JUMPI POP PUSH2 0x939 DUP3 PUSH2 0x3996 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 PUSH1 0x0 DUP5 MLOAD PUSH1 0x20 DUP7 ADD PUSH1 0x0 DUP9 GAS CALL DUP1 PUSH2 0x36CA JUMPI PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST POP POP PUSH1 0x0 MLOAD RETURNDATASIZE SWAP2 POP DUP2 ISZERO PUSH2 0x36E2 JUMPI DUP1 PUSH1 0x1 EQ ISZERO PUSH2 0x36EF JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0xCCC JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP2 SWAP1 PUSH2 0x3FB3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x371D DUP6 DUP6 DUP6 PUSH2 0x39E6 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x373B JUMPI PUSH2 0x3736 DUP5 PUSH2 0x3AED JUMP JUMPDEST PUSH2 0x375E JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x375E JUMPI PUSH2 0x375E DUP2 DUP6 PUSH2 0x3B26 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x377A JUMPI PUSH2 0x3775 DUP5 PUSH2 0x3BBF JUMP JUMPDEST PUSH2 0x3492 JUMP JUMPDEST DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x3492 JUMPI PUSH2 0x3492 DUP6 DUP6 PUSH2 0x3C88 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH2 0x37CA JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP2 SWAP1 PUSH2 0x3FB3 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH2 0x4945 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x3816 SWAP2 SWAP1 PUSH2 0x487F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3851 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3856 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x2D89 DUP6 DUP4 DUP4 PUSH2 0x3CE0 JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x22E5 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x388F PUSH2 0x2793 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH2 0x38AC DUP4 PUSH2 0x3D33 JUMP JUMPDEST PUSH1 0x1 ADD SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x38CB JUMPI PUSH2 0x38CB PUSH2 0x4152 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x38F5 JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP2 DUP2 ADD PUSH1 0x20 ADD JUMPDEST PUSH1 0x0 NOT ADD PUSH16 0x181899199A1A9B1B9C1CB0B131B232B3 PUSH1 0x81 SHL PUSH1 0xA DUP7 MOD BYTE DUP2 MSTORE8 PUSH1 0xA DUP6 DIV SWAP5 POP DUP5 PUSH2 0x38FF JUMPI POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x395B JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0x32505749 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP2 SWAP1 PUSH2 0x3FB3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3969 DUP4 DUP4 PUSH1 0x0 PUSH2 0x3485 JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0xBB0 JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0x39E35637 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP2 SWAP1 PUSH2 0x3FB3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x80AC58CD PUSH1 0xE0 SHL EQ DUP1 PUSH2 0x39C7 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5B5E139F PUSH1 0xE0 SHL EQ JUMPDEST DUP1 PUSH2 0x939 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH2 0x939 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x39F1 PUSH2 0x1A9E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x39FE DUP6 PUSH2 0x320B JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND ISZERO PUSH2 0x3A1A JUMPI PUSH2 0x3A1A DUP2 DUP6 DUP8 PUSH2 0x3E09 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0x3A5A JUMPI PUSH2 0x3A37 PUSH1 0x0 DUP7 PUSH1 0x0 DUP1 PUSH2 0x3234 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND ISZERO PUSH2 0x3A8B JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x2 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND SWAP2 DUP3 OR SWAP1 SWAP3 SSTORE SWAP2 MLOAD DUP9 SWAP4 SWAP2 DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 LOG4 SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3AF7 PUSH2 0x1B30 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD DUP1 SLOAD PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x3 SWAP1 SWAP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP5 KECCAK256 DUP3 SWAP1 SSTORE PUSH1 0x1 DUP3 ADD DUP4 SSTORE SWAP2 DUP4 MSTORE SWAP2 KECCAK256 ADD SWAP2 SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3B30 PUSH2 0x1B30 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3B3D DUP5 PUSH2 0xEAE JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP5 MSTORE SWAP2 DUP7 SWAP1 MSTORE SWAP1 SWAP2 KECCAK256 SWAP2 SWAP3 POP SWAP1 DUP2 DUP4 EQ PUSH2 0x3B97 JUMPI PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SLOAD DUP6 DUP5 MSTORE DUP2 DUP5 KECCAK256 DUP2 SWAP1 SSTORE DUP4 MSTORE PUSH1 0x1 DUP8 ADD SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP3 SWAP1 SSTORE JUMPDEST PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x1 SWAP1 SWAP4 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 DUP7 SWAP1 SSTORE SWAP3 DUP6 MSTORE SWAP3 SWAP1 SWAP3 MSTORE DUP3 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3BC9 PUSH2 0x1B30 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x3BE0 SWAP1 PUSH1 0x1 SWAP1 PUSH2 0x489B JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x3 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD PUSH1 0x2 DUP6 ADD DUP1 SLOAD SWAP4 SWAP5 POP SWAP1 SWAP3 DUP5 SWAP1 DUP2 LT PUSH2 0x3C0C JUMPI PUSH2 0x3C0C PUSH2 0x45BF JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP5 PUSH1 0x2 ADD DUP4 DUP2 SLOAD DUP2 LT PUSH2 0x3C2F JUMPI PUSH2 0x3C2F PUSH2 0x45BF JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE DUP3 DUP2 MSTORE PUSH1 0x3 DUP7 ADD SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP5 SWAP1 SSTORE DUP7 DUP3 MSTORE DUP2 KECCAK256 SSTORE PUSH1 0x2 DUP5 ADD DUP1 SLOAD DUP1 PUSH2 0x3C6B JUMPI PUSH2 0x3C6B PUSH2 0x48AE JUMP JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C92 PUSH2 0x1B30 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH2 0x3CA1 DUP6 PUSH2 0xEAE JUMP JUMPDEST PUSH2 0x3CAB SWAP2 SWAP1 PUSH2 0x489B JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP4 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP8 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP7 SWAP1 SSTORE SWAP5 DUP3 MSTORE PUSH1 0x1 SWAP1 SWAP4 ADD SWAP1 SWAP3 MSTORE POP KECCAK256 SSTORE JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x3CF5 JUMPI PUSH2 0x3CF0 DUP3 PUSH2 0x3E5F JUMP JUMPDEST PUSH2 0x1CDD JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x3D0C JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x3D2C JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP2 SWAP1 PUSH2 0x3FB3 JUMP JUMPDEST POP DUP1 PUSH2 0x1CDD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP4 LT PUSH2 0x3D72 JUMPI PUSH19 0x184F03E93FF9F4DAA797ED6E38ED64BF6A1F01 PUSH1 0x40 SHL DUP4 DIV SWAP3 POP PUSH1 0x40 ADD JUMPDEST PUSH10 0x4EE2D6D415B85ACEF81 PUSH1 0x20 SHL DUP4 LT PUSH2 0x3D9C JUMPI PUSH10 0x4EE2D6D415B85ACEF81 PUSH1 0x20 SHL DUP4 DIV SWAP3 POP PUSH1 0x20 ADD JUMPDEST PUSH7 0x2386F26FC10000 DUP4 LT PUSH2 0x3DBA JUMPI PUSH7 0x2386F26FC10000 DUP4 DIV SWAP3 POP PUSH1 0x10 ADD JUMPDEST PUSH4 0x5F5E100 DUP4 LT PUSH2 0x3DD2 JUMPI PUSH4 0x5F5E100 DUP4 DIV SWAP3 POP PUSH1 0x8 ADD JUMPDEST PUSH2 0x2710 DUP4 LT PUSH2 0x3DE6 JUMPI PUSH2 0x2710 DUP4 DIV SWAP3 POP PUSH1 0x4 ADD JUMPDEST PUSH1 0x64 DUP4 LT PUSH2 0x3DF8 JUMPI PUSH1 0x64 DUP4 DIV SWAP3 POP PUSH1 0x2 ADD JUMPDEST PUSH1 0xA DUP4 LT PUSH2 0x939 JUMPI PUSH1 0x1 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x3E14 DUP4 DUP4 DUP4 PUSH2 0x3E88 JUMP JUMPDEST PUSH2 0xBB0 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x3E42 JUMPI PUSH1 0x40 MLOAD PUSH4 0x7E273289 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH2 0xB1C JUMP JUMPDEST DUP2 DUP2 PUSH1 0x40 MLOAD PUSH4 0x177E802F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB1C SWAP3 SWAP2 SWAP1 PUSH2 0x45A6 JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x3E6F JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x3492 JUMPI POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x3EC2 JUMPI POP PUSH2 0x3EC2 DUP5 DUP5 PUSH2 0x1969 JUMP JUMPDEST DUP1 PUSH2 0x3492 JUMPI POP DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x3EDB DUP4 PUSH2 0x1AFA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3EFF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH2 0x1326 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x3F45 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1CDD DUP2 PUSH2 0x3F1D JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x3F6B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x3F53 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH2 0x3F8C DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH2 0x3F50 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH2 0x1CDD PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x3F74 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x1326 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x3FEF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x3FFA DUP2 PUSH2 0x3FC7 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x401A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x1CDD DUP2 PUSH2 0x3FC7 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4038 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x405C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x4067 DUP2 PUSH2 0x3FC7 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x4077 DUP2 PUSH2 0x3FC7 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x409A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x40B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH2 0x40C4 PUSH1 0x20 DUP6 ADD PUSH2 0x4088 JUMP JUMPDEST SWAP2 POP PUSH2 0x40D2 PUSH1 0x40 DUP6 ADD PUSH2 0x4088 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x40EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4100 DUP2 PUSH2 0x3FC7 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x5 DUP2 LT PUSH2 0x1326 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x20 DUP2 ADD PUSH2 0x414C DUP4 PUSH2 0x4121 JUMP JUMPDEST SWAP2 SWAP1 MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x4179 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x4193 JUMPI PUSH2 0x4193 PUSH2 0x4152 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP4 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x41BB JUMPI PUSH2 0x41BB PUSH2 0x4152 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP4 DUP2 MSTORE DUP7 PUSH1 0x20 DUP6 DUP9 ADD ADD GT ISZERO PUSH2 0x41D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 PUSH1 0x20 DUP8 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP6 DUP4 ADD ADD MSTORE DUP1 SWAP5 POP POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4207 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4212 DUP2 PUSH2 0x3FC7 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x422D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4239 DUP6 DUP3 DUP7 ADD PUSH2 0x4168 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4259 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH2 0x4270 PUSH1 0x40 DUP7 ADD PUSH2 0x4088 JUMP JUMPDEST SWAP2 POP PUSH2 0x427E PUSH1 0x60 DUP7 ADD PUSH2 0x4088 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x429C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x42B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x42BF DUP7 DUP4 DUP8 ADD PUSH2 0x4168 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x42D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4239 DUP6 DUP3 DUP7 ADD PUSH2 0x4168 JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x1326 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4303 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x430E DUP2 PUSH2 0x3FC7 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4100 DUP2 PUSH2 0x42E2 JUMP JUMPDEST PUSH2 0xFFFF SWAP9 DUP10 AND DUP2 MSTORE SWAP7 DUP9 AND PUSH1 0x20 DUP9 ADD MSTORE SWAP5 DUP8 AND PUSH1 0x40 DUP8 ADD MSTORE SWAP3 DUP7 AND PUSH1 0x60 DUP7 ADD MSTORE SWAP1 DUP6 AND PUSH1 0x80 DUP6 ADD MSTORE DUP5 AND PUSH1 0xA0 DUP5 ADD MSTORE DUP4 AND PUSH1 0xC0 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4379 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0x4384 DUP2 PUSH2 0x3FC7 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD PUSH2 0x4394 DUP2 PUSH2 0x3FC7 JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x43B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x43C2 DUP8 DUP3 DUP9 ADD PUSH2 0x4168 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH2 0x100 DUP2 ADD PUSH2 0x43DC DUP11 PUSH2 0x4121 JUMP JUMPDEST SWAP9 DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP8 SWAP1 SWAP8 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND PUSH1 0x40 DUP9 ADD MSTORE SWAP4 SWAP1 SWAP5 AND PUSH1 0x60 DUP7 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x80 DUP6 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP5 ADD MSTORE PUSH4 0xFFFFFFFF SWAP2 DUP3 AND PUSH1 0xC0 DUP5 ADD MSTORE AND PUSH1 0xE0 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x443B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0x4446 DUP2 PUSH2 0x3FC7 JUMP JUMPDEST SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x4456 DUP2 PUSH2 0x3FC7 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD PUSH2 0x4466 DUP2 PUSH2 0x3FC7 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x448C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x4497 DUP2 PUSH2 0x3FC7 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x44B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x44BE DUP11 DUP3 DUP12 ADD PUSH2 0x4168 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD PUSH2 0x44DD DUP2 PUSH2 0x3FC7 JUMP JUMPDEST SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD SWAP2 POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD PUSH2 0x44F4 DUP2 PUSH2 0x42E2 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4517 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x4522 DUP2 PUSH2 0x3FC7 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH2 0x4100 DUP2 PUSH2 0x3FC7 JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x4546 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x4566 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x457E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1CDD DUP2 PUSH2 0x42E2 JUMP JUMPDEST DUP3 DUP2 MSTORE PUSH1 0x40 DUP2 ADD PUSH2 0x4599 DUP4 PUSH2 0x4121 JUMP JUMPDEST DUP3 PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x939 JUMPI PUSH2 0x939 PUSH2 0x45F7 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 ADD PUSH2 0x4632 JUMPI PUSH2 0x4632 PUSH2 0x45F7 JUMP JUMPDEST POP PUSH1 0x1 ADD SWAP1 JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE SWAP1 SWAP2 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH2 0xFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4699 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH4 0xFFFFFFFF DUP1 DUP4 AND DUP2 DUP2 SUB PUSH2 0x46B9 JUMPI PUSH2 0x46B9 PUSH2 0x45F7 JUMP JUMPDEST PUSH1 0x1 ADD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SWAP5 DUP6 MSTORE SWAP3 ISZERO ISZERO PUSH1 0x20 DUP6 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x40 DUP5 ADD MSTORE PUSH4 0xFFFFFFFF SWAP1 DUP2 AND PUSH1 0x60 DUP5 ADD MSTORE AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 DUP2 AND DUP3 MSTORE DUP5 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x80 PUSH1 0x60 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH2 0x4722 SWAP1 DUP4 ADD DUP5 PUSH2 0x3F74 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x473E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x1CDD DUP2 PUSH2 0x3F1D JUMP JUMPDEST PUSH1 0x0 DUP4 MLOAD PUSH2 0x475B DUP2 DUP5 PUSH1 0x20 DUP9 ADD PUSH2 0x3F50 JUMP JUMPDEST DUP4 MLOAD SWAP1 DUP4 ADD SWAP1 PUSH2 0x476F DUP2 DUP4 PUSH1 0x20 DUP9 ADD PUSH2 0x3F50 JUMP JUMPDEST ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0xBB0 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH2 0x47A1 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x1525 JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x47AD JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH2 0x47D9 JUMPI PUSH2 0x47D9 PUSH2 0x4152 JUMP JUMPDEST PUSH2 0x47ED DUP2 PUSH2 0x47E7 DUP5 SLOAD PUSH2 0x4532 JUMP JUMPDEST DUP5 PUSH2 0x4778 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x4822 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH2 0x480A JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH2 0x1525 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x4851 JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH2 0x4832 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH2 0x486F JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x4891 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x3F50 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x939 JUMPI PUSH2 0x939 PUSH2 0x45F7 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID PUSH11 0xAFAF6639750382D6DC665B 0xC6 LOG3 0xC7 RETURNDATASIZE SLOAD 0xE2 SMOD PUSH11 0x8739A69C860A2314032EB9 DUP2 0xC7 CREATE2 SDIV 0xB2 RETURN PUSH18 0xAE2175EE4913F4499E1F2633A7B5936321EE 0xD1 0xCD 0xAE 0xB6 GT MLOAD DUP2 0xD2 0xC4 PUSH27 0xB59D5C41A0220B594ECE6F7E87863B07F8B33579130F3A59B31D8F PUSH28 0x6EED189AB7A9244DF0848122154315AF71FE140F3DB0FE014031783B MULMOD CHAINID 0xB8 0xC9 0xD2 0xE3 CALLDATASIZE ADDMOD SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC3AE8648B97D3FD425D2628 PUSH16 0xC6BB1D50724A93A6A5763921DD2B9040 GAS DUP4 0xB4 LOG4 0xAD 0xE2 0xCE DUP12 CODECOPY SUB PUSH32 0x5140109F53FEF47C0491427B8B785AB83D35AA2931295CB790A2646970667358 0x22 SLT KECCAK256 PUSH0 CALL 0xAB PUSH31 0xD04F3284C48EEFD9C84EBE5B019C0853E20741AE588D1E84FA8D725B64736F PUSH13 0x63430008180033000000000000 ", + "sourceMap": "1763:30341:50:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18839:273;;;;;;;;;;-1:-1:-1;18839:273:50;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;31806:296;;;;;;;;;;-1:-1:-1;31806:296:50;;;;;:::i;:::-;;:::i;:::-;;;1044:14:61;;1037:22;1019:41;;1007:2;992:18;31806:296:50;879:187:61;3545:146:4;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;4791:154::-;;;;;;;;;;-1:-1:-1;4791:154:4;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4617:113::-;;;;;;;;;;-1:-1:-1;4617:113:4;;;;;:::i;:::-;;:::i;:::-;;25407:199:50;;;;;;;;;;;;;:::i;:::-;;;2637:25:61;;;2625:2;2610:18;25407:199:50;2491:177:61;23820:156:50;;;;;;;;;;-1:-1:-1;23820:156:50;;;;;:::i;:::-;;:::i;3048:179:5:-;;;;;;;;;;;;;:::i;29396:940:50:-;;;;;;:::i;:::-;;:::i;30643:306::-;;;;;;;;;;-1:-1:-1;30643:306:50;;;;;:::i;:::-;;:::i;4759:191:0:-;;;;;;;;;;-1:-1:-1;4759:191:0;;;;;:::i;:::-;;:::i;27950:721:50:-;;;;;;;;;;-1:-1:-1;27950:721:50;;;;;:::i;:::-;;:::i;19658:202::-;;;;;;;;;;-1:-1:-1;19658:202:50;;;;;:::i;:::-;;:::i;3385:90::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3385:90:50;;5246:136:0;;;;;;;;;;-1:-1:-1;5246:136:0;;;;;:::i;:::-;;:::i;2645:332:5:-;;;;;;;;;;-1:-1:-1;2645:332:5;;;;;:::i;:::-;;:::i;6348:245:0:-;;;;;;;;;;-1:-1:-1;6348:245:0;;;;;:::i;:::-;;:::i;18499:203:50:-;;;;;;;;;;-1:-1:-1;18499:203:50;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;24405:192::-;;;;;;;;;;-1:-1:-1;24405:192:50;;;;;:::i;:::-;;:::i;6138:132:4:-;;;;;;;;;;-1:-1:-1;6138:132:4;;;;;:::i;:::-;;:::i;4161:214:3:-;;;;;;:::i;:::-;;:::i;3299:303:5:-;;;;;;;;;;-1:-1:-1;3299:303:5;;;;;:::i;:::-;;:::i;25028:282:50:-;;;;;;;;;;-1:-1:-1;25028:282:50;;;;;:::i;:::-;;:::i;3708:134:3:-;;;;;;;;;;;;;:::i;2775:161:50:-;;;;;;;;;;-1:-1:-1;2775:161:50;;;2290:1;6958:34:61;;2825:12:50;7023:2:61;7008:18;;7001:43;;;7060:18;;;7053:43;;;;6921:2;6906:18;2775:161:50;6737:365:61;3365:118:4;;;;;;;;;;-1:-1:-1;3365:118:4;;;;;:::i;:::-;;:::i;3043:265::-;;;;;;;;;;-1:-1:-1;3043:265:4;;;;;:::i;:::-;;:::i;27193:751:50:-;;;;;;;;;;-1:-1:-1;27193:751:50;;;;;:::i;:::-;;:::i;28677:713::-;;;;;;;;;;-1:-1:-1;28677:713:50;;;;;:::i;:::-;;:::i;3732:207:0:-;;;;;;;;;;-1:-1:-1;3732:207:0;;;;;:::i;:::-;;:::i;11329:197:50:-;;;;;;;;;;-1:-1:-1;11329:197:50;;;;;:::i;:::-;;:::i;3755:150:4:-;;;;;;;;;;;;;:::i;15553:1475:50:-;;;;;;:::i;:::-;;:::i;3612:51::-;;;;;;;;;;;;3661:1;3612:51;;2317:49:0;;;;;;;;;;-1:-1:-1;2317:49:0;2362:4;2317:49;;5012:144:4;;;;;;;;;;-1:-1:-1;5012:144:4;;;;;:::i;:::-;;:::i;5865:861:51:-;;;;;;;;;;-1:-1:-1;5865:861:51;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;1819:58:3:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:3;;;;;19318:225:50;;;;;;;;;;-1:-1:-1;19318:225:50;;;;;:::i;:::-;;:::i;6336:233:4:-;;;;;;;;;;-1:-1:-1;6336:233:4;;;;;:::i;:::-;;:::i;5033:826:51:-;;;;;;;;;;-1:-1:-1;5033:826:51;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;26564:623:50:-;;;;;;;;;;-1:-1:-1;26564:623:50;;;;;:::i;:::-;;:::i;3940:53::-;;;;;;;;;;;;3991:1;3940:53;;10385:529;;;;;;;;;;-1:-1:-1;10385:529:50;;;;;:::i;:::-;;:::i;24667:168::-;;;;;;;;;;;;;:::i;31611:189::-;;;;;;;;;;-1:-1:-1;31611:189:50;;;;;:::i;:::-;;:::i;5662:138:0:-;;;;;;;;;;-1:-1:-1;5662:138:0;;;;;:::i;:::-;;:::i;12460:1938:50:-;;;;;;;;;;-1:-1:-1;12460:1938:50;;;;;:::i;:::-;;:::i;22619:1025::-;;;;;;;;;;-1:-1:-1;22619:1025:50;;;;;:::i;:::-;;:::i;5222:210:4:-;;;;;;;;;;-1:-1:-1;5222:210:4;;;;;:::i;:::-;;:::i;3210:66:50:-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3210:66:50;;25785:773;;;;;;;;;;-1:-1:-1;25785:773:50;;;;;:::i;:::-;;:::i;18839:273::-;18914:13;18929:19;18960:29;18992:25;:23;:25::i;:::-;19035:24;;;;:15;;;;:24;;;;;;:30;;;;19067:37;;;;;19035:30;;-1:-1:-1;;;;;19067:37:50;;;;18839:273;-1:-1:-1;;;18839:273:50:o;31806:296::-;32032:4;32059:36;32083:11;32059:23;:36::i;:::-;32052:43;31806:296;-1:-1:-1;;31806:296:50:o;3545:146:4:-;3590:13;3615:23;3641:19;:17;:19::i;:::-;3615:45;;3677:1;:7;;3670:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3545:146;:::o;4791:154::-;4858:7;4877:22;4891:7;4877:13;:22::i;:::-;;4917:21;4930:7;4917:12;:21::i;4617:113::-;4688:35;4697:2;4701:7;966:10:7;4688:8:4;:35::i;:::-;4617:113;;:::o;25407:199:50:-;25477:7;25496:29;25528:25;:23;:25::i;:::-;25570:29;;;;25407:199;-1:-1:-1;;25407:199:50:o;23820:156::-;23887:4;23928:19;:17;:19::i;:::-;-1:-1:-1;;;;;23910:50:50;;23961:7;23910:59;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;3048:179:5:-;3100:7;3119:33;3155:29;:27;:29::i;29396:940:50:-;29531:10;10163:25;10180:7;10163:16;:25::i;:::-;29595:13:::1;29611:22;29625:7;29611:13;:22::i;:::-;29595:38;;29667:29;29699:25;:23;:25::i;:::-;29667:57:::0;-1:-1:-1;29809:20:50::1;29780:25;::::0;;;:16:::1;::::0;;::::1;:25;::::0;;;;;;::::1;;::::0;:49;::::1;;;;;;:::i;:::-;;29776:141;;29880:25;::::0;;;:16:::1;::::0;;::::1;:25;::::0;;;;;;;29852:54;;-1:-1:-1;;;29852:54:50;;::::1;::::0;29871:7;;29880:25:::1;::::0;;::::1;::::0;29852:54:::1;;:::i;:::-;;;;;;;;29776:141;29927:16;29946:24:::0;;;:15:::1;::::0;::::1;:24;::::0;;;;:33:::1;;::::0;-1:-1:-1;;;;;29946:33:50::1;::::0;30013:59:::1;29946:33:::0;29962:7;30054:17;30013:21:::1;:59::i;:::-;30083:19;30105:24:::0;;;:15:::1;::::0;::::1;:24;::::0;;;;;;;:37:::1;::::0;;::::1;::::0;30191:16;;::::1;:25:::0;;;;;:51;;-1:-1:-1;;30191:51:50::1;::::0;;::::1;::::0;;;29990:82;;-1:-1:-1;;;;;;30105:37:50::1;30280:49;30105:37:::0;29990:82;30323:5;30280:14:::1;:49::i;:::-;29543:793;;;;;29396:940:::0;;;:::o;30643:306::-;30869:26;30887:7;30869:17;:26::i;:::-;30905:37;30924:4;30930:2;30934:7;30905:18;:37::i;:::-;30643:306;;;:::o;4759:191:0:-;4824:7;4843:30;4876:26;:24;:26::i;:::-;4919:8;:14;;;;;-1:-1:-1;;4919:14:0;;;:24;;;;4759:191::o;27950:721:50:-;28115:10;10163:25;10180:7;10163:16;:25::i;:::-;28179:13:::1;28195:22;28209:7;28195:13;:22::i;:::-;28179:38;;28251:29;28283:25;:23;:25::i;:::-;28251:57:::0;-1:-1:-1;28393:20:50::1;28364:25;::::0;;;:16:::1;::::0;;::::1;:25;::::0;;;;;;::::1;;::::0;:49;::::1;;;;;;:::i;:::-;;28360:141;;28464:25;::::0;;;:16:::1;::::0;;::::1;:25;::::0;;;;;;;28436:54;;-1:-1:-1;;;28436:54:50;;::::1;::::0;28455:7;;28464:25:::1;::::0;;::::1;::::0;28436:54:::1;;:::i;28360:141::-;28511:16;28530:24:::0;;;:15:::1;::::0;::::1;:24;::::0;;;;:33:::1;;::::0;-1:-1:-1;;;;;28530:33:50::1;28574:90;28596:5:::0;28530:33;28546:7;28622:16;28640:23;28574:21:::1;:90::i;:::-;28127:544;;;27950:721:::0;;;;:::o;19658:202::-;19727:4;19743:29;19775:25;:23;:25::i;:::-;19817:24;;;;:15;;:24;;-1:-1:-1;;19817:24:50;;;:36;;;;;;19658:202::o;5246:136:0:-;5320:18;5333:4;5320:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5350:25:::1;5361:4;5367:7;5350:10;:25::i;:::-;;5246:136:::0;;;:::o;2645:332:5:-;2733:7;2752:33;2788:29;:27;:29::i;:::-;2752:65;;2840:16;2850:5;2840:9;:16::i;:::-;2831:5;:25;2827:99;;2902:5;2909;2879:36;;-1:-1:-1;;;2879:36:5;;;;;;;;;:::i;2827:99::-;-1:-1:-1;;;;;2942:21:5;;:14;:21;;;;;;;;;;;:28;;;;;;;;;-1:-1:-1;2645:332:5;;;;:::o;6348:245:0:-;-1:-1:-1;;;;;6441:34:0;;966:10:7;6441:34:0;6437:102;;6498:30;;-1:-1:-1;;;6498:30:0;;;;;;;;;;;6437:102;6549:37;6561:4;6567:18;6549:11;:37::i;18499:203:50:-;18571:13;18596:29;18628:25;:23;:25::i;:::-;18670;;;;:16;;:25;;-1:-1:-1;;18670:25:50;;;;;;;18499:203::o;24405:192::-;2362:4:0;3191:16;2362:4;3191:10;:16::i;:::-;24503:29:50::1;24535:25;:23;:25::i;:::-;24570:20:::0;;-1:-1:-1;;;;;;24570:20:50::1;-1:-1:-1::0;;;;;24570:20:50;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;;24405:192:50:o;6138:132:4:-;6224:39;6241:4;6247:2;6251:7;6224:39;;;;;;;;;;;;:16;:39::i;4161:214:3:-;2655:13;:11;:13::i;:::-;4276:36:::1;4294:17;4276;:36::i;:::-;4322:46;4344:17;4363:4;4322:21;:46::i;3299:303:5:-:0;3365:7;3384:33;3420:29;:27;:29::i;:::-;3384:65;;3472:13;:11;:13::i;:::-;3463:5;:22;3459:101;;3539:1;3543:5;3508:41;;-1:-1:-1;;;3508:41:5;;;;;;;;;:::i;3459:101::-;3576:1;:12;;3589:5;3576:19;;;;;;;;:::i;:::-;;;;;;;;;3569:26;;;3299:303;;;:::o;25028:282:50:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;25178:29:50::1;25210:25;:23;:25::i;:::-;25245:29;;:58:::0;;;;-1:-1:-1;;25028:282:50:o;3708:134:3:-;3777:7;2926:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3708:134:3;:::o;3365:118:4:-;3428:7;3454:22;3468:7;3454:13;:22::i;3043:265::-;3106:7;3125:23;3151:19;:17;:19::i;:::-;3125:45;-1:-1:-1;;;;;;3184:19:4;;3180:87;;3253:1;3226:30;;-1:-1:-1;;;3226:30:4;;;;;;;;:::i;3180:87::-;-1:-1:-1;;;;;3283:18:4;;;;;;;:11;;;;:18;;-1:-1:-1;3283:18:4;;;;;3043:265::o;27193:751:50:-;27381:10;10163:25;10180:7;10163:16;:25::i;:::-;27445:13:::1;27461:22;27475:7;27461:13;:22::i;:::-;27445:38;;27517:29;27549:25;:23;:25::i;:::-;27517:57:::0;-1:-1:-1;27659:20:50::1;27630:25;::::0;;;:16:::1;::::0;;::::1;:25;::::0;;;;;;::::1;;::::0;:49;::::1;;;;;;:::i;:::-;;27626:141;;27730:25;::::0;;;:16:::1;::::0;;::::1;:25;::::0;;;;;;;27702:54;;-1:-1:-1;;;27702:54:50;;::::1;::::0;27721:7;;27730:25:::1;::::0;;::::1;::::0;27702:54:::1;;:::i;27626:141::-;27777:16;27796:24:::0;;;:15:::1;::::0;::::1;:24;::::0;;;;:33:::1;;::::0;-1:-1:-1;;;;;27796:33:50::1;27840:97;27861:5:::0;27796:33;27812:7;27887:12;27901:13;27916:20;27840::::1;:97::i;28677:713::-:0;28838:10;10163:25;10180:7;10163:16;:25::i;:::-;28902:13:::1;28918:22;28932:7;28918:13;:22::i;:::-;28902:38;;28974:29;29006:25;:23;:25::i;:::-;28974:57:::0;-1:-1:-1;29116:20:50::1;29087:25;::::0;;;:16:::1;::::0;;::::1;:25;::::0;;;;;;::::1;;::::0;:49;::::1;;;;;;:::i;:::-;;29083:141;;29187:25;::::0;;;:16:::1;::::0;;::::1;:25;::::0;;;;;;;29159:54;;-1:-1:-1;;;29159:54:50;;::::1;::::0;29178:7;;29187:25:::1;::::0;;::::1;::::0;29159:54:::1;;:::i;29083:141::-;29234:16;29253:24:::0;;;:15:::1;::::0;::::1;:24;::::0;;;;:33:::1;;::::0;-1:-1:-1;;;;;29253:33:50::1;29297:86;29317:5:::0;29253:33;29269:7;29343:15;29360:22;29297:19:::1;:86::i;3732:207:0:-:0;3809:4;3825:30;3858:26;:24;:26::i;:::-;3901:8;:14;;;;;;;;;;;-1:-1:-1;;;;;3901:31:0;;;;;;;;;-1:-1:-1;;3901:31:0;;;;;;3732:207::o;11329:197:50:-;11444:1;6357:30:2;6390:26;:24;:26::i;:::-;6431:15;;;;-1:-1:-1;;;;6431:15:2;;;;;:44;;-1:-1:-1;6450:14:2;;-1:-1:-1;;;;;6450:25:2;;;:14;;:25;;6431:44;6427:105;;;6498:23;;-1:-1:-1;;;6498:23:2;;;;;;;;;;;6427:105;6541:24;;-1:-1:-1;;;;;;6575:22:2;-1:-1:-1;;;;;6541:24:2;;6575:22;-1:-1:-1;;;6575:22:2;;;6541:14;3191:16:0::1;6541:14:2::0;3191:10:0::1;:16::i;:::-;11486:33:50::2;11500:7;11509:9;11486:13;:33::i;:::-;-1:-1:-1::0;6618:23:2;;-1:-1:-1;;;;6618:23:2;;;6656:20;;-1:-1:-1;;;;;;;;;;;6656:20:2;;;6668:7;;6656:20;:::i;:::-;;;;;;;;6291:392;11329:197:50;;;:::o;3755:150:4:-;3802:13;3827:23;3853:19;:17;:19::i;:::-;3827:45;;3889:1;:9;;3882:16;;;;;:::i;15553:1475:50:-;3395:21:9;:19;:21::i;:::-;15646:10:50::1;10163:25;10180:7;10163:16;:25::i;:::-;15668:29:::2;15700:25;:23;:25::i;:::-;15781:35;15819:24:::0;;;:15:::2;::::0;;::::2;:24;::::0;;;;;;;;15781:62;;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;;;15781:62:50;;::::2;::::0;;;;;::::2;::::0;;::::2;::::0;;::::2;::::0;;;;::::2;::::0;::::2;::::0;;;;;;;;;;::::2;::::0;;;;;::::2;::::0;::::2;::::0;;;::::2;::::0;;;;::::2;::::0;::::2;::::0;;;;;::::2;::::0;;::::2;::::0;::::2;;;;::::0;;;;15668:57;;-1:-1:-1;15942:10:50::2;15915:37;15911:131;;15995:23:::0;;15975:56:::2;::::0;-1:-1:-1;;;15975:56:50;;-1:-1:-1;;;;;14794:15:61;;;15975:56:50::2;::::0;::::2;14776:34:61::0;16020:10:50::2;14826:18:61::0;;;14819:43;14711:18;;15975:56:50::2;14564:304:61::0;15911:131:50::2;16112:11;:31;;;16094:15;:49;16090:147;;;16185:7;16194:11;:31;;;16166:60;;-1:-1:-1::0;;;16166:60:50::2;;;;;;;;;:::i;16090:147::-;16295:13;16311:16;16319:7;16311;:16::i;:::-;16295:32;;16350:11;:20;;;-1:-1:-1::0;;;;;16341:29:50::2;:5;-1:-1:-1::0;;;;;16341:29:50::2;;16337:116;;16421:20;::::0;::::2;::::0;16393:49:::2;::::0;-1:-1:-1;;;16393:49:50;;::::2;::::0;16412:7;;16393:49:::2;;;:::i;16337:116::-;16685:52;16695:11;:20;;;16717:10;16729:7;16685:9;:52::i;:::-;16785:81;16800:11;:24;;;16826:11;:17;;;16845:11;:20;;;16785:14;:81::i;:::-;16903:25;::::0;;;:16:::2;::::0;::::2;:25;::::0;;;;;:48;;-1:-1:-1;;16903:48:50::2;16931:20;16903:48;::::0;;16989:32;17010:10:::2;::::0;16903:25;;16989:32:::2;::::0;16903:25;16989:32:::2;15658:1370;;;3426:1:9::1;3437:20:::0;:18;:20::i;:::-;15553:1475:50;:::o;5012:144:4:-;5097:52;966:10:7;5130:8:4;5140;5097:18;:52::i;5865:861:51:-;5988:25;6027:26;6067:22;6103:23;6140:20;6174:21;6209:23;6246:24;6295:25;6323:36;:34;:36::i;:::-;:47;:56;;;;;-1:-1:-1;;6323:56:51;;;;6411:27;;;;6532:25;;;;;6411:27;-1:-1:-1;;;6411:27:51;;;;;-1:-1:-1;;;6452:28:51;;;;;-1:-1:-1;;;;6494:24:51;;;;;;-1:-1:-1;6532:25:51;;;;-1:-1:-1;6571:22:51;;;;;;-1:-1:-1;;;;6607:23:51;;;;;-1:-1:-1;;;;6644:25:51;;;;;-1:-1:-1;;;;6683:26:51;;;;;-1:-1:-1;5865:861:51:o;19318:225:50:-;19394:19;19425:29;19457:25;:23;:25::i;:::-;19499:24;;;;:15;;:24;;-1:-1:-1;;19499:24:50;;;:37;;;-1:-1:-1;;;;;19499:37:50;;19318:225::o;6336:233:4:-;6449:31;6462:4;6468:2;6472:7;6449:12;:31::i;:::-;6490:72;966:10:7;6538:4:4;6544:2;6548:7;6557:4;6490:33;:72::i;5033:826:51:-;5157:26;5197:20;5231:23;5268;5305:18;5337:21;5372;5407:20;5452:25;5480:36;:34;:36::i;:::-;:47;:56;;;;;-1:-1:-1;;5480:56:51;;;;5568:15;;;;5597:21;;5632:24;;;;;5568:15;-1:-1:-1;;;5568:15:51;;;;;;5597:21;;-1:-1:-1;;;;;;5632:24:51;;;;-1:-1:-1;5670:24:51;;;-1:-1:-1;5708:22:51;;;;;-1:-1:-1;;;;5744:25:51;;;;-1:-1:-1;5783:23:51;-1:-1:-1;;;5783:23:51;;;;;;;-1:-1:-1;5820:22:51;;;;-1:-1:-1;5033:826:51:o;26564:623:50:-;26662:10;10163:25;10180:7;10163:16;:25::i;:::-;26726:13:::1;26742:22;26756:7;26742:13;:22::i;:::-;26726:38;;26798:29;26830:25;:23;:25::i;:::-;26798:57:::0;-1:-1:-1;26940:20:50::1;26911:25;::::0;;;:16:::1;::::0;;::::1;:25;::::0;;;;;;::::1;;::::0;:49;::::1;;;;;;:::i;:::-;;26907:141;;27011:25;::::0;;;:16:::1;::::0;;::::1;:25;::::0;;;;;;;26983:54;;-1:-1:-1;;;26983:54:50;;::::1;::::0;27002:7;;27011:25:::1;::::0;;::::1;::::0;26983:54:::1;;:::i;26907:141::-;27058:16;27077:24:::0;;;:15:::1;::::0;::::1;:24;::::0;;;;:33:::1;;::::0;-1:-1:-1;;;;;27077:33:50::1;27121:59;27141:5:::0;27077:33;27093:7;27167:12;27121:19:::1;:59::i;:::-;26674:513;;;26564:623:::0;;;:::o;10385:529::-;4158:30:2;4191:26;:24;:26::i;:::-;4302:15;;4158:59;;-1:-1:-1;4302:15:2;-1:-1:-1;;;4302:15:2;;;4301:16;;-1:-1:-1;;;;;4348:14:2;4279:19;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:2;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:2;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:2;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;;;;;4951:18:2;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:2;-1:-1:-1;;;5013:22:2;;;4979:67;10491:37:50::1;;;;;;;;;;;;;;-1:-1:-1::0;;;10491:37:50::1;;::::0;::::1;;;;;;;;;;;;;-1:-1:-1::0;;;10491:37:50::1;;::::0;:13:::1;:37::i;:::-;10538:25;:23;:25::i;:::-;10573;:23;:25::i;:::-;10608:22;:20;:22::i;:::-;10640:24;:22;:24::i;:::-;10675:44;2362:4:0;10706:12:50::0;10675:10:::1;:44::i;:::-;;10729:35;-1:-1:-1::0;;;;;;;;;;;10755:8:50::1;10729:10;:35::i;:::-;;10775:29;10807:25;:23;:25::i;:::-;10843:20:::0;;-1:-1:-1;;;;;;10843:20:50::1;-1:-1:-1::0;;;;;10843:20:50;::::1;;::::0;;10905:2:::1;10873:29;::::0;;::::1;:34:::0;-1:-1:-1;5066:101:2;;;;5100:23;;-1:-1:-1;;;;5100:23:2;;;5142:14;;-1:-1:-1;;;;;;;;;;;5142:14:2;;;5100:23;;5142:14;:::i;:::-;;;;;;;;4092:1081;;;;;10385:529:50;;;:::o;24667:168::-;24725:7;24744:29;24776:25;:23;:25::i;:::-;24818:10;-1:-1:-1;;;;;24818:10:50;;24667:168;-1:-1:-1;;24667:168:50:o;31611:189::-;31738:13;31770:23;31785:7;31770:14;:23::i;5662:138:0:-;5737:18;5750:4;5737:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5767:26:::1;5779:4;5785:7;5767:11;:26::i;12460:1938:50:-:0;12740:10;10163:25;10180:7;10163:16;:25::i;:::-;12812:29:::1;12829:11;12812:16;:29::i;:::-;12852;12884:25;:23;:25::i;:::-;13071:29;::::0;::::1;::::0;12852:57;;-1:-1:-1;13139:44:50::1;13071:29:::0;13139:15:::1;:44;:::i;:::-;13116:19;:68;13110:184;;13235:19;13256:26;13208:75;;-1:-1:-1::0;;;13208:75:50::1;;;;;;;;;:::i;13110:184::-;13434:1;13408:23;:27;:72;;;;-1:-1:-1::0;;;;;;13439:41:50;::::1;3991:1;13439:41;;13408:72;13404:168;;;13503:58;::::0;-1:-1:-1;;;13503:58:50;;::::1;::::0;::::1;2637:25:61::0;;;2610:18;;13503:58:50::1;2491:177:61::0;13404:168:50::1;13634:14;::::0;::::1;:16:::0;;13616:15:::1;::::0;;13634:16:::1;::::0;::::1;:::i;:::-;;;;;13616:34;;13717:30;13727:10;13739:7;13717:9;:30::i;:::-;13757:26;13770:7;13779:3;13757:12;:26::i;:::-;13827:228;13849:7;13870:11;13895:10;13919:19;13952:5;13971:12;13997:23;14034:11;13827:8;:228::i;:::-;14092:25;::::0;;;:16:::1;::::0;::::1;:25;::::0;;;;;;;;:50;;-1:-1:-1;;14092:50:50::1;14120:22;14092:50;::::0;;14158:233;;16289:25:61;;;16330:18;;;16323:34;;;-1:-1:-1;;;;;16393:32:61;;;16373:18;;;16366:60;16457:2;16442:18;;16435:34;;;16513:14;;16506:22;16500:3;16485:19;;16478:51;14158:233:50;;14231:10:::1;::::0;14158:233;::::1;::::0;14092:25;;14158:233:::1;::::0;16276:3:61;14158:233:50;;;;;;::::1;12752:1646;;;12460:1938:::0;;;;;;;;:::o;22619:1025::-;22687:29;22719:25;:23;:25::i;:::-;22754:36;22793:24;;;:15;;;:24;;;;;;;;22850:16;;;:25;;;;;;;22687:57;;-1:-1:-1;22793:24:50;22850:25;;22989:33;22979:6;:43;;;;;;;;:::i;:::-;;:89;;;-1:-1:-1;23048:20:50;23038:6;:30;;;;;;;;:::i;:::-;;22979:89;:138;;;-1:-1:-1;23094:23:50;23084:6;:33;;;;;;;;:::i;:::-;;22979:138;22962:233;;;23168:7;23177:6;23149:35;;-1:-1:-1;;;23149:35:50;;;;;;;;;:::i;22962:233::-;23295:11;:31;;;23277:15;:49;23273:365;;;23342:25;;;;:16;;;:25;;;;;;:61;;-1:-1:-1;;23342:61:50;23370:33;23342:61;;;23449:32;23342:25;;-1:-1:-1;;;;;;;;;;;23449:32:50;;23273:365;;;23603:23;;23578:49;;-1:-1:-1;;;23578:49:50;;;;23594:7;;-1:-1:-1;;;;;23603:23:50;;;;23578:49;;;:::i;5222:210:4:-;5310:4;5326:23;5352:19;:17;:19::i;:::-;-1:-1:-1;;;;;5388:27:4;;;;;;;:20;;;;;:27;;;;;;;;:37;;;;;;;;;;-1:-1:-1;;5388:37:4;;;;;5222:210::o;25785:773:50:-;25984:10;10163:25;10180:7;10163:16;:25::i;:::-;26048:13:::1;26064:22;26078:7;26064:13;:22::i;:::-;26048:38;;26120:29;26152:25;:23;:25::i;:::-;26120:57:::0;-1:-1:-1;26262:20:50::1;26233:25;::::0;;;:16:::1;::::0;;::::1;:25;::::0;;;;;;::::1;;::::0;:49;::::1;;;;;;:::i;:::-;;26229:141;;26333:25;::::0;;;:16:::1;::::0;;::::1;:25;::::0;;;;;;;26305:54;;-1:-1:-1;;;26305:54:50;;::::1;::::0;26324:7;;26333:25:::1;::::0;;::::1;::::0;26305:54:::1;;:::i;26229:141::-;26380:16;26399:24:::0;;;:15:::1;::::0;::::1;:24;::::0;;;;:33:::1;;::::0;-1:-1:-1;;;;;26399:33:50::1;26443:108;26465:5:::0;26399:33;26415:7;26491:12;26505:18;26525:25;26443:21:::1;:108::i;5801:175::-:0;5933:27;;5801:175::o;3443:202:0:-;3528:4;-1:-1:-1;;;;;;3551:47:0;;-1:-1:-1;;;3551:47:0;;:87;;;3602:36;3626:11;3602:23;:36::i;1957:156:4:-;2076:21;;1957:156::o;17910:241::-;17973:7;17992:13;18008:17;18017:7;18008:8;:17::i;:::-;17992:33;-1:-1:-1;;;;;;18039:19:4;;18035:88;;18081:31;;-1:-1:-1;;;18081:31:4;;;;;2637:25:61;;;2610:18;;18081:31:4;2491:177:61;7372:184:4;7442:7;7461:23;7487:19;:17;:19::i;:::-;7523:26;;;;:17;;:26;;-1:-1:-1;;7523:26:4;;;;-1:-1:-1;;;;;7523:26:4;;7372:184::o;16076:120::-;16156:33;16165:2;16169:7;16178:4;16184;16156:8;:33::i;1581:186:5:-;1720:31;;1581:186::o;24121:161:50:-;24201:20;24213:7;24201:11;:20::i;:::-;24196:80;;24257:7;24244:21;;-1:-1:-1;;;24244:21:50;;;;;;;;:::i;15334:1418:51:-;15483:20;15574:10;-1:-1:-1;;;;;15574:22:51;;;15570:104;;15619:44;;-1:-1:-1;;;15619:44:51;;;;;2637:25:61;;;2610:18;;15619:44:51;2491:177:61;15570:104:51;15684:25;15712:36;:34;:36::i;:::-;:47;:56;;;;;;;;;;;;-1:-1:-1;15844:34:51;15825:15;;;;-1:-1:-1;;;15825:15:51;;;;:53;;;;;;;;:::i;:::-;;15821:150;;15935:7;15944:8;:15;;;;;;;;;;;;15901:59;;-1:-1:-1;;;15901:59:51;;;;;;;;;:::i;15821:150::-;16035:21;;:42;;16031:152;;16131:21;;16100:72;;-1:-1:-1;;;16100:72:51;;;;16122:7;;16154:17;;16100:72;;;:::i;16031:152::-;16259:22;;;;-1:-1:-1;;;16259:22:51;;;;16254:98;;16304:37;;-1:-1:-1;;;16304:37:51;;;;;2637:25:61;;;2610:18;;16304:37:51;2491:177:61;16254:98:51;16400:25;;;;-1:-1:-1;;;16400:25:51;;;;16395:89;;16469:4;16441:25;;:32;;-1:-1:-1;;;;16441:32:51;-1:-1:-1;;;16441:32:51;;;16395:89;16529:15;;;:54;;-1:-1:-1;;;;16529:54:51;-1:-1:-1;;;16529:54:51;;;16676:30;;16698:7;;16676:30;;-1:-1:-1;;16676:30:51;16724:21;;-1:-1:-1;15334:1418:51;;;;;;:::o;17034:1157:50:-;-1:-1:-1;;;;;17204:39:50;;17200:985;;17327:13;17314:9;:26;17310:112;;17382:9;17393:13;17367:40;;-1:-1:-1;;;17367:40:50;;;;;;;;;:::i;17310:112::-;17484:39;-1:-1:-1;;;;;17484:28:50;;17513:9;17484:28;:39::i;17200:985::-;-1:-1:-1;;;;;;;17544:41:50;;;17540:645;;17718:9;:13;17714:93;;17758:34;;-1:-1:-1;;;17758:34:50;;17782:9;17758:34;;;2637:25:61;2610:18;;17758:34:50;2491:177:61;17540:645:50;17926:9;:13;17922:93;;17966:34;;-1:-1:-1;;;17966:34:50;;17990:9;17966:34;;;2637:25:61;2610:18;;17966:34:50;2491:177:61;17922:93:50;18099:75;-1:-1:-1;;;;;18099:37:50;;18137:10;18149:9;18160:13;18099:37;:75::i;20105:2386::-;20176:29;20208:25;:23;:25::i;:::-;20243:20;20266:25;;;:16;;;:25;;;;;;20176:57;;-1:-1:-1;20266:25:50;;;;;20243:20;20505:57;20283:7;20505:48;:57::i;:::-;20396:166;;-1:-1:-1;20396:166:50;-1:-1:-1;20723:34:50;20701:18;:56;;;;;;;;:::i;:::-;;20697:616;;20773:13;20789:22;20803:7;20789:13;:22::i;:::-;20825:16;20844:24;;;:15;;;:24;;;;;:33;;;20773:38;;-1:-1:-1;;;;;;20844:33:50;;;;20954:29;;:10;:29;20950:353;;21073:52;21093:5;21100:8;21110:7;21119:2;21123:1;21073:19;:52::i;:::-;20950:353;;;21234:54;21256:5;21263:8;21273:7;21282:2;21286:1;21234:21;:54::i;:::-;20759:554;;20697:616;21443:20;21433:6;:30;;;;;;;;:::i;:::-;;:89;;;-1:-1:-1;21489:33:50;21479:6;:43;;;;;;;;:::i;:::-;;21433:89;:140;;;-1:-1:-1;21548:25:50;21538:6;:35;;;;;;;;:::i;:::-;;21433:140;21416:199;;;21598:7;;;;20105:2386;:::o;21416:199::-;21688:23;21678:6;:33;;;;;;;;:::i;:::-;;21674:106;;21753:7;21762:6;21734:35;;-1:-1:-1;;;21734:35:50;;;;;;;;;:::i;21674:106::-;21977:36;22016:24;;;:15;;;:24;;;;;22073:31;;;;22055:15;:49;22051:434;;;22175:25;;;;:16;;;:25;;;;;;:61;;-1:-1:-1;;22175:61:50;22203:33;22175:61;;;22282:32;22175:25;;-1:-1:-1;;;;;;;;;;;22282:32:50;;22328:7;;;;;20105:2386;:::o;22051:434::-;22450:23;;22425:49;;-1:-1:-1;;;22425:49:50;;;;22441:7;;-1:-1:-1;;;;;22450:23:50;;;;22425:49;;;:::i;5494:578:4:-;-1:-1:-1;;;;;5588:16:4;;5584:87;;5657:1;5627:33;;-1:-1:-1;;;5627:33:4;;;;;;;;:::i;5584:87::-;5889:21;5913:34;5921:2;5925:7;966:10:7;5913:7:4;:34::i;:::-;5889:58;;5978:4;-1:-1:-1;;;;;5961:21:4;:13;-1:-1:-1;;;;;5961:21:4;;5957:109;;6026:4;6032:7;6041:13;6005:50;;-1:-1:-1;;;6005:50:4;;;;;;;;;;:::i;2787:177:0:-;2920:28;;2787:177::o;13127:1067:51:-;13342:5;13349:8;4595:39;4618:5;4625:8;4595:22;:39::i;:::-;13369:25:::1;13397:36;:34;:36::i;:::-;:47;:56:::0;;;::::1;::::0;;;;;;;;-1:-1:-1;13529:34:51::1;13510:15;::::0;::::1;::::0;-1:-1:-1;;;13510:15:51;::::1;;;:53;::::0;::::1;;;;;;:::i;:::-;;13506:150;;13620:7;13629:8;:15;;;;;;;;;;;;13586:59;;-1:-1:-1::0;;;13586:59:51::1;;;;;;;;;:::i;13506:150::-;13730:24;::::0;::::1;::::0;-1:-1:-1;;;;;13730:24:51::1;13716:10;:38;13712:127;;13777:51;::::0;-1:-1:-1;;;13777:51:51;;::::1;::::0;::::1;2637:25:61::0;;;2610:18;;13777:51:51::1;2491:177:61::0;13712:127:51::1;13882:25;::::0;;::::1;:44:::0;;::::1;13936:46:::0;;::::1;-1:-1:-1::0;;;13936:46:51::1;-1:-1:-1::0;;;;13882:44:51;;::::1;-1:-1:-1::0;;;13882:44:51::1;13936:46:::0;;;;-1:-1:-1;;;;13936:46:51;;;;;;;::::1;::::0;;14028:15:::1;::::0;::::1;:54:::0;;-1:-1:-1;;;;14028:54:51::1;-1:-1:-1::0;;;13882:25:51;14028:54:::1;;;;;14142:7;14120:67;14151:16;14169:17;14120:67;;;;;;;:::i;:::-;;;;;;;;13359:835;13127:1067:::0;;;;;;;:::o;4148:103:0:-;4214:30;4225:4;966:10:7;4214::0;:30::i;7270:387::-;7347:4;7363:30;7396:26;:24;:26::i;:::-;7363:59;;7437:22;7445:4;7451:7;7437;:22::i;:::-;7432:219;;7475:8;:14;;;;;;;;;;;-1:-1:-1;;;;;7475:31:0;;;;;;;;;:38;;-1:-1:-1;;7475:38:0;7509:4;7475:38;;;7559:12;966:10:7;;887:96;7559:12:0;-1:-1:-1;;;;;7532:40:0;7550:7;-1:-1:-1;;;;;7532:40:0;7544:4;7532:40;;;;;;;;;;7593:4;7586:11;;;;;7432:219;7635:5;7628:12;;;;;7892:388;7970:4;7986:30;8019:26;:24;:26::i;:::-;7986:59;;8059:22;8067:4;8073:7;8059;:22::i;:::-;8055:219;;;8131:5;8097:14;;;;;;;;;;;-1:-1:-1;;;;;8097:31:0;;;;;;;;;;:39;;-1:-1:-1;;8097:39:0;;;8155:40;966:10:7;;8097:14:0;;8155:40;;8131:5;8155:40;8216:4;8209:11;;;;;4603:312:3;4683:4;-1:-1:-1;;;;;4692:6:3;4675:23;;;:120;;;4789:6;-1:-1:-1;;;;;4753:42:3;:32;-1:-1:-1;;;;;;;;;;;1519:53:22;-1:-1:-1;;;;;1519:53:22;;1441:138;4753:32:3;-1:-1:-1;;;;;4753:42:3;;;4675:120;4658:251;;;4869:29;;-1:-1:-1;;;4869:29:3;;;;;;;;;;;4658:251;4603:312::o;11785:106:50:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;6057:538:3:-;6174:17;-1:-1:-1;;;;;6156:50:3;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6156:52:3;;;;;;;;-1:-1:-1;;6156:52:3;;;;;;;;;;;;:::i;:::-;;;6152:437;;6560:17;6518:60;;-1:-1:-1;;;6518:60:3;;;;;;;;:::i;6152:437::-;-1:-1:-1;;;;;;;;;;;6250:40:3;;6246:120;;6317:34;;-1:-1:-1;;;6317:34:3;;;;;2637:25:61;;;2610:18;;6317:34:3;2491:177:61;6246:120:3;6379:54;6409:17;6428:4;6379:29;:54::i;5032:213::-;5106:4;-1:-1:-1;;;;;5115:6:3;5098:23;;5094:145;;5199:29;;-1:-1:-1;;;5199:29:3;;;;;;;;;;;11265:1856:51;11503:5;11510:8;4595:39;4618:5;4625:8;4595:22;:39::i;:::-;11530:25:::1;11558:36;:34;:36::i;:::-;:47;:56:::0;;;::::1;::::0;;;;;;;;-1:-1:-1;11690:34:51::1;11671:15;::::0;::::1;::::0;-1:-1:-1;;;11671:15:51;::::1;;;:53;::::0;::::1;;;;;;:::i;:::-;;11667:150;;11781:7;11790:8;:15;;;;;;;;;;;;11747:59;;-1:-1:-1::0;;;11747:59:51::1;;;;;;;;;:::i;11667:150::-;11860:36:::0;;;11967:24:::1;::::0;::::1;:37:::0;;11994:10:::1;-1:-1:-1::0;;;;;;11967:37:51;;::::1;::::0;::::1;::::0;;;-1:-1:-1;12045:22:51;::::1;:46:::0;;-1:-1:-1;;;;12101:52:51;-1:-1:-1;;;;;12071:19:51;;::::1;::::0;::::1;-1:-1:-1::0;;;12045:46:51::1;-1:-1:-1::0;;;;12101:52:51;;;;;12130:22;;::::1;::::0;;::::1;-1:-1:-1::0;;;12101:52:51::1;::::0;;;::::1;::::0;;;12198:22:::1;::::0;::::1;:38:::0;;-1:-1:-1;;12246:40:51;12198:38;::::1;::::0;;::::1;::::0;;;::::1;-1:-1:-1::0;;;;12246:40:51;;;;;-1:-1:-1;;;12246:40:51;;::::1;::::0;;;::::1;;::::0;;-1:-1:-1;;;12334:25:51;::::1;;;::::0;:23:::1;:25;::::0;::::1;:::i;:::-;::::0;;::::1;::::0;;;::::1;;::::0;;::::1;;::::0;;::::1;::::0;;::::1;;;::::0;;;12489:24:::1;::::0;::::1;::::0;-1:-1:-1;12451:24:51;::::1;::::0;12527:21;;12397:309:::1;::::0;-1:-1:-1;;;;;12489:24:51;;::::1;::::0;-1:-1:-1;12451:24:51;::::1;::::0;12430:7;;-1:-1:-1;;;;;;;;;;;12397:309:51;::::1;::::0;12527:21;-1:-1:-1;;;12562:22:51;::::1;;::::0;;::::1;::::0;-1:-1:-1;;;12598:25:51;::::1;::::0;;::::1;::::0;-1:-1:-1;;;12637:23:51;;;::::1;::::0;::::1;::::0;12674:22;::::1;;::::0;12397:309:::1;:::i;:::-;;;;;;;;12806:27;::::0;::::1;::::0;12927:25:::1;::::0;::::1;::::0;12752:362:::1;::::0;12785:7;;-1:-1:-1;;;;;;;;;;;12752:362:51;::::1;::::0;12806:27:::1;-1:-1:-1::0;;;12806:27:51;::::1;::::0;::::1;::::0;-1:-1:-1;;;12847:28:51;::::1;::::0;::::1;::::0;-1:-1:-1;;;12889:24:51;;::::1;::::0;::::1;::::0;12927:25;;::::1;::::0;12966:22;;::::1;::::0;::::1;::::0;-1:-1:-1;;;13002:23:51;::::1;::::0;::::1;::::0;-1:-1:-1;;;13039:25:51;::::1;::::0;::::1;::::0;-1:-1:-1;;;13078:26:51;;::::1;::::0;;::::1;::::0;12752:362:::1;:::i;:::-;;;;;;;;11520:1601;11265:1856:::0;;;;;;;;:::o;14200:1128::-;14417:5;14424:8;4595:39;4618:5;4625:8;4595:22;:39::i;:::-;14444:25:::1;14472:36;:34;:36::i;:::-;:47;:56:::0;;;::::1;::::0;;;;;;;;-1:-1:-1;14604:34:51::1;14585:15;::::0;::::1;::::0;-1:-1:-1;;;14585:15:51;::::1;;;:53;::::0;::::1;;;;;;:::i;:::-;;14581:150;;14695:7;14704:8;:15;;;;;;;;;;;;14661:59;;-1:-1:-1::0;;;14661:59:51::1;;;;;;;;;:::i;14581:150::-;14811:24;::::0;::::1;::::0;-1:-1:-1;;;;;14811:24:51::1;14797:10;:38:::0;14793:117:::1;;14858:41;::::0;-1:-1:-1;;;14858:41:51;;::::1;::::0;::::1;2637:25:61::0;;;2610:18;;14858:41:51::1;2491:177:61::0;14793:117:51::1;14942:24;::::0;::::1;:42:::0;;14994:25:::1;::::0;::::1;:50:::0;;14942:42:::1;14994:50:::0;;::::1;-1:-1:-1::0;;14994:50:51;;::::1;::::0;;;::::1;::::0;;;14942:42;::::1;-1:-1:-1::0;;;14942:42:51::1;-1:-1:-1::0;;;;15089:53:51;-1:-1:-1;;;;15089:53:51;;;;-1:-1:-1;;;15089:53:51::1;::::0;;;-1:-1:-1;;;15189:24:51;::::1;;;::::0;:22:::1;:24;::::0;::::1;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;15272:7;15251:70;15281:15;15298:22;15251:70;;;;;;;:::i;8737:170:2:-:0;8870:21;;8737:170::o;2232:149:4:-;6931:20:2;:18;:20::i;:::-;2335:39:4::1;2359:5;2366:7;2335:23;:39::i;3470:384:9:-:0;3519:32;3554:28;:26;:28::i;:::-;3670:9;;3519:63;;-1:-1:-1;;;3670:20:9;3666:88;;3713:30;;-1:-1:-1;;;3713:30:9;;;;;;;;;;;3666:88;1991:1;3828:19;;3470:384::o;13645:460:4:-;-1:-1:-1;;;;;13730:16:4;;13726:87;;13799:1;13769:33;;-1:-1:-1;;;13769:33:4;;;;;;;;:::i;13726:87::-;13822:21;13846:32;13854:2;13858:7;13875:1;13846:7;:32::i;:::-;13822:56;-1:-1:-1;;;;;;13892:27:4;;13888:211;;13942:31;;-1:-1:-1;;;13942:31:4;;;;;2637:25:61;;;2610:18;;13942:31:4;2491:177:61;13888:211:4;14011:4;-1:-1:-1;;;;;13994:21:4;:13;-1:-1:-1;;;;;13994:21:4;;13990:109;;14059:4;14065:7;14074:13;14038:50;;-1:-1:-1;;;14038:50:4;;;;;;;;;;:::i;3860:283:9:-;3908:32;3943:28;:26;:28::i;:::-;1949:1;4113:23;;-1:-1:-1;3860:283:9:o;17306:369:4:-;17409:23;17435:19;:17;:19::i;:::-;17409:45;-1:-1:-1;;;;;;17468:22:4;;17464:91;;17535:8;17513:31;;-1:-1:-1;;;17513:31:4;;;;;;;;:::i;17464:91::-;-1:-1:-1;;;;;17564:27:4;;;;;;;:20;;;:27;;;;;;;;:37;;;;;;;;;;;;;:48;;-1:-1:-1;;17564:48:4;;;;;;;;;;17627:41;;1019::61;;;17627::4;;992:18:61;17627:41:4;;;;;;;17399:276;17306:369;;;:::o;2137:207:51:-;2290:38;;2137:207::o;985:924:33:-;-1:-1:-1;;;;;1165:14:33;;;:18;1161:742;;1203:67;;-1:-1:-1;;;1203:67:33;;-1:-1:-1;;;;;1203:36:33;;;;;:67;;1240:8;;1250:4;;1256:7;;1265:4;;1203:67;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1203:67:33;;;;;;;;-1:-1:-1;;1203:67:33;;;;;;;;;;;;:::i;:::-;;;1199:694;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1560:6;:13;1577:1;1560:18;1556:323;;1700:2;1664:39;;-1:-1:-1;;;1664:39:33;;;;;;;;:::i;1556:323::-;1831:6;1825:13;1816:6;1812:2;1808:15;1801:38;1199:694;-1:-1:-1;;;;;;1317:51:33;;-1:-1:-1;;;1317:51:33;1313:182;;1473:2;1437:39;;-1:-1:-1;;;1437:39:33;;;;;;;;:::i;1199:694::-;985:924;;;;;:::o;9604:1655:51:-;9785:5;9792:8;4595:39;4618:5;4625:8;4595:22;:39::i;:::-;9812:25:::1;9840:36;:34;:36::i;:::-;:47;:56:::0;;;::::1;::::0;;;;;;;;-1:-1:-1;9972:34:51::1;9953:15;::::0;::::1;::::0;-1:-1:-1;;;9953:15:51;::::1;;;:53;::::0;::::1;;;;;;:::i;:::-;;9949:150;;10063:7;10072:8;:15;;;;;;;;;;;;10029:59;;-1:-1:-1::0;;;10029:59:51::1;;;;;;;;;:::i;9949:150::-;10163:21:::0;;:42;::::1;10159:152;;10259:21:::0;;10228:72:::1;::::0;-1:-1:-1;;;10228:72:51;;::::1;::::0;10250:7;;10282:17;;10228:72:::1;;;:::i;10159:152::-;-1:-1:-1::0;;;;;10360:19:51;::::1;:10;:19:::0;10356:142:::1;;10420:4;10395:22:::0;::::1;:29:::0;;-1:-1:-1;;;;10395:29:51::1;-1:-1:-1::0;;;10395:29:51::1;::::0;;10356:142:::1;;;10483:4;10455:25:::0;::::1;:32:::0;;-1:-1:-1;;;;10455:32:51::1;-1:-1:-1::0;;;10455:32:51::1;::::0;;10356:142:::1;10627:24;::::0;::::1;::::0;;10589;::::1;::::0;10665:21;;10535:309:::1;::::0;-1:-1:-1;;;;;10627:24:51;;::::1;::::0;10589;;::::1;::::0;10568:7;;-1:-1:-1;;;;;;;;;;;10535:309:51;::::1;::::0;10665:21;;10700:22:::1;-1:-1:-1::0;;;10700:22:51;::::1;::::0;::::1;::::0;-1:-1:-1;;;10736:25:51;::::1;::::0;;::::1;::::0;10775:23:::1;-1:-1:-1::0;;;10775:23:51;;;::::1;::::0;::::1;::::0;10812:22;;::::1;::::0;;::::1;::::0;10535:309:::1;:::i;:::-;;;;;;;;10944:27;::::0;::::1;::::0;11065:25:::1;::::0;::::1;::::0;10890:362:::1;::::0;10923:7;;-1:-1:-1;;;;;;;;;;;10890:362:51;::::1;::::0;10944:27:::1;-1:-1:-1::0;;;10944:27:51;::::1;::::0;::::1;::::0;-1:-1:-1;;;10985:28:51;::::1;::::0;::::1;::::0;-1:-1:-1;;;11027:24:51;;::::1;::::0;::::1;::::0;11065:25;;::::1;::::0;11104:22;;::::1;::::0;::::1;::::0;-1:-1:-1;;;11140:23:51;::::1;::::0;::::1;::::0;-1:-1:-1;;;11177:25:51;::::1;::::0;::::1;::::0;-1:-1:-1;;;11216:26:51;;::::1;::::0;;::::1;::::0;10890:362:::1;:::i;:::-;;;;;;;;9802:1457;9604:1655:::0;;;;;;:::o;2115:68:5:-;6931:20:2;:18;:20::i;2128:670:6:-;2201:13;2226:33;2262:29;:27;:29::i;:::-;2226:65;;2301:22;2315:7;2301:13;:22::i;:::-;-1:-1:-1;2334:23:6;2360:21;;;;;;;;;;2334:47;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2391:18;2412:10;4544:9:4;;;;;;;;;-1:-1:-1;4544:9:4;;;4468:92;2412:10:6;2391:31;;2501:4;2495:18;2517:1;2495:23;2491:70;;-1:-1:-1;2541:9:6;2128:670;-1:-1:-1;;;2128:670:6:o;2491:70::-;2660:23;;:27;2656:95;;2724:4;2730:9;2710:30;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2703:37;;;;;2128:670;;;:::o;2656:95::-;2768:23;2783:7;2768:14;:23::i;:::-;2761:30;2128:670;-1:-1:-1;;;;;2128:670:6:o;12240:100:4:-;12307:26;12317:2;12321:7;12307:26;;;;;;;;;;;;:9;:26::i;2917:244:6:-;3008:33;3044:29;:27;:29::i;:::-;3083:12;:21;;;;;;;;;;3008:65;;-1:-1:-1;3083:33:6;3107:9;3083:21;:33;:::i;:::-;-1:-1:-1;3131:23:6;;2637:25:61;;;3131:23:6;;2625:2:61;2610:18;3131:23:6;;;;;;;2998:163;2917:244;;:::o;14503:602:50:-;14790:29;14822:25;:23;:25::i;:::-;14885:213;;;;;;;;-1:-1:-1;;;;;14885:213:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14858:24:50;;;:15;;;;:24;;;;;:240;;;;-1:-1:-1;;;;;;14858:240:50;;;;;;;;;;;;;;-1:-1:-1;14858:240:50;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14858:240:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14858:240:50;;;;;;;;;;14503:602::o;6732:2503:51:-;6987:5;6994:8;4595:39;4618:5;4625:8;4595:22;:39::i;:::-;7014:25:::1;7042:36;:34;:36::i;:::-;:47;:56:::0;;;::::1;::::0;;;;;;;;-1:-1:-1;7199:36:51::1;7180:15;::::0;::::1;::::0;-1:-1:-1;;;7180:15:51;::::1;;;:55;::::0;::::1;;;;;;:::i;:::-;;:124;;;-1:-1:-1::0;7270:34:51::1;7251:15;::::0;::::1;::::0;-1:-1:-1;;;7251:15:51;::::1;;;:53;::::0;::::1;;;;;;:::i;:::-;;7180:124;7163:243;;;7370:7;7379:8;:15;;;;;;;;;;;;7336:59;;-1:-1:-1::0;;;7336:59:51::1;;;;;;;;;:::i;7163:243::-;7498:38;7479:15;::::0;::::1;::::0;-1:-1:-1;;;7479:15:51;::::1;;;:57;::::0;::::1;;;;;;:::i;:::-;::::0;7475:125:::1;;7552:24;::::0;::::1;:37:::0;;-1:-1:-1;;;;;;7552:37:51::1;7579:10;7552:37;::::0;;7475:125:::1;7717:10;7690:8;:24;;;:37;;;;;-1:-1:-1::0;;;;;7690:37:51::1;;;;;-1:-1:-1::0;;;;;7690:37:51::1;;;;;;7791:12;7767:8;:21;;:36;;;;7884:5;-1:-1:-1::0;;;;;7870:19:51::1;:10;-1:-1:-1::0;;;;;7870:19:51::1;;7844:8;:22;;;:46;;;;;;;;;;;;;;;;;;7943:8;-1:-1:-1::0;;;;;7929:22:51::1;:10;-1:-1:-1::0;;;;;7929:22:51::1;;7900:8;:25;;;:52;;;;;;;;;;;;;;;;;;8032:18;8002:8;:27;;;:48;;;;;;;;;;;;;;;;;;8091:25;8060:8;:28;;;:56;;;;;;;;;;;;;;;;;;8185:1;8158:8;:24;;;:28;;;;;;;;;;;;;;;;;;8224:1;8196:8;:25;;;:29;;;;;;;;;;;;;;;;;;8260:1;8235:8;:22;;;:26;;;;;;;;;;;;;;;;;;8297:1;8271:8;:23;;;:27;;;;;;;;;;;;;;;;;;8336:1;8308:8;:25;;;:29;;;;;;;;;;;;;;;;;;8376:1;8347:8;:26;;;:30;;;;;;;;;;;;;;;;;;8439:34;8421:8;:15;;;:52;;;;;;;;;;;;;;;;;;;:::i;:::-;;;::::0;;-1:-1:-1;8603:24:51::1;::::0;::::1;::::0;;8565;::::1;::::0;8641:21;;8511:309:::1;::::0;-1:-1:-1;;;;;8603:24:51;;::::1;::::0;8565;;::::1;::::0;8544:7;;-1:-1:-1;;;;;;;;;;;8511:309:51;::::1;::::0;8641:21;;8676:22:::1;-1:-1:-1::0;;;8676:22:51;::::1;::::0;::::1;::::0;-1:-1:-1;;;8712:25:51;::::1;::::0;;::::1;::::0;8751:23:::1;-1:-1:-1::0;;;8751:23:51;;;::::1;::::0;::::1;::::0;8788:22;;::::1;::::0;;::::1;::::0;8511:309:::1;:::i;1844:218:6:-:0;1957:4;-1:-1:-1;;;;;;1980:35:6;;-1:-1:-1;;;1980:35:6;;:75;;;2019:36;2043:11;2019:23;:36::i;7084:172:4:-;7150:7;7169:23;7195:19;:17;:19::i;:::-;7231:18;;;;:9;;:18;;-1:-1:-1;;7231:18:4;;;;-1:-1:-1;;;;;7231:18:4;;7084:172::o;16378:719::-;16482:23;16508:19;:17;:19::i;:::-;16482:45;;16593:9;:31;;;-1:-1:-1;;;;;;16606:18:4;;;;16593:31;16589:460;;;16640:13;16656:22;16670:7;16656:13;:22::i;:::-;16640:38;-1:-1:-1;;;;;;16806:18:4;;;;;;:35;;;16837:4;-1:-1:-1;;;;;16828:13:4;:5;-1:-1:-1;;;;;16828:13:4;;;16806:35;:69;;;;;16846:29;16863:5;16870:4;16846:16;:29::i;:::-;16845:30;16806:69;16802:142;;;16924:4;16902:27;;-1:-1:-1;;;16902:27:4;;;;;;;;:::i;16802:142::-;16962:9;16958:81;;;17016:7;17012:2;-1:-1:-1;;;;;16996:28:4;17005:5;-1:-1:-1;;;;;16996:28:4;;;;;;;;;;;16958:81;16626:423;16589:460;17059:26;;;;:17;;:26;;-1:-1:-1;;17059:26:4;;;:31;;-1:-1:-1;;;;;;17059:31:4;-1:-1:-1;;;;;17059:31:4;;;;;;;;;;16378:719::o;1290:349:34:-;1399:6;1375:21;:30;1371:125;;;1455:21;1478:6;1428:57;;-1:-1:-1;;;1428:57:34;;;;;;;;;:::i;1371:125::-;1507:12;1525:9;-1:-1:-1;;;;;1525:14:34;1547:6;1525:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1506:52;;;1573:7;1568:65;;1603:19;;-1:-1:-1;;;1603:19:34;;;;;;;;;;;1670:188:28;1797:53;;;-1:-1:-1;;;;;22709:15:61;;;1797:53:28;;;22691:34:61;22761:15;;22741:18;;;22734:43;22793:18;;;;22786:34;;;1797:53:28;;;;;;;;;;22626:18:61;;;;1797:53:28;;;;;;;;-1:-1:-1;;;;;1797:53:28;-1:-1:-1;;;1797:53:28;;;1770:81;;1790:5;;1770:19;:81::i;4658:369:51:-;4770:33;4805:23;4861:36;:34;:36::i;:::-;:47;:56;;;;;;;;;;;:63;;;-1:-1:-1;;;4861:63:51;;;;4938:36;:34;:36::i;:::-;:47;:56;;;;;;;;;:72;;;4840:180;;-1:-1:-1;;;;;4938:72:51;;;;4658:369;-1:-1:-1;;4658:369:51:o;31168:230:50:-;31333:7;31359:32;31373:2;31377:7;31386:4;31359:13;:32::i;:::-;31352:39;31168:230;-1:-1:-1;;;;31168:230:50:o;4319:198:51:-;4412:10;-1:-1:-1;;;;;4412:19:51;;;;;;:45;;-1:-1:-1;4435:10:51;-1:-1:-1;;;;;4435:22:51;;;;4412:45;4408:103;;;4480:20;;-1:-1:-1;;;4480:20:51;;;;;;;;;;;4381:197:0;4469:22;4477:4;4483:7;4469;:22::i;:::-;4464:108;;4547:7;4556:4;4514:47;;-1:-1:-1;;;4514:47:0;;;;;;;;;:::i;2264:344:22:-;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:22;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;2454:148::-;2573:18;:16;:18::i;7084:141:2:-;7151:17;:15;:17::i;:::-;7146:73;;7191:17;;-1:-1:-1;;;7191:17:2;;;;;;;;;;;2387:219:4;6931:20:2;:18;:20::i;:::-;2500:23:4::1;2526:19;:17;:19::i;:::-;2500:45:::0;-1:-1:-1;2500:45:4;2555:15:::1;2565:5:::0;2500:45;2555:15:::1;:::i;:::-;-1:-1:-1::0;2580:9:4::1;::::0;::::1;:19;2592:7:::0;2580:9;:19:::1;:::i;2395:183:9:-:0;2532:30;;2395:183::o;1435:186:6:-;1574:31;;1435:186::o;3971:255:4:-;4035:13;4060:22;4074:7;4060:13;:22::i;:::-;;4093:21;4117:10;4544:9;;;;;;;;;-1:-1:-1;4544:9:4;;;4468:92;4117:10;4093:34;;4168:1;4150:7;4144:21;:25;:75;;;;;;;;;;;;;;;;;4186:7;4195:18;:7;:16;:18::i;:::-;4172:42;;;;;;;;;:::i;:::-;;;;;;;;;;;;;4137:82;3971:255;-1:-1:-1;;;3971:255:4:o;12561:207::-;12655:18;12661:2;12665:7;12655:5;:18::i;:::-;12683:78;966:10:7;12739:1:4;12743:2;12747:7;12756:4;12683:33;:78::i;2333:233:5:-;2446:4;-1:-1:-1;;;;;;2469:50:5;;-1:-1:-1;;;2469:50:5;;:90;;;2523:36;2547:11;2523:23;:36::i;7738:720:28:-;7818:18;7846:19;7984:4;7981:1;7974:4;7968:11;7961:4;7955;7951:15;7948:1;7941:5;7934;7929:60;8041:7;8031:176;;8085:4;8079:11;8130:16;8127:1;8122:3;8107:40;8176:16;8171:3;8164:29;8031:176;-1:-1:-1;;8284:1:28;8278:8;8234:16;;-1:-1:-1;8310:15:28;;:68;;8362:11;8377:1;8362:16;;8310:68;;;-1:-1:-1;;;;;8328:26:28;;;:31;8310:68;8306:146;;;8434:5;8401:40;;-1:-1:-1;;;8401:40:28;;;;;;;;:::i;3658:625:5:-;3753:7;3772:21;3796:32;3810:2;3814:7;3823:4;3796:13;:32::i;:::-;3772:56;-1:-1:-1;;;;;;3843:27:5;;3839:210;;3886:40;3918:7;3886:31;:40::i;:::-;3839:210;;;3964:2;-1:-1:-1;;;;;3947:19:5;:13;-1:-1:-1;;;;;3947:19:5;;3943:106;;3982:56;4015:13;4030:7;3982:32;:56::i;:::-;-1:-1:-1;;;;;4062:16:5;;4058:188;;4094:45;4131:7;4094:36;:45::i;:::-;4058:188;;;4177:2;-1:-1:-1;;;;;4160:19:5;:13;-1:-1:-1;;;;;4160:19:5;;4156:90;;4195:40;4223:2;4227:7;4195:27;:40::i;1671:281:22:-;1748:17;-1:-1:-1;;;;;1748:29:22;;1781:1;1748:34;1744:119;;1834:17;1805:47;;-1:-1:-1;;;1805:47:22;;;;;;;;:::i;1744:119::-;-1:-1:-1;;;;;;;;;;;1872:73:22;;-1:-1:-1;;;;;;1872:73:22;-1:-1:-1;;;;;1872:73:22;;;;;;;;;;1671:281::o;3900:253:34:-;3983:12;4008;4022:23;4049:6;-1:-1:-1;;;;;4049:19:34;4069:4;4049:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4007:67;;;;4091:55;4118:6;4126:7;4135:10;4091:26;:55::i;6113:122:22:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:22;;;;;;;;;;;8487:120:2;8537:4;8560:26;:24;:26::i;:::-;:40;-1:-1:-1;;;8560:40:2;;;;;;-1:-1:-1;8487:120:2:o;637:632:39:-;693:13;742:14;759:17;770:5;759:10;:17::i;:::-;779:1;759:21;742:38;;794:20;828:6;-1:-1:-1;;;;;817:18:39;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;817:18:39;-1:-1:-1;794:41:39;-1:-1:-1;924:28:39;;;940:2;924:28;979:247;-1:-1:-1;;1010:5:39;-1:-1:-1;;;1109:2:39;1098:14;;1093:32;1010:5;1080:46;1170:2;1161:11;;;-1:-1:-1;1190:21:39;979:247;1190:21;-1:-1:-1;1246:6:39;637:632;-1:-1:-1;;;637:632:39:o;11562:327:4:-;-1:-1:-1;;;;;11629:16:4;;11625:87;;11698:1;11668:33;;-1:-1:-1;;;11668:33:4;;;;;;;;:::i;11625:87::-;11721:21;11745:32;11753:2;11757:7;11774:1;11745:7;:32::i;:::-;11721:56;-1:-1:-1;;;;;;11791:27:4;;;11787:96;;11869:1;11841:31;;-1:-1:-1;;;11841:31:4;;;;;;;;:::i;2673:311::-;2786:4;-1:-1:-1;;;;;;2821:40:4;;-1:-1:-1;;;2821:40:4;;:104;;-1:-1:-1;;;;;;;2877:48:4;;-1:-1:-1;;;2877:48:4;2821:104;:156;;;-1:-1:-1;;;;;;;;;;1134:40:10;;;2941:36:4;1035:146:10;10384:856:4;10470:7;10489:23;10515:19;:17;:19::i;:::-;10489:45;;10544:12;10559:17;10568:7;10559:8;:17::i;:::-;10544:32;-1:-1:-1;;;;;;10636:18:4;;;10632:86;;10670:37;10687:4;10693;10699:7;10670:16;:37::i;:::-;-1:-1:-1;;;;;10762:18:4;;;10758:258;;10878:48;10895:1;10899:7;10916:1;10920:5;10878:8;:48::i;:::-;-1:-1:-1;;;;;10969:17:4;;;;;;:11;;;:17;;;;;:22;;-1:-1:-1;;10969:22:4;;;10758:258;-1:-1:-1;;;;;11030:16:4;;;11026:109;;-1:-1:-1;;;;;11090:15:4;;;;;;:11;;;:15;;;;;:20;;11109:1;11090:20;;;11026:109;11145:18;;;;:9;;;:18;;;;;;:23;;-1:-1:-1;;;;;;11145:23:4;-1:-1:-1;;;;;11145:23:4;;;;;;;;;11184:27;;11145:18;;11184:27;;;;;;;11229:4;10384:856;-1:-1:-1;;;;;10384:856:4:o;5065:242:5:-;5141:33;5177:29;:27;:29::i;:::-;5245:12;;;:19;;5216:26;;;;:17;;;;:26;;;;;;;:48;;;5274:26;;;;;;;;;;;;;;;-1:-1:-1;5065:242:5:o;5924:1138::-;6015:33;6051:29;:27;:29::i;:::-;6015:65;;6261:22;6286:15;6296:4;6286:9;:15::i;:::-;6311:18;6332:28;;;:19;;;:28;;;;;;;;;-1:-1:-1;;;;;6435:20:5;;;;;;;;;;;6261:40;;-1:-1:-1;6332:28:5;6559;;;6555:327;;6603:19;6625:35;;;;;;;;;;;;6675:31;;;;;;:45;;;6792:32;;:19;;;:32;;;;;:45;;;6555:327;6975:28;;;;:19;;;;:28;;;;;;;;6968:35;;;7020;;;;;;;;;7013:42;;;;-1:-1:-1;;5924:1138:5:o;7350:1150::-;7431:33;7467:29;:27;:29::i;:::-;7699:12;;;:19;7431:65;;-1:-1:-1;7674:22:5;;7699:23;;7721:1;;7699:23;:::i;:::-;7732:18;7753:26;;;:17;;;:26;;;;;;8123:12;;;:28;;7674:48;;-1:-1:-1;7753:26:5;;7674:48;;8123:28;;;;;;:::i;:::-;;;;;;;;;8101:50;;8189:11;8162:1;:12;;8175:10;8162:24;;;;;;;;:::i;:::-;;;;;;;;;;;;:38;;;;8268:30;;;:17;;;:30;;;;;;;:43;;;8439:26;;;;;8432:33;8475:12;;;:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;7421:1079;;;;7350:1150;:::o;4577:293::-;4661:33;4697:29;:27;:29::i;:::-;4661:65;;4736:14;4769:1;4753:13;4763:2;4753:9;:13::i;:::-;:17;;;;:::i;:::-;-1:-1:-1;;;;;4780:18:5;;;:14;:18;;;;;;;;;;;:26;;;;;;;;:36;;;4826:28;;;:19;;;;:28;;;-1:-1:-1;4826:28:5;:37;4577:293::o;4421:582:34:-;4565:12;4594:7;4589:408;;4617:19;4625:10;4617:7;:19::i;:::-;4589:408;;;4841:17;;:22;:49;;;;-1:-1:-1;;;;;;4867:18:34;;;:23;4841:49;4837:119;;;4934:6;4917:24;;-1:-1:-1;;;4917:24:34;;;;;;;;:::i;4837:119::-;-1:-1:-1;4976:10:34;4969:17;;25316:916:42;25369:7;;-1:-1:-1;;;25444:17:42;;25440:103;;-1:-1:-1;;;25481:17:42;;;-1:-1:-1;25526:2:42;25516:12;25440:103;-1:-1:-1;;;25560:5:42;:17;25556:103;;-1:-1:-1;;;25597:17:42;;;-1:-1:-1;25642:2:42;25632:12;25556:103;25685:8;25676:5;:17;25672:103;;25722:8;25713:17;;;-1:-1:-1;25758:2:42;25748:12;25672:103;25801:7;25792:5;:16;25788:100;;25837:7;25828:16;;;-1:-1:-1;25872:1:42;25862:11;25788:100;25914:7;25905:5;:16;25901:100;;25950:7;25941:16;;;-1:-1:-1;25985:1:42;25975:11;25901:100;26027:7;26018:5;:16;26014:100;;26063:7;26054:16;;;-1:-1:-1;26098:1:42;26088:11;26014:100;26140:7;26131:5;:16;26127:66;;26177:1;26167:11;26219:6;25316:916;-1:-1:-1;;25316:916:42:o;8571:368:4:-;8683:38;8697:5;8704:7;8713;8683:13;:38::i;:::-;8678:255;;-1:-1:-1;;;;;8741:19:4;;8737:186;;8787:31;;-1:-1:-1;;;8787:31:4;;;;;2637:25:61;;;2610:18;;8787:31:4;2491:177:61;8737:186:4;8891:7;8900;8864:44;;-1:-1:-1;;;8864:44:4;;;;;;;;;:::i;5543:487:34:-;5674:17;;:21;5670:354;;5871:10;5865:17;5927:15;5914:10;5910:2;5906:19;5899:44;5670:354;5994:19;;-1:-1:-1;;;5994:19:34;;;;;;;;;;;7867:272:4;7970:4;-1:-1:-1;;;;;8005:21:4;;;;;;:127;;;8052:7;-1:-1:-1;;;;;8043:16:4;:5;-1:-1:-1;;;;;8043:16:4;;:52;;;;8063:32;8080:5;8087:7;8063:16;:32::i;:::-;8043:88;;;;8124:7;-1:-1:-1;;;;;8099:32:4;:21;8112:7;8099:12;:21::i;:::-;-1:-1:-1;;;;;8099:32:4;;;7867:272;-1:-1:-1;;;;7867:272:4:o;14:180:61:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:61;;14:180;-1:-1:-1;14:180:61:o;199:289::-;388:25;;;-1:-1:-1;;;;;449:32:61;444:2;429:18;;422:60;376:2;361:18;;199:289::o;493:131::-;-1:-1:-1;;;;;;567:32:61;;557:43;;547:71;;614:1;611;604:12;629:245;687:6;740:2;728:9;719:7;715:23;711:32;708:52;;;756:1;753;746:12;708:52;795:9;782:23;814:30;838:5;814:30;:::i;1071:250::-;1156:1;1166:113;1180:6;1177:1;1174:13;1166:113;;;1256:11;;;1250:18;1237:11;;;1230:39;1202:2;1195:10;1166:113;;;-1:-1:-1;;1313:1:61;1295:16;;1288:27;1071:250::o;1326:271::-;1368:3;1406:5;1400:12;1433:6;1428:3;1421:19;1449:76;1518:6;1511:4;1506:3;1502:14;1495:4;1488:5;1484:16;1449:76;:::i;:::-;1579:2;1558:15;-1:-1:-1;;1554:29:61;1545:39;;;;1586:4;1541:50;;1326:271;-1:-1:-1;;1326:271:61:o;1602:220::-;1751:2;1740:9;1733:21;1714:4;1771:45;1812:2;1801:9;1797:18;1789:6;1771:45;:::i;1827:203::-;-1:-1:-1;;;;;1991:32:61;;;;1973:51;;1961:2;1946:18;;1827:203::o;2035:131::-;-1:-1:-1;;;;;2110:31:61;;2100:42;;2090:70;;2156:1;2153;2146:12;2171:315;2239:6;2247;2300:2;2288:9;2279:7;2275:23;2271:32;2268:52;;;2316:1;2313;2306:12;2268:52;2355:9;2342:23;2374:31;2399:5;2374:31;:::i;:::-;2424:5;2476:2;2461:18;;;;2448:32;;-1:-1:-1;;;2171:315:61:o;2673:247::-;2732:6;2785:2;2773:9;2764:7;2760:23;2756:32;2753:52;;;2801:1;2798;2791:12;2753:52;2840:9;2827:23;2859:31;2884:5;2859:31;:::i;2925:248::-;2993:6;3001;3054:2;3042:9;3033:7;3029:23;3025:32;3022:52;;;3070:1;3067;3060:12;3022:52;-1:-1:-1;;3093:23:61;;;3163:2;3148:18;;;3135:32;;-1:-1:-1;2925:248:61:o;3178:456::-;3255:6;3263;3271;3324:2;3312:9;3303:7;3299:23;3295:32;3292:52;;;3340:1;3337;3330:12;3292:52;3379:9;3366:23;3398:31;3423:5;3398:31;:::i;:::-;3448:5;-1:-1:-1;3505:2:61;3490:18;;3477:32;3518:33;3477:32;3518:33;:::i;:::-;3178:456;;3570:7;;-1:-1:-1;;;3624:2:61;3609:18;;;;3596:32;;3178:456::o;4006:159::-;4073:20;;4133:6;4122:18;;4112:29;;4102:57;;4155:1;4152;4145:12;4102:57;4006:159;;;:::o;4170:324::-;4245:6;4253;4261;4314:2;4302:9;4293:7;4289:23;4285:32;4282:52;;;4330:1;4327;4320:12;4282:52;4366:9;4353:23;4343:33;;4395:37;4428:2;4417:9;4413:18;4395:37;:::i;:::-;4385:47;;4451:37;4484:2;4473:9;4469:18;4451:37;:::i;:::-;4441:47;;4170:324;;;;;:::o;4499:315::-;4567:6;4575;4628:2;4616:9;4607:7;4603:23;4599:32;4596:52;;;4644:1;4641;4634:12;4596:52;4680:9;4667:23;4657:33;;4740:2;4729:9;4725:18;4712:32;4753:31;4778:5;4753:31;:::i;:::-;4803:5;4793:15;;;4499:315;;;;;:::o;4819:127::-;4880:10;4875:3;4871:20;4868:1;4861:31;4911:4;4908:1;4901:15;4935:4;4932:1;4925:15;4951:215;5037:1;5030:5;5027:12;5017:143;;5082:10;5077:3;5073:20;5070:1;5063:31;5117:4;5114:1;5107:15;5145:4;5142:1;5135:15;5171:246;5322:2;5307:18;;5334:43;5370:6;5334:43;:::i;:::-;5386:25;;;5171:246;:::o;5422:127::-;5483:10;5478:3;5474:20;5471:1;5464:31;5514:4;5511:1;5504:15;5538:4;5535:1;5528:15;5554:718;5596:5;5649:3;5642:4;5634:6;5630:17;5626:27;5616:55;;5667:1;5664;5657:12;5616:55;5690:20;;-1:-1:-1;;;;;5759:10:61;;;5756:36;;;5772:18;;:::i;:::-;5847:2;5841:9;5815:2;5901:13;;-1:-1:-1;;5897:22:61;;;5921:2;5893:31;5889:40;5877:53;;;5945:18;;;5965:22;;;5942:46;5939:72;;;5991:18;;:::i;:::-;6031:10;6027:2;6020:22;6066:2;6058:6;6051:18;6112:3;6105:4;6100:2;6092:6;6088:15;6084:26;6081:35;6078:55;;;6129:1;6126;6119:12;6078:55;6193:2;6186:4;6178:6;6174:17;6167:4;6159:6;6155:17;6142:54;6240:1;6233:4;6228:2;6220:6;6216:15;6212:26;6205:37;6260:6;6251:15;;;;;;5554:718;;;;:::o;6277:455::-;6354:6;6362;6415:2;6403:9;6394:7;6390:23;6386:32;6383:52;;;6431:1;6428;6421:12;6383:52;6470:9;6457:23;6489:31;6514:5;6489:31;:::i;:::-;6539:5;-1:-1:-1;6595:2:61;6580:18;;6567:32;-1:-1:-1;;;;;6611:30:61;;6608:50;;;6654:1;6651;6644:12;6608:50;6677:49;6718:7;6709:6;6698:9;6694:22;6677:49;:::i;:::-;6667:59;;;6277:455;;;;;:::o;7107:393::-;7191:6;7199;7207;7215;7268:3;7256:9;7247:7;7243:23;7239:33;7236:53;;;7285:1;7282;7275:12;7236:53;7321:9;7308:23;7298:33;;7378:2;7367:9;7363:18;7350:32;7340:42;;7401:37;7434:2;7423:9;7419:18;7401:37;:::i;:::-;7391:47;;7457:37;7490:2;7479:9;7475:18;7457:37;:::i;:::-;7447:47;;7107:393;;;;;;;:::o;7505:541::-;7593:6;7601;7654:2;7642:9;7633:7;7629:23;7625:32;7622:52;;;7670:1;7667;7660:12;7622:52;7697:23;;-1:-1:-1;;;;;7769:14:61;;;7766:34;;;7796:1;7793;7786:12;7766:34;7819:49;7860:7;7851:6;7840:9;7836:22;7819:49;:::i;:::-;7809:59;;7921:2;7910:9;7906:18;7893:32;7877:48;;7950:2;7940:8;7937:16;7934:36;;;7966:1;7963;7956:12;7934:36;;7989:51;8032:7;8021:8;8010:9;8006:24;7989:51;:::i;8051:118::-;8137:5;8130:13;8123:21;8116:5;8113:32;8103:60;;8159:1;8156;8149:12;8174:382;8239:6;8247;8300:2;8288:9;8279:7;8275:23;8271:32;8268:52;;;8316:1;8313;8306:12;8268:52;8355:9;8342:23;8374:31;8399:5;8374:31;:::i;:::-;8424:5;-1:-1:-1;8481:2:61;8466:18;;8453:32;8494:30;8453:32;8494:30;:::i;8561:760::-;8898:6;8931:15;;;8913:34;;8983:15;;;8978:2;8963:18;;8956:43;9035:15;;;9030:2;9015:18;;9008:43;9087:15;;;9082:2;9067:18;;9060:43;9140:15;;;9134:3;9119:19;;9112:44;9193:15;;9187:3;9172:19;;9165:44;9246:15;;9240:3;9225:19;;9218:44;9299:15;;;9293:3;9278:19;;9271:44;8875:3;8860:19;;8561:760::o;9549:665::-;9644:6;9652;9660;9668;9721:3;9709:9;9700:7;9696:23;9692:33;9689:53;;;9738:1;9735;9728:12;9689:53;9777:9;9764:23;9796:31;9821:5;9796:31;:::i;:::-;9846:5;-1:-1:-1;9903:2:61;9888:18;;9875:32;9916:33;9875:32;9916:33;:::i;:::-;9968:7;-1:-1:-1;10022:2:61;10007:18;;9994:32;;-1:-1:-1;10077:2:61;10062:18;;10049:32;-1:-1:-1;;;;;10093:30:61;;10090:50;;;10136:1;10133;10126:12;10090:50;10159:49;10200:7;10191:6;10180:9;10176:22;10159:49;:::i;:::-;10149:59;;;9549:665;;;;;;;:::o;10219:880::-;10563:3;10548:19;;10576:43;10612:6;10576:43;:::i;:::-;10628:25;;;10684:2;10669:18;;10662:34;;;;-1:-1:-1;;;;;10770:15:61;;;10765:2;10750:18;;10743:43;10822:15;;;;10817:2;10802:18;;10795:43;10882:14;;10875:22;10869:3;10854:19;;10847:51;10942:14;10935:22;10723:3;10914:19;;10907:51;10977:10;11024:15;;;11018:3;11003:19;;10996:44;11077:15;11071:3;11056:19;;;11049:44;10219:880;:::o;11104:529::-;11181:6;11189;11197;11250:2;11238:9;11229:7;11225:23;11221:32;11218:52;;;11266:1;11263;11256:12;11218:52;11305:9;11292:23;11324:31;11349:5;11324:31;:::i;:::-;11374:5;-1:-1:-1;11431:2:61;11416:18;;11403:32;11444:33;11403:32;11444:33;:::i;:::-;11496:7;-1:-1:-1;11555:2:61;11540:18;;11527:32;11568:33;11527:32;11568:33;:::i;:::-;11620:7;11610:17;;;11104:529;;;;;:::o;11638:955::-;11773:6;11781;11789;11797;11805;11813;11821;11874:3;11862:9;11853:7;11849:23;11845:33;11842:53;;;11891:1;11888;11881:12;11842:53;11930:9;11917:23;11949:31;11974:5;11949:31;:::i;:::-;11999:5;-1:-1:-1;12055:2:61;12040:18;;12027:32;-1:-1:-1;;;;;12071:30:61;;12068:50;;;12114:1;12111;12104:12;12068:50;12137:49;12178:7;12169:6;12158:9;12154:22;12137:49;:::i;:::-;12127:59;;;12233:2;12222:9;12218:18;12205:32;12195:42;;12284:2;12273:9;12269:18;12256:32;12246:42;;12340:3;12329:9;12325:19;12312:33;12354;12379:7;12354:33;:::i;:::-;12406:7;-1:-1:-1;12460:3:61;12445:19;;12432:33;;-1:-1:-1;12517:3:61;12502:19;;12489:33;12531:30;12489:33;12531:30;:::i;:::-;12580:7;12570:17;;;11638:955;;;;;;;;;;:::o;12598:388::-;12666:6;12674;12727:2;12715:9;12706:7;12702:23;12698:32;12695:52;;;12743:1;12740;12733:12;12695:52;12782:9;12769:23;12801:31;12826:5;12801:31;:::i;:::-;12851:5;-1:-1:-1;12908:2:61;12893:18;;12880:32;12921:33;12880:32;12921:33;:::i;12991:380::-;13070:1;13066:12;;;;13113;;;13134:61;;13188:4;13180:6;13176:17;13166:27;;13134:61;13241:2;13233:6;13230:14;13210:18;13207:38;13204:161;;13287:10;13282:3;13278:20;13275:1;13268:31;13322:4;13319:1;13312:15;13350:4;13347:1;13340:15;13204:161;;12991:380;;;:::o;13376:245::-;13443:6;13496:2;13484:9;13475:7;13471:23;13467:32;13464:52;;;13512:1;13509;13502:12;13464:52;13544:9;13538:16;13563:28;13585:5;13563:28;:::i;13626:317::-;13817:25;;;13805:2;13790:18;;13851:43;13887:6;13851:43;:::i;:::-;13930:6;13925:2;13914:9;13910:18;13903:34;13626:317;;;;;:::o;13948:274::-;-1:-1:-1;;;;;14140:32:61;;;;14122:51;;14204:2;14189:18;;14182:34;14110:2;14095:18;;13948:274::o;14227:127::-;14288:10;14283:3;14279:20;14276:1;14269:31;14319:4;14316:1;14309:15;14343:4;14340:1;14333:15;14359:200;-1:-1:-1;;;;;14521:31:61;;;;14503:50;;14491:2;14476:18;;14359:200::o;14873:248::-;15047:25;;;15103:2;15088:18;;15081:34;15035:2;15020:18;;14873:248::o;15619:127::-;15680:10;15675:3;15671:20;15668:1;15661:31;15711:4;15708:1;15701:15;15735:4;15732:1;15725:15;15751:125;15816:9;;;15837:10;;;15834:36;;;15850:18;;:::i;15881:135::-;15920:3;15941:17;;;15938:43;;15961:18;;:::i;:::-;-1:-1:-1;16008:1:61;15997:13;;15881:135::o;16875:319::-;17077:25;;;17133:2;17118:18;;17111:34;;;;17176:2;17161:18;;17154:34;17065:2;17050:18;;16875:319::o;17199:375::-;-1:-1:-1;;;;;17457:15:61;;;17439:34;;17504:2;17489:18;;17482:34;;;;17552:15;;;17547:2;17532:18;;17525:43;17389:2;17374:18;;17199:375::o;17579:287::-;17759:6;17792:15;;;17774:34;;17844:15;;17839:2;17824:18;;17817:43;17737:2;17722:18;;17579:287::o;17871:184::-;17941:6;17994:2;17982:9;17973:7;17969:23;17965:32;17962:52;;;18010:1;18007;18000:12;17962:52;-1:-1:-1;18033:16:61;;17871:184;-1:-1:-1;17871:184:61:o;18060:201::-;18098:3;18126:10;18171:2;18164:5;18160:14;18198:2;18189:7;18186:15;18183:41;;18204:18;;:::i;:::-;18253:1;18240:15;;18060:201;-1:-1:-1;;;18060:201:61:o;18266:526::-;18509:25;;;18577:14;;18570:22;18565:2;18550:18;;18543:50;18636:14;;18629:22;18624:2;18609:18;;18602:50;18671:10;18717:15;;;18712:2;18697:18;;18690:43;18770:15;18764:3;18749:19;;18742:44;18496:3;18481:19;;18266:526::o;18797:489::-;-1:-1:-1;;;;;19066:15:61;;;19048:34;;19118:15;;19113:2;19098:18;;19091:43;19165:2;19150:18;;19143:34;;;19213:3;19208:2;19193:18;;19186:31;;;18991:4;;19234:46;;19260:19;;19252:6;19234:46;:::i;:::-;19226:54;18797:489;-1:-1:-1;;;;;;18797:489:61:o;19291:249::-;19360:6;19413:2;19401:9;19392:7;19388:23;19384:32;19381:52;;;19429:1;19426;19419:12;19381:52;19461:9;19455:16;19480:30;19504:5;19480:30;:::i;19545:496::-;19724:3;19762:6;19756:13;19778:66;19837:6;19832:3;19825:4;19817:6;19813:17;19778:66;:::i;:::-;19907:13;;19866:16;;;;19929:70;19907:13;19866:16;19976:4;19964:17;;19929:70;:::i;:::-;20015:20;;19545:496;-1:-1:-1;;;;19545:496:61:o;20172:543::-;20274:2;20269:3;20266:11;20263:446;;;20310:1;20334:5;20331:1;20324:16;20378:4;20375:1;20365:18;20448:2;20436:10;20432:19;20429:1;20425:27;20419:4;20415:38;20484:4;20472:10;20469:20;20466:47;;;-1:-1:-1;20507:4:61;20466:47;20562:2;20557:3;20553:12;20550:1;20546:20;20540:4;20536:31;20526:41;;20617:82;20635:2;20628:5;20625:13;20617:82;;;20680:17;;;20661:1;20650:13;20617:82;;20891:1345;21011:10;;-1:-1:-1;;;;;21033:30:61;;21030:56;;;21066:18;;:::i;:::-;21095:97;21185:6;21145:38;21177:4;21171:11;21145:38;:::i;:::-;21139:4;21095:97;:::i;:::-;21247:4;;21304:2;21293:14;;21321:1;21316:663;;;;22023:1;22040:6;22037:89;;;-1:-1:-1;22092:19:61;;;22086:26;22037:89;-1:-1:-1;;20848:1:61;20844:11;;;20840:24;20836:29;20826:40;20872:1;20868:11;;;20823:57;22139:81;;21286:944;;21316:663;20119:1;20112:14;;;20156:4;20143:18;;-1:-1:-1;;21352:20:61;;;21470:236;21484:7;21481:1;21478:14;21470:236;;;21573:19;;;21567:26;21552:42;;21665:27;;;;21633:1;21621:14;;;;21500:19;;21470:236;;;21474:3;21734:6;21725:7;21722:19;21719:201;;;21795:19;;;21789:26;-1:-1:-1;;21878:1:61;21874:14;;;21890:3;21870:24;21866:37;21862:42;21847:58;21832:74;;21719:201;-1:-1:-1;;;;;21966:1:61;21950:14;;;21946:22;21933:36;;-1:-1:-1;20891:1345:61:o;23110:287::-;23239:3;23277:6;23271:13;23293:66;23352:6;23347:3;23340:4;23332:6;23328:17;23293:66;:::i;:::-;23375:16;;;;;23110:287;-1:-1:-1;;23110:287:61:o;23534:128::-;23601:9;;;23622:11;;;23619:37;;;23636:18;;:::i;23667:127::-;23728:10;23723:3;23719:20;23716:1;23709:31;23759:4;23756:1;23749:15;23783:4;23780:1;23773:15" + }, + "methodIdentifiers": { + "DEFAULT_ADMIN_ROLE()": "a217fddf", + "MIN_EXPIRATION_ADMIN_ROLE()": "2edf5e2c", + "NATIVE_PAYMENT()": "a0f07c74", + "OFFCHAIN_PAYMENT()": "bfb26c06", + "UPGRADER_ROLE()": "f72c0d8b", + "UPGRADE_INTERFACE_VERSION()": "ad3cb1cc", + "acceptCancellation(uint256,uint256)": "be667188", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "buyReservedToken(uint256)": "96591edd", + "counterCancellation(uint256,uint256,uint16,uint16)": "74aa2048", + "finalizeCancellation(uint256,uint256)": "1c54f0f7", + "getApproved(uint256)": "081812fc", + "getBookingStatus(uint256)": "3c15b31c", + "getCancellationProposal(uint256)": "bb520b47", + "getCancellationReasons(uint256)": "a9bc55a2", + "getManagerAddress()": "c162d7da", + "getMinExpirationTimestampDiff()": "0e75c1a8", + "getReservationPaymentToken(uint256)": "b191d092", + "getReservationPrice(uint256)": "004fdd3c", + "getRoleAdmin(bytes32)": "248a9ca3", + "grantRole(bytes32,address)": "2f2ff15d", + "hasRole(bytes32,address)": "91d14854", + "initialize(address,address,address)": "c0c53b8b", + "initiateCancellation(uint256,uint256,uint16,uint16)": "f7e45f09", + "isApprovedForAll(address,address)": "e985e9c5", + "isCMAccount(address)": "12b357b5", + "isCancellable(uint256)": "2d3a6329", + "name()": "06fdde03", + "ownerOf(uint256)": "6352211e", + "proxiableUUID()": "52d1902d", + "recordExpiration(uint256)": "e5a6725c", + "reinitializeV2(string,string)": "91da124c", + "rejectCancellation(uint256,uint16,uint16)": "74fe60e9", + "renounceRole(bytes32,address)": "36568abe", + "revokeRole(bytes32,address)": "d547741f", + "safeMintWithReservation(address,string,uint256,uint256,address,uint256,bool)": "db2b2682", + "safeTransferFrom(address,address,uint256)": "42842e0e", + "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde", + "setApprovalForAll(address,bool)": "a22cb465", + "setManagerAddress(address)": "41431908", + "setMinExpirationTimestampDiff(uint256)": "516a82b8", + "supportsInterface(bytes4)": "01ffc9a7", + "symbol()": "95d89b41", + "tokenByIndex(uint256)": "4f6ccce7", + "tokenOfOwnerByIndex(address,uint256)": "2f745c59", + "tokenURI(uint256)": "c87b56dd", + "totalSupply()": "18160ddd", + "transferFrom(address,address,uint256)": "23b872dd", + "upgradeToAndCall(address,bytes)": "4f1ef286", + "version()": "54fd4d50", + "withdrawCancellation(uint256,uint16,uint16)": "2a119380" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"CancellationProposalExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC721EnumerableForbiddenBatchMint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721IncorrectOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721InsufficientApproval\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOperator\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC721InvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC721InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC721InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ERC721NonexistentToken\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"ERC721OutOfBoundsIndex\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expirationTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"minExpirationTimestampDiff\",\"type\":\"uint256\"}],\"name\":\"ExpirationTimestampTooSoon\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reservationPrice\",\"type\":\"uint256\"}],\"name\":\"IncorrectPrice\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"existing\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"checked\",\"type\":\"uint256\"}],\"name\":\"IncorrectRefundAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"}],\"name\":\"InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"enum CancellationProposalStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidCancellationProposalStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"enum BookingToken.BookingStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidTokenStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"NotCMAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOwnerOrSupplier\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"OnlyCurrentProposerCanWithdrawCancellation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"OnlySupplierCanFinalizeCancellation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"OwnerNotAcceptedCancellation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ProposerCanNotRejectCancellation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expirationTimestamp\",\"type\":\"uint256\"}],\"name\":\"ReservationExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"reservedFor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"}],\"name\":\"ReservationMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"supplier\",\"type\":\"address\"}],\"name\":\"SupplierIsNotOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"reservedFor\",\"type\":\"address\"}],\"name\":\"TokenIsReserved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"UnexpectedNativePayment\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"offchainPaymentCurrency\",\"type\":\"uint256\"}],\"name\":\"UnexpectedOffchainPaymentCurrency\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_fromTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_toTokenId\",\"type\":\"uint256\"}],\"name\":\"BatchMetadataUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"CancellationFinalized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"initialProposer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"currentProposer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"refundAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"ownerAccepted\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"supplierAccepted\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"timesCountered\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"timesRejected\",\"type\":\"uint32\"}],\"name\":\"CancellationPending\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"cancellationReason\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"cancellationReasonVersion\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"rejectionReason\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"rejectionVersion\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"counterReason\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"counterVersion\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"withdrawalReason\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"withdrawalVersion\",\"type\":\"uint16\"}],\"name\":\"CancellationReasons\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"rejectionReason\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"rejectionVersion\",\"type\":\"uint16\"}],\"name\":\"CancellationRejected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"withdrawalReason\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"withdrawalVersion\",\"type\":\"uint16\"}],\"name\":\"CancellationWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"MetadataUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"buyer\",\"type\":\"address\"}],\"name\":\"TokenBought\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"TokenReservationExpired\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"reservedFor\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"supplier\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"expirationTimestamp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"contract IERC20\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"offchainPaymentCurrency\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"cancellable\",\"type\":\"bool\"}],\"name\":\"TokenReserved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_EXPIRATION_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"NATIVE_PAYMENT\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OFFCHAIN_PAYMENT\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"refundAmount\",\"type\":\"uint256\"}],\"name\":\"acceptCancellation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"buyReservedToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"refundAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"counterReason\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"counterReasonVersion\",\"type\":\"uint16\"}],\"name\":\"counterCancellation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"checkRefundAmount\",\"type\":\"uint256\"}],\"name\":\"finalizeCancellation\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getBookingStatus\",\"outputs\":[{\"internalType\":\"enum BookingToken.BookingStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getCancellationProposal\",\"outputs\":[{\"internalType\":\"enum CancellationProposalStatus\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"refundAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"initialProposer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currentProposer\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"ownerAccepted\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"supplierAccepted\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"timesCountered\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"timesRejected\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getCancellationReasons\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"cancellationReason\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"cancellationVersion\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"rejectionReason\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"rejectionVersion\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"counterReason\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"counterVersion\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"withdrawalReason\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"withdrawalVersion\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getManagerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinExpirationTimestampDiff\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getReservationPaymentToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"paymentToken\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getReservationPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC20\",\"name\":\"paymentToken\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"defaultAdmin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"upgrader\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"refundAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"cancellationReason\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"cancellationReasonVersion\",\"type\":\"uint16\"}],\"name\":\"initiateCancellation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCMAccount\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"isCancellable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"recordExpiration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"newName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"newSymbol\",\"type\":\"string\"}],\"name\":\"reinitializeV2\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"rejectionReason\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"rejectionReasonVersion\",\"type\":\"uint16\"}],\"name\":\"rejectCancellation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"reservedFor\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"expirationTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC20\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"offchainPaymentCurrency\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"cancellable\",\"type\":\"bool\"}],\"name\":\"safeMintWithReservation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"}],\"name\":\"setManagerAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"minExpirationTimestampDiff\",\"type\":\"uint256\"}],\"name\":\"setMinExpirationTimestampDiff\",\"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\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"tokenOfOwnerByIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"major\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"minor\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"patch\",\"type\":\"uint16\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"withdrawalReason\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"withdrawalReasonVersion\",\"type\":\"uint16\"}],\"name\":\"withdrawCancellation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"ERC721EnumerableForbiddenBatchMint()\":[{\"details\":\"Batch mint is not allowed.\"}],\"ERC721IncorrectOwner(address,uint256,address)\":[{\"details\":\"Indicates an error related to the ownership over a particular token. Used in transfers.\",\"params\":{\"owner\":\"Address of the current owner of a token.\",\"sender\":\"Address whose tokens are being transferred.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InsufficientApproval(address,uint256)\":[{\"details\":\"Indicates a failure with the `operator`\\u2019s approval. Used in transfers.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\",\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC721InvalidOperator(address)\":[{\"details\":\"Indicates a failure with the `operator` to be approved. Used in approvals.\",\"params\":{\"operator\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC721InvalidOwner(address)\":[{\"details\":\"Indicates that an address can't be an owner. For example, `address(0)` is a forbidden owner in ERC-20. Used in balance queries.\",\"params\":{\"owner\":\"Address of the current owner of a token.\"}}],\"ERC721InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC721InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC721NonexistentToken(uint256)\":[{\"details\":\"Indicates a `tokenId` whose `owner` is the zero address.\",\"params\":{\"tokenId\":\"Identifier number of a token.\"}}],\"ERC721OutOfBoundsIndex(address,uint256)\":[{\"details\":\"An `owner`'s token query was out of bounds for `index`. NOTE: The owner being `address(0)` indicates a global out of bounds index.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"IncorrectPrice(uint256,uint256)\":[{\"params\":{\"price\":\"price of the token\",\"reservationPrice\":\"reservation price\"}}],\"InsufficientAllowance(address,address,uint256,uint256)\":[{\"params\":{\"allowance\":\"allowance amount\",\"paymentToken\":\"payment token address\",\"price\":\"price of the token\",\"sender\":\"msg.sender\"}}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"InvalidTokenStatus(uint256,uint8)\":[{\"params\":{\"status\":\"status\",\"tokenId\":\"token id\"}}],\"NotCMAccount(address)\":[{\"params\":{\"account\":\"account address\"}}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"ReservationExpired(uint256,uint256)\":[{\"params\":{\"expirationTimestamp\":\"expiration timestamp\",\"tokenId\":\"token id\"}}],\"ReservationMismatch(address,address)\":[{\"params\":{\"buyer\":\"buyer address\",\"reservedFor\":\"reserved for address\"}}],\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}],\"SupplierIsNotOwner(uint256,address)\":[{\"params\":{\"supplier\":\"supplier address\",\"tokenId\":\"token id\"}}],\"TokenIsReserved(uint256,address)\":[{\"params\":{\"reservedFor\":\"reserved for address\",\"tokenId\":\"token id\"}}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}],\"UnexpectedNativePayment(uint256)\":[{\"params\":{\"amount\":\"The unexpected amount\"}}],\"UnexpectedOffchainPaymentCurrency(uint256)\":[{\"params\":{\"offchainPaymentCurrency\":\"offchain payment currency\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"BatchMetadataUpdate(uint256,uint256)\":{\"details\":\"This event emits when the metadata of a range of tokens is changed. So that the third-party platforms such as NFT market could timely update the images and related attributes of the NFTs.\"},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"MetadataUpdate(uint256)\":{\"details\":\"This event emits when the metadata of a token is changed. So that the third-party platforms such as NFT market could timely update the images and related attributes of the NFT.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"TokenBought(uint256,address)\":{\"params\":{\"buyer\":\"buyer address\",\"tokenId\":\"token id\"}},\"TokenReservationExpired(uint256)\":{\"params\":{\"tokenId\":\"token id\"}},\"TokenReserved(uint256,address,address,uint256,uint256,address,uint256,bool)\":{\"params\":{\"expirationTimestamp\":\"expiration timestamp\",\"paymentToken\":\"payment token address\",\"price\":\"price of the token\",\"reservedFor\":\"reserved for address\",\"supplier\":\"supplier address\",\"tokenId\":\"token id\"}},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256)\":{\"details\":\"See {IERC721-approve}.\"},\"balanceOf(address)\":{\"details\":\"See {IERC721-balanceOf}.\"},\"buyReservedToken(uint256)\":{\"params\":{\"tokenId\":\"The token id\"}},\"getApproved(uint256)\":{\"details\":\"See {IERC721-getApproved}.\"},\"getBookingStatus(uint256)\":{\"params\":{\"tokenId\":\"The token id\"},\"returns\":{\"_0\":\"The booking status\"}},\"getReservationPaymentToken(uint256)\":{\"params\":{\"tokenId\":\"The token id to retrieve the payment token for\"},\"returns\":{\"paymentToken\":\"The payment token\"}},\"getReservationPrice(uint256)\":{\"params\":{\"tokenId\":\"The token id\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC721-isApprovedForAll}.\"},\"isCMAccount(address)\":{\"params\":{\"account\":\"The address to check\"},\"returns\":{\"_0\":\"true if the address is a CM Account\"}},\"isCancellable(uint256)\":{\"params\":{\"tokenId\":\"The token id\"}},\"name()\":{\"details\":\"See {IERC721Metadata-name}.\"},\"ownerOf(uint256)\":{\"details\":\"See {IERC721-ownerOf}.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"recordExpiration(uint256)\":{\"params\":{\"tokenId\":\"The token id\"}},\"reinitializeV2(string,string)\":{\"details\":\"Only callable by DEFAULT_ADMIN_ROLE\",\"params\":{\"newName\":\"New token name\",\"newSymbol\":\"New token symbol\"}},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"safeMintWithReservation(address,string,uint256,uint256,address,uint256,bool)\":{\"params\":{\"cancellable\":\"The flag that represents whether the booking is cancellable\",\"expirationTimestamp\":\"The expiration timestamp\",\"offchainPaymentCurrency\":\"The offchain payment currency\",\"paymentToken\":\"The token used to pay for the reservation. If address(0) then native.\",\"price\":\"The price of the token\",\"reservedFor\":\"The CM Account address that can buy the token\",\"uri\":\"The URI of the token\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"See {IERC721-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC721-setApprovalForAll}.\"},\"setManagerAddress(address)\":{\"params\":{\"manager\":\"The address of the manager\"}},\"setMinExpirationTimestampDiff(uint256)\":{\"params\":{\"minExpirationTimestampDiff\":\"Minimum expiration timestamp difference in seconds\"}},\"symbol()\":{\"details\":\"See {IERC721Metadata-symbol}.\"},\"tokenByIndex(uint256)\":{\"details\":\"See {IERC721Enumerable-tokenByIndex}.\"},\"tokenOfOwnerByIndex(address,uint256)\":{\"details\":\"See {IERC721Enumerable-tokenOfOwnerByIndex}.\"},\"totalSupply()\":{\"details\":\"See {IERC721Enumerable-totalSupply}.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"version()\":{\"returns\":{\"major\":\"Major version (breaking changes)\",\"minor\":\"Minor version (backwards-compatible features)\",\"patch\":\"Patch version (backwards-compatible fixes)\"}}},\"stateVariables\":{\"NATIVE_PAYMENT\":{\"details\":\"Special address for native payments.\"},\"OFFCHAIN_PAYMENT\":{\"details\":\"Special address for offchain payments. The enum for this is defined in the Camino Messenger Protocol's cmp.types..IsoCurrency enum (currency.proto file).\"}},\"title\":\"BookingToken\",\"version\":1},\"userdoc\":{\"errors\":{\"ExpirationTimestampTooSoon(uint256,uint256)\":[{\"notice\":\"Error for expiration timestamp too soon. It must be at least `_minExpirationTimestampDiff` seconds in the future.\"}],\"IncorrectPrice(uint256,uint256)\":[{\"notice\":\"Incorrect price.\"}],\"InsufficientAllowance(address,address,uint256,uint256)\":[{\"notice\":\"Insufficient allowance to transfer the ERC20 token to the supplier.\"}],\"InvalidTokenStatus(uint256,uint8)\":[{\"notice\":\"Invalid token status.\"}],\"NotCMAccount(address)\":[{\"notice\":\"Address is not a CM Account.\"}],\"ReservationExpired(uint256,uint256)\":[{\"notice\":\"Reservation expired.\"}],\"ReservationMismatch(address,address)\":[{\"notice\":\"ReservedFor and buyer mismatch.\"}],\"SupplierIsNotOwner(uint256,address)\":[{\"notice\":\"Supplier is not the owner.\"}],\"TokenIsReserved(uint256,address)\":[{\"notice\":\"Token is reserved and can not be transferred.\"}],\"UnexpectedNativePayment(uint256)\":[{\"notice\":\"Error for when there is unexpected native payment.\"}],\"UnexpectedOffchainPaymentCurrency(uint256)\":[{\"notice\":\"Unexpected offchain payment currency. Thrown when offchain payment currency is provided but payment token is not address(1).\"}]},\"events\":{\"TokenBought(uint256,address)\":{\"notice\":\"Event emitted when a token is bought.\"},\"TokenReservationExpired(uint256)\":{\"notice\":\"Event emitted when a token is expired.\"},\"TokenReserved(uint256,address,address,uint256,uint256,address,uint256,bool)\":{\"notice\":\"Event emitted when a token is reserved.\"}},\"kind\":\"user\",\"methods\":{\"MIN_EXPIRATION_ADMIN_ROLE()\":{\"notice\":\"This role can set the mininum allowed expiration timestamp difference.\"},\"NATIVE_PAYMENT()\":{\"notice\":\"Tokens are directly transferred to the recipient.\"},\"OFFCHAIN_PAYMENT()\":{\"notice\":\"A third-party service is used to handle payments.\"},\"UPGRADER_ROLE()\":{\"notice\":\"Upgrader role can upgrade the contract to a new implementation.\"},\"buyReservedToken(uint256)\":{\"notice\":\"Buys a reserved token. The reservation must be for the message sender. Also the message sender should set allowance for the payment token to this contract to at least the reservation price. (only for ERC20 tokens) For native coin, the message sender should send the exact amount. Only CM Accounts can call this function\"},\"getBookingStatus(uint256)\":{\"notice\":\"Return booking status\"},\"getManagerAddress()\":{\"notice\":\"Returns for the manager address.\"},\"getMinExpirationTimestampDiff()\":{\"notice\":\"Returns minimum expiration timestamp difference in seconds.\"},\"getReservationPaymentToken(uint256)\":{\"notice\":\"Retrieves the payment token for a given token.\"},\"getReservationPrice(uint256)\":{\"notice\":\"Returns the token reservation price for a specific token.\"},\"isCMAccount(address)\":{\"notice\":\"Checks if an address is a CM Account.\"},\"isCancellable(uint256)\":{\"notice\":\"Returns if the token is cancellable\"},\"recordExpiration(uint256)\":{\"notice\":\"Record expiration status if the token is expired\"},\"reinitializeV2(string,string)\":{\"notice\":\"This function allows reinitializing the contract to update the name and symbol\"},\"safeMintWithReservation(address,string,uint256,uint256,address,uint256,bool)\":{\"notice\":\"Mints a new token with a reservation for a specific address.\"},\"setManagerAddress(address)\":{\"notice\":\"Sets for the manager address.\"},\"setMinExpirationTimestampDiff(uint256)\":{\"notice\":\"Sets minimum expiration timestamp difference in seconds.\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"Override transferFrom to check if token is reserved. It reverts if the token is reserved.\"},\"version()\":{\"notice\":\"Returns the semantic version of the contract. - no version() func: Legacy version without Cancellation support - v1.0.0: Version with Cancellation support\"}},\"notice\":\"Booking Token contract represents a booking done on the Camino Messenger. Suppliers can mint Booking Tokens and reserve them for a distributor address to buy. Booking Tokens can have zero price, meaning that the payment will be done off-chain. When a token is minted with a reservation, it can not be transferred until the expiration timestamp is reached or the token is bought.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/booking-token/BookingToken.sol\":\"BookingToken\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xf72d3b11f41fccbbdcacd121f994daab8267ccfceb1fb4f247e4ba274c169d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e46ee40ddc9e2009176ce5d76aa2c046fd68f2ed52d02d77db191365b7c5b2e\",\"dweb:/ipfs/QmZnxgPmCCHosdvbh4J65uTaFYeGtZGzQ1sXRdeh1y68Zr\"]},\"@openzeppelin/contracts-upgradeable/token/ERC721/ERC721Upgradeable.sol\":{\"keccak256\":\"0xfd473ea8f70e13eaa6475c7e348885b8a32925252e3bc237e07c0e3fde0f10f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea9d17ae8f18568ab1aedf555ebc79906ba3eaaccfa78efbaed05bd3a9e1b6f2\",\"dweb:/ipfs/QmUQDGwCVE72tExiyA9EuwBeaiu9a8DQin3DZxuX76umg4\"]},\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721EnumerableUpgradeable.sol\":{\"keccak256\":\"0x374714bef85e753a13fdf792ca567ef734351029265f2cce8db533d7a942c740\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6024252b335cecf3bcf3502cfb883ffc7f8e72926734f848b0684eccaeac8027\",\"dweb:/ipfs/QmevY4P9E3eEDZ7msGJ5aFmbPGLWZr976g3EUwWeUs1JGV\"]},\"@openzeppelin/contracts-upgradeable/token/ERC721/extensions/ERC721URIStorageUpgradeable.sol\":{\"keccak256\":\"0x7617c19dc4d1d90728911d5c13230bdad6d22edaa12a49846be4c6c5e03104d2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://67d995622f49be65b9b579609d2fa9958604de0ad97b47440e5e1b40c08f1382\",\"dweb:/ipfs/QmZHDRzg1PopU2qfhK1ffqpPL5KZzvgXbKFtMS4CkTYBtC\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"@openzeppelin/contracts/interfaces/IERC4906.sol\":{\"keccak256\":\"0x1b8691e244f6e11d987459993671db0af33e6a29f7805eac6a9925cc6b601957\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a9e2a5efc2e14e98f5fe91bbab769199b4987a40dd3b96075b04957fda2ae80f\",\"dweb:/ipfs/QmbAjrSSVBiJ6MbgF7Jkr53m674iGMZ6haWbbRrWDZJraK\"]},\"@openzeppelin/contracts/interfaces/IERC721.sol\":{\"keccak256\":\"0xc4d7ebf63eb2f6bf3fee1b6c0ee775efa9f31b4843a5511d07eea147e212932d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01c66a2fad66bc710db7510419a7eee569b40b67cd9f01b70a3fc90d6f76c03b\",\"dweb:/ipfs/QmT1CjJZq4eTNA4nu8E9ZrWfaZu6ReUsDbjcK8DbEFqwx5\"]},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c\",\"dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5dc63d1c6a12fe1b17793e1745877b2fcbe1964c3edfd0a482fac21ca8f18261\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b7f97c5960a50fd1822cb298551ffc908e37b7893a68d6d08bce18a11cb0f11\",\"dweb:/ipfs/QmQQvxBytoY1eBt3pRQDmvH2hZ2yjhs12YqVfzGm7KSURq\"]},\"@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xb5afb8e8eebc4d1c6404df2f5e1e6d2c3d24fd01e5dfc855314951ecfaae462d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://78586466c424f076c6a2a551d848cfbe3f7c49e723830807598484a1047b3b34\",\"dweb:/ipfs/Qmb717ovcFxm7qgNKEShiV6M9SPR3v1qnNpAGH84D6w29p\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol\":{\"keccak256\":\"0x3d6954a93ac198a2ffa384fa58ccf18e7e235263e051a394328002eff4e073de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1f58c799bd939d3951c94893e83ef86acd56989d1d7db7f9d180c515e29e28ff\",\"dweb:/ipfs/QmTgAxHAAys4kq9ZfU9YB24MWYoHLGAKSxnYUigPFrNW7g\"]},\"@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"]},\"@openzeppelin/contracts/token/ERC721/utils/ERC721Utils.sol\":{\"keccak256\":\"0x40399695922383778f9f540a620bec475a2f8e0f08d41f0005682842e28a9855\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://746d295e403931aeb9d6065fd5a0871f43ab5459814a60623611e4b6641a09fd\",\"dweb:/ipfs/QmWrgT8YJrQ9FfD1o3YYArwo57e7MGdpFKuM74qJ4qE34E\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x725209b582291bb83058e3078624b53d15a133f7401c30295e7f3704181d2aed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0564ddb19c6d870e27b789d8f985283d815267ad7224883c2d5243c8bacc7dc0\",\"dweb:/ipfs/QmeC953H4sj88ZRFdJNFdmpf7J9SksP1wK4jyMHLo66z49\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"@openzeppelin/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"@openzeppelin/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"contracts/booking-token/BookingToken.sol\":{\"keccak256\":\"0xd7d70ba35d55353c66359eeecfc48b6ce6ac4eea35a468fc451740237e2934e0\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://9279741b2c5f4ef6b1387acabbc7a97757d024b48ae005a61ab6d73a57b25523\",\"dweb:/ipfs/QmVAEz5WKR78FjsrrfQQxKshXtQypP5voN4vAQqtnAbsnF\"]},\"contracts/booking-token/BookingTokenCancellable.sol\":{\"keccak256\":\"0x1c5c5af99af0d9886e63c9c4ae366d7b54d7d578b9341416b225b97b7651f24a\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://bda88975353ed62c73e6cb71caab10ea79d60a23793dfc7540427156998157ff\",\"dweb:/ipfs/QmRuosqXwx64TRUk2yzyNb3m4hneMnV4faDP2wGW6PBhra\"]},\"contracts/manager/ICMAccountManager.sol\":{\"keccak256\":\"0xdadbd8d3ed62ac91b0efa7b8fd77ee39a5f14c5b3994e6bd57c552cde2793f10\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ecc2f4dba4846b275cef716b74e856f75cee43d2ed7368889d7db0c697d6ceec\",\"dweb:/ipfs/QmPhSQboUgm3dG7rs2CLpqwkssujy8HMKRtG9CDxf9vWuE\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "contracts/booking-token/BookingTokenCancellable.sol": { + "BookingTokenCancellable": { + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "CancellationProposalExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "existing", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "checked", + "type": "uint256" + } + ], + "name": "IncorrectRefundAmount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "enum CancellationProposalStatus", + "name": "status", + "type": "uint8" + } + ], + "name": "InvalidCancellationProposalStatus", + "type": "error" + }, + { + "inputs": [], + "name": "NotOwnerOrSupplier", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "OnlyCurrentProposerCanWithdrawCancellation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "OnlySupplierCanFinalizeCancellation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "OwnerNotAcceptedCancellation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ProposerCanNotRejectCancellation", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "CancellationFinalized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "initialProposer", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "currentProposer", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "refundAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bool", + "name": "ownerAccepted", + "type": "bool" + }, + { + "indexed": false, + "internalType": "bool", + "name": "supplierAccepted", + "type": "bool" + }, + { + "indexed": false, + "internalType": "uint32", + "name": "timesCountered", + "type": "uint32" + }, + { + "indexed": false, + "internalType": "uint32", + "name": "timesRejected", + "type": "uint32" + } + ], + "name": "CancellationPending", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "cancellationReason", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "cancellationReasonVersion", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "rejectionReason", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "rejectionVersion", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "counterReason", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "counterVersion", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "withdrawalReason", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "withdrawalVersion", + "type": "uint16" + } + ], + "name": "CancellationReasons", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "rejectionReason", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "rejectionVersion", + "type": "uint16" + } + ], + "name": "CancellationRejected", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "withdrawalReason", + "type": "uint16" + }, + { + "indexed": false, + "internalType": "uint16", + "name": "withdrawalVersion", + "type": "uint16" + } + ], + "name": "CancellationWithdrawn", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getCancellationProposal", + "outputs": [ + { + "internalType": "enum CancellationProposalStatus", + "name": "", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "refundAmount", + "type": "uint256" + }, + { + "internalType": "address", + "name": "initialProposer", + "type": "address" + }, + { + "internalType": "address", + "name": "currentProposer", + "type": "address" + }, + { + "internalType": "bool", + "name": "ownerAccepted", + "type": "bool" + }, + { + "internalType": "bool", + "name": "supplierAccepted", + "type": "bool" + }, + { + "internalType": "uint32", + "name": "timesCountered", + "type": "uint32" + }, + { + "internalType": "uint32", + "name": "timesRejected", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getCancellationReasons", + "outputs": [ + { + "internalType": "uint16", + "name": "cancellationReason", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "cancellationVersion", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "rejectionReason", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "rejectionVersion", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "counterReason", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "counterVersion", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "withdrawalReason", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "withdrawalVersion", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b506102a9806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063a9bc55a21461003b578063bb520b47146100a0575b600080fd5b61004e6100493660046101ed565b6100c7565b6040805161ffff998a16815297891660208901529588169587019590955292861660608601529085166080850152841660a0840152831660c083015290911660e0820152610100015b60405180910390f35b6100b36100ae3660046101ed565b61014d565b604051610097989796959493929190610206565b60008060008060008060008060006100dd6101c9565b60009a8b5260205250506040909720600281015460039091015461ffff600160c81b830481169a600160d81b840482169a50600160e81b90930481169850808216975062010000820481169650600160201b820481169550600160301b820481169450600160401b909104169150565b60008060008060008060008060006101636101c9565b60009a8b52602052505060409097206002810154815460019092015460ff600160c01b80840482169c949b506001600160a01b038084169b5084169950820481169750600160c81b820416955063ffffffff600160a01b91829004811695509104169150565b7f0b8fb32ffc7043fda9e0ee2bcb4236acf95ab448752c73eff6cc7f2640ff850090565b6000602082840312156101ff57600080fd5b5035919050565b610100810160058a1061022957634e487b7160e01b600052602160045260246000fd5b98815260208101979097526001600160a01b0395861660408801529390941660608601529015156080850152151560a084015263ffffffff91821660c08401521660e0909101529056fea2646970667358221220f68cf5a3148658cd51833e30947000c9a8f57617c19b848e44c62c5fe01460f364736f6c63430008180033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A9 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA9BC55A2 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xBB520B47 EQ PUSH2 0xA0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x49 CALLDATASIZE PUSH1 0x4 PUSH2 0x1ED JUMP JUMPDEST PUSH2 0xC7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0xFFFF SWAP10 DUP11 AND DUP2 MSTORE SWAP8 DUP10 AND PUSH1 0x20 DUP10 ADD MSTORE SWAP6 DUP9 AND SWAP6 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP3 DUP7 AND PUSH1 0x60 DUP7 ADD MSTORE SWAP1 DUP6 AND PUSH1 0x80 DUP6 ADD MSTORE DUP5 AND PUSH1 0xA0 DUP5 ADD MSTORE DUP4 AND PUSH1 0xC0 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB3 PUSH2 0xAE CALLDATASIZE PUSH1 0x4 PUSH2 0x1ED JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x206 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xDD PUSH2 0x1C9 JUMP JUMPDEST PUSH1 0x0 SWAP11 DUP12 MSTORE PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 SWAP8 KECCAK256 PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0x3 SWAP1 SWAP2 ADD SLOAD PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xC8 SHL DUP4 DIV DUP2 AND SWAP11 PUSH1 0x1 PUSH1 0xD8 SHL DUP5 DIV DUP3 AND SWAP11 POP PUSH1 0x1 PUSH1 0xE8 SHL SWAP1 SWAP4 DIV DUP2 AND SWAP9 POP DUP1 DUP3 AND SWAP8 POP PUSH3 0x10000 DUP3 DIV DUP2 AND SWAP7 POP PUSH1 0x1 PUSH1 0x20 SHL DUP3 DIV DUP2 AND SWAP6 POP PUSH1 0x1 PUSH1 0x30 SHL DUP3 DIV DUP2 AND SWAP5 POP PUSH1 0x1 PUSH1 0x40 SHL SWAP1 SWAP2 DIV AND SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x163 PUSH2 0x1C9 JUMP JUMPDEST PUSH1 0x0 SWAP11 DUP12 MSTORE PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 SWAP8 KECCAK256 PUSH1 0x2 DUP2 ADD SLOAD DUP2 SLOAD PUSH1 0x1 SWAP1 SWAP3 ADD SLOAD PUSH1 0xFF PUSH1 0x1 PUSH1 0xC0 SHL DUP1 DUP5 DIV DUP3 AND SWAP13 SWAP5 SWAP12 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP12 POP DUP5 AND SWAP10 POP DUP3 DIV DUP2 AND SWAP8 POP PUSH1 0x1 PUSH1 0xC8 SHL DUP3 DIV AND SWAP6 POP PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0xA0 SHL SWAP2 DUP3 SWAP1 DIV DUP2 AND SWAP6 POP SWAP2 DIV AND SWAP2 POP JUMP JUMPDEST PUSH32 0xB8FB32FFC7043FDA9E0EE2BCB4236ACF95AB448752C73EFF6CC7F2640FF8500 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x100 DUP2 ADD PUSH1 0x5 DUP11 LT PUSH2 0x229 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP9 DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP8 SWAP1 SWAP8 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND PUSH1 0x40 DUP9 ADD MSTORE SWAP4 SWAP1 SWAP5 AND PUSH1 0x60 DUP7 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x80 DUP6 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP5 ADD MSTORE PUSH4 0xFFFFFFFF SWAP2 DUP3 AND PUSH1 0xC0 DUP5 ADD MSTORE AND PUSH1 0xE0 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF6 DUP13 CREATE2 LOG3 EQ DUP7 PC 0xCD MLOAD DUP4 RETURNDATACOPY ADDRESS SWAP5 PUSH17 0xC9A8F57617C19B848E44C62C5FE01460 RETURN PUSH5 0x736F6C6343 STOP ADDMOD XOR STOP CALLER ", + "sourceMap": "208:16546:51:-:0;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@_getBookingTokenCancellableStorage_14602": { + "entryPoint": 457, + "id": 14602, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getCancellationProposal_14807": { + "entryPoint": 333, + "id": 14807, + "parameterSlots": 1, + "returnSlots": 8 + }, + "@getCancellationReasons_14856": { + "entryPoint": 199, + "id": 14856, + "parameterSlots": 1, + "returnSlots": 8 + }, + "abi_decode_tuple_t_uint256": { + "entryPoint": 493, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_enum$_CancellationProposalStatus_$14549_t_uint256_t_address_t_address_t_bool_t_bool_t_uint32_t_uint32__to_t_uint8_t_uint256_t_address_t_address_t_bool_t_bool_t_uint32_t_uint32__fromStack_reversed": { + "entryPoint": 518, + "id": null, + "parameterSlots": 9, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16__to_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 9, + "returnSlots": 1 + }, + "abi_encode_uint32": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nativeSrc": "0:2027:61", + "nodeType": "YulBlock", + "src": "0:2027:61", + "statements": [ + { + "nativeSrc": "6:3:61", + "nodeType": "YulBlock", + "src": "6:3:61", + "statements": [] + }, + { + "body": { + "nativeSrc": "84:110:61", + "nodeType": "YulBlock", + "src": "84:110:61", + "statements": [ + { + "body": { + "nativeSrc": "130:16:61", + "nodeType": "YulBlock", + "src": "130:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "139:1:61", + "nodeType": "YulLiteral", + "src": "139:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "142:1:61", + "nodeType": "YulLiteral", + "src": "142:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "132:6:61", + "nodeType": "YulIdentifier", + "src": "132:6:61" + }, + "nativeSrc": "132:12:61", + "nodeType": "YulFunctionCall", + "src": "132:12:61" + }, + "nativeSrc": "132:12:61", + "nodeType": "YulExpressionStatement", + "src": "132:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "105:7:61", + "nodeType": "YulIdentifier", + "src": "105:7:61" + }, + { + "name": "headStart", + "nativeSrc": "114:9:61", + "nodeType": "YulIdentifier", + "src": "114:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "101:3:61", + "nodeType": "YulIdentifier", + "src": "101:3:61" + }, + "nativeSrc": "101:23:61", + "nodeType": "YulFunctionCall", + "src": "101:23:61" + }, + { + "kind": "number", + "nativeSrc": "126:2:61", + "nodeType": "YulLiteral", + "src": "126:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "97:3:61", + "nodeType": "YulIdentifier", + "src": "97:3:61" + }, + "nativeSrc": "97:32:61", + "nodeType": "YulFunctionCall", + "src": "97:32:61" + }, + "nativeSrc": "94:52:61", + "nodeType": "YulIf", + "src": "94:52:61" + }, + { + "nativeSrc": "155:33:61", + "nodeType": "YulAssignment", + "src": "155:33:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "178:9:61", + "nodeType": "YulIdentifier", + "src": "178:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "165:12:61", + "nodeType": "YulIdentifier", + "src": "165:12:61" + }, + "nativeSrc": "165:23:61", + "nodeType": "YulFunctionCall", + "src": "165:23:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "155:6:61", + "nodeType": "YulIdentifier", + "src": "155:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256", + "nativeSrc": "14:180:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "50:9:61", + "nodeType": "YulTypedName", + "src": "50:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "61:7:61", + "nodeType": "YulTypedName", + "src": "61:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "73:6:61", + "nodeType": "YulTypedName", + "src": "73:6:61", + "type": "" + } + ], + "src": "14:180:61" + }, + { + "body": { + "nativeSrc": "480:479:61", + "nodeType": "YulBlock", + "src": "480:479:61", + "statements": [ + { + "nativeSrc": "490:27:61", + "nodeType": "YulAssignment", + "src": "490:27:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "502:9:61", + "nodeType": "YulIdentifier", + "src": "502:9:61" + }, + { + "kind": "number", + "nativeSrc": "513:3:61", + "nodeType": "YulLiteral", + "src": "513:3:61", + "type": "", + "value": "256" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "498:3:61", + "nodeType": "YulIdentifier", + "src": "498:3:61" + }, + "nativeSrc": "498:19:61", + "nodeType": "YulFunctionCall", + "src": "498:19:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "490:4:61", + "nodeType": "YulIdentifier", + "src": "490:4:61" + } + ] + }, + { + "nativeSrc": "526:16:61", + "nodeType": "YulVariableDeclaration", + "src": "526:16:61", + "value": { + "kind": "number", + "nativeSrc": "536:6:61", + "nodeType": "YulLiteral", + "src": "536:6:61", + "type": "", + "value": "0xffff" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "530:2:61", + "nodeType": "YulTypedName", + "src": "530:2:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "558:9:61", + "nodeType": "YulIdentifier", + "src": "558:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "573:6:61", + "nodeType": "YulIdentifier", + "src": "573:6:61" + }, + { + "name": "_1", + "nativeSrc": "581:2:61", + "nodeType": "YulIdentifier", + "src": "581:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "569:3:61", + "nodeType": "YulIdentifier", + "src": "569:3:61" + }, + "nativeSrc": "569:15:61", + "nodeType": "YulFunctionCall", + "src": "569:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "551:6:61", + "nodeType": "YulIdentifier", + "src": "551:6:61" + }, + "nativeSrc": "551:34:61", + "nodeType": "YulFunctionCall", + "src": "551:34:61" + }, + "nativeSrc": "551:34:61", + "nodeType": "YulExpressionStatement", + "src": "551:34:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "605:9:61", + "nodeType": "YulIdentifier", + "src": "605:9:61" + }, + { + "kind": "number", + "nativeSrc": "616:2:61", + "nodeType": "YulLiteral", + "src": "616:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "601:3:61", + "nodeType": "YulIdentifier", + "src": "601:3:61" + }, + "nativeSrc": "601:18:61", + "nodeType": "YulFunctionCall", + "src": "601:18:61" + }, + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "625:6:61", + "nodeType": "YulIdentifier", + "src": "625:6:61" + }, + { + "name": "_1", + "nativeSrc": "633:2:61", + "nodeType": "YulIdentifier", + "src": "633:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "621:3:61", + "nodeType": "YulIdentifier", + "src": "621:3:61" + }, + "nativeSrc": "621:15:61", + "nodeType": "YulFunctionCall", + "src": "621:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "594:6:61", + "nodeType": "YulIdentifier", + "src": "594:6:61" + }, + "nativeSrc": "594:43:61", + "nodeType": "YulFunctionCall", + "src": "594:43:61" + }, + "nativeSrc": "594:43:61", + "nodeType": "YulExpressionStatement", + "src": "594:43:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "657:9:61", + "nodeType": "YulIdentifier", + "src": "657:9:61" + }, + { + "kind": "number", + "nativeSrc": "668:2:61", + "nodeType": "YulLiteral", + "src": "668:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "653:3:61", + "nodeType": "YulIdentifier", + "src": "653:3:61" + }, + "nativeSrc": "653:18:61", + "nodeType": "YulFunctionCall", + "src": "653:18:61" + }, + { + "arguments": [ + { + "name": "value2", + "nativeSrc": "677:6:61", + "nodeType": "YulIdentifier", + "src": "677:6:61" + }, + { + "name": "_1", + "nativeSrc": "685:2:61", + "nodeType": "YulIdentifier", + "src": "685:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "673:3:61", + "nodeType": "YulIdentifier", + "src": "673:3:61" + }, + "nativeSrc": "673:15:61", + "nodeType": "YulFunctionCall", + "src": "673:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "646:6:61", + "nodeType": "YulIdentifier", + "src": "646:6:61" + }, + "nativeSrc": "646:43:61", + "nodeType": "YulFunctionCall", + "src": "646:43:61" + }, + "nativeSrc": "646:43:61", + "nodeType": "YulExpressionStatement", + "src": "646:43:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "709:9:61", + "nodeType": "YulIdentifier", + "src": "709:9:61" + }, + { + "kind": "number", + "nativeSrc": "720:2:61", + "nodeType": "YulLiteral", + "src": "720:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "705:3:61", + "nodeType": "YulIdentifier", + "src": "705:3:61" + }, + "nativeSrc": "705:18:61", + "nodeType": "YulFunctionCall", + "src": "705:18:61" + }, + { + "arguments": [ + { + "name": "value3", + "nativeSrc": "729:6:61", + "nodeType": "YulIdentifier", + "src": "729:6:61" + }, + { + "name": "_1", + "nativeSrc": "737:2:61", + "nodeType": "YulIdentifier", + "src": "737:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "725:3:61", + "nodeType": "YulIdentifier", + "src": "725:3:61" + }, + "nativeSrc": "725:15:61", + "nodeType": "YulFunctionCall", + "src": "725:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "698:6:61", + "nodeType": "YulIdentifier", + "src": "698:6:61" + }, + "nativeSrc": "698:43:61", + "nodeType": "YulFunctionCall", + "src": "698:43:61" + }, + "nativeSrc": "698:43:61", + "nodeType": "YulExpressionStatement", + "src": "698:43:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "761:9:61", + "nodeType": "YulIdentifier", + "src": "761:9:61" + }, + { + "kind": "number", + "nativeSrc": "772:3:61", + "nodeType": "YulLiteral", + "src": "772:3:61", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "757:3:61", + "nodeType": "YulIdentifier", + "src": "757:3:61" + }, + "nativeSrc": "757:19:61", + "nodeType": "YulFunctionCall", + "src": "757:19:61" + }, + { + "arguments": [ + { + "name": "value4", + "nativeSrc": "782:6:61", + "nodeType": "YulIdentifier", + "src": "782:6:61" + }, + { + "name": "_1", + "nativeSrc": "790:2:61", + "nodeType": "YulIdentifier", + "src": "790:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "778:3:61", + "nodeType": "YulIdentifier", + "src": "778:3:61" + }, + "nativeSrc": "778:15:61", + "nodeType": "YulFunctionCall", + "src": "778:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "750:6:61", + "nodeType": "YulIdentifier", + "src": "750:6:61" + }, + "nativeSrc": "750:44:61", + "nodeType": "YulFunctionCall", + "src": "750:44:61" + }, + "nativeSrc": "750:44:61", + "nodeType": "YulExpressionStatement", + "src": "750:44:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "814:9:61", + "nodeType": "YulIdentifier", + "src": "814:9:61" + }, + { + "kind": "number", + "nativeSrc": "825:3:61", + "nodeType": "YulLiteral", + "src": "825:3:61", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "810:3:61", + "nodeType": "YulIdentifier", + "src": "810:3:61" + }, + "nativeSrc": "810:19:61", + "nodeType": "YulFunctionCall", + "src": "810:19:61" + }, + { + "arguments": [ + { + "name": "value5", + "nativeSrc": "835:6:61", + "nodeType": "YulIdentifier", + "src": "835:6:61" + }, + { + "name": "_1", + "nativeSrc": "843:2:61", + "nodeType": "YulIdentifier", + "src": "843:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "831:3:61", + "nodeType": "YulIdentifier", + "src": "831:3:61" + }, + "nativeSrc": "831:15:61", + "nodeType": "YulFunctionCall", + "src": "831:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "803:6:61", + "nodeType": "YulIdentifier", + "src": "803:6:61" + }, + "nativeSrc": "803:44:61", + "nodeType": "YulFunctionCall", + "src": "803:44:61" + }, + "nativeSrc": "803:44:61", + "nodeType": "YulExpressionStatement", + "src": "803:44:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "867:9:61", + "nodeType": "YulIdentifier", + "src": "867:9:61" + }, + { + "kind": "number", + "nativeSrc": "878:3:61", + "nodeType": "YulLiteral", + "src": "878:3:61", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "863:3:61", + "nodeType": "YulIdentifier", + "src": "863:3:61" + }, + "nativeSrc": "863:19:61", + "nodeType": "YulFunctionCall", + "src": "863:19:61" + }, + { + "arguments": [ + { + "name": "value6", + "nativeSrc": "888:6:61", + "nodeType": "YulIdentifier", + "src": "888:6:61" + }, + { + "name": "_1", + "nativeSrc": "896:2:61", + "nodeType": "YulIdentifier", + "src": "896:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "884:3:61", + "nodeType": "YulIdentifier", + "src": "884:3:61" + }, + "nativeSrc": "884:15:61", + "nodeType": "YulFunctionCall", + "src": "884:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "856:6:61", + "nodeType": "YulIdentifier", + "src": "856:6:61" + }, + "nativeSrc": "856:44:61", + "nodeType": "YulFunctionCall", + "src": "856:44:61" + }, + "nativeSrc": "856:44:61", + "nodeType": "YulExpressionStatement", + "src": "856:44:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "920:9:61", + "nodeType": "YulIdentifier", + "src": "920:9:61" + }, + { + "kind": "number", + "nativeSrc": "931:3:61", + "nodeType": "YulLiteral", + "src": "931:3:61", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "916:3:61", + "nodeType": "YulIdentifier", + "src": "916:3:61" + }, + "nativeSrc": "916:19:61", + "nodeType": "YulFunctionCall", + "src": "916:19:61" + }, + { + "arguments": [ + { + "name": "value7", + "nativeSrc": "941:6:61", + "nodeType": "YulIdentifier", + "src": "941:6:61" + }, + { + "name": "_1", + "nativeSrc": "949:2:61", + "nodeType": "YulIdentifier", + "src": "949:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "937:3:61", + "nodeType": "YulIdentifier", + "src": "937:3:61" + }, + "nativeSrc": "937:15:61", + "nodeType": "YulFunctionCall", + "src": "937:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "909:6:61", + "nodeType": "YulIdentifier", + "src": "909:6:61" + }, + "nativeSrc": "909:44:61", + "nodeType": "YulFunctionCall", + "src": "909:44:61" + }, + "nativeSrc": "909:44:61", + "nodeType": "YulExpressionStatement", + "src": "909:44:61" + } + ] + }, + "name": "abi_encode_tuple_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16__to_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16__fromStack_reversed", + "nativeSrc": "199:760:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "393:9:61", + "nodeType": "YulTypedName", + "src": "393:9:61", + "type": "" + }, + { + "name": "value7", + "nativeSrc": "404:6:61", + "nodeType": "YulTypedName", + "src": "404:6:61", + "type": "" + }, + { + "name": "value6", + "nativeSrc": "412:6:61", + "nodeType": "YulTypedName", + "src": "412:6:61", + "type": "" + }, + { + "name": "value5", + "nativeSrc": "420:6:61", + "nodeType": "YulTypedName", + "src": "420:6:61", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "428:6:61", + "nodeType": "YulTypedName", + "src": "428:6:61", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "436:6:61", + "nodeType": "YulTypedName", + "src": "436:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "444:6:61", + "nodeType": "YulTypedName", + "src": "444:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "452:6:61", + "nodeType": "YulTypedName", + "src": "452:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "460:6:61", + "nodeType": "YulTypedName", + "src": "460:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "471:4:61", + "nodeType": "YulTypedName", + "src": "471:4:61", + "type": "" + } + ], + "src": "199:760:61" + }, + { + "body": { + "nativeSrc": "1007:51:61", + "nodeType": "YulBlock", + "src": "1007:51:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "1024:3:61", + "nodeType": "YulIdentifier", + "src": "1024:3:61" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "1033:5:61", + "nodeType": "YulIdentifier", + "src": "1033:5:61" + }, + { + "kind": "number", + "nativeSrc": "1040:10:61", + "nodeType": "YulLiteral", + "src": "1040:10:61", + "type": "", + "value": "0xffffffff" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1029:3:61", + "nodeType": "YulIdentifier", + "src": "1029:3:61" + }, + "nativeSrc": "1029:22:61", + "nodeType": "YulFunctionCall", + "src": "1029:22:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1017:6:61", + "nodeType": "YulIdentifier", + "src": "1017:6:61" + }, + "nativeSrc": "1017:35:61", + "nodeType": "YulFunctionCall", + "src": "1017:35:61" + }, + "nativeSrc": "1017:35:61", + "nodeType": "YulExpressionStatement", + "src": "1017:35:61" + } + ] + }, + "name": "abi_encode_uint32", + "nativeSrc": "964:94:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "991:5:61", + "nodeType": "YulTypedName", + "src": "991:5:61", + "type": "" + }, + { + "name": "pos", + "nativeSrc": "998:3:61", + "nodeType": "YulTypedName", + "src": "998:3:61", + "type": "" + } + ], + "src": "964:94:61" + }, + { + "body": { + "nativeSrc": "1374:651:61", + "nodeType": "YulBlock", + "src": "1374:651:61", + "statements": [ + { + "nativeSrc": "1384:27:61", + "nodeType": "YulAssignment", + "src": "1384:27:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1396:9:61", + "nodeType": "YulIdentifier", + "src": "1396:9:61" + }, + { + "kind": "number", + "nativeSrc": "1407:3:61", + "nodeType": "YulLiteral", + "src": "1407:3:61", + "type": "", + "value": "256" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1392:3:61", + "nodeType": "YulIdentifier", + "src": "1392:3:61" + }, + "nativeSrc": "1392:19:61", + "nodeType": "YulFunctionCall", + "src": "1392:19:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "1384:4:61", + "nodeType": "YulIdentifier", + "src": "1384:4:61" + } + ] + }, + { + "body": { + "nativeSrc": "1453:111:61", + "nodeType": "YulBlock", + "src": "1453:111:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1474:1:61", + "nodeType": "YulLiteral", + "src": "1474:1:61", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1481:3:61", + "nodeType": "YulLiteral", + "src": "1481:3:61", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "1486:10:61", + "nodeType": "YulLiteral", + "src": "1486:10:61", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "1477:3:61", + "nodeType": "YulIdentifier", + "src": "1477:3:61" + }, + "nativeSrc": "1477:20:61", + "nodeType": "YulFunctionCall", + "src": "1477:20:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1467:6:61", + "nodeType": "YulIdentifier", + "src": "1467:6:61" + }, + "nativeSrc": "1467:31:61", + "nodeType": "YulFunctionCall", + "src": "1467:31:61" + }, + "nativeSrc": "1467:31:61", + "nodeType": "YulExpressionStatement", + "src": "1467:31:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1518:1:61", + "nodeType": "YulLiteral", + "src": "1518:1:61", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "1521:4:61", + "nodeType": "YulLiteral", + "src": "1521:4:61", + "type": "", + "value": "0x21" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1511:6:61", + "nodeType": "YulIdentifier", + "src": "1511:6:61" + }, + "nativeSrc": "1511:15:61", + "nodeType": "YulFunctionCall", + "src": "1511:15:61" + }, + "nativeSrc": "1511:15:61", + "nodeType": "YulExpressionStatement", + "src": "1511:15:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1546:1:61", + "nodeType": "YulLiteral", + "src": "1546:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1549:4:61", + "nodeType": "YulLiteral", + "src": "1549:4:61", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1539:6:61", + "nodeType": "YulIdentifier", + "src": "1539:6:61" + }, + "nativeSrc": "1539:15:61", + "nodeType": "YulFunctionCall", + "src": "1539:15:61" + }, + "nativeSrc": "1539:15:61", + "nodeType": "YulExpressionStatement", + "src": "1539:15:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "1433:6:61", + "nodeType": "YulIdentifier", + "src": "1433:6:61" + }, + { + "kind": "number", + "nativeSrc": "1441:1:61", + "nodeType": "YulLiteral", + "src": "1441:1:61", + "type": "", + "value": "5" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "1430:2:61", + "nodeType": "YulIdentifier", + "src": "1430:2:61" + }, + "nativeSrc": "1430:13:61", + "nodeType": "YulFunctionCall", + "src": "1430:13:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "1423:6:61", + "nodeType": "YulIdentifier", + "src": "1423:6:61" + }, + "nativeSrc": "1423:21:61", + "nodeType": "YulFunctionCall", + "src": "1423:21:61" + }, + "nativeSrc": "1420:144:61", + "nodeType": "YulIf", + "src": "1420:144:61" + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1580:9:61", + "nodeType": "YulIdentifier", + "src": "1580:9:61" + }, + { + "name": "value0", + "nativeSrc": "1591:6:61", + "nodeType": "YulIdentifier", + "src": "1591:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1573:6:61", + "nodeType": "YulIdentifier", + "src": "1573:6:61" + }, + "nativeSrc": "1573:25:61", + "nodeType": "YulFunctionCall", + "src": "1573:25:61" + }, + "nativeSrc": "1573:25:61", + "nodeType": "YulExpressionStatement", + "src": "1573:25:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1618:9:61", + "nodeType": "YulIdentifier", + "src": "1618:9:61" + }, + { + "kind": "number", + "nativeSrc": "1629:2:61", + "nodeType": "YulLiteral", + "src": "1629:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1614:3:61", + "nodeType": "YulIdentifier", + "src": "1614:3:61" + }, + "nativeSrc": "1614:18:61", + "nodeType": "YulFunctionCall", + "src": "1614:18:61" + }, + { + "name": "value1", + "nativeSrc": "1634:6:61", + "nodeType": "YulIdentifier", + "src": "1634:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1607:6:61", + "nodeType": "YulIdentifier", + "src": "1607:6:61" + }, + "nativeSrc": "1607:34:61", + "nodeType": "YulFunctionCall", + "src": "1607:34:61" + }, + "nativeSrc": "1607:34:61", + "nodeType": "YulExpressionStatement", + "src": "1607:34:61" + }, + { + "nativeSrc": "1650:29:61", + "nodeType": "YulVariableDeclaration", + "src": "1650:29:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1668:3:61", + "nodeType": "YulLiteral", + "src": "1668:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "1673:1:61", + "nodeType": "YulLiteral", + "src": "1673:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "1664:3:61", + "nodeType": "YulIdentifier", + "src": "1664:3:61" + }, + "nativeSrc": "1664:11:61", + "nodeType": "YulFunctionCall", + "src": "1664:11:61" + }, + { + "kind": "number", + "nativeSrc": "1677:1:61", + "nodeType": "YulLiteral", + "src": "1677:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "1660:3:61", + "nodeType": "YulIdentifier", + "src": "1660:3:61" + }, + "nativeSrc": "1660:19:61", + "nodeType": "YulFunctionCall", + "src": "1660:19:61" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "1654:2:61", + "nodeType": "YulTypedName", + "src": "1654:2:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1699:9:61", + "nodeType": "YulIdentifier", + "src": "1699:9:61" + }, + { + "kind": "number", + "nativeSrc": "1710:2:61", + "nodeType": "YulLiteral", + "src": "1710:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1695:3:61", + "nodeType": "YulIdentifier", + "src": "1695:3:61" + }, + "nativeSrc": "1695:18:61", + "nodeType": "YulFunctionCall", + "src": "1695:18:61" + }, + { + "arguments": [ + { + "name": "value2", + "nativeSrc": "1719:6:61", + "nodeType": "YulIdentifier", + "src": "1719:6:61" + }, + { + "name": "_1", + "nativeSrc": "1727:2:61", + "nodeType": "YulIdentifier", + "src": "1727:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1715:3:61", + "nodeType": "YulIdentifier", + "src": "1715:3:61" + }, + "nativeSrc": "1715:15:61", + "nodeType": "YulFunctionCall", + "src": "1715:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1688:6:61", + "nodeType": "YulIdentifier", + "src": "1688:6:61" + }, + "nativeSrc": "1688:43:61", + "nodeType": "YulFunctionCall", + "src": "1688:43:61" + }, + "nativeSrc": "1688:43:61", + "nodeType": "YulExpressionStatement", + "src": "1688:43:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1751:9:61", + "nodeType": "YulIdentifier", + "src": "1751:9:61" + }, + { + "kind": "number", + "nativeSrc": "1762:2:61", + "nodeType": "YulLiteral", + "src": "1762:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1747:3:61", + "nodeType": "YulIdentifier", + "src": "1747:3:61" + }, + "nativeSrc": "1747:18:61", + "nodeType": "YulFunctionCall", + "src": "1747:18:61" + }, + { + "arguments": [ + { + "name": "value3", + "nativeSrc": "1771:6:61", + "nodeType": "YulIdentifier", + "src": "1771:6:61" + }, + { + "name": "_1", + "nativeSrc": "1779:2:61", + "nodeType": "YulIdentifier", + "src": "1779:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1767:3:61", + "nodeType": "YulIdentifier", + "src": "1767:3:61" + }, + "nativeSrc": "1767:15:61", + "nodeType": "YulFunctionCall", + "src": "1767:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1740:6:61", + "nodeType": "YulIdentifier", + "src": "1740:6:61" + }, + "nativeSrc": "1740:43:61", + "nodeType": "YulFunctionCall", + "src": "1740:43:61" + }, + "nativeSrc": "1740:43:61", + "nodeType": "YulExpressionStatement", + "src": "1740:43:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1803:9:61", + "nodeType": "YulIdentifier", + "src": "1803:9:61" + }, + { + "kind": "number", + "nativeSrc": "1814:3:61", + "nodeType": "YulLiteral", + "src": "1814:3:61", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1799:3:61", + "nodeType": "YulIdentifier", + "src": "1799:3:61" + }, + "nativeSrc": "1799:19:61", + "nodeType": "YulFunctionCall", + "src": "1799:19:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value4", + "nativeSrc": "1834:6:61", + "nodeType": "YulIdentifier", + "src": "1834:6:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "1827:6:61", + "nodeType": "YulIdentifier", + "src": "1827:6:61" + }, + "nativeSrc": "1827:14:61", + "nodeType": "YulFunctionCall", + "src": "1827:14:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "1820:6:61", + "nodeType": "YulIdentifier", + "src": "1820:6:61" + }, + "nativeSrc": "1820:22:61", + "nodeType": "YulFunctionCall", + "src": "1820:22:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1792:6:61", + "nodeType": "YulIdentifier", + "src": "1792:6:61" + }, + "nativeSrc": "1792:51:61", + "nodeType": "YulFunctionCall", + "src": "1792:51:61" + }, + "nativeSrc": "1792:51:61", + "nodeType": "YulExpressionStatement", + "src": "1792:51:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1863:9:61", + "nodeType": "YulIdentifier", + "src": "1863:9:61" + }, + { + "kind": "number", + "nativeSrc": "1874:3:61", + "nodeType": "YulLiteral", + "src": "1874:3:61", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1859:3:61", + "nodeType": "YulIdentifier", + "src": "1859:3:61" + }, + "nativeSrc": "1859:19:61", + "nodeType": "YulFunctionCall", + "src": "1859:19:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value5", + "nativeSrc": "1894:6:61", + "nodeType": "YulIdentifier", + "src": "1894:6:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "1887:6:61", + "nodeType": "YulIdentifier", + "src": "1887:6:61" + }, + "nativeSrc": "1887:14:61", + "nodeType": "YulFunctionCall", + "src": "1887:14:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "1880:6:61", + "nodeType": "YulIdentifier", + "src": "1880:6:61" + }, + "nativeSrc": "1880:22:61", + "nodeType": "YulFunctionCall", + "src": "1880:22:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1852:6:61", + "nodeType": "YulIdentifier", + "src": "1852:6:61" + }, + "nativeSrc": "1852:51:61", + "nodeType": "YulFunctionCall", + "src": "1852:51:61" + }, + "nativeSrc": "1852:51:61", + "nodeType": "YulExpressionStatement", + "src": "1852:51:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1923:9:61", + "nodeType": "YulIdentifier", + "src": "1923:9:61" + }, + { + "kind": "number", + "nativeSrc": "1934:3:61", + "nodeType": "YulLiteral", + "src": "1934:3:61", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1919:3:61", + "nodeType": "YulIdentifier", + "src": "1919:3:61" + }, + "nativeSrc": "1919:19:61", + "nodeType": "YulFunctionCall", + "src": "1919:19:61" + }, + { + "arguments": [ + { + "name": "value6", + "nativeSrc": "1944:6:61", + "nodeType": "YulIdentifier", + "src": "1944:6:61" + }, + { + "kind": "number", + "nativeSrc": "1952:10:61", + "nodeType": "YulLiteral", + "src": "1952:10:61", + "type": "", + "value": "0xffffffff" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1940:3:61", + "nodeType": "YulIdentifier", + "src": "1940:3:61" + }, + "nativeSrc": "1940:23:61", + "nodeType": "YulFunctionCall", + "src": "1940:23:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1912:6:61", + "nodeType": "YulIdentifier", + "src": "1912:6:61" + }, + "nativeSrc": "1912:52:61", + "nodeType": "YulFunctionCall", + "src": "1912:52:61" + }, + "nativeSrc": "1912:52:61", + "nodeType": "YulExpressionStatement", + "src": "1912:52:61" + }, + { + "expression": { + "arguments": [ + { + "name": "value7", + "nativeSrc": "1991:6:61", + "nodeType": "YulIdentifier", + "src": "1991:6:61" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2003:9:61", + "nodeType": "YulIdentifier", + "src": "2003:9:61" + }, + { + "kind": "number", + "nativeSrc": "2014:3:61", + "nodeType": "YulLiteral", + "src": "2014:3:61", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1999:3:61", + "nodeType": "YulIdentifier", + "src": "1999:3:61" + }, + "nativeSrc": "1999:19:61", + "nodeType": "YulFunctionCall", + "src": "1999:19:61" + } + ], + "functionName": { + "name": "abi_encode_uint32", + "nativeSrc": "1973:17:61", + "nodeType": "YulIdentifier", + "src": "1973:17:61" + }, + "nativeSrc": "1973:46:61", + "nodeType": "YulFunctionCall", + "src": "1973:46:61" + }, + "nativeSrc": "1973:46:61", + "nodeType": "YulExpressionStatement", + "src": "1973:46:61" + } + ] + }, + "name": "abi_encode_tuple_t_enum$_CancellationProposalStatus_$14549_t_uint256_t_address_t_address_t_bool_t_bool_t_uint32_t_uint32__to_t_uint8_t_uint256_t_address_t_address_t_bool_t_bool_t_uint32_t_uint32__fromStack_reversed", + "nativeSrc": "1063:962:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "1287:9:61", + "nodeType": "YulTypedName", + "src": "1287:9:61", + "type": "" + }, + { + "name": "value7", + "nativeSrc": "1298:6:61", + "nodeType": "YulTypedName", + "src": "1298:6:61", + "type": "" + }, + { + "name": "value6", + "nativeSrc": "1306:6:61", + "nodeType": "YulTypedName", + "src": "1306:6:61", + "type": "" + }, + { + "name": "value5", + "nativeSrc": "1314:6:61", + "nodeType": "YulTypedName", + "src": "1314:6:61", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "1322:6:61", + "nodeType": "YulTypedName", + "src": "1322:6:61", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "1330:6:61", + "nodeType": "YulTypedName", + "src": "1330:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "1338:6:61", + "nodeType": "YulTypedName", + "src": "1338:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "1346:6:61", + "nodeType": "YulTypedName", + "src": "1346:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "1354:6:61", + "nodeType": "YulTypedName", + "src": "1354:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "1365:4:61", + "nodeType": "YulTypedName", + "src": "1365:4:61", + "type": "" + } + ], + "src": "1063:962:61" + } + ] + }, + "contents": "{\n { }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_encode_tuple_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16__to_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16_t_uint16__fromStack_reversed(headStart, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 256)\n let _1 := 0xffff\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), and(value2, _1))\n mstore(add(headStart, 96), and(value3, _1))\n mstore(add(headStart, 128), and(value4, _1))\n mstore(add(headStart, 160), and(value5, _1))\n mstore(add(headStart, 192), and(value6, _1))\n mstore(add(headStart, 224), and(value7, _1))\n }\n function abi_encode_uint32(value, pos)\n {\n mstore(pos, and(value, 0xffffffff))\n }\n function abi_encode_tuple_t_enum$_CancellationProposalStatus_$14549_t_uint256_t_address_t_address_t_bool_t_bool_t_uint32_t_uint32__to_t_uint8_t_uint256_t_address_t_address_t_bool_t_bool_t_uint32_t_uint32__fromStack_reversed(headStart, value7, value6, value5, value4, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 256)\n if iszero(lt(value0, 5))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x21)\n revert(0, 0x24)\n }\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n let _1 := sub(shl(160, 1), 1)\n mstore(add(headStart, 64), and(value2, _1))\n mstore(add(headStart, 96), and(value3, _1))\n mstore(add(headStart, 128), iszero(iszero(value4)))\n mstore(add(headStart, 160), iszero(iszero(value5)))\n mstore(add(headStart, 192), and(value6, 0xffffffff))\n abi_encode_uint32(value7, add(headStart, 224))\n }\n}", + "id": 61, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": {}, + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50600436106100365760003560e01c8063a9bc55a21461003b578063bb520b47146100a0575b600080fd5b61004e6100493660046101ed565b6100c7565b6040805161ffff998a16815297891660208901529588169587019590955292861660608601529085166080850152841660a0840152831660c083015290911660e0820152610100015b60405180910390f35b6100b36100ae3660046101ed565b61014d565b604051610097989796959493929190610206565b60008060008060008060008060006100dd6101c9565b60009a8b5260205250506040909720600281015460039091015461ffff600160c81b830481169a600160d81b840482169a50600160e81b90930481169850808216975062010000820481169650600160201b820481169550600160301b820481169450600160401b909104169150565b60008060008060008060008060006101636101c9565b60009a8b52602052505060409097206002810154815460019092015460ff600160c01b80840482169c949b506001600160a01b038084169b5084169950820481169750600160c81b820416955063ffffffff600160a01b91829004811695509104169150565b7f0b8fb32ffc7043fda9e0ee2bcb4236acf95ab448752c73eff6cc7f2640ff850090565b6000602082840312156101ff57600080fd5b5035919050565b610100810160058a1061022957634e487b7160e01b600052602160045260246000fd5b98815260208101979097526001600160a01b0395861660408801529390941660608601529015156080850152151560a084015263ffffffff91821660c08401521660e0909101529056fea2646970667358221220f68cf5a3148658cd51833e30947000c9a8f57617c19b848e44c62c5fe01460f364736f6c63430008180033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x36 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA9BC55A2 EQ PUSH2 0x3B JUMPI DUP1 PUSH4 0xBB520B47 EQ PUSH2 0xA0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4E PUSH2 0x49 CALLDATASIZE PUSH1 0x4 PUSH2 0x1ED JUMP JUMPDEST PUSH2 0xC7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH2 0xFFFF SWAP10 DUP11 AND DUP2 MSTORE SWAP8 DUP10 AND PUSH1 0x20 DUP10 ADD MSTORE SWAP6 DUP9 AND SWAP6 DUP8 ADD SWAP6 SWAP1 SWAP6 MSTORE SWAP3 DUP7 AND PUSH1 0x60 DUP7 ADD MSTORE SWAP1 DUP6 AND PUSH1 0x80 DUP6 ADD MSTORE DUP5 AND PUSH1 0xA0 DUP5 ADD MSTORE DUP4 AND PUSH1 0xC0 DUP4 ADD MSTORE SWAP1 SWAP2 AND PUSH1 0xE0 DUP3 ADD MSTORE PUSH2 0x100 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB3 PUSH2 0xAE CALLDATASIZE PUSH1 0x4 PUSH2 0x1ED JUMP JUMPDEST PUSH2 0x14D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x97 SWAP9 SWAP8 SWAP7 SWAP6 SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x206 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0xDD PUSH2 0x1C9 JUMP JUMPDEST PUSH1 0x0 SWAP11 DUP12 MSTORE PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 SWAP8 KECCAK256 PUSH1 0x2 DUP2 ADD SLOAD PUSH1 0x3 SWAP1 SWAP2 ADD SLOAD PUSH2 0xFFFF PUSH1 0x1 PUSH1 0xC8 SHL DUP4 DIV DUP2 AND SWAP11 PUSH1 0x1 PUSH1 0xD8 SHL DUP5 DIV DUP3 AND SWAP11 POP PUSH1 0x1 PUSH1 0xE8 SHL SWAP1 SWAP4 DIV DUP2 AND SWAP9 POP DUP1 DUP3 AND SWAP8 POP PUSH3 0x10000 DUP3 DIV DUP2 AND SWAP7 POP PUSH1 0x1 PUSH1 0x20 SHL DUP3 DIV DUP2 AND SWAP6 POP PUSH1 0x1 PUSH1 0x30 SHL DUP3 DIV DUP2 AND SWAP5 POP PUSH1 0x1 PUSH1 0x40 SHL SWAP1 SWAP2 DIV AND SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x163 PUSH2 0x1C9 JUMP JUMPDEST PUSH1 0x0 SWAP11 DUP12 MSTORE PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 SWAP8 KECCAK256 PUSH1 0x2 DUP2 ADD SLOAD DUP2 SLOAD PUSH1 0x1 SWAP1 SWAP3 ADD SLOAD PUSH1 0xFF PUSH1 0x1 PUSH1 0xC0 SHL DUP1 DUP5 DIV DUP3 AND SWAP13 SWAP5 SWAP12 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP12 POP DUP5 AND SWAP10 POP DUP3 DIV DUP2 AND SWAP8 POP PUSH1 0x1 PUSH1 0xC8 SHL DUP3 DIV AND SWAP6 POP PUSH4 0xFFFFFFFF PUSH1 0x1 PUSH1 0xA0 SHL SWAP2 DUP3 SWAP1 DIV DUP2 AND SWAP6 POP SWAP2 DIV AND SWAP2 POP JUMP JUMPDEST PUSH32 0xB8FB32FFC7043FDA9E0EE2BCB4236ACF95AB448752C73EFF6CC7F2640FF8500 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x100 DUP2 ADD PUSH1 0x5 DUP11 LT PUSH2 0x229 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP9 DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP8 SWAP1 SWAP8 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 DUP7 AND PUSH1 0x40 DUP9 ADD MSTORE SWAP4 SWAP1 SWAP5 AND PUSH1 0x60 DUP7 ADD MSTORE SWAP1 ISZERO ISZERO PUSH1 0x80 DUP6 ADD MSTORE ISZERO ISZERO PUSH1 0xA0 DUP5 ADD MSTORE PUSH4 0xFFFFFFFF SWAP2 DUP3 AND PUSH1 0xC0 DUP5 ADD MSTORE AND PUSH1 0xE0 SWAP1 SWAP2 ADD MSTORE SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF6 DUP13 CREATE2 LOG3 EQ DUP7 PC 0xCD MLOAD DUP4 RETURNDATACOPY ADDRESS SWAP5 PUSH17 0xC9A8F57617C19B848E44C62C5FE01460 RETURN PUSH5 0x736F6C6343 STOP ADDMOD XOR STOP CALLER ", + "sourceMap": "208:16546:51:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5865:861;;;;;;:::i;:::-;;:::i;:::-;;;;536:6:61;569:15;;;551:34;;621:15;;;616:2;601:18;;594:43;673:15;;;653:18;;;646:43;;;;725:15;;;720:2;705:18;;698:43;778:15;;;772:3;757:19;;750:44;831:15;;825:3;810:19;;803:44;884:15;;878:3;863:19;;856:44;937:15;;;931:3;916:19;;909:44;513:3;498:19;5865:861:51;;;;;;;;5033:826;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;5865:861::-;5988:25;6027:26;6067:22;6103:23;6140:20;6174:21;6209:23;6246:24;6295:25;6323:36;:34;:36::i;:::-;:47;:56;;;;;-1:-1:-1;;6323:56:51;;;;6411:27;;;;6532:25;;;;;6411:27;-1:-1:-1;;;6411:27:51;;;;;-1:-1:-1;;;6452:28:51;;;;;-1:-1:-1;;;;6494:24:51;;;;;;-1:-1:-1;6532:25:51;;;;-1:-1:-1;6571:22:51;;;;;;-1:-1:-1;;;;6607:23:51;;;;;-1:-1:-1;;;;6644:25:51;;;;;-1:-1:-1;;;;6683:26:51;;;;;-1:-1:-1;5865:861:51:o;5033:826::-;5157:26;5197:20;5231:23;5268;5305:18;5337:21;5372;5407:20;5452:25;5480:36;:34;:36::i;:::-;:47;:56;;;;;-1:-1:-1;;5480:56:51;;;;5568:15;;;;5597:21;;5632:24;;;;;5568:15;-1:-1:-1;;;5568:15:51;;;;;;5597:21;;-1:-1:-1;;;;;;5632:24:51;;;;-1:-1:-1;5670:24:51;;;-1:-1:-1;5708:22:51;;;;;-1:-1:-1;;;;5744:25:51;;;;-1:-1:-1;5783:23:51;-1:-1:-1;;;5783:23:51;;;;;;;-1:-1:-1;5820:22:51;;;;-1:-1:-1;5033:826:51:o;2137:207::-;2290:38;;2137:207::o;14:180:61:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:61;;14:180;-1:-1:-1;14:180:61:o;1063:962::-;1407:3;1392:19;;1441:1;1430:13;;1420:144;;1486:10;1481:3;1477:20;1474:1;1467:31;1521:4;1518:1;1511:15;1549:4;1546:1;1539:15;1420:144;1573:25;;;1629:2;1614:18;;1607:34;;;;-1:-1:-1;;;;;1715:15:61;;;1710:2;1695:18;;1688:43;1767:15;;;;1762:2;1747:18;;1740:43;1827:14;;1820:22;1814:3;1799:19;;1792:51;1887:14;1880:22;1668:3;1859:19;;1852:51;1952:10;1940:23;;;1934:3;1919:19;;1912:52;1029:22;2014:3;1999:19;;;1017:35;1063:962;:::o" + }, + "methodIdentifiers": { + "getCancellationProposal(uint256)": "bb520b47", + "getCancellationReasons(uint256)": "a9bc55a2" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"CancellationProposalExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"existing\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"checked\",\"type\":\"uint256\"}],\"name\":\"IncorrectRefundAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"enum CancellationProposalStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"InvalidCancellationProposalStatus\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotOwnerOrSupplier\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"OnlyCurrentProposerCanWithdrawCancellation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"OnlySupplierCanFinalizeCancellation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"OwnerNotAcceptedCancellation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ProposerCanNotRejectCancellation\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"CancellationFinalized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"initialProposer\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"currentProposer\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"refundAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"ownerAccepted\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"supplierAccepted\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"timesCountered\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"timesRejected\",\"type\":\"uint32\"}],\"name\":\"CancellationPending\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"cancellationReason\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"cancellationReasonVersion\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"rejectionReason\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"rejectionVersion\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"counterReason\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"counterVersion\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"withdrawalReason\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"withdrawalVersion\",\"type\":\"uint16\"}],\"name\":\"CancellationReasons\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"rejectionReason\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"rejectionVersion\",\"type\":\"uint16\"}],\"name\":\"CancellationRejected\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"withdrawalReason\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"withdrawalVersion\",\"type\":\"uint16\"}],\"name\":\"CancellationWithdrawn\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getCancellationProposal\",\"outputs\":[{\"internalType\":\"enum CancellationProposalStatus\",\"name\":\"\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"refundAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"initialProposer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currentProposer\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"ownerAccepted\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"supplierAccepted\",\"type\":\"bool\"},{\"internalType\":\"uint32\",\"name\":\"timesCountered\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"timesRejected\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getCancellationReasons\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"cancellationReason\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"cancellationVersion\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"rejectionReason\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"rejectionVersion\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"counterReason\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"counterVersion\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"withdrawalReason\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"withdrawalVersion\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/booking-token/BookingTokenCancellable.sol\":\"BookingTokenCancellable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"contracts/booking-token/BookingTokenCancellable.sol\":{\"keccak256\":\"0x1c5c5af99af0d9886e63c9c4ae366d7b54d7d578b9341416b225b97b7651f24a\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://bda88975353ed62c73e6cb71caab10ea79d60a23793dfc7540427156998157ff\",\"dweb:/ipfs/QmRuosqXwx64TRUk2yzyNb3m4hneMnV4faDP2wGW6PBhra\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "contracts/booking-token/BookingTokenOperator.sol": { + "BookingTokenOperator": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "SafeERC20FailedOperation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "contract IERC20", + "name": "actualPaymentToken", + "type": "address" + }, + { + "internalType": "contract IERC20", + "name": "expectedPaymentToken", + "type": "address" + } + ], + "name": "UnexpectedPaymentToken", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "actualPrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expectedPrice", + "type": "uint256" + } + ], + "name": "UnexpectedPrice", + "type": "error" + }, + { + "inputs": [], + "name": "NATIVE_PAYMENT", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "OFFCHAIN_PAYMENT", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "610e1d61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100a35760003560e01c806307e47316146100a857806321b87f3a146100ca578063348e06dd146100ea578063793dddac1461010a5780637adf63b71461012a578063a0f07c741461014a578063b54e72d814610168578063bfb26c0614610188578063c7bffa9614610190578063e4c22569146101b0578063fd13a43e146101d0575b600080fd5b8180156100b457600080fd5b506100c86100c33660046109e7565b6101f0565b005b8180156100d657600080fd5b506100c86100e5366004610a36565b610257565b8180156100f657600080fd5b506100c8610105366004610a36565b6103f9565b81801561011657600080fd5b506100c86101253660046109e7565b61045e565b81801561013657600080fd5b506100c8610145366004610a76565b61048e565b610152600081565b60405161015f9190610ac0565b60405180910390f35b81801561017457600080fd5b506100c8610183366004610ad4565b6106d6565b610152600181565b81801561019c57600080fd5b506100c86101ab366004610b2d565b610741565b8180156101bc57600080fd5b506100c86101cb366004610b7f565b610797565b8180156101dc57600080fd5b506100c86101eb366004610ad4565b61080b565b6040516254232760e71b81526001600160a01b03851690632a1193809061021f90869086908690600401610c93565b600060405180830381600087803b15801561023957600080fd5b505af115801561024d573d6000803e3d6000fd5b5050505050505050565b6040516358c8e84960e11b8152600481018390526000906001600160a01b0385169063b191d09290602401602060405180830381865afa15801561029f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102c39190610cad565b90506001600160a01b03811661033a57604051631c54f0f760e01b81526001600160a01b03851690631c54f0f79084906103039087908390600401610cd1565b6000604051808303818588803b15801561031c57600080fd5b505af1158015610330573d6000803e3d6000fd5b50505050506103f3565b6000196001600160a01b038216016103b157604051631c54f0f760e01b81526001600160a01b03851690631c54f0f79061037a9086908690600401610cd1565b600060405180830381600087803b15801561039457600080fd5b505af11580156103a8573d6000803e3d6000fd5b505050506103f3565b6103c56001600160a01b038216858461083d565b604051631c54f0f760e01b81526001600160a01b03851690631c54f0f79061021f9086908690600401610cd1565b50505050565b6040516317ccce3160e31b81526001600160a01b0384169063be667188906104279085908590600401610cd1565b600060405180830381600087803b15801561044157600080fd5b505af1158015610455573d6000803e3d6000fd5b50505050505050565b6040516374fe60e960e01b81526001600160a01b038516906374fe60e99061021f90869086908690600401610c93565b6040516213f74f60e21b81526004810184905260009081906001600160a01b03871690624fdd3c906024016040805180830381865afa1580156104d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f99190610cdf565b91509150838214610533576040516330cb9c4160e01b81526004810186905260248101839052604481018590526064015b60405180910390fd5b826001600160a01b0316816001600160a01b03161461057f5760405163107f801560e21b8152600481018690526001600160a01b0380831660248301528416604482015260640161052a565b6001600160a01b0381166105ee576040516396591edd60e01b8152600481018690526001600160a01b038716906396591edd9084906024016000604051808303818588803b1580156105d057600080fd5b505af11580156105e4573d6000803e3d6000fd5b50505050506106ce565b6000196001600160a01b0382160161065f576040516396591edd60e01b8152600481018690526001600160a01b038716906396591edd90602401600060405180830381600087803b15801561064257600080fd5b505af1158015610656573d6000803e3d6000fd5b505050506106ce565b6106736001600160a01b038216878461083d565b6040516396591edd60e01b8152600481018690526001600160a01b038716906396591edd90602401600060405180830381600087803b1580156106b557600080fd5b505af11580156106c9573d6000803e3d6000fd5b505050505b505050505050565b60405163f7e45f0960e01b81526001600160a01b0386169063f7e45f0990610708908790879087908790600401610d0f565b600060405180830381600087803b15801561072257600080fd5b505af1158015610736573d6000803e3d6000fd5b505050505050505050565b6040516339699c9760e21b8152600481018290526001600160a01b0383169063e5a6725c90602401600060405180830381600087803b15801561078357600080fd5b505af11580156106ce573d6000803e3d6000fd5b604051636d95934160e11b81526001600160a01b0389169063db2b2682906107cf908a908a908a908a908a908a908a90600401610d31565b600060405180830381600087803b1580156107e957600080fd5b505af11580156107fd573d6000803e3d6000fd5b505050505050505050505050565b604051630e95440960e31b81526001600160a01b038616906374aa204890610708908790879087908790600401610d0f565b6000836001600160a01b031663095ea7b38484604051602401610861929190610dce565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050905061089a8482610901565b6103f3576108f784856001600160a01b031663095ea7b38660006040516024016108c5929190610dce565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050610950565b6103f38482610950565b6000806000806020600086516020880160008a5af192503d91506000519050828015610946575081156109375780600114610946565b6000866001600160a01b03163b115b9695505050505050565b600080602060008451602086016000885af180610973576040513d6000823e3d81fd5b50506000513d9150811561098b578060011415610998565b6001600160a01b0384163b155b156103f35783604051635274afe760e01b815260040161052a9190610ac0565b6001600160a01b03811681146109cd57600080fd5b50565b803561ffff811681146109e257600080fd5b919050565b600080600080608085870312156109fd57600080fd5b8435610a08816109b8565b935060208501359250610a1d604086016109d0565b9150610a2b606086016109d0565b905092959194509250565b600080600060608486031215610a4b57600080fd5b8335610a56816109b8565b95602085013595506040909401359392505050565b80356109e2816109b8565b60008060008060808587031215610a8c57600080fd5b8435610a97816109b8565b935060208501359250604085013591506060850135610ab5816109b8565b939692955090935050565b6001600160a01b0391909116815260200190565b600080600080600060a08688031215610aec57600080fd5b8535610af7816109b8565b94506020860135935060408601359250610b13606087016109d0565b9150610b21608087016109d0565b90509295509295909350565b60008060408385031215610b4057600080fd5b8235610b4b816109b8565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b803580151581146109e257600080fd5b600080600080600080600080610100898b031215610b9c57600080fd5b8835610ba7816109b8565b97506020890135610bb7816109b8565b965060408901356001600160401b0380821115610bd357600080fd5b818b0191508b601f830112610be757600080fd5b813581811115610bf957610bf9610b59565b604051601f8201601f19908116603f01168101908382118183101715610c2157610c21610b59565b816040528281528e6020848701011115610c3a57600080fd5b82602086016020830137600060208483010152809a5050505050506060890135945060808901359350610c6f60a08a01610a6b565b925060c08901359150610c8460e08a01610b6f565b90509295985092959890939650565b92835261ffff918216602084015216604082015260600190565b600060208284031215610cbf57600080fd5b8151610cca816109b8565b9392505050565b918252602082015260400190565b60008060408385031215610cf257600080fd5b825191506020830151610d04816109b8565b809150509250929050565b938452602084019290925261ffff908116604084015216606082015260800190565b60018060a01b03881681526000602060e0602084015288518060e085015260005b81811015610d6f578a810183015185820161010001528201610d52565b506101009150600082828601015281601f19601f83011685010192505050866040830152856060830152610dae60808301866001600160a01b03169052565b8360a0830152610dc260c083018415159052565b98975050505050505050565b6001600160a01b0392909216825260208201526040019056fea264697066735822122084540fefd928b98a6276d315bd50a8a3f0275ecdfc9709a3251b9e5780a0e80b64736f6c63430008180033", + "opcodes": "PUSH2 0xE1D PUSH2 0x3A PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH2 0x2D JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7E47316 EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x21B87F3A EQ PUSH2 0xCA JUMPI DUP1 PUSH4 0x348E06DD EQ PUSH2 0xEA JUMPI DUP1 PUSH4 0x793DDDAC EQ PUSH2 0x10A JUMPI DUP1 PUSH4 0x7ADF63B7 EQ PUSH2 0x12A JUMPI DUP1 PUSH4 0xA0F07C74 EQ PUSH2 0x14A JUMPI DUP1 PUSH4 0xB54E72D8 EQ PUSH2 0x168 JUMPI DUP1 PUSH4 0xBFB26C06 EQ PUSH2 0x188 JUMPI DUP1 PUSH4 0xC7BFFA96 EQ PUSH2 0x190 JUMPI DUP1 PUSH4 0xE4C22569 EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0xFD13A43E EQ PUSH2 0x1D0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP1 ISZERO PUSH2 0xB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC8 PUSH2 0xC3 CALLDATASIZE PUSH1 0x4 PUSH2 0x9E7 JUMP JUMPDEST PUSH2 0x1F0 JUMP JUMPDEST STOP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0xD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC8 PUSH2 0xE5 CALLDATASIZE PUSH1 0x4 PUSH2 0xA36 JUMP JUMPDEST PUSH2 0x257 JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0xF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC8 PUSH2 0x105 CALLDATASIZE PUSH1 0x4 PUSH2 0xA36 JUMP JUMPDEST PUSH2 0x3F9 JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x116 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC8 PUSH2 0x125 CALLDATASIZE PUSH1 0x4 PUSH2 0x9E7 JUMP JUMPDEST PUSH2 0x45E JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x136 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC8 PUSH2 0x145 CALLDATASIZE PUSH1 0x4 PUSH2 0xA76 JUMP JUMPDEST PUSH2 0x48E JUMP JUMPDEST PUSH2 0x152 PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x15F SWAP2 SWAP1 PUSH2 0xAC0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC8 PUSH2 0x183 CALLDATASIZE PUSH1 0x4 PUSH2 0xAD4 JUMP JUMPDEST PUSH2 0x6D6 JUMP JUMPDEST PUSH2 0x152 PUSH1 0x1 DUP2 JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x19C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC8 PUSH2 0x1AB CALLDATASIZE PUSH1 0x4 PUSH2 0xB2D JUMP JUMPDEST PUSH2 0x741 JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x1BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC8 PUSH2 0x1CB CALLDATASIZE PUSH1 0x4 PUSH2 0xB7F JUMP JUMPDEST PUSH2 0x797 JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x1DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC8 PUSH2 0x1EB CALLDATASIZE PUSH1 0x4 PUSH2 0xAD4 JUMP JUMPDEST PUSH2 0x80B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x542327 PUSH1 0xE7 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x2A119380 SWAP1 PUSH2 0x21F SWAP1 DUP7 SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0xC93 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x239 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x24D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x58C8E849 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xB191D092 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2C3 SWAP2 SWAP1 PUSH2 0xCAD JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x33A JUMPI PUSH1 0x40 MLOAD PUSH4 0x1C54F0F7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x1C54F0F7 SWAP1 DUP5 SWAP1 PUSH2 0x303 SWAP1 DUP8 SWAP1 DUP4 SWAP1 PUSH1 0x4 ADD PUSH2 0xCD1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x31C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x330 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x3F3 JUMP JUMPDEST PUSH1 0x0 NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ADD PUSH2 0x3B1 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1C54F0F7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x1C54F0F7 SWAP1 PUSH2 0x37A SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0xCD1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x394 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x3F3 JUMP JUMPDEST PUSH2 0x3C5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP6 DUP5 PUSH2 0x83D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x1C54F0F7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x1C54F0F7 SWAP1 PUSH2 0x21F SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0xCD1 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x17CCCE31 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0xBE667188 SWAP1 PUSH2 0x427 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0xCD1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x441 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x455 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x74FE60E9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x74FE60E9 SWAP1 PUSH2 0x21F SWAP1 DUP7 SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0xC93 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x13F74F PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH3 0x4FDD3C SWAP1 PUSH1 0x24 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4D5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4F9 SWAP2 SWAP1 PUSH2 0xCDF JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP4 DUP3 EQ PUSH2 0x533 JUMPI PUSH1 0x40 MLOAD PUSH4 0x30CB9C41 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x57F JUMPI PUSH1 0x40 MLOAD PUSH4 0x107F8015 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x52A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x5EE JUMPI PUSH1 0x40 MLOAD PUSH4 0x96591EDD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0x96591EDD SWAP1 DUP5 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5E4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x6CE JUMP JUMPDEST PUSH1 0x0 NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ADD PUSH2 0x65F JUMPI PUSH1 0x40 MLOAD PUSH4 0x96591EDD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0x96591EDD SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x642 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x656 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x6CE JUMP JUMPDEST PUSH2 0x673 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP8 DUP5 PUSH2 0x83D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x96591EDD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0x96591EDD SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6C9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xF7E45F09 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH4 0xF7E45F09 SWAP1 PUSH2 0x708 SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0xD0F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x722 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x736 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x39699C97 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0xE5A6725C SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x783 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6CE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x6D959341 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH4 0xDB2B2682 SWAP1 PUSH2 0x7CF SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0xD31 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7FD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xE954409 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH4 0x74AA2048 SWAP1 PUSH2 0x708 SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0xD0F JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x95EA7B3 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x861 SWAP3 SWAP2 SWAP1 PUSH2 0xDCE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP SWAP1 POP PUSH2 0x89A DUP5 DUP3 PUSH2 0x901 JUMP JUMPDEST PUSH2 0x3F3 JUMPI PUSH2 0x8F7 DUP5 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x95EA7B3 DUP7 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x8C5 SWAP3 SWAP2 SWAP1 PUSH2 0xDCE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH2 0x950 JUMP JUMPDEST PUSH2 0x3F3 DUP5 DUP3 PUSH2 0x950 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x20 PUSH1 0x0 DUP7 MLOAD PUSH1 0x20 DUP9 ADD PUSH1 0x0 DUP11 GAS CALL SWAP3 POP RETURNDATASIZE SWAP2 POP PUSH1 0x0 MLOAD SWAP1 POP DUP3 DUP1 ISZERO PUSH2 0x946 JUMPI POP DUP2 ISZERO PUSH2 0x937 JUMPI DUP1 PUSH1 0x1 EQ PUSH2 0x946 JUMP JUMPDEST PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE GT JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 PUSH1 0x0 DUP5 MLOAD PUSH1 0x20 DUP7 ADD PUSH1 0x0 DUP9 GAS CALL DUP1 PUSH2 0x973 JUMPI PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST POP POP PUSH1 0x0 MLOAD RETURNDATASIZE SWAP2 POP DUP2 ISZERO PUSH2 0x98B JUMPI DUP1 PUSH1 0x1 EQ ISZERO PUSH2 0x998 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x3F3 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x52A SWAP2 SWAP1 PUSH2 0xAC0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x9CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x9E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x9FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0xA08 DUP2 PUSH2 0x9B8 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH2 0xA1D PUSH1 0x40 DUP7 ADD PUSH2 0x9D0 JUMP JUMPDEST SWAP2 POP PUSH2 0xA2B PUSH1 0x60 DUP7 ADD PUSH2 0x9D0 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xA4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0xA56 DUP2 PUSH2 0x9B8 JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x9E2 DUP2 PUSH2 0x9B8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xA8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0xA97 DUP2 PUSH2 0x9B8 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0xAB5 DUP2 PUSH2 0x9B8 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xAEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0xAF7 DUP2 PUSH2 0x9B8 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH2 0xB13 PUSH1 0x60 DUP8 ADD PUSH2 0x9D0 JUMP JUMPDEST SWAP2 POP PUSH2 0xB21 PUSH1 0x80 DUP8 ADD PUSH2 0x9D0 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xB4B DUP2 PUSH2 0x9B8 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x9E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0xB9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0xBA7 DUP2 PUSH2 0x9B8 JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0xBB7 DUP2 PUSH2 0x9B8 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0xBD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP12 ADD SWAP2 POP DUP12 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xBE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xBF9 JUMPI PUSH2 0xBF9 PUSH2 0xB59 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xC21 JUMPI PUSH2 0xC21 PUSH2 0xB59 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP15 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xC3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP11 POP POP POP POP POP POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP4 POP PUSH2 0xC6F PUSH1 0xA0 DUP11 ADD PUSH2 0xA6B JUMP JUMPDEST SWAP3 POP PUSH1 0xC0 DUP10 ADD CALLDATALOAD SWAP2 POP PUSH2 0xC84 PUSH1 0xE0 DUP11 ADD PUSH2 0xB6F JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH2 0xFFFF SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xCBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xCCA DUP2 PUSH2 0x9B8 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xCF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD SWAP2 POP PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0xD04 DUP2 PUSH2 0x9B8 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH2 0xFFFF SWAP1 DUP2 AND PUSH1 0x40 DUP5 ADD MSTORE AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP9 AND DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 PUSH1 0xE0 PUSH1 0x20 DUP5 ADD MSTORE DUP9 MLOAD DUP1 PUSH1 0xE0 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xD6F JUMPI DUP11 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH2 0x100 ADD MSTORE DUP3 ADD PUSH2 0xD52 JUMP JUMPDEST POP PUSH2 0x100 SWAP2 POP PUSH1 0x0 DUP3 DUP3 DUP7 ADD ADD MSTORE DUP2 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP DUP7 PUSH1 0x40 DUP4 ADD MSTORE DUP6 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0xDAE PUSH1 0x80 DUP4 ADD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST DUP4 PUSH1 0xA0 DUP4 ADD MSTORE PUSH2 0xDC2 PUSH1 0xC0 DUP4 ADD DUP5 ISZERO ISZERO SWAP1 MSTORE JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP5 SLOAD 0xF 0xEF 0xD9 0x28 0xB9 DUP11 PUSH3 0x76D315 0xBD POP 0xA8 LOG3 CREATE 0x27 MCOPY 0xCD 0xFC SWAP8 MULMOD LOG3 0x25 SHL SWAP15 JUMPI DUP1 LOG0 0xE8 SIGNEXTEND PUSH5 0x736F6C6343 STOP ADDMOD XOR STOP CALLER ", + "sourceMap": "584:9105:52:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;584:9105:52;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@NATIVE_PAYMENT_15553": { + "entryPoint": null, + "id": 15553, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@OFFCHAIN_PAYMENT_15560": { + "entryPoint": null, + "id": 15560, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_callOptionalReturnBool_4949": { + "entryPoint": 2305, + "id": 4949, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_callOptionalReturn_4908": { + "entryPoint": 2384, + "id": 4908, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@acceptCancellation_15774": { + "entryPoint": 1017, + "id": 15774, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@buyBookingToken_15714": { + "entryPoint": 1166, + "id": 15714, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@counterCancellation_15799": { + "entryPoint": 2059, + "id": 15799, + "parameterSlots": 5, + "returnSlots": 0 + }, + "@finalizeCancellation_15914": { + "entryPoint": 599, + "id": 15914, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@forceApprove_4734": { + "entryPoint": 2109, + "id": 4734, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@initiateCancellation_15755": { + "entryPoint": 1750, + "id": 15755, + "parameterSlots": 5, + "returnSlots": 0 + }, + "@mintBookingToken_15613": { + "entryPoint": 1943, + "id": 15613, + "parameterSlots": 8, + "returnSlots": 0 + }, + "@recordExpiration_15730": { + "entryPoint": 1857, + "id": 15730, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@rejectCancellation_15843": { + "entryPoint": 1118, + "id": 15843, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@withdrawCancellation_15821": { + "entryPoint": 496, + "id": 15821, + "parameterSlots": 4, + "returnSlots": 0 + }, + "abi_decode_bool": { + "entryPoint": 2927, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_decode_contract_IERC20": { + "entryPoint": 2667, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_addresst_string_memory_ptrt_uint256t_uint256t_contract$_IERC20_$4513t_uint256t_bool": { + "entryPoint": 2943, + "id": null, + "parameterSlots": 2, + "returnSlots": 8 + }, + "abi_decode_tuple_t_addresst_uint256": { + "entryPoint": 2861, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_addresst_uint256t_uint16t_uint16": { + "entryPoint": 2535, + "id": null, + "parameterSlots": 2, + "returnSlots": 4 + }, + "abi_decode_tuple_t_addresst_uint256t_uint256": { + "entryPoint": 2614, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_addresst_uint256t_uint256t_contract$_IERC20_$4513": { + "entryPoint": 2678, + "id": null, + "parameterSlots": 2, + "returnSlots": 4 + }, + "abi_decode_tuple_t_addresst_uint256t_uint256t_uint16t_uint16": { + "entryPoint": 2772, + "id": null, + "parameterSlots": 2, + "returnSlots": 5 + }, + "abi_decode_tuple_t_contract$_IERC20_$4513_fromMemory": { + "entryPoint": 3245, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256t_contract$_IERC20_$4513_fromMemory": { + "entryPoint": 3295, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_uint16": { + "entryPoint": 2512, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_bool": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_contract_IERC20": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_library_reversed": { + "entryPoint": 2752, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_rational_0_by_1__to_t_address_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_string_memory_ptr_t_uint256_t_uint256_t_contract$_IERC20_$4513_t_uint256_t_bool__to_t_address_t_string_memory_ptr_t_uint256_t_uint256_t_address_t_uint256_t_bool__fromStack_reversed": { + "entryPoint": 3377, + "id": null, + "parameterSlots": 8, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": { + "entryPoint": 3534, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_contract$_IERC20_$4513_t_contract$_IERC20_$4513__to_t_uint256_t_address_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint16_t_uint16__to_t_uint256_t_uint16_t_uint16__fromStack_reversed": { + "entryPoint": 3219, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": 3281, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256_t_uint16_t_uint16__to_t_uint256_t_uint256_t_uint16_t_uint16__fromStack_reversed": { + "entryPoint": 3343, + "id": null, + "parameterSlots": 5, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "panic_error_0x41": { + "entryPoint": 2905, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "validator_revert_address": { + "entryPoint": 2488, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nativeSrc": "0:9428:61", + "nodeType": "YulBlock", + "src": "0:9428:61", + "statements": [ + { + "nativeSrc": "6:3:61", + "nodeType": "YulBlock", + "src": "6:3:61", + "statements": [] + }, + { + "body": { + "nativeSrc": "59:86:61", + "nodeType": "YulBlock", + "src": "59:86:61", + "statements": [ + { + "body": { + "nativeSrc": "123:16:61", + "nodeType": "YulBlock", + "src": "123:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "132:1:61", + "nodeType": "YulLiteral", + "src": "132:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "135:1:61", + "nodeType": "YulLiteral", + "src": "135:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "125:6:61", + "nodeType": "YulIdentifier", + "src": "125:6:61" + }, + "nativeSrc": "125:12:61", + "nodeType": "YulFunctionCall", + "src": "125:12:61" + }, + "nativeSrc": "125:12:61", + "nodeType": "YulExpressionStatement", + "src": "125:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "82:5:61", + "nodeType": "YulIdentifier", + "src": "82:5:61" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "93:5:61", + "nodeType": "YulIdentifier", + "src": "93:5:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "108:3:61", + "nodeType": "YulLiteral", + "src": "108:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "113:1:61", + "nodeType": "YulLiteral", + "src": "113:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "104:3:61", + "nodeType": "YulIdentifier", + "src": "104:3:61" + }, + "nativeSrc": "104:11:61", + "nodeType": "YulFunctionCall", + "src": "104:11:61" + }, + { + "kind": "number", + "nativeSrc": "117:1:61", + "nodeType": "YulLiteral", + "src": "117:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "100:3:61", + "nodeType": "YulIdentifier", + "src": "100:3:61" + }, + "nativeSrc": "100:19:61", + "nodeType": "YulFunctionCall", + "src": "100:19:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "89:3:61", + "nodeType": "YulIdentifier", + "src": "89:3:61" + }, + "nativeSrc": "89:31:61", + "nodeType": "YulFunctionCall", + "src": "89:31:61" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "79:2:61", + "nodeType": "YulIdentifier", + "src": "79:2:61" + }, + "nativeSrc": "79:42:61", + "nodeType": "YulFunctionCall", + "src": "79:42:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "72:6:61", + "nodeType": "YulIdentifier", + "src": "72:6:61" + }, + "nativeSrc": "72:50:61", + "nodeType": "YulFunctionCall", + "src": "72:50:61" + }, + "nativeSrc": "69:70:61", + "nodeType": "YulIf", + "src": "69:70:61" + } + ] + }, + "name": "validator_revert_address", + "nativeSrc": "14:131:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "48:5:61", + "nodeType": "YulTypedName", + "src": "48:5:61", + "type": "" + } + ], + "src": "14:131:61" + }, + { + "body": { + "nativeSrc": "198:111:61", + "nodeType": "YulBlock", + "src": "198:111:61", + "statements": [ + { + "nativeSrc": "208:29:61", + "nodeType": "YulAssignment", + "src": "208:29:61", + "value": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "230:6:61", + "nodeType": "YulIdentifier", + "src": "230:6:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "217:12:61", + "nodeType": "YulIdentifier", + "src": "217:12:61" + }, + "nativeSrc": "217:20:61", + "nodeType": "YulFunctionCall", + "src": "217:20:61" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "208:5:61", + "nodeType": "YulIdentifier", + "src": "208:5:61" + } + ] + }, + { + "body": { + "nativeSrc": "287:16:61", + "nodeType": "YulBlock", + "src": "287:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "296:1:61", + "nodeType": "YulLiteral", + "src": "296:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "299:1:61", + "nodeType": "YulLiteral", + "src": "299:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "289:6:61", + "nodeType": "YulIdentifier", + "src": "289:6:61" + }, + "nativeSrc": "289:12:61", + "nodeType": "YulFunctionCall", + "src": "289:12:61" + }, + "nativeSrc": "289:12:61", + "nodeType": "YulExpressionStatement", + "src": "289:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "259:5:61", + "nodeType": "YulIdentifier", + "src": "259:5:61" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "270:5:61", + "nodeType": "YulIdentifier", + "src": "270:5:61" + }, + { + "kind": "number", + "nativeSrc": "277:6:61", + "nodeType": "YulLiteral", + "src": "277:6:61", + "type": "", + "value": "0xffff" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "266:3:61", + "nodeType": "YulIdentifier", + "src": "266:3:61" + }, + "nativeSrc": "266:18:61", + "nodeType": "YulFunctionCall", + "src": "266:18:61" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "256:2:61", + "nodeType": "YulIdentifier", + "src": "256:2:61" + }, + "nativeSrc": "256:29:61", + "nodeType": "YulFunctionCall", + "src": "256:29:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "249:6:61", + "nodeType": "YulIdentifier", + "src": "249:6:61" + }, + "nativeSrc": "249:37:61", + "nodeType": "YulFunctionCall", + "src": "249:37:61" + }, + "nativeSrc": "246:57:61", + "nodeType": "YulIf", + "src": "246:57:61" + } + ] + }, + "name": "abi_decode_uint16", + "nativeSrc": "150:159:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nativeSrc": "177:6:61", + "nodeType": "YulTypedName", + "src": "177:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nativeSrc": "188:5:61", + "nodeType": "YulTypedName", + "src": "188:5:61", + "type": "" + } + ], + "src": "150:159:61" + }, + { + "body": { + "nativeSrc": "433:341:61", + "nodeType": "YulBlock", + "src": "433:341:61", + "statements": [ + { + "body": { + "nativeSrc": "480:16:61", + "nodeType": "YulBlock", + "src": "480:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "489:1:61", + "nodeType": "YulLiteral", + "src": "489:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "492:1:61", + "nodeType": "YulLiteral", + "src": "492:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "482:6:61", + "nodeType": "YulIdentifier", + "src": "482:6:61" + }, + "nativeSrc": "482:12:61", + "nodeType": "YulFunctionCall", + "src": "482:12:61" + }, + "nativeSrc": "482:12:61", + "nodeType": "YulExpressionStatement", + "src": "482:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "454:7:61", + "nodeType": "YulIdentifier", + "src": "454:7:61" + }, + { + "name": "headStart", + "nativeSrc": "463:9:61", + "nodeType": "YulIdentifier", + "src": "463:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "450:3:61", + "nodeType": "YulIdentifier", + "src": "450:3:61" + }, + "nativeSrc": "450:23:61", + "nodeType": "YulFunctionCall", + "src": "450:23:61" + }, + { + "kind": "number", + "nativeSrc": "475:3:61", + "nodeType": "YulLiteral", + "src": "475:3:61", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "446:3:61", + "nodeType": "YulIdentifier", + "src": "446:3:61" + }, + "nativeSrc": "446:33:61", + "nodeType": "YulFunctionCall", + "src": "446:33:61" + }, + "nativeSrc": "443:53:61", + "nodeType": "YulIf", + "src": "443:53:61" + }, + { + "nativeSrc": "505:36:61", + "nodeType": "YulVariableDeclaration", + "src": "505:36:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "531:9:61", + "nodeType": "YulIdentifier", + "src": "531:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "518:12:61", + "nodeType": "YulIdentifier", + "src": "518:12:61" + }, + "nativeSrc": "518:23:61", + "nodeType": "YulFunctionCall", + "src": "518:23:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "509:5:61", + "nodeType": "YulTypedName", + "src": "509:5:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "575:5:61", + "nodeType": "YulIdentifier", + "src": "575:5:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "550:24:61", + "nodeType": "YulIdentifier", + "src": "550:24:61" + }, + "nativeSrc": "550:31:61", + "nodeType": "YulFunctionCall", + "src": "550:31:61" + }, + "nativeSrc": "550:31:61", + "nodeType": "YulExpressionStatement", + "src": "550:31:61" + }, + { + "nativeSrc": "590:15:61", + "nodeType": "YulAssignment", + "src": "590:15:61", + "value": { + "name": "value", + "nativeSrc": "600:5:61", + "nodeType": "YulIdentifier", + "src": "600:5:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "590:6:61", + "nodeType": "YulIdentifier", + "src": "590:6:61" + } + ] + }, + { + "nativeSrc": "614:42:61", + "nodeType": "YulAssignment", + "src": "614:42:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "641:9:61", + "nodeType": "YulIdentifier", + "src": "641:9:61" + }, + { + "kind": "number", + "nativeSrc": "652:2:61", + "nodeType": "YulLiteral", + "src": "652:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "637:3:61", + "nodeType": "YulIdentifier", + "src": "637:3:61" + }, + "nativeSrc": "637:18:61", + "nodeType": "YulFunctionCall", + "src": "637:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "624:12:61", + "nodeType": "YulIdentifier", + "src": "624:12:61" + }, + "nativeSrc": "624:32:61", + "nodeType": "YulFunctionCall", + "src": "624:32:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "614:6:61", + "nodeType": "YulIdentifier", + "src": "614:6:61" + } + ] + }, + { + "nativeSrc": "665:47:61", + "nodeType": "YulAssignment", + "src": "665:47:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "697:9:61", + "nodeType": "YulIdentifier", + "src": "697:9:61" + }, + { + "kind": "number", + "nativeSrc": "708:2:61", + "nodeType": "YulLiteral", + "src": "708:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "693:3:61", + "nodeType": "YulIdentifier", + "src": "693:3:61" + }, + "nativeSrc": "693:18:61", + "nodeType": "YulFunctionCall", + "src": "693:18:61" + } + ], + "functionName": { + "name": "abi_decode_uint16", + "nativeSrc": "675:17:61", + "nodeType": "YulIdentifier", + "src": "675:17:61" + }, + "nativeSrc": "675:37:61", + "nodeType": "YulFunctionCall", + "src": "675:37:61" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "665:6:61", + "nodeType": "YulIdentifier", + "src": "665:6:61" + } + ] + }, + { + "nativeSrc": "721:47:61", + "nodeType": "YulAssignment", + "src": "721:47:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "753:9:61", + "nodeType": "YulIdentifier", + "src": "753:9:61" + }, + { + "kind": "number", + "nativeSrc": "764:2:61", + "nodeType": "YulLiteral", + "src": "764:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "749:3:61", + "nodeType": "YulIdentifier", + "src": "749:3:61" + }, + "nativeSrc": "749:18:61", + "nodeType": "YulFunctionCall", + "src": "749:18:61" + } + ], + "functionName": { + "name": "abi_decode_uint16", + "nativeSrc": "731:17:61", + "nodeType": "YulIdentifier", + "src": "731:17:61" + }, + "nativeSrc": "731:37:61", + "nodeType": "YulFunctionCall", + "src": "731:37:61" + }, + "variableNames": [ + { + "name": "value3", + "nativeSrc": "721:6:61", + "nodeType": "YulIdentifier", + "src": "721:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_uint256t_uint16t_uint16", + "nativeSrc": "314:460:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "375:9:61", + "nodeType": "YulTypedName", + "src": "375:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "386:7:61", + "nodeType": "YulTypedName", + "src": "386:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "398:6:61", + "nodeType": "YulTypedName", + "src": "398:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "406:6:61", + "nodeType": "YulTypedName", + "src": "406:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "414:6:61", + "nodeType": "YulTypedName", + "src": "414:6:61", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "422:6:61", + "nodeType": "YulTypedName", + "src": "422:6:61", + "type": "" + } + ], + "src": "314:460:61" + }, + { + "body": { + "nativeSrc": "883:279:61", + "nodeType": "YulBlock", + "src": "883:279:61", + "statements": [ + { + "body": { + "nativeSrc": "929:16:61", + "nodeType": "YulBlock", + "src": "929:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "938:1:61", + "nodeType": "YulLiteral", + "src": "938:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "941:1:61", + "nodeType": "YulLiteral", + "src": "941:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "931:6:61", + "nodeType": "YulIdentifier", + "src": "931:6:61" + }, + "nativeSrc": "931:12:61", + "nodeType": "YulFunctionCall", + "src": "931:12:61" + }, + "nativeSrc": "931:12:61", + "nodeType": "YulExpressionStatement", + "src": "931:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "904:7:61", + "nodeType": "YulIdentifier", + "src": "904:7:61" + }, + { + "name": "headStart", + "nativeSrc": "913:9:61", + "nodeType": "YulIdentifier", + "src": "913:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "900:3:61", + "nodeType": "YulIdentifier", + "src": "900:3:61" + }, + "nativeSrc": "900:23:61", + "nodeType": "YulFunctionCall", + "src": "900:23:61" + }, + { + "kind": "number", + "nativeSrc": "925:2:61", + "nodeType": "YulLiteral", + "src": "925:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "896:3:61", + "nodeType": "YulIdentifier", + "src": "896:3:61" + }, + "nativeSrc": "896:32:61", + "nodeType": "YulFunctionCall", + "src": "896:32:61" + }, + "nativeSrc": "893:52:61", + "nodeType": "YulIf", + "src": "893:52:61" + }, + { + "nativeSrc": "954:36:61", + "nodeType": "YulVariableDeclaration", + "src": "954:36:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "980:9:61", + "nodeType": "YulIdentifier", + "src": "980:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "967:12:61", + "nodeType": "YulIdentifier", + "src": "967:12:61" + }, + "nativeSrc": "967:23:61", + "nodeType": "YulFunctionCall", + "src": "967:23:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "958:5:61", + "nodeType": "YulTypedName", + "src": "958:5:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "1024:5:61", + "nodeType": "YulIdentifier", + "src": "1024:5:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "999:24:61", + "nodeType": "YulIdentifier", + "src": "999:24:61" + }, + "nativeSrc": "999:31:61", + "nodeType": "YulFunctionCall", + "src": "999:31:61" + }, + "nativeSrc": "999:31:61", + "nodeType": "YulExpressionStatement", + "src": "999:31:61" + }, + { + "nativeSrc": "1039:15:61", + "nodeType": "YulAssignment", + "src": "1039:15:61", + "value": { + "name": "value", + "nativeSrc": "1049:5:61", + "nodeType": "YulIdentifier", + "src": "1049:5:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "1039:6:61", + "nodeType": "YulIdentifier", + "src": "1039:6:61" + } + ] + }, + { + "nativeSrc": "1063:42:61", + "nodeType": "YulAssignment", + "src": "1063:42:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1090:9:61", + "nodeType": "YulIdentifier", + "src": "1090:9:61" + }, + { + "kind": "number", + "nativeSrc": "1101:2:61", + "nodeType": "YulLiteral", + "src": "1101:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1086:3:61", + "nodeType": "YulIdentifier", + "src": "1086:3:61" + }, + "nativeSrc": "1086:18:61", + "nodeType": "YulFunctionCall", + "src": "1086:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "1073:12:61", + "nodeType": "YulIdentifier", + "src": "1073:12:61" + }, + "nativeSrc": "1073:32:61", + "nodeType": "YulFunctionCall", + "src": "1073:32:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "1063:6:61", + "nodeType": "YulIdentifier", + "src": "1063:6:61" + } + ] + }, + { + "nativeSrc": "1114:42:61", + "nodeType": "YulAssignment", + "src": "1114:42:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1141:9:61", + "nodeType": "YulIdentifier", + "src": "1141:9:61" + }, + { + "kind": "number", + "nativeSrc": "1152:2:61", + "nodeType": "YulLiteral", + "src": "1152:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1137:3:61", + "nodeType": "YulIdentifier", + "src": "1137:3:61" + }, + "nativeSrc": "1137:18:61", + "nodeType": "YulFunctionCall", + "src": "1137:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "1124:12:61", + "nodeType": "YulIdentifier", + "src": "1124:12:61" + }, + "nativeSrc": "1124:32:61", + "nodeType": "YulFunctionCall", + "src": "1124:32:61" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "1114:6:61", + "nodeType": "YulIdentifier", + "src": "1114:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_uint256t_uint256", + "nativeSrc": "779:383:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "833:9:61", + "nodeType": "YulTypedName", + "src": "833:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "844:7:61", + "nodeType": "YulTypedName", + "src": "844:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "856:6:61", + "nodeType": "YulTypedName", + "src": "856:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "864:6:61", + "nodeType": "YulTypedName", + "src": "864:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "872:6:61", + "nodeType": "YulTypedName", + "src": "872:6:61", + "type": "" + } + ], + "src": "779:383:61" + }, + { + "body": { + "nativeSrc": "1224:85:61", + "nodeType": "YulBlock", + "src": "1224:85:61", + "statements": [ + { + "nativeSrc": "1234:29:61", + "nodeType": "YulAssignment", + "src": "1234:29:61", + "value": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "1256:6:61", + "nodeType": "YulIdentifier", + "src": "1256:6:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "1243:12:61", + "nodeType": "YulIdentifier", + "src": "1243:12:61" + }, + "nativeSrc": "1243:20:61", + "nodeType": "YulFunctionCall", + "src": "1243:20:61" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "1234:5:61", + "nodeType": "YulIdentifier", + "src": "1234:5:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "1297:5:61", + "nodeType": "YulIdentifier", + "src": "1297:5:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "1272:24:61", + "nodeType": "YulIdentifier", + "src": "1272:24:61" + }, + "nativeSrc": "1272:31:61", + "nodeType": "YulFunctionCall", + "src": "1272:31:61" + }, + "nativeSrc": "1272:31:61", + "nodeType": "YulExpressionStatement", + "src": "1272:31:61" + } + ] + }, + "name": "abi_decode_contract_IERC20", + "nativeSrc": "1167:142:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nativeSrc": "1203:6:61", + "nodeType": "YulTypedName", + "src": "1203:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nativeSrc": "1214:5:61", + "nodeType": "YulTypedName", + "src": "1214:5:61", + "type": "" + } + ], + "src": "1167:142:61" + }, + { + "body": { + "nativeSrc": "1450:404:61", + "nodeType": "YulBlock", + "src": "1450:404:61", + "statements": [ + { + "body": { + "nativeSrc": "1497:16:61", + "nodeType": "YulBlock", + "src": "1497:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1506:1:61", + "nodeType": "YulLiteral", + "src": "1506:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1509:1:61", + "nodeType": "YulLiteral", + "src": "1509:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1499:6:61", + "nodeType": "YulIdentifier", + "src": "1499:6:61" + }, + "nativeSrc": "1499:12:61", + "nodeType": "YulFunctionCall", + "src": "1499:12:61" + }, + "nativeSrc": "1499:12:61", + "nodeType": "YulExpressionStatement", + "src": "1499:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "1471:7:61", + "nodeType": "YulIdentifier", + "src": "1471:7:61" + }, + { + "name": "headStart", + "nativeSrc": "1480:9:61", + "nodeType": "YulIdentifier", + "src": "1480:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "1467:3:61", + "nodeType": "YulIdentifier", + "src": "1467:3:61" + }, + "nativeSrc": "1467:23:61", + "nodeType": "YulFunctionCall", + "src": "1467:23:61" + }, + { + "kind": "number", + "nativeSrc": "1492:3:61", + "nodeType": "YulLiteral", + "src": "1492:3:61", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "1463:3:61", + "nodeType": "YulIdentifier", + "src": "1463:3:61" + }, + "nativeSrc": "1463:33:61", + "nodeType": "YulFunctionCall", + "src": "1463:33:61" + }, + "nativeSrc": "1460:53:61", + "nodeType": "YulIf", + "src": "1460:53:61" + }, + { + "nativeSrc": "1522:36:61", + "nodeType": "YulVariableDeclaration", + "src": "1522:36:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1548:9:61", + "nodeType": "YulIdentifier", + "src": "1548:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "1535:12:61", + "nodeType": "YulIdentifier", + "src": "1535:12:61" + }, + "nativeSrc": "1535:23:61", + "nodeType": "YulFunctionCall", + "src": "1535:23:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "1526:5:61", + "nodeType": "YulTypedName", + "src": "1526:5:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "1592:5:61", + "nodeType": "YulIdentifier", + "src": "1592:5:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "1567:24:61", + "nodeType": "YulIdentifier", + "src": "1567:24:61" + }, + "nativeSrc": "1567:31:61", + "nodeType": "YulFunctionCall", + "src": "1567:31:61" + }, + "nativeSrc": "1567:31:61", + "nodeType": "YulExpressionStatement", + "src": "1567:31:61" + }, + { + "nativeSrc": "1607:15:61", + "nodeType": "YulAssignment", + "src": "1607:15:61", + "value": { + "name": "value", + "nativeSrc": "1617:5:61", + "nodeType": "YulIdentifier", + "src": "1617:5:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "1607:6:61", + "nodeType": "YulIdentifier", + "src": "1607:6:61" + } + ] + }, + { + "nativeSrc": "1631:42:61", + "nodeType": "YulAssignment", + "src": "1631:42:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1658:9:61", + "nodeType": "YulIdentifier", + "src": "1658:9:61" + }, + { + "kind": "number", + "nativeSrc": "1669:2:61", + "nodeType": "YulLiteral", + "src": "1669:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1654:3:61", + "nodeType": "YulIdentifier", + "src": "1654:3:61" + }, + "nativeSrc": "1654:18:61", + "nodeType": "YulFunctionCall", + "src": "1654:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "1641:12:61", + "nodeType": "YulIdentifier", + "src": "1641:12:61" + }, + "nativeSrc": "1641:32:61", + "nodeType": "YulFunctionCall", + "src": "1641:32:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "1631:6:61", + "nodeType": "YulIdentifier", + "src": "1631:6:61" + } + ] + }, + { + "nativeSrc": "1682:42:61", + "nodeType": "YulAssignment", + "src": "1682:42:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1709:9:61", + "nodeType": "YulIdentifier", + "src": "1709:9:61" + }, + { + "kind": "number", + "nativeSrc": "1720:2:61", + "nodeType": "YulLiteral", + "src": "1720:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1705:3:61", + "nodeType": "YulIdentifier", + "src": "1705:3:61" + }, + "nativeSrc": "1705:18:61", + "nodeType": "YulFunctionCall", + "src": "1705:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "1692:12:61", + "nodeType": "YulIdentifier", + "src": "1692:12:61" + }, + "nativeSrc": "1692:32:61", + "nodeType": "YulFunctionCall", + "src": "1692:32:61" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "1682:6:61", + "nodeType": "YulIdentifier", + "src": "1682:6:61" + } + ] + }, + { + "nativeSrc": "1733:47:61", + "nodeType": "YulVariableDeclaration", + "src": "1733:47:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1765:9:61", + "nodeType": "YulIdentifier", + "src": "1765:9:61" + }, + { + "kind": "number", + "nativeSrc": "1776:2:61", + "nodeType": "YulLiteral", + "src": "1776:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1761:3:61", + "nodeType": "YulIdentifier", + "src": "1761:3:61" + }, + "nativeSrc": "1761:18:61", + "nodeType": "YulFunctionCall", + "src": "1761:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "1748:12:61", + "nodeType": "YulIdentifier", + "src": "1748:12:61" + }, + "nativeSrc": "1748:32:61", + "nodeType": "YulFunctionCall", + "src": "1748:32:61" + }, + "variables": [ + { + "name": "value_1", + "nativeSrc": "1737:7:61", + "nodeType": "YulTypedName", + "src": "1737:7:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nativeSrc": "1814:7:61", + "nodeType": "YulIdentifier", + "src": "1814:7:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "1789:24:61", + "nodeType": "YulIdentifier", + "src": "1789:24:61" + }, + "nativeSrc": "1789:33:61", + "nodeType": "YulFunctionCall", + "src": "1789:33:61" + }, + "nativeSrc": "1789:33:61", + "nodeType": "YulExpressionStatement", + "src": "1789:33:61" + }, + { + "nativeSrc": "1831:17:61", + "nodeType": "YulAssignment", + "src": "1831:17:61", + "value": { + "name": "value_1", + "nativeSrc": "1841:7:61", + "nodeType": "YulIdentifier", + "src": "1841:7:61" + }, + "variableNames": [ + { + "name": "value3", + "nativeSrc": "1831:6:61", + "nodeType": "YulIdentifier", + "src": "1831:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_uint256t_uint256t_contract$_IERC20_$4513", + "nativeSrc": "1314:540:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "1392:9:61", + "nodeType": "YulTypedName", + "src": "1392:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "1403:7:61", + "nodeType": "YulTypedName", + "src": "1403:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "1415:6:61", + "nodeType": "YulTypedName", + "src": "1415:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "1423:6:61", + "nodeType": "YulTypedName", + "src": "1423:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "1431:6:61", + "nodeType": "YulTypedName", + "src": "1431:6:61", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "1439:6:61", + "nodeType": "YulTypedName", + "src": "1439:6:61", + "type": "" + } + ], + "src": "1314:540:61" + }, + { + "body": { + "nativeSrc": "1968:102:61", + "nodeType": "YulBlock", + "src": "1968:102:61", + "statements": [ + { + "nativeSrc": "1978:26:61", + "nodeType": "YulAssignment", + "src": "1978:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1990:9:61", + "nodeType": "YulIdentifier", + "src": "1990:9:61" + }, + { + "kind": "number", + "nativeSrc": "2001:2:61", + "nodeType": "YulLiteral", + "src": "2001:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1986:3:61", + "nodeType": "YulIdentifier", + "src": "1986:3:61" + }, + "nativeSrc": "1986:18:61", + "nodeType": "YulFunctionCall", + "src": "1986:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "1978:4:61", + "nodeType": "YulIdentifier", + "src": "1978:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2020:9:61", + "nodeType": "YulIdentifier", + "src": "2020:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "2035:6:61", + "nodeType": "YulIdentifier", + "src": "2035:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2051:3:61", + "nodeType": "YulLiteral", + "src": "2051:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "2056:1:61", + "nodeType": "YulLiteral", + "src": "2056:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "2047:3:61", + "nodeType": "YulIdentifier", + "src": "2047:3:61" + }, + "nativeSrc": "2047:11:61", + "nodeType": "YulFunctionCall", + "src": "2047:11:61" + }, + { + "kind": "number", + "nativeSrc": "2060:1:61", + "nodeType": "YulLiteral", + "src": "2060:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "2043:3:61", + "nodeType": "YulIdentifier", + "src": "2043:3:61" + }, + "nativeSrc": "2043:19:61", + "nodeType": "YulFunctionCall", + "src": "2043:19:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "2031:3:61", + "nodeType": "YulIdentifier", + "src": "2031:3:61" + }, + "nativeSrc": "2031:32:61", + "nodeType": "YulFunctionCall", + "src": "2031:32:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2013:6:61", + "nodeType": "YulIdentifier", + "src": "2013:6:61" + }, + "nativeSrc": "2013:51:61", + "nodeType": "YulFunctionCall", + "src": "2013:51:61" + }, + "nativeSrc": "2013:51:61", + "nodeType": "YulExpressionStatement", + "src": "2013:51:61" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_library_reversed", + "nativeSrc": "1859:211:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "1937:9:61", + "nodeType": "YulTypedName", + "src": "1937:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "1948:6:61", + "nodeType": "YulTypedName", + "src": "1948:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "1959:4:61", + "nodeType": "YulTypedName", + "src": "1959:4:61", + "type": "" + } + ], + "src": "1859:211:61" + }, + { + "body": { + "nativeSrc": "2211:393:61", + "nodeType": "YulBlock", + "src": "2211:393:61", + "statements": [ + { + "body": { + "nativeSrc": "2258:16:61", + "nodeType": "YulBlock", + "src": "2258:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2267:1:61", + "nodeType": "YulLiteral", + "src": "2267:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2270:1:61", + "nodeType": "YulLiteral", + "src": "2270:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2260:6:61", + "nodeType": "YulIdentifier", + "src": "2260:6:61" + }, + "nativeSrc": "2260:12:61", + "nodeType": "YulFunctionCall", + "src": "2260:12:61" + }, + "nativeSrc": "2260:12:61", + "nodeType": "YulExpressionStatement", + "src": "2260:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "2232:7:61", + "nodeType": "YulIdentifier", + "src": "2232:7:61" + }, + { + "name": "headStart", + "nativeSrc": "2241:9:61", + "nodeType": "YulIdentifier", + "src": "2241:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "2228:3:61", + "nodeType": "YulIdentifier", + "src": "2228:3:61" + }, + "nativeSrc": "2228:23:61", + "nodeType": "YulFunctionCall", + "src": "2228:23:61" + }, + { + "kind": "number", + "nativeSrc": "2253:3:61", + "nodeType": "YulLiteral", + "src": "2253:3:61", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "2224:3:61", + "nodeType": "YulIdentifier", + "src": "2224:3:61" + }, + "nativeSrc": "2224:33:61", + "nodeType": "YulFunctionCall", + "src": "2224:33:61" + }, + "nativeSrc": "2221:53:61", + "nodeType": "YulIf", + "src": "2221:53:61" + }, + { + "nativeSrc": "2283:36:61", + "nodeType": "YulVariableDeclaration", + "src": "2283:36:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2309:9:61", + "nodeType": "YulIdentifier", + "src": "2309:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "2296:12:61", + "nodeType": "YulIdentifier", + "src": "2296:12:61" + }, + "nativeSrc": "2296:23:61", + "nodeType": "YulFunctionCall", + "src": "2296:23:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "2287:5:61", + "nodeType": "YulTypedName", + "src": "2287:5:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "2353:5:61", + "nodeType": "YulIdentifier", + "src": "2353:5:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "2328:24:61", + "nodeType": "YulIdentifier", + "src": "2328:24:61" + }, + "nativeSrc": "2328:31:61", + "nodeType": "YulFunctionCall", + "src": "2328:31:61" + }, + "nativeSrc": "2328:31:61", + "nodeType": "YulExpressionStatement", + "src": "2328:31:61" + }, + { + "nativeSrc": "2368:15:61", + "nodeType": "YulAssignment", + "src": "2368:15:61", + "value": { + "name": "value", + "nativeSrc": "2378:5:61", + "nodeType": "YulIdentifier", + "src": "2378:5:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "2368:6:61", + "nodeType": "YulIdentifier", + "src": "2368:6:61" + } + ] + }, + { + "nativeSrc": "2392:42:61", + "nodeType": "YulAssignment", + "src": "2392:42:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2419:9:61", + "nodeType": "YulIdentifier", + "src": "2419:9:61" + }, + { + "kind": "number", + "nativeSrc": "2430:2:61", + "nodeType": "YulLiteral", + "src": "2430:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2415:3:61", + "nodeType": "YulIdentifier", + "src": "2415:3:61" + }, + "nativeSrc": "2415:18:61", + "nodeType": "YulFunctionCall", + "src": "2415:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "2402:12:61", + "nodeType": "YulIdentifier", + "src": "2402:12:61" + }, + "nativeSrc": "2402:32:61", + "nodeType": "YulFunctionCall", + "src": "2402:32:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "2392:6:61", + "nodeType": "YulIdentifier", + "src": "2392:6:61" + } + ] + }, + { + "nativeSrc": "2443:42:61", + "nodeType": "YulAssignment", + "src": "2443:42:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2470:9:61", + "nodeType": "YulIdentifier", + "src": "2470:9:61" + }, + { + "kind": "number", + "nativeSrc": "2481:2:61", + "nodeType": "YulLiteral", + "src": "2481:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2466:3:61", + "nodeType": "YulIdentifier", + "src": "2466:3:61" + }, + "nativeSrc": "2466:18:61", + "nodeType": "YulFunctionCall", + "src": "2466:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "2453:12:61", + "nodeType": "YulIdentifier", + "src": "2453:12:61" + }, + "nativeSrc": "2453:32:61", + "nodeType": "YulFunctionCall", + "src": "2453:32:61" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "2443:6:61", + "nodeType": "YulIdentifier", + "src": "2443:6:61" + } + ] + }, + { + "nativeSrc": "2494:47:61", + "nodeType": "YulAssignment", + "src": "2494:47:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2526:9:61", + "nodeType": "YulIdentifier", + "src": "2526:9:61" + }, + { + "kind": "number", + "nativeSrc": "2537:2:61", + "nodeType": "YulLiteral", + "src": "2537:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2522:3:61", + "nodeType": "YulIdentifier", + "src": "2522:3:61" + }, + "nativeSrc": "2522:18:61", + "nodeType": "YulFunctionCall", + "src": "2522:18:61" + } + ], + "functionName": { + "name": "abi_decode_uint16", + "nativeSrc": "2504:17:61", + "nodeType": "YulIdentifier", + "src": "2504:17:61" + }, + "nativeSrc": "2504:37:61", + "nodeType": "YulFunctionCall", + "src": "2504:37:61" + }, + "variableNames": [ + { + "name": "value3", + "nativeSrc": "2494:6:61", + "nodeType": "YulIdentifier", + "src": "2494:6:61" + } + ] + }, + { + "nativeSrc": "2550:48:61", + "nodeType": "YulAssignment", + "src": "2550:48:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2582:9:61", + "nodeType": "YulIdentifier", + "src": "2582:9:61" + }, + { + "kind": "number", + "nativeSrc": "2593:3:61", + "nodeType": "YulLiteral", + "src": "2593:3:61", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2578:3:61", + "nodeType": "YulIdentifier", + "src": "2578:3:61" + }, + "nativeSrc": "2578:19:61", + "nodeType": "YulFunctionCall", + "src": "2578:19:61" + } + ], + "functionName": { + "name": "abi_decode_uint16", + "nativeSrc": "2560:17:61", + "nodeType": "YulIdentifier", + "src": "2560:17:61" + }, + "nativeSrc": "2560:38:61", + "nodeType": "YulFunctionCall", + "src": "2560:38:61" + }, + "variableNames": [ + { + "name": "value4", + "nativeSrc": "2550:6:61", + "nodeType": "YulIdentifier", + "src": "2550:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_uint256t_uint256t_uint16t_uint16", + "nativeSrc": "2075:529:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "2145:9:61", + "nodeType": "YulTypedName", + "src": "2145:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "2156:7:61", + "nodeType": "YulTypedName", + "src": "2156:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "2168:6:61", + "nodeType": "YulTypedName", + "src": "2168:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "2176:6:61", + "nodeType": "YulTypedName", + "src": "2176:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "2184:6:61", + "nodeType": "YulTypedName", + "src": "2184:6:61", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "2192:6:61", + "nodeType": "YulTypedName", + "src": "2192:6:61", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "2200:6:61", + "nodeType": "YulTypedName", + "src": "2200:6:61", + "type": "" + } + ], + "src": "2075:529:61" + }, + { + "body": { + "nativeSrc": "2696:228:61", + "nodeType": "YulBlock", + "src": "2696:228:61", + "statements": [ + { + "body": { + "nativeSrc": "2742:16:61", + "nodeType": "YulBlock", + "src": "2742:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2751:1:61", + "nodeType": "YulLiteral", + "src": "2751:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2754:1:61", + "nodeType": "YulLiteral", + "src": "2754:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2744:6:61", + "nodeType": "YulIdentifier", + "src": "2744:6:61" + }, + "nativeSrc": "2744:12:61", + "nodeType": "YulFunctionCall", + "src": "2744:12:61" + }, + "nativeSrc": "2744:12:61", + "nodeType": "YulExpressionStatement", + "src": "2744:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "2717:7:61", + "nodeType": "YulIdentifier", + "src": "2717:7:61" + }, + { + "name": "headStart", + "nativeSrc": "2726:9:61", + "nodeType": "YulIdentifier", + "src": "2726:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "2713:3:61", + "nodeType": "YulIdentifier", + "src": "2713:3:61" + }, + "nativeSrc": "2713:23:61", + "nodeType": "YulFunctionCall", + "src": "2713:23:61" + }, + { + "kind": "number", + "nativeSrc": "2738:2:61", + "nodeType": "YulLiteral", + "src": "2738:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "2709:3:61", + "nodeType": "YulIdentifier", + "src": "2709:3:61" + }, + "nativeSrc": "2709:32:61", + "nodeType": "YulFunctionCall", + "src": "2709:32:61" + }, + "nativeSrc": "2706:52:61", + "nodeType": "YulIf", + "src": "2706:52:61" + }, + { + "nativeSrc": "2767:36:61", + "nodeType": "YulVariableDeclaration", + "src": "2767:36:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2793:9:61", + "nodeType": "YulIdentifier", + "src": "2793:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "2780:12:61", + "nodeType": "YulIdentifier", + "src": "2780:12:61" + }, + "nativeSrc": "2780:23:61", + "nodeType": "YulFunctionCall", + "src": "2780:23:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "2771:5:61", + "nodeType": "YulTypedName", + "src": "2771:5:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "2837:5:61", + "nodeType": "YulIdentifier", + "src": "2837:5:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "2812:24:61", + "nodeType": "YulIdentifier", + "src": "2812:24:61" + }, + "nativeSrc": "2812:31:61", + "nodeType": "YulFunctionCall", + "src": "2812:31:61" + }, + "nativeSrc": "2812:31:61", + "nodeType": "YulExpressionStatement", + "src": "2812:31:61" + }, + { + "nativeSrc": "2852:15:61", + "nodeType": "YulAssignment", + "src": "2852:15:61", + "value": { + "name": "value", + "nativeSrc": "2862:5:61", + "nodeType": "YulIdentifier", + "src": "2862:5:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "2852:6:61", + "nodeType": "YulIdentifier", + "src": "2852:6:61" + } + ] + }, + { + "nativeSrc": "2876:42:61", + "nodeType": "YulAssignment", + "src": "2876:42:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2903:9:61", + "nodeType": "YulIdentifier", + "src": "2903:9:61" + }, + { + "kind": "number", + "nativeSrc": "2914:2:61", + "nodeType": "YulLiteral", + "src": "2914:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2899:3:61", + "nodeType": "YulIdentifier", + "src": "2899:3:61" + }, + "nativeSrc": "2899:18:61", + "nodeType": "YulFunctionCall", + "src": "2899:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "2886:12:61", + "nodeType": "YulIdentifier", + "src": "2886:12:61" + }, + "nativeSrc": "2886:32:61", + "nodeType": "YulFunctionCall", + "src": "2886:32:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "2876:6:61", + "nodeType": "YulIdentifier", + "src": "2876:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_uint256", + "nativeSrc": "2609:315:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "2654:9:61", + "nodeType": "YulTypedName", + "src": "2654:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "2665:7:61", + "nodeType": "YulTypedName", + "src": "2665:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "2677:6:61", + "nodeType": "YulTypedName", + "src": "2677:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "2685:6:61", + "nodeType": "YulTypedName", + "src": "2685:6:61", + "type": "" + } + ], + "src": "2609:315:61" + }, + { + "body": { + "nativeSrc": "2961:95:61", + "nodeType": "YulBlock", + "src": "2961:95:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2978:1:61", + "nodeType": "YulLiteral", + "src": "2978:1:61", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2985:3:61", + "nodeType": "YulLiteral", + "src": "2985:3:61", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "2990:10:61", + "nodeType": "YulLiteral", + "src": "2990:10:61", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "2981:3:61", + "nodeType": "YulIdentifier", + "src": "2981:3:61" + }, + "nativeSrc": "2981:20:61", + "nodeType": "YulFunctionCall", + "src": "2981:20:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2971:6:61", + "nodeType": "YulIdentifier", + "src": "2971:6:61" + }, + "nativeSrc": "2971:31:61", + "nodeType": "YulFunctionCall", + "src": "2971:31:61" + }, + "nativeSrc": "2971:31:61", + "nodeType": "YulExpressionStatement", + "src": "2971:31:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3018:1:61", + "nodeType": "YulLiteral", + "src": "3018:1:61", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "3021:4:61", + "nodeType": "YulLiteral", + "src": "3021:4:61", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3011:6:61", + "nodeType": "YulIdentifier", + "src": "3011:6:61" + }, + "nativeSrc": "3011:15:61", + "nodeType": "YulFunctionCall", + "src": "3011:15:61" + }, + "nativeSrc": "3011:15:61", + "nodeType": "YulExpressionStatement", + "src": "3011:15:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3042:1:61", + "nodeType": "YulLiteral", + "src": "3042:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "3045:4:61", + "nodeType": "YulLiteral", + "src": "3045:4:61", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "3035:6:61", + "nodeType": "YulIdentifier", + "src": "3035:6:61" + }, + "nativeSrc": "3035:15:61", + "nodeType": "YulFunctionCall", + "src": "3035:15:61" + }, + "nativeSrc": "3035:15:61", + "nodeType": "YulExpressionStatement", + "src": "3035:15:61" + } + ] + }, + "name": "panic_error_0x41", + "nativeSrc": "2929:127:61", + "nodeType": "YulFunctionDefinition", + "src": "2929:127:61" + }, + { + "body": { + "nativeSrc": "3107:114:61", + "nodeType": "YulBlock", + "src": "3107:114:61", + "statements": [ + { + "nativeSrc": "3117:29:61", + "nodeType": "YulAssignment", + "src": "3117:29:61", + "value": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "3139:6:61", + "nodeType": "YulIdentifier", + "src": "3139:6:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "3126:12:61", + "nodeType": "YulIdentifier", + "src": "3126:12:61" + }, + "nativeSrc": "3126:20:61", + "nodeType": "YulFunctionCall", + "src": "3126:20:61" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "3117:5:61", + "nodeType": "YulIdentifier", + "src": "3117:5:61" + } + ] + }, + { + "body": { + "nativeSrc": "3199:16:61", + "nodeType": "YulBlock", + "src": "3199:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3208:1:61", + "nodeType": "YulLiteral", + "src": "3208:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "3211:1:61", + "nodeType": "YulLiteral", + "src": "3211:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "3201:6:61", + "nodeType": "YulIdentifier", + "src": "3201:6:61" + }, + "nativeSrc": "3201:12:61", + "nodeType": "YulFunctionCall", + "src": "3201:12:61" + }, + "nativeSrc": "3201:12:61", + "nodeType": "YulExpressionStatement", + "src": "3201:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "3168:5:61", + "nodeType": "YulIdentifier", + "src": "3168:5:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "3189:5:61", + "nodeType": "YulIdentifier", + "src": "3189:5:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "3182:6:61", + "nodeType": "YulIdentifier", + "src": "3182:6:61" + }, + "nativeSrc": "3182:13:61", + "nodeType": "YulFunctionCall", + "src": "3182:13:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "3175:6:61", + "nodeType": "YulIdentifier", + "src": "3175:6:61" + }, + "nativeSrc": "3175:21:61", + "nodeType": "YulFunctionCall", + "src": "3175:21:61" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "3165:2:61", + "nodeType": "YulIdentifier", + "src": "3165:2:61" + }, + "nativeSrc": "3165:32:61", + "nodeType": "YulFunctionCall", + "src": "3165:32:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "3158:6:61", + "nodeType": "YulIdentifier", + "src": "3158:6:61" + }, + "nativeSrc": "3158:40:61", + "nodeType": "YulFunctionCall", + "src": "3158:40:61" + }, + "nativeSrc": "3155:60:61", + "nodeType": "YulIf", + "src": "3155:60:61" + } + ] + }, + "name": "abi_decode_bool", + "nativeSrc": "3061:160:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nativeSrc": "3086:6:61", + "nodeType": "YulTypedName", + "src": "3086:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nativeSrc": "3097:5:61", + "nodeType": "YulTypedName", + "src": "3097:5:61", + "type": "" + } + ], + "src": "3061:160:61" + }, + { + "body": { + "nativeSrc": "3437:1361:61", + "nodeType": "YulBlock", + "src": "3437:1361:61", + "statements": [ + { + "body": { + "nativeSrc": "3484:16:61", + "nodeType": "YulBlock", + "src": "3484:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3493:1:61", + "nodeType": "YulLiteral", + "src": "3493:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "3496:1:61", + "nodeType": "YulLiteral", + "src": "3496:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "3486:6:61", + "nodeType": "YulIdentifier", + "src": "3486:6:61" + }, + "nativeSrc": "3486:12:61", + "nodeType": "YulFunctionCall", + "src": "3486:12:61" + }, + "nativeSrc": "3486:12:61", + "nodeType": "YulExpressionStatement", + "src": "3486:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "3458:7:61", + "nodeType": "YulIdentifier", + "src": "3458:7:61" + }, + { + "name": "headStart", + "nativeSrc": "3467:9:61", + "nodeType": "YulIdentifier", + "src": "3467:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "3454:3:61", + "nodeType": "YulIdentifier", + "src": "3454:3:61" + }, + "nativeSrc": "3454:23:61", + "nodeType": "YulFunctionCall", + "src": "3454:23:61" + }, + { + "kind": "number", + "nativeSrc": "3479:3:61", + "nodeType": "YulLiteral", + "src": "3479:3:61", + "type": "", + "value": "256" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "3450:3:61", + "nodeType": "YulIdentifier", + "src": "3450:3:61" + }, + "nativeSrc": "3450:33:61", + "nodeType": "YulFunctionCall", + "src": "3450:33:61" + }, + "nativeSrc": "3447:53:61", + "nodeType": "YulIf", + "src": "3447:53:61" + }, + { + "nativeSrc": "3509:36:61", + "nodeType": "YulVariableDeclaration", + "src": "3509:36:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3535:9:61", + "nodeType": "YulIdentifier", + "src": "3535:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "3522:12:61", + "nodeType": "YulIdentifier", + "src": "3522:12:61" + }, + "nativeSrc": "3522:23:61", + "nodeType": "YulFunctionCall", + "src": "3522:23:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "3513:5:61", + "nodeType": "YulTypedName", + "src": "3513:5:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "3579:5:61", + "nodeType": "YulIdentifier", + "src": "3579:5:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "3554:24:61", + "nodeType": "YulIdentifier", + "src": "3554:24:61" + }, + "nativeSrc": "3554:31:61", + "nodeType": "YulFunctionCall", + "src": "3554:31:61" + }, + "nativeSrc": "3554:31:61", + "nodeType": "YulExpressionStatement", + "src": "3554:31:61" + }, + { + "nativeSrc": "3594:15:61", + "nodeType": "YulAssignment", + "src": "3594:15:61", + "value": { + "name": "value", + "nativeSrc": "3604:5:61", + "nodeType": "YulIdentifier", + "src": "3604:5:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "3594:6:61", + "nodeType": "YulIdentifier", + "src": "3594:6:61" + } + ] + }, + { + "nativeSrc": "3618:47:61", + "nodeType": "YulVariableDeclaration", + "src": "3618:47:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3650:9:61", + "nodeType": "YulIdentifier", + "src": "3650:9:61" + }, + { + "kind": "number", + "nativeSrc": "3661:2:61", + "nodeType": "YulLiteral", + "src": "3661:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3646:3:61", + "nodeType": "YulIdentifier", + "src": "3646:3:61" + }, + "nativeSrc": "3646:18:61", + "nodeType": "YulFunctionCall", + "src": "3646:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "3633:12:61", + "nodeType": "YulIdentifier", + "src": "3633:12:61" + }, + "nativeSrc": "3633:32:61", + "nodeType": "YulFunctionCall", + "src": "3633:32:61" + }, + "variables": [ + { + "name": "value_1", + "nativeSrc": "3622:7:61", + "nodeType": "YulTypedName", + "src": "3622:7:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value_1", + "nativeSrc": "3699:7:61", + "nodeType": "YulIdentifier", + "src": "3699:7:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "3674:24:61", + "nodeType": "YulIdentifier", + "src": "3674:24:61" + }, + "nativeSrc": "3674:33:61", + "nodeType": "YulFunctionCall", + "src": "3674:33:61" + }, + "nativeSrc": "3674:33:61", + "nodeType": "YulExpressionStatement", + "src": "3674:33:61" + }, + { + "nativeSrc": "3716:17:61", + "nodeType": "YulAssignment", + "src": "3716:17:61", + "value": { + "name": "value_1", + "nativeSrc": "3726:7:61", + "nodeType": "YulIdentifier", + "src": "3726:7:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "3716:6:61", + "nodeType": "YulIdentifier", + "src": "3716:6:61" + } + ] + }, + { + "nativeSrc": "3742:46:61", + "nodeType": "YulVariableDeclaration", + "src": "3742:46:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3773:9:61", + "nodeType": "YulIdentifier", + "src": "3773:9:61" + }, + { + "kind": "number", + "nativeSrc": "3784:2:61", + "nodeType": "YulLiteral", + "src": "3784:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3769:3:61", + "nodeType": "YulIdentifier", + "src": "3769:3:61" + }, + "nativeSrc": "3769:18:61", + "nodeType": "YulFunctionCall", + "src": "3769:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "3756:12:61", + "nodeType": "YulIdentifier", + "src": "3756:12:61" + }, + "nativeSrc": "3756:32:61", + "nodeType": "YulFunctionCall", + "src": "3756:32:61" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "3746:6:61", + "nodeType": "YulTypedName", + "src": "3746:6:61", + "type": "" + } + ] + }, + { + "nativeSrc": "3797:28:61", + "nodeType": "YulVariableDeclaration", + "src": "3797:28:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3815:2:61", + "nodeType": "YulLiteral", + "src": "3815:2:61", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "3819:1:61", + "nodeType": "YulLiteral", + "src": "3819:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "3811:3:61", + "nodeType": "YulIdentifier", + "src": "3811:3:61" + }, + "nativeSrc": "3811:10:61", + "nodeType": "YulFunctionCall", + "src": "3811:10:61" + }, + { + "kind": "number", + "nativeSrc": "3823:1:61", + "nodeType": "YulLiteral", + "src": "3823:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "3807:3:61", + "nodeType": "YulIdentifier", + "src": "3807:3:61" + }, + "nativeSrc": "3807:18:61", + "nodeType": "YulFunctionCall", + "src": "3807:18:61" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "3801:2:61", + "nodeType": "YulTypedName", + "src": "3801:2:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "3852:16:61", + "nodeType": "YulBlock", + "src": "3852:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3861:1:61", + "nodeType": "YulLiteral", + "src": "3861:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "3864:1:61", + "nodeType": "YulLiteral", + "src": "3864:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "3854:6:61", + "nodeType": "YulIdentifier", + "src": "3854:6:61" + }, + "nativeSrc": "3854:12:61", + "nodeType": "YulFunctionCall", + "src": "3854:12:61" + }, + "nativeSrc": "3854:12:61", + "nodeType": "YulExpressionStatement", + "src": "3854:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "3840:6:61", + "nodeType": "YulIdentifier", + "src": "3840:6:61" + }, + { + "name": "_1", + "nativeSrc": "3848:2:61", + "nodeType": "YulIdentifier", + "src": "3848:2:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "3837:2:61", + "nodeType": "YulIdentifier", + "src": "3837:2:61" + }, + "nativeSrc": "3837:14:61", + "nodeType": "YulFunctionCall", + "src": "3837:14:61" + }, + "nativeSrc": "3834:34:61", + "nodeType": "YulIf", + "src": "3834:34:61" + }, + { + "nativeSrc": "3877:32:61", + "nodeType": "YulVariableDeclaration", + "src": "3877:32:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3891:9:61", + "nodeType": "YulIdentifier", + "src": "3891:9:61" + }, + { + "name": "offset", + "nativeSrc": "3902:6:61", + "nodeType": "YulIdentifier", + "src": "3902:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3887:3:61", + "nodeType": "YulIdentifier", + "src": "3887:3:61" + }, + "nativeSrc": "3887:22:61", + "nodeType": "YulFunctionCall", + "src": "3887:22:61" + }, + "variables": [ + { + "name": "_2", + "nativeSrc": "3881:2:61", + "nodeType": "YulTypedName", + "src": "3881:2:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "3957:16:61", + "nodeType": "YulBlock", + "src": "3957:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3966:1:61", + "nodeType": "YulLiteral", + "src": "3966:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "3969:1:61", + "nodeType": "YulLiteral", + "src": "3969:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "3959:6:61", + "nodeType": "YulIdentifier", + "src": "3959:6:61" + }, + "nativeSrc": "3959:12:61", + "nodeType": "YulFunctionCall", + "src": "3959:12:61" + }, + "nativeSrc": "3959:12:61", + "nodeType": "YulExpressionStatement", + "src": "3959:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nativeSrc": "3936:2:61", + "nodeType": "YulIdentifier", + "src": "3936:2:61" + }, + { + "kind": "number", + "nativeSrc": "3940:4:61", + "nodeType": "YulLiteral", + "src": "3940:4:61", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3932:3:61", + "nodeType": "YulIdentifier", + "src": "3932:3:61" + }, + "nativeSrc": "3932:13:61", + "nodeType": "YulFunctionCall", + "src": "3932:13:61" + }, + { + "name": "dataEnd", + "nativeSrc": "3947:7:61", + "nodeType": "YulIdentifier", + "src": "3947:7:61" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "3928:3:61", + "nodeType": "YulIdentifier", + "src": "3928:3:61" + }, + "nativeSrc": "3928:27:61", + "nodeType": "YulFunctionCall", + "src": "3928:27:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "3921:6:61", + "nodeType": "YulIdentifier", + "src": "3921:6:61" + }, + "nativeSrc": "3921:35:61", + "nodeType": "YulFunctionCall", + "src": "3921:35:61" + }, + "nativeSrc": "3918:55:61", + "nodeType": "YulIf", + "src": "3918:55:61" + }, + { + "nativeSrc": "3982:26:61", + "nodeType": "YulVariableDeclaration", + "src": "3982:26:61", + "value": { + "arguments": [ + { + "name": "_2", + "nativeSrc": "4005:2:61", + "nodeType": "YulIdentifier", + "src": "4005:2:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "3992:12:61", + "nodeType": "YulIdentifier", + "src": "3992:12:61" + }, + "nativeSrc": "3992:16:61", + "nodeType": "YulFunctionCall", + "src": "3992:16:61" + }, + "variables": [ + { + "name": "_3", + "nativeSrc": "3986:2:61", + "nodeType": "YulTypedName", + "src": "3986:2:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "4031:22:61", + "nodeType": "YulBlock", + "src": "4031:22:61", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "4033:16:61", + "nodeType": "YulIdentifier", + "src": "4033:16:61" + }, + "nativeSrc": "4033:18:61", + "nodeType": "YulFunctionCall", + "src": "4033:18:61" + }, + "nativeSrc": "4033:18:61", + "nodeType": "YulExpressionStatement", + "src": "4033:18:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "_3", + "nativeSrc": "4023:2:61", + "nodeType": "YulIdentifier", + "src": "4023:2:61" + }, + { + "name": "_1", + "nativeSrc": "4027:2:61", + "nodeType": "YulIdentifier", + "src": "4027:2:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "4020:2:61", + "nodeType": "YulIdentifier", + "src": "4020:2:61" + }, + "nativeSrc": "4020:10:61", + "nodeType": "YulFunctionCall", + "src": "4020:10:61" + }, + "nativeSrc": "4017:36:61", + "nodeType": "YulIf", + "src": "4017:36:61" + }, + { + "nativeSrc": "4062:17:61", + "nodeType": "YulVariableDeclaration", + "src": "4062:17:61", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4076:2:61", + "nodeType": "YulLiteral", + "src": "4076:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "4072:3:61", + "nodeType": "YulIdentifier", + "src": "4072:3:61" + }, + "nativeSrc": "4072:7:61", + "nodeType": "YulFunctionCall", + "src": "4072:7:61" + }, + "variables": [ + { + "name": "_4", + "nativeSrc": "4066:2:61", + "nodeType": "YulTypedName", + "src": "4066:2:61", + "type": "" + } + ] + }, + { + "nativeSrc": "4088:23:61", + "nodeType": "YulVariableDeclaration", + "src": "4088:23:61", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4108:2:61", + "nodeType": "YulLiteral", + "src": "4108:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "4102:5:61", + "nodeType": "YulIdentifier", + "src": "4102:5:61" + }, + "nativeSrc": "4102:9:61", + "nodeType": "YulFunctionCall", + "src": "4102:9:61" + }, + "variables": [ + { + "name": "memPtr", + "nativeSrc": "4092:6:61", + "nodeType": "YulTypedName", + "src": "4092:6:61", + "type": "" + } + ] + }, + { + "nativeSrc": "4120:71:61", + "nodeType": "YulVariableDeclaration", + "src": "4120:71:61", + "value": { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "4142:6:61", + "nodeType": "YulIdentifier", + "src": "4142:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_3", + "nativeSrc": "4166:2:61", + "nodeType": "YulIdentifier", + "src": "4166:2:61" + }, + { + "kind": "number", + "nativeSrc": "4170:4:61", + "nodeType": "YulLiteral", + "src": "4170:4:61", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4162:3:61", + "nodeType": "YulIdentifier", + "src": "4162:3:61" + }, + "nativeSrc": "4162:13:61", + "nodeType": "YulFunctionCall", + "src": "4162:13:61" + }, + { + "name": "_4", + "nativeSrc": "4177:2:61", + "nodeType": "YulIdentifier", + "src": "4177:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "4158:3:61", + "nodeType": "YulIdentifier", + "src": "4158:3:61" + }, + "nativeSrc": "4158:22:61", + "nodeType": "YulFunctionCall", + "src": "4158:22:61" + }, + { + "kind": "number", + "nativeSrc": "4182:2:61", + "nodeType": "YulLiteral", + "src": "4182:2:61", + "type": "", + "value": "63" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4154:3:61", + "nodeType": "YulIdentifier", + "src": "4154:3:61" + }, + "nativeSrc": "4154:31:61", + "nodeType": "YulFunctionCall", + "src": "4154:31:61" + }, + { + "name": "_4", + "nativeSrc": "4187:2:61", + "nodeType": "YulIdentifier", + "src": "4187:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "4150:3:61", + "nodeType": "YulIdentifier", + "src": "4150:3:61" + }, + "nativeSrc": "4150:40:61", + "nodeType": "YulFunctionCall", + "src": "4150:40:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4138:3:61", + "nodeType": "YulIdentifier", + "src": "4138:3:61" + }, + "nativeSrc": "4138:53:61", + "nodeType": "YulFunctionCall", + "src": "4138:53:61" + }, + "variables": [ + { + "name": "newFreePtr", + "nativeSrc": "4124:10:61", + "nodeType": "YulTypedName", + "src": "4124:10:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "4250:22:61", + "nodeType": "YulBlock", + "src": "4250:22:61", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "4252:16:61", + "nodeType": "YulIdentifier", + "src": "4252:16:61" + }, + "nativeSrc": "4252:18:61", + "nodeType": "YulFunctionCall", + "src": "4252:18:61" + }, + "nativeSrc": "4252:18:61", + "nodeType": "YulExpressionStatement", + "src": "4252:18:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nativeSrc": "4209:10:61", + "nodeType": "YulIdentifier", + "src": "4209:10:61" + }, + { + "name": "_1", + "nativeSrc": "4221:2:61", + "nodeType": "YulIdentifier", + "src": "4221:2:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "4206:2:61", + "nodeType": "YulIdentifier", + "src": "4206:2:61" + }, + "nativeSrc": "4206:18:61", + "nodeType": "YulFunctionCall", + "src": "4206:18:61" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nativeSrc": "4229:10:61", + "nodeType": "YulIdentifier", + "src": "4229:10:61" + }, + { + "name": "memPtr", + "nativeSrc": "4241:6:61", + "nodeType": "YulIdentifier", + "src": "4241:6:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "4226:2:61", + "nodeType": "YulIdentifier", + "src": "4226:2:61" + }, + "nativeSrc": "4226:22:61", + "nodeType": "YulFunctionCall", + "src": "4226:22:61" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "4203:2:61", + "nodeType": "YulIdentifier", + "src": "4203:2:61" + }, + "nativeSrc": "4203:46:61", + "nodeType": "YulFunctionCall", + "src": "4203:46:61" + }, + "nativeSrc": "4200:72:61", + "nodeType": "YulIf", + "src": "4200:72:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4288:2:61", + "nodeType": "YulLiteral", + "src": "4288:2:61", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nativeSrc": "4292:10:61", + "nodeType": "YulIdentifier", + "src": "4292:10:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4281:6:61", + "nodeType": "YulIdentifier", + "src": "4281:6:61" + }, + "nativeSrc": "4281:22:61", + "nodeType": "YulFunctionCall", + "src": "4281:22:61" + }, + "nativeSrc": "4281:22:61", + "nodeType": "YulExpressionStatement", + "src": "4281:22:61" + }, + { + "expression": { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "4319:6:61", + "nodeType": "YulIdentifier", + "src": "4319:6:61" + }, + { + "name": "_3", + "nativeSrc": "4327:2:61", + "nodeType": "YulIdentifier", + "src": "4327:2:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4312:6:61", + "nodeType": "YulIdentifier", + "src": "4312:6:61" + }, + "nativeSrc": "4312:18:61", + "nodeType": "YulFunctionCall", + "src": "4312:18:61" + }, + "nativeSrc": "4312:18:61", + "nodeType": "YulExpressionStatement", + "src": "4312:18:61" + }, + { + "body": { + "nativeSrc": "4376:16:61", + "nodeType": "YulBlock", + "src": "4376:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4385:1:61", + "nodeType": "YulLiteral", + "src": "4385:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "4388:1:61", + "nodeType": "YulLiteral", + "src": "4388:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "4378:6:61", + "nodeType": "YulIdentifier", + "src": "4378:6:61" + }, + "nativeSrc": "4378:12:61", + "nodeType": "YulFunctionCall", + "src": "4378:12:61" + }, + "nativeSrc": "4378:12:61", + "nodeType": "YulExpressionStatement", + "src": "4378:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_2", + "nativeSrc": "4353:2:61", + "nodeType": "YulIdentifier", + "src": "4353:2:61" + }, + { + "name": "_3", + "nativeSrc": "4357:2:61", + "nodeType": "YulIdentifier", + "src": "4357:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4349:3:61", + "nodeType": "YulIdentifier", + "src": "4349:3:61" + }, + "nativeSrc": "4349:11:61", + "nodeType": "YulFunctionCall", + "src": "4349:11:61" + }, + { + "kind": "number", + "nativeSrc": "4362:2:61", + "nodeType": "YulLiteral", + "src": "4362:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4345:3:61", + "nodeType": "YulIdentifier", + "src": "4345:3:61" + }, + "nativeSrc": "4345:20:61", + "nodeType": "YulFunctionCall", + "src": "4345:20:61" + }, + { + "name": "dataEnd", + "nativeSrc": "4367:7:61", + "nodeType": "YulIdentifier", + "src": "4367:7:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "4342:2:61", + "nodeType": "YulIdentifier", + "src": "4342:2:61" + }, + "nativeSrc": "4342:33:61", + "nodeType": "YulFunctionCall", + "src": "4342:33:61" + }, + "nativeSrc": "4339:53:61", + "nodeType": "YulIf", + "src": "4339:53:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "4418:6:61", + "nodeType": "YulIdentifier", + "src": "4418:6:61" + }, + { + "kind": "number", + "nativeSrc": "4426:2:61", + "nodeType": "YulLiteral", + "src": "4426:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4414:3:61", + "nodeType": "YulIdentifier", + "src": "4414:3:61" + }, + "nativeSrc": "4414:15:61", + "nodeType": "YulFunctionCall", + "src": "4414:15:61" + }, + { + "arguments": [ + { + "name": "_2", + "nativeSrc": "4435:2:61", + "nodeType": "YulIdentifier", + "src": "4435:2:61" + }, + { + "kind": "number", + "nativeSrc": "4439:2:61", + "nodeType": "YulLiteral", + "src": "4439:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4431:3:61", + "nodeType": "YulIdentifier", + "src": "4431:3:61" + }, + "nativeSrc": "4431:11:61", + "nodeType": "YulFunctionCall", + "src": "4431:11:61" + }, + { + "name": "_3", + "nativeSrc": "4444:2:61", + "nodeType": "YulIdentifier", + "src": "4444:2:61" + } + ], + "functionName": { + "name": "calldatacopy", + "nativeSrc": "4401:12:61", + "nodeType": "YulIdentifier", + "src": "4401:12:61" + }, + "nativeSrc": "4401:46:61", + "nodeType": "YulFunctionCall", + "src": "4401:46:61" + }, + "nativeSrc": "4401:46:61", + "nodeType": "YulExpressionStatement", + "src": "4401:46:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "4471:6:61", + "nodeType": "YulIdentifier", + "src": "4471:6:61" + }, + { + "name": "_3", + "nativeSrc": "4479:2:61", + "nodeType": "YulIdentifier", + "src": "4479:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4467:3:61", + "nodeType": "YulIdentifier", + "src": "4467:3:61" + }, + "nativeSrc": "4467:15:61", + "nodeType": "YulFunctionCall", + "src": "4467:15:61" + }, + { + "kind": "number", + "nativeSrc": "4484:2:61", + "nodeType": "YulLiteral", + "src": "4484:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4463:3:61", + "nodeType": "YulIdentifier", + "src": "4463:3:61" + }, + "nativeSrc": "4463:24:61", + "nodeType": "YulFunctionCall", + "src": "4463:24:61" + }, + { + "kind": "number", + "nativeSrc": "4489:1:61", + "nodeType": "YulLiteral", + "src": "4489:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4456:6:61", + "nodeType": "YulIdentifier", + "src": "4456:6:61" + }, + "nativeSrc": "4456:35:61", + "nodeType": "YulFunctionCall", + "src": "4456:35:61" + }, + "nativeSrc": "4456:35:61", + "nodeType": "YulExpressionStatement", + "src": "4456:35:61" + }, + { + "nativeSrc": "4500:16:61", + "nodeType": "YulAssignment", + "src": "4500:16:61", + "value": { + "name": "memPtr", + "nativeSrc": "4510:6:61", + "nodeType": "YulIdentifier", + "src": "4510:6:61" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "4500:6:61", + "nodeType": "YulIdentifier", + "src": "4500:6:61" + } + ] + }, + { + "nativeSrc": "4525:42:61", + "nodeType": "YulAssignment", + "src": "4525:42:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4552:9:61", + "nodeType": "YulIdentifier", + "src": "4552:9:61" + }, + { + "kind": "number", + "nativeSrc": "4563:2:61", + "nodeType": "YulLiteral", + "src": "4563:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4548:3:61", + "nodeType": "YulIdentifier", + "src": "4548:3:61" + }, + "nativeSrc": "4548:18:61", + "nodeType": "YulFunctionCall", + "src": "4548:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "4535:12:61", + "nodeType": "YulIdentifier", + "src": "4535:12:61" + }, + "nativeSrc": "4535:32:61", + "nodeType": "YulFunctionCall", + "src": "4535:32:61" + }, + "variableNames": [ + { + "name": "value3", + "nativeSrc": "4525:6:61", + "nodeType": "YulIdentifier", + "src": "4525:6:61" + } + ] + }, + { + "nativeSrc": "4576:43:61", + "nodeType": "YulAssignment", + "src": "4576:43:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4603:9:61", + "nodeType": "YulIdentifier", + "src": "4603:9:61" + }, + { + "kind": "number", + "nativeSrc": "4614:3:61", + "nodeType": "YulLiteral", + "src": "4614:3:61", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4599:3:61", + "nodeType": "YulIdentifier", + "src": "4599:3:61" + }, + "nativeSrc": "4599:19:61", + "nodeType": "YulFunctionCall", + "src": "4599:19:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "4586:12:61", + "nodeType": "YulIdentifier", + "src": "4586:12:61" + }, + "nativeSrc": "4586:33:61", + "nodeType": "YulFunctionCall", + "src": "4586:33:61" + }, + "variableNames": [ + { + "name": "value4", + "nativeSrc": "4576:6:61", + "nodeType": "YulIdentifier", + "src": "4576:6:61" + } + ] + }, + { + "nativeSrc": "4628:57:61", + "nodeType": "YulAssignment", + "src": "4628:57:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4669:9:61", + "nodeType": "YulIdentifier", + "src": "4669:9:61" + }, + { + "kind": "number", + "nativeSrc": "4680:3:61", + "nodeType": "YulLiteral", + "src": "4680:3:61", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4665:3:61", + "nodeType": "YulIdentifier", + "src": "4665:3:61" + }, + "nativeSrc": "4665:19:61", + "nodeType": "YulFunctionCall", + "src": "4665:19:61" + } + ], + "functionName": { + "name": "abi_decode_contract_IERC20", + "nativeSrc": "4638:26:61", + "nodeType": "YulIdentifier", + "src": "4638:26:61" + }, + "nativeSrc": "4638:47:61", + "nodeType": "YulFunctionCall", + "src": "4638:47:61" + }, + "variableNames": [ + { + "name": "value5", + "nativeSrc": "4628:6:61", + "nodeType": "YulIdentifier", + "src": "4628:6:61" + } + ] + }, + { + "nativeSrc": "4694:43:61", + "nodeType": "YulAssignment", + "src": "4694:43:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4721:9:61", + "nodeType": "YulIdentifier", + "src": "4721:9:61" + }, + { + "kind": "number", + "nativeSrc": "4732:3:61", + "nodeType": "YulLiteral", + "src": "4732:3:61", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4717:3:61", + "nodeType": "YulIdentifier", + "src": "4717:3:61" + }, + "nativeSrc": "4717:19:61", + "nodeType": "YulFunctionCall", + "src": "4717:19:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "4704:12:61", + "nodeType": "YulIdentifier", + "src": "4704:12:61" + }, + "nativeSrc": "4704:33:61", + "nodeType": "YulFunctionCall", + "src": "4704:33:61" + }, + "variableNames": [ + { + "name": "value6", + "nativeSrc": "4694:6:61", + "nodeType": "YulIdentifier", + "src": "4694:6:61" + } + ] + }, + { + "nativeSrc": "4746:46:61", + "nodeType": "YulAssignment", + "src": "4746:46:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4776:9:61", + "nodeType": "YulIdentifier", + "src": "4776:9:61" + }, + { + "kind": "number", + "nativeSrc": "4787:3:61", + "nodeType": "YulLiteral", + "src": "4787:3:61", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4772:3:61", + "nodeType": "YulIdentifier", + "src": "4772:3:61" + }, + "nativeSrc": "4772:19:61", + "nodeType": "YulFunctionCall", + "src": "4772:19:61" + } + ], + "functionName": { + "name": "abi_decode_bool", + "nativeSrc": "4756:15:61", + "nodeType": "YulIdentifier", + "src": "4756:15:61" + }, + "nativeSrc": "4756:36:61", + "nodeType": "YulFunctionCall", + "src": "4756:36:61" + }, + "variableNames": [ + { + "name": "value7", + "nativeSrc": "4746:6:61", + "nodeType": "YulIdentifier", + "src": "4746:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_string_memory_ptrt_uint256t_uint256t_contract$_IERC20_$4513t_uint256t_bool", + "nativeSrc": "3226:1572:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "3347:9:61", + "nodeType": "YulTypedName", + "src": "3347:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "3358:7:61", + "nodeType": "YulTypedName", + "src": "3358:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "3370:6:61", + "nodeType": "YulTypedName", + "src": "3370:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "3378:6:61", + "nodeType": "YulTypedName", + "src": "3378:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "3386:6:61", + "nodeType": "YulTypedName", + "src": "3386:6:61", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "3394:6:61", + "nodeType": "YulTypedName", + "src": "3394:6:61", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "3402:6:61", + "nodeType": "YulTypedName", + "src": "3402:6:61", + "type": "" + }, + { + "name": "value5", + "nativeSrc": "3410:6:61", + "nodeType": "YulTypedName", + "src": "3410:6:61", + "type": "" + }, + { + "name": "value6", + "nativeSrc": "3418:6:61", + "nodeType": "YulTypedName", + "src": "3418:6:61", + "type": "" + }, + { + "name": "value7", + "nativeSrc": "3426:6:61", + "nodeType": "YulTypedName", + "src": "3426:6:61", + "type": "" + } + ], + "src": "3226:1572:61" + }, + { + "body": { + "nativeSrc": "4956:205:61", + "nodeType": "YulBlock", + "src": "4956:205:61", + "statements": [ + { + "nativeSrc": "4966:26:61", + "nodeType": "YulAssignment", + "src": "4966:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4978:9:61", + "nodeType": "YulIdentifier", + "src": "4978:9:61" + }, + { + "kind": "number", + "nativeSrc": "4989:2:61", + "nodeType": "YulLiteral", + "src": "4989:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4974:3:61", + "nodeType": "YulIdentifier", + "src": "4974:3:61" + }, + "nativeSrc": "4974:18:61", + "nodeType": "YulFunctionCall", + "src": "4974:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "4966:4:61", + "nodeType": "YulIdentifier", + "src": "4966:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5008:9:61", + "nodeType": "YulIdentifier", + "src": "5008:9:61" + }, + { + "name": "value0", + "nativeSrc": "5019:6:61", + "nodeType": "YulIdentifier", + "src": "5019:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5001:6:61", + "nodeType": "YulIdentifier", + "src": "5001:6:61" + }, + "nativeSrc": "5001:25:61", + "nodeType": "YulFunctionCall", + "src": "5001:25:61" + }, + "nativeSrc": "5001:25:61", + "nodeType": "YulExpressionStatement", + "src": "5001:25:61" + }, + { + "nativeSrc": "5035:16:61", + "nodeType": "YulVariableDeclaration", + "src": "5035:16:61", + "value": { + "kind": "number", + "nativeSrc": "5045:6:61", + "nodeType": "YulLiteral", + "src": "5045:6:61", + "type": "", + "value": "0xffff" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "5039:2:61", + "nodeType": "YulTypedName", + "src": "5039:2:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5071:9:61", + "nodeType": "YulIdentifier", + "src": "5071:9:61" + }, + { + "kind": "number", + "nativeSrc": "5082:2:61", + "nodeType": "YulLiteral", + "src": "5082:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5067:3:61", + "nodeType": "YulIdentifier", + "src": "5067:3:61" + }, + "nativeSrc": "5067:18:61", + "nodeType": "YulFunctionCall", + "src": "5067:18:61" + }, + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "5091:6:61", + "nodeType": "YulIdentifier", + "src": "5091:6:61" + }, + { + "name": "_1", + "nativeSrc": "5099:2:61", + "nodeType": "YulIdentifier", + "src": "5099:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "5087:3:61", + "nodeType": "YulIdentifier", + "src": "5087:3:61" + }, + "nativeSrc": "5087:15:61", + "nodeType": "YulFunctionCall", + "src": "5087:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5060:6:61", + "nodeType": "YulIdentifier", + "src": "5060:6:61" + }, + "nativeSrc": "5060:43:61", + "nodeType": "YulFunctionCall", + "src": "5060:43:61" + }, + "nativeSrc": "5060:43:61", + "nodeType": "YulExpressionStatement", + "src": "5060:43:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5123:9:61", + "nodeType": "YulIdentifier", + "src": "5123:9:61" + }, + { + "kind": "number", + "nativeSrc": "5134:2:61", + "nodeType": "YulLiteral", + "src": "5134:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5119:3:61", + "nodeType": "YulIdentifier", + "src": "5119:3:61" + }, + "nativeSrc": "5119:18:61", + "nodeType": "YulFunctionCall", + "src": "5119:18:61" + }, + { + "arguments": [ + { + "name": "value2", + "nativeSrc": "5143:6:61", + "nodeType": "YulIdentifier", + "src": "5143:6:61" + }, + { + "name": "_1", + "nativeSrc": "5151:2:61", + "nodeType": "YulIdentifier", + "src": "5151:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "5139:3:61", + "nodeType": "YulIdentifier", + "src": "5139:3:61" + }, + "nativeSrc": "5139:15:61", + "nodeType": "YulFunctionCall", + "src": "5139:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5112:6:61", + "nodeType": "YulIdentifier", + "src": "5112:6:61" + }, + "nativeSrc": "5112:43:61", + "nodeType": "YulFunctionCall", + "src": "5112:43:61" + }, + "nativeSrc": "5112:43:61", + "nodeType": "YulExpressionStatement", + "src": "5112:43:61" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint16_t_uint16__to_t_uint256_t_uint16_t_uint16__fromStack_reversed", + "nativeSrc": "4803:358:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "4909:9:61", + "nodeType": "YulTypedName", + "src": "4909:9:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "4920:6:61", + "nodeType": "YulTypedName", + "src": "4920:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "4928:6:61", + "nodeType": "YulTypedName", + "src": "4928:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "4936:6:61", + "nodeType": "YulTypedName", + "src": "4936:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "4947:4:61", + "nodeType": "YulTypedName", + "src": "4947:4:61", + "type": "" + } + ], + "src": "4803:358:61" + }, + { + "body": { + "nativeSrc": "5267:76:61", + "nodeType": "YulBlock", + "src": "5267:76:61", + "statements": [ + { + "nativeSrc": "5277:26:61", + "nodeType": "YulAssignment", + "src": "5277:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5289:9:61", + "nodeType": "YulIdentifier", + "src": "5289:9:61" + }, + { + "kind": "number", + "nativeSrc": "5300:2:61", + "nodeType": "YulLiteral", + "src": "5300:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5285:3:61", + "nodeType": "YulIdentifier", + "src": "5285:3:61" + }, + "nativeSrc": "5285:18:61", + "nodeType": "YulFunctionCall", + "src": "5285:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "5277:4:61", + "nodeType": "YulIdentifier", + "src": "5277:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5319:9:61", + "nodeType": "YulIdentifier", + "src": "5319:9:61" + }, + { + "name": "value0", + "nativeSrc": "5330:6:61", + "nodeType": "YulIdentifier", + "src": "5330:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5312:6:61", + "nodeType": "YulIdentifier", + "src": "5312:6:61" + }, + "nativeSrc": "5312:25:61", + "nodeType": "YulFunctionCall", + "src": "5312:25:61" + }, + "nativeSrc": "5312:25:61", + "nodeType": "YulExpressionStatement", + "src": "5312:25:61" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nativeSrc": "5166:177:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "5236:9:61", + "nodeType": "YulTypedName", + "src": "5236:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "5247:6:61", + "nodeType": "YulTypedName", + "src": "5247:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "5258:4:61", + "nodeType": "YulTypedName", + "src": "5258:4:61", + "type": "" + } + ], + "src": "5166:177:61" + }, + { + "body": { + "nativeSrc": "5444:170:61", + "nodeType": "YulBlock", + "src": "5444:170:61", + "statements": [ + { + "body": { + "nativeSrc": "5490:16:61", + "nodeType": "YulBlock", + "src": "5490:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5499:1:61", + "nodeType": "YulLiteral", + "src": "5499:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "5502:1:61", + "nodeType": "YulLiteral", + "src": "5502:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "5492:6:61", + "nodeType": "YulIdentifier", + "src": "5492:6:61" + }, + "nativeSrc": "5492:12:61", + "nodeType": "YulFunctionCall", + "src": "5492:12:61" + }, + "nativeSrc": "5492:12:61", + "nodeType": "YulExpressionStatement", + "src": "5492:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "5465:7:61", + "nodeType": "YulIdentifier", + "src": "5465:7:61" + }, + { + "name": "headStart", + "nativeSrc": "5474:9:61", + "nodeType": "YulIdentifier", + "src": "5474:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "5461:3:61", + "nodeType": "YulIdentifier", + "src": "5461:3:61" + }, + "nativeSrc": "5461:23:61", + "nodeType": "YulFunctionCall", + "src": "5461:23:61" + }, + { + "kind": "number", + "nativeSrc": "5486:2:61", + "nodeType": "YulLiteral", + "src": "5486:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "5457:3:61", + "nodeType": "YulIdentifier", + "src": "5457:3:61" + }, + "nativeSrc": "5457:32:61", + "nodeType": "YulFunctionCall", + "src": "5457:32:61" + }, + "nativeSrc": "5454:52:61", + "nodeType": "YulIf", + "src": "5454:52:61" + }, + { + "nativeSrc": "5515:29:61", + "nodeType": "YulVariableDeclaration", + "src": "5515:29:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5534:9:61", + "nodeType": "YulIdentifier", + "src": "5534:9:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "5528:5:61", + "nodeType": "YulIdentifier", + "src": "5528:5:61" + }, + "nativeSrc": "5528:16:61", + "nodeType": "YulFunctionCall", + "src": "5528:16:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "5519:5:61", + "nodeType": "YulTypedName", + "src": "5519:5:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "5578:5:61", + "nodeType": "YulIdentifier", + "src": "5578:5:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "5553:24:61", + "nodeType": "YulIdentifier", + "src": "5553:24:61" + }, + "nativeSrc": "5553:31:61", + "nodeType": "YulFunctionCall", + "src": "5553:31:61" + }, + "nativeSrc": "5553:31:61", + "nodeType": "YulExpressionStatement", + "src": "5553:31:61" + }, + { + "nativeSrc": "5593:15:61", + "nodeType": "YulAssignment", + "src": "5593:15:61", + "value": { + "name": "value", + "nativeSrc": "5603:5:61", + "nodeType": "YulIdentifier", + "src": "5603:5:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "5593:6:61", + "nodeType": "YulIdentifier", + "src": "5593:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_contract$_IERC20_$4513_fromMemory", + "nativeSrc": "5348:266:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "5410:9:61", + "nodeType": "YulTypedName", + "src": "5410:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "5421:7:61", + "nodeType": "YulTypedName", + "src": "5421:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "5433:6:61", + "nodeType": "YulTypedName", + "src": "5433:6:61", + "type": "" + } + ], + "src": "5348:266:61" + }, + { + "body": { + "nativeSrc": "5748:119:61", + "nodeType": "YulBlock", + "src": "5748:119:61", + "statements": [ + { + "nativeSrc": "5758:26:61", + "nodeType": "YulAssignment", + "src": "5758:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5770:9:61", + "nodeType": "YulIdentifier", + "src": "5770:9:61" + }, + { + "kind": "number", + "nativeSrc": "5781:2:61", + "nodeType": "YulLiteral", + "src": "5781:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5766:3:61", + "nodeType": "YulIdentifier", + "src": "5766:3:61" + }, + "nativeSrc": "5766:18:61", + "nodeType": "YulFunctionCall", + "src": "5766:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "5758:4:61", + "nodeType": "YulIdentifier", + "src": "5758:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5800:9:61", + "nodeType": "YulIdentifier", + "src": "5800:9:61" + }, + { + "name": "value0", + "nativeSrc": "5811:6:61", + "nodeType": "YulIdentifier", + "src": "5811:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5793:6:61", + "nodeType": "YulIdentifier", + "src": "5793:6:61" + }, + "nativeSrc": "5793:25:61", + "nodeType": "YulFunctionCall", + "src": "5793:25:61" + }, + "nativeSrc": "5793:25:61", + "nodeType": "YulExpressionStatement", + "src": "5793:25:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5838:9:61", + "nodeType": "YulIdentifier", + "src": "5838:9:61" + }, + { + "kind": "number", + "nativeSrc": "5849:2:61", + "nodeType": "YulLiteral", + "src": "5849:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5834:3:61", + "nodeType": "YulIdentifier", + "src": "5834:3:61" + }, + "nativeSrc": "5834:18:61", + "nodeType": "YulFunctionCall", + "src": "5834:18:61" + }, + { + "name": "value1", + "nativeSrc": "5854:6:61", + "nodeType": "YulIdentifier", + "src": "5854:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5827:6:61", + "nodeType": "YulIdentifier", + "src": "5827:6:61" + }, + "nativeSrc": "5827:34:61", + "nodeType": "YulFunctionCall", + "src": "5827:34:61" + }, + "nativeSrc": "5827:34:61", + "nodeType": "YulExpressionStatement", + "src": "5827:34:61" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed", + "nativeSrc": "5619:248:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "5709:9:61", + "nodeType": "YulTypedName", + "src": "5709:9:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "5720:6:61", + "nodeType": "YulTypedName", + "src": "5720:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "5728:6:61", + "nodeType": "YulTypedName", + "src": "5728:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "5739:4:61", + "nodeType": "YulTypedName", + "src": "5739:4:61", + "type": "" + } + ], + "src": "5619:248:61" + }, + { + "body": { + "nativeSrc": "5985:214:61", + "nodeType": "YulBlock", + "src": "5985:214:61", + "statements": [ + { + "body": { + "nativeSrc": "6031:16:61", + "nodeType": "YulBlock", + "src": "6031:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6040:1:61", + "nodeType": "YulLiteral", + "src": "6040:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "6043:1:61", + "nodeType": "YulLiteral", + "src": "6043:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "6033:6:61", + "nodeType": "YulIdentifier", + "src": "6033:6:61" + }, + "nativeSrc": "6033:12:61", + "nodeType": "YulFunctionCall", + "src": "6033:12:61" + }, + "nativeSrc": "6033:12:61", + "nodeType": "YulExpressionStatement", + "src": "6033:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "6006:7:61", + "nodeType": "YulIdentifier", + "src": "6006:7:61" + }, + { + "name": "headStart", + "nativeSrc": "6015:9:61", + "nodeType": "YulIdentifier", + "src": "6015:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "6002:3:61", + "nodeType": "YulIdentifier", + "src": "6002:3:61" + }, + "nativeSrc": "6002:23:61", + "nodeType": "YulFunctionCall", + "src": "6002:23:61" + }, + { + "kind": "number", + "nativeSrc": "6027:2:61", + "nodeType": "YulLiteral", + "src": "6027:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "5998:3:61", + "nodeType": "YulIdentifier", + "src": "5998:3:61" + }, + "nativeSrc": "5998:32:61", + "nodeType": "YulFunctionCall", + "src": "5998:32:61" + }, + "nativeSrc": "5995:52:61", + "nodeType": "YulIf", + "src": "5995:52:61" + }, + { + "nativeSrc": "6056:26:61", + "nodeType": "YulAssignment", + "src": "6056:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6072:9:61", + "nodeType": "YulIdentifier", + "src": "6072:9:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "6066:5:61", + "nodeType": "YulIdentifier", + "src": "6066:5:61" + }, + "nativeSrc": "6066:16:61", + "nodeType": "YulFunctionCall", + "src": "6066:16:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "6056:6:61", + "nodeType": "YulIdentifier", + "src": "6056:6:61" + } + ] + }, + { + "nativeSrc": "6091:38:61", + "nodeType": "YulVariableDeclaration", + "src": "6091:38:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6114:9:61", + "nodeType": "YulIdentifier", + "src": "6114:9:61" + }, + { + "kind": "number", + "nativeSrc": "6125:2:61", + "nodeType": "YulLiteral", + "src": "6125:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6110:3:61", + "nodeType": "YulIdentifier", + "src": "6110:3:61" + }, + "nativeSrc": "6110:18:61", + "nodeType": "YulFunctionCall", + "src": "6110:18:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "6104:5:61", + "nodeType": "YulIdentifier", + "src": "6104:5:61" + }, + "nativeSrc": "6104:25:61", + "nodeType": "YulFunctionCall", + "src": "6104:25:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "6095:5:61", + "nodeType": "YulTypedName", + "src": "6095:5:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "6163:5:61", + "nodeType": "YulIdentifier", + "src": "6163:5:61" + } + ], + "functionName": { + "name": "validator_revert_address", + "nativeSrc": "6138:24:61", + "nodeType": "YulIdentifier", + "src": "6138:24:61" + }, + "nativeSrc": "6138:31:61", + "nodeType": "YulFunctionCall", + "src": "6138:31:61" + }, + "nativeSrc": "6138:31:61", + "nodeType": "YulExpressionStatement", + "src": "6138:31:61" + }, + { + "nativeSrc": "6178:15:61", + "nodeType": "YulAssignment", + "src": "6178:15:61", + "value": { + "name": "value", + "nativeSrc": "6188:5:61", + "nodeType": "YulIdentifier", + "src": "6188:5:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "6178:6:61", + "nodeType": "YulIdentifier", + "src": "6178:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_contract$_IERC20_$4513_fromMemory", + "nativeSrc": "5872:327:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "5943:9:61", + "nodeType": "YulTypedName", + "src": "5943:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "5954:7:61", + "nodeType": "YulTypedName", + "src": "5954:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "5966:6:61", + "nodeType": "YulTypedName", + "src": "5966:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "5974:6:61", + "nodeType": "YulTypedName", + "src": "5974:6:61", + "type": "" + } + ], + "src": "5872:327:61" + }, + { + "body": { + "nativeSrc": "6361:162:61", + "nodeType": "YulBlock", + "src": "6361:162:61", + "statements": [ + { + "nativeSrc": "6371:26:61", + "nodeType": "YulAssignment", + "src": "6371:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6383:9:61", + "nodeType": "YulIdentifier", + "src": "6383:9:61" + }, + { + "kind": "number", + "nativeSrc": "6394:2:61", + "nodeType": "YulLiteral", + "src": "6394:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6379:3:61", + "nodeType": "YulIdentifier", + "src": "6379:3:61" + }, + "nativeSrc": "6379:18:61", + "nodeType": "YulFunctionCall", + "src": "6379:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "6371:4:61", + "nodeType": "YulIdentifier", + "src": "6371:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6413:9:61", + "nodeType": "YulIdentifier", + "src": "6413:9:61" + }, + { + "name": "value0", + "nativeSrc": "6424:6:61", + "nodeType": "YulIdentifier", + "src": "6424:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6406:6:61", + "nodeType": "YulIdentifier", + "src": "6406:6:61" + }, + "nativeSrc": "6406:25:61", + "nodeType": "YulFunctionCall", + "src": "6406:25:61" + }, + "nativeSrc": "6406:25:61", + "nodeType": "YulExpressionStatement", + "src": "6406:25:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6451:9:61", + "nodeType": "YulIdentifier", + "src": "6451:9:61" + }, + { + "kind": "number", + "nativeSrc": "6462:2:61", + "nodeType": "YulLiteral", + "src": "6462:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6447:3:61", + "nodeType": "YulIdentifier", + "src": "6447:3:61" + }, + "nativeSrc": "6447:18:61", + "nodeType": "YulFunctionCall", + "src": "6447:18:61" + }, + { + "name": "value1", + "nativeSrc": "6467:6:61", + "nodeType": "YulIdentifier", + "src": "6467:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6440:6:61", + "nodeType": "YulIdentifier", + "src": "6440:6:61" + }, + "nativeSrc": "6440:34:61", + "nodeType": "YulFunctionCall", + "src": "6440:34:61" + }, + "nativeSrc": "6440:34:61", + "nodeType": "YulExpressionStatement", + "src": "6440:34:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6494:9:61", + "nodeType": "YulIdentifier", + "src": "6494:9:61" + }, + { + "kind": "number", + "nativeSrc": "6505:2:61", + "nodeType": "YulLiteral", + "src": "6505:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6490:3:61", + "nodeType": "YulIdentifier", + "src": "6490:3:61" + }, + "nativeSrc": "6490:18:61", + "nodeType": "YulFunctionCall", + "src": "6490:18:61" + }, + { + "name": "value2", + "nativeSrc": "6510:6:61", + "nodeType": "YulIdentifier", + "src": "6510:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6483:6:61", + "nodeType": "YulIdentifier", + "src": "6483:6:61" + }, + "nativeSrc": "6483:34:61", + "nodeType": "YulFunctionCall", + "src": "6483:34:61" + }, + "nativeSrc": "6483:34:61", + "nodeType": "YulExpressionStatement", + "src": "6483:34:61" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed", + "nativeSrc": "6204:319:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "6314:9:61", + "nodeType": "YulTypedName", + "src": "6314:9:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "6325:6:61", + "nodeType": "YulTypedName", + "src": "6325:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "6333:6:61", + "nodeType": "YulTypedName", + "src": "6333:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "6341:6:61", + "nodeType": "YulTypedName", + "src": "6341:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "6352:4:61", + "nodeType": "YulTypedName", + "src": "6352:4:61", + "type": "" + } + ], + "src": "6204:319:61" + }, + { + "body": { + "nativeSrc": "6580:60:61", + "nodeType": "YulBlock", + "src": "6580:60:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "6597:3:61", + "nodeType": "YulIdentifier", + "src": "6597:3:61" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "6606:5:61", + "nodeType": "YulIdentifier", + "src": "6606:5:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6621:3:61", + "nodeType": "YulLiteral", + "src": "6621:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "6626:1:61", + "nodeType": "YulLiteral", + "src": "6626:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "6617:3:61", + "nodeType": "YulIdentifier", + "src": "6617:3:61" + }, + "nativeSrc": "6617:11:61", + "nodeType": "YulFunctionCall", + "src": "6617:11:61" + }, + { + "kind": "number", + "nativeSrc": "6630:1:61", + "nodeType": "YulLiteral", + "src": "6630:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "6613:3:61", + "nodeType": "YulIdentifier", + "src": "6613:3:61" + }, + "nativeSrc": "6613:19:61", + "nodeType": "YulFunctionCall", + "src": "6613:19:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "6602:3:61", + "nodeType": "YulIdentifier", + "src": "6602:3:61" + }, + "nativeSrc": "6602:31:61", + "nodeType": "YulFunctionCall", + "src": "6602:31:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6590:6:61", + "nodeType": "YulIdentifier", + "src": "6590:6:61" + }, + "nativeSrc": "6590:44:61", + "nodeType": "YulFunctionCall", + "src": "6590:44:61" + }, + "nativeSrc": "6590:44:61", + "nodeType": "YulExpressionStatement", + "src": "6590:44:61" + } + ] + }, + "name": "abi_encode_contract_IERC20", + "nativeSrc": "6528:112:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "6564:5:61", + "nodeType": "YulTypedName", + "src": "6564:5:61", + "type": "" + }, + { + "name": "pos", + "nativeSrc": "6571:3:61", + "nodeType": "YulTypedName", + "src": "6571:3:61", + "type": "" + } + ], + "src": "6528:112:61" + }, + { + "body": { + "nativeSrc": "6832:218:61", + "nodeType": "YulBlock", + "src": "6832:218:61", + "statements": [ + { + "nativeSrc": "6842:26:61", + "nodeType": "YulAssignment", + "src": "6842:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6854:9:61", + "nodeType": "YulIdentifier", + "src": "6854:9:61" + }, + { + "kind": "number", + "nativeSrc": "6865:2:61", + "nodeType": "YulLiteral", + "src": "6865:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6850:3:61", + "nodeType": "YulIdentifier", + "src": "6850:3:61" + }, + "nativeSrc": "6850:18:61", + "nodeType": "YulFunctionCall", + "src": "6850:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "6842:4:61", + "nodeType": "YulIdentifier", + "src": "6842:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6884:9:61", + "nodeType": "YulIdentifier", + "src": "6884:9:61" + }, + { + "name": "value0", + "nativeSrc": "6895:6:61", + "nodeType": "YulIdentifier", + "src": "6895:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6877:6:61", + "nodeType": "YulIdentifier", + "src": "6877:6:61" + }, + "nativeSrc": "6877:25:61", + "nodeType": "YulFunctionCall", + "src": "6877:25:61" + }, + "nativeSrc": "6877:25:61", + "nodeType": "YulExpressionStatement", + "src": "6877:25:61" + }, + { + "nativeSrc": "6911:29:61", + "nodeType": "YulVariableDeclaration", + "src": "6911:29:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6929:3:61", + "nodeType": "YulLiteral", + "src": "6929:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "6934:1:61", + "nodeType": "YulLiteral", + "src": "6934:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "6925:3:61", + "nodeType": "YulIdentifier", + "src": "6925:3:61" + }, + "nativeSrc": "6925:11:61", + "nodeType": "YulFunctionCall", + "src": "6925:11:61" + }, + { + "kind": "number", + "nativeSrc": "6938:1:61", + "nodeType": "YulLiteral", + "src": "6938:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "6921:3:61", + "nodeType": "YulIdentifier", + "src": "6921:3:61" + }, + "nativeSrc": "6921:19:61", + "nodeType": "YulFunctionCall", + "src": "6921:19:61" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "6915:2:61", + "nodeType": "YulTypedName", + "src": "6915:2:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6960:9:61", + "nodeType": "YulIdentifier", + "src": "6960:9:61" + }, + { + "kind": "number", + "nativeSrc": "6971:2:61", + "nodeType": "YulLiteral", + "src": "6971:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6956:3:61", + "nodeType": "YulIdentifier", + "src": "6956:3:61" + }, + "nativeSrc": "6956:18:61", + "nodeType": "YulFunctionCall", + "src": "6956:18:61" + }, + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "6980:6:61", + "nodeType": "YulIdentifier", + "src": "6980:6:61" + }, + { + "name": "_1", + "nativeSrc": "6988:2:61", + "nodeType": "YulIdentifier", + "src": "6988:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "6976:3:61", + "nodeType": "YulIdentifier", + "src": "6976:3:61" + }, + "nativeSrc": "6976:15:61", + "nodeType": "YulFunctionCall", + "src": "6976:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6949:6:61", + "nodeType": "YulIdentifier", + "src": "6949:6:61" + }, + "nativeSrc": "6949:43:61", + "nodeType": "YulFunctionCall", + "src": "6949:43:61" + }, + "nativeSrc": "6949:43:61", + "nodeType": "YulExpressionStatement", + "src": "6949:43:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7012:9:61", + "nodeType": "YulIdentifier", + "src": "7012:9:61" + }, + { + "kind": "number", + "nativeSrc": "7023:2:61", + "nodeType": "YulLiteral", + "src": "7023:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7008:3:61", + "nodeType": "YulIdentifier", + "src": "7008:3:61" + }, + "nativeSrc": "7008:18:61", + "nodeType": "YulFunctionCall", + "src": "7008:18:61" + }, + { + "arguments": [ + { + "name": "value2", + "nativeSrc": "7032:6:61", + "nodeType": "YulIdentifier", + "src": "7032:6:61" + }, + { + "name": "_1", + "nativeSrc": "7040:2:61", + "nodeType": "YulIdentifier", + "src": "7040:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "7028:3:61", + "nodeType": "YulIdentifier", + "src": "7028:3:61" + }, + "nativeSrc": "7028:15:61", + "nodeType": "YulFunctionCall", + "src": "7028:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7001:6:61", + "nodeType": "YulIdentifier", + "src": "7001:6:61" + }, + "nativeSrc": "7001:43:61", + "nodeType": "YulFunctionCall", + "src": "7001:43:61" + }, + "nativeSrc": "7001:43:61", + "nodeType": "YulExpressionStatement", + "src": "7001:43:61" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_contract$_IERC20_$4513_t_contract$_IERC20_$4513__to_t_uint256_t_address_t_address__fromStack_reversed", + "nativeSrc": "6645:405:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "6785:9:61", + "nodeType": "YulTypedName", + "src": "6785:9:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "6796:6:61", + "nodeType": "YulTypedName", + "src": "6796:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "6804:6:61", + "nodeType": "YulTypedName", + "src": "6804:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "6812:6:61", + "nodeType": "YulTypedName", + "src": "6812:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "6823:4:61", + "nodeType": "YulTypedName", + "src": "6823:4:61", + "type": "" + } + ], + "src": "6645:405:61" + }, + { + "body": { + "nativeSrc": "7236:249:61", + "nodeType": "YulBlock", + "src": "7236:249:61", + "statements": [ + { + "nativeSrc": "7246:27:61", + "nodeType": "YulAssignment", + "src": "7246:27:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7258:9:61", + "nodeType": "YulIdentifier", + "src": "7258:9:61" + }, + { + "kind": "number", + "nativeSrc": "7269:3:61", + "nodeType": "YulLiteral", + "src": "7269:3:61", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7254:3:61", + "nodeType": "YulIdentifier", + "src": "7254:3:61" + }, + "nativeSrc": "7254:19:61", + "nodeType": "YulFunctionCall", + "src": "7254:19:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "7246:4:61", + "nodeType": "YulIdentifier", + "src": "7246:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7289:9:61", + "nodeType": "YulIdentifier", + "src": "7289:9:61" + }, + { + "name": "value0", + "nativeSrc": "7300:6:61", + "nodeType": "YulIdentifier", + "src": "7300:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7282:6:61", + "nodeType": "YulIdentifier", + "src": "7282:6:61" + }, + "nativeSrc": "7282:25:61", + "nodeType": "YulFunctionCall", + "src": "7282:25:61" + }, + "nativeSrc": "7282:25:61", + "nodeType": "YulExpressionStatement", + "src": "7282:25:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7327:9:61", + "nodeType": "YulIdentifier", + "src": "7327:9:61" + }, + { + "kind": "number", + "nativeSrc": "7338:2:61", + "nodeType": "YulLiteral", + "src": "7338:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7323:3:61", + "nodeType": "YulIdentifier", + "src": "7323:3:61" + }, + "nativeSrc": "7323:18:61", + "nodeType": "YulFunctionCall", + "src": "7323:18:61" + }, + { + "name": "value1", + "nativeSrc": "7343:6:61", + "nodeType": "YulIdentifier", + "src": "7343:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7316:6:61", + "nodeType": "YulIdentifier", + "src": "7316:6:61" + }, + "nativeSrc": "7316:34:61", + "nodeType": "YulFunctionCall", + "src": "7316:34:61" + }, + "nativeSrc": "7316:34:61", + "nodeType": "YulExpressionStatement", + "src": "7316:34:61" + }, + { + "nativeSrc": "7359:16:61", + "nodeType": "YulVariableDeclaration", + "src": "7359:16:61", + "value": { + "kind": "number", + "nativeSrc": "7369:6:61", + "nodeType": "YulLiteral", + "src": "7369:6:61", + "type": "", + "value": "0xffff" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "7363:2:61", + "nodeType": "YulTypedName", + "src": "7363:2:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7395:9:61", + "nodeType": "YulIdentifier", + "src": "7395:9:61" + }, + { + "kind": "number", + "nativeSrc": "7406:2:61", + "nodeType": "YulLiteral", + "src": "7406:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7391:3:61", + "nodeType": "YulIdentifier", + "src": "7391:3:61" + }, + "nativeSrc": "7391:18:61", + "nodeType": "YulFunctionCall", + "src": "7391:18:61" + }, + { + "arguments": [ + { + "name": "value2", + "nativeSrc": "7415:6:61", + "nodeType": "YulIdentifier", + "src": "7415:6:61" + }, + { + "name": "_1", + "nativeSrc": "7423:2:61", + "nodeType": "YulIdentifier", + "src": "7423:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "7411:3:61", + "nodeType": "YulIdentifier", + "src": "7411:3:61" + }, + "nativeSrc": "7411:15:61", + "nodeType": "YulFunctionCall", + "src": "7411:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7384:6:61", + "nodeType": "YulIdentifier", + "src": "7384:6:61" + }, + "nativeSrc": "7384:43:61", + "nodeType": "YulFunctionCall", + "src": "7384:43:61" + }, + "nativeSrc": "7384:43:61", + "nodeType": "YulExpressionStatement", + "src": "7384:43:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7447:9:61", + "nodeType": "YulIdentifier", + "src": "7447:9:61" + }, + { + "kind": "number", + "nativeSrc": "7458:2:61", + "nodeType": "YulLiteral", + "src": "7458:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7443:3:61", + "nodeType": "YulIdentifier", + "src": "7443:3:61" + }, + "nativeSrc": "7443:18:61", + "nodeType": "YulFunctionCall", + "src": "7443:18:61" + }, + { + "arguments": [ + { + "name": "value3", + "nativeSrc": "7467:6:61", + "nodeType": "YulIdentifier", + "src": "7467:6:61" + }, + { + "name": "_1", + "nativeSrc": "7475:2:61", + "nodeType": "YulIdentifier", + "src": "7475:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "7463:3:61", + "nodeType": "YulIdentifier", + "src": "7463:3:61" + }, + "nativeSrc": "7463:15:61", + "nodeType": "YulFunctionCall", + "src": "7463:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7436:6:61", + "nodeType": "YulIdentifier", + "src": "7436:6:61" + }, + "nativeSrc": "7436:43:61", + "nodeType": "YulFunctionCall", + "src": "7436:43:61" + }, + "nativeSrc": "7436:43:61", + "nodeType": "YulExpressionStatement", + "src": "7436:43:61" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256_t_uint16_t_uint16__to_t_uint256_t_uint256_t_uint16_t_uint16__fromStack_reversed", + "nativeSrc": "7055:430:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "7181:9:61", + "nodeType": "YulTypedName", + "src": "7181:9:61", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "7192:6:61", + "nodeType": "YulTypedName", + "src": "7192:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "7200:6:61", + "nodeType": "YulTypedName", + "src": "7200:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "7208:6:61", + "nodeType": "YulTypedName", + "src": "7208:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "7216:6:61", + "nodeType": "YulTypedName", + "src": "7216:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "7227:4:61", + "nodeType": "YulTypedName", + "src": "7227:4:61", + "type": "" + } + ], + "src": "7055:430:61" + }, + { + "body": { + "nativeSrc": "7531:50:61", + "nodeType": "YulBlock", + "src": "7531:50:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "7548:3:61", + "nodeType": "YulIdentifier", + "src": "7548:3:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "7567:5:61", + "nodeType": "YulIdentifier", + "src": "7567:5:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "7560:6:61", + "nodeType": "YulIdentifier", + "src": "7560:6:61" + }, + "nativeSrc": "7560:13:61", + "nodeType": "YulFunctionCall", + "src": "7560:13:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "7553:6:61", + "nodeType": "YulIdentifier", + "src": "7553:6:61" + }, + "nativeSrc": "7553:21:61", + "nodeType": "YulFunctionCall", + "src": "7553:21:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7541:6:61", + "nodeType": "YulIdentifier", + "src": "7541:6:61" + }, + "nativeSrc": "7541:34:61", + "nodeType": "YulFunctionCall", + "src": "7541:34:61" + }, + "nativeSrc": "7541:34:61", + "nodeType": "YulExpressionStatement", + "src": "7541:34:61" + } + ] + }, + "name": "abi_encode_bool", + "nativeSrc": "7490:91:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "7515:5:61", + "nodeType": "YulTypedName", + "src": "7515:5:61", + "type": "" + }, + { + "name": "pos", + "nativeSrc": "7522:3:61", + "nodeType": "YulTypedName", + "src": "7522:3:61", + "type": "" + } + ], + "src": "7490:91:61" + }, + { + "body": { + "nativeSrc": "7884:768:61", + "nodeType": "YulBlock", + "src": "7884:768:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7901:9:61", + "nodeType": "YulIdentifier", + "src": "7901:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "7916:6:61", + "nodeType": "YulIdentifier", + "src": "7916:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7932:3:61", + "nodeType": "YulLiteral", + "src": "7932:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "7937:1:61", + "nodeType": "YulLiteral", + "src": "7937:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "7928:3:61", + "nodeType": "YulIdentifier", + "src": "7928:3:61" + }, + "nativeSrc": "7928:11:61", + "nodeType": "YulFunctionCall", + "src": "7928:11:61" + }, + { + "kind": "number", + "nativeSrc": "7941:1:61", + "nodeType": "YulLiteral", + "src": "7941:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "7924:3:61", + "nodeType": "YulIdentifier", + "src": "7924:3:61" + }, + "nativeSrc": "7924:19:61", + "nodeType": "YulFunctionCall", + "src": "7924:19:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "7912:3:61", + "nodeType": "YulIdentifier", + "src": "7912:3:61" + }, + "nativeSrc": "7912:32:61", + "nodeType": "YulFunctionCall", + "src": "7912:32:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7894:6:61", + "nodeType": "YulIdentifier", + "src": "7894:6:61" + }, + "nativeSrc": "7894:51:61", + "nodeType": "YulFunctionCall", + "src": "7894:51:61" + }, + "nativeSrc": "7894:51:61", + "nodeType": "YulExpressionStatement", + "src": "7894:51:61" + }, + { + "nativeSrc": "7954:12:61", + "nodeType": "YulVariableDeclaration", + "src": "7954:12:61", + "value": { + "kind": "number", + "nativeSrc": "7964:2:61", + "nodeType": "YulLiteral", + "src": "7964:2:61", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "7958:2:61", + "nodeType": "YulTypedName", + "src": "7958:2:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7986:9:61", + "nodeType": "YulIdentifier", + "src": "7986:9:61" + }, + { + "kind": "number", + "nativeSrc": "7997:2:61", + "nodeType": "YulLiteral", + "src": "7997:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7982:3:61", + "nodeType": "YulIdentifier", + "src": "7982:3:61" + }, + "nativeSrc": "7982:18:61", + "nodeType": "YulFunctionCall", + "src": "7982:18:61" + }, + { + "kind": "number", + "nativeSrc": "8002:3:61", + "nodeType": "YulLiteral", + "src": "8002:3:61", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7975:6:61", + "nodeType": "YulIdentifier", + "src": "7975:6:61" + }, + "nativeSrc": "7975:31:61", + "nodeType": "YulFunctionCall", + "src": "7975:31:61" + }, + "nativeSrc": "7975:31:61", + "nodeType": "YulExpressionStatement", + "src": "7975:31:61" + }, + { + "nativeSrc": "8015:27:61", + "nodeType": "YulVariableDeclaration", + "src": "8015:27:61", + "value": { + "arguments": [ + { + "name": "value1", + "nativeSrc": "8035:6:61", + "nodeType": "YulIdentifier", + "src": "8035:6:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "8029:5:61", + "nodeType": "YulIdentifier", + "src": "8029:5:61" + }, + "nativeSrc": "8029:13:61", + "nodeType": "YulFunctionCall", + "src": "8029:13:61" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "8019:6:61", + "nodeType": "YulTypedName", + "src": "8019:6:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8062:9:61", + "nodeType": "YulIdentifier", + "src": "8062:9:61" + }, + { + "kind": "number", + "nativeSrc": "8073:3:61", + "nodeType": "YulLiteral", + "src": "8073:3:61", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8058:3:61", + "nodeType": "YulIdentifier", + "src": "8058:3:61" + }, + "nativeSrc": "8058:19:61", + "nodeType": "YulFunctionCall", + "src": "8058:19:61" + }, + { + "name": "length", + "nativeSrc": "8079:6:61", + "nodeType": "YulIdentifier", + "src": "8079:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8051:6:61", + "nodeType": "YulIdentifier", + "src": "8051:6:61" + }, + "nativeSrc": "8051:35:61", + "nodeType": "YulFunctionCall", + "src": "8051:35:61" + }, + "nativeSrc": "8051:35:61", + "nodeType": "YulExpressionStatement", + "src": "8051:35:61" + }, + { + "nativeSrc": "8095:10:61", + "nodeType": "YulVariableDeclaration", + "src": "8095:10:61", + "value": { + "kind": "number", + "nativeSrc": "8104:1:61", + "nodeType": "YulLiteral", + "src": "8104:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "8099:1:61", + "nodeType": "YulTypedName", + "src": "8099:1:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "8164:91:61", + "nodeType": "YulBlock", + "src": "8164:91:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8193:9:61", + "nodeType": "YulIdentifier", + "src": "8193:9:61" + }, + { + "name": "i", + "nativeSrc": "8204:1:61", + "nodeType": "YulIdentifier", + "src": "8204:1:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8189:3:61", + "nodeType": "YulIdentifier", + "src": "8189:3:61" + }, + "nativeSrc": "8189:17:61", + "nodeType": "YulFunctionCall", + "src": "8189:17:61" + }, + { + "kind": "number", + "nativeSrc": "8208:3:61", + "nodeType": "YulLiteral", + "src": "8208:3:61", + "type": "", + "value": "256" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8185:3:61", + "nodeType": "YulIdentifier", + "src": "8185:3:61" + }, + "nativeSrc": "8185:27:61", + "nodeType": "YulFunctionCall", + "src": "8185:27:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "8228:6:61", + "nodeType": "YulIdentifier", + "src": "8228:6:61" + }, + { + "name": "i", + "nativeSrc": "8236:1:61", + "nodeType": "YulIdentifier", + "src": "8236:1:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8224:3:61", + "nodeType": "YulIdentifier", + "src": "8224:3:61" + }, + "nativeSrc": "8224:14:61", + "nodeType": "YulFunctionCall", + "src": "8224:14:61" + }, + { + "name": "_1", + "nativeSrc": "8240:2:61", + "nodeType": "YulIdentifier", + "src": "8240:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8220:3:61", + "nodeType": "YulIdentifier", + "src": "8220:3:61" + }, + "nativeSrc": "8220:23:61", + "nodeType": "YulFunctionCall", + "src": "8220:23:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "8214:5:61", + "nodeType": "YulIdentifier", + "src": "8214:5:61" + }, + "nativeSrc": "8214:30:61", + "nodeType": "YulFunctionCall", + "src": "8214:30:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8178:6:61", + "nodeType": "YulIdentifier", + "src": "8178:6:61" + }, + "nativeSrc": "8178:67:61", + "nodeType": "YulFunctionCall", + "src": "8178:67:61" + }, + "nativeSrc": "8178:67:61", + "nodeType": "YulExpressionStatement", + "src": "8178:67:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "8125:1:61", + "nodeType": "YulIdentifier", + "src": "8125:1:61" + }, + { + "name": "length", + "nativeSrc": "8128:6:61", + "nodeType": "YulIdentifier", + "src": "8128:6:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "8122:2:61", + "nodeType": "YulIdentifier", + "src": "8122:2:61" + }, + "nativeSrc": "8122:13:61", + "nodeType": "YulFunctionCall", + "src": "8122:13:61" + }, + "nativeSrc": "8114:141:61", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "8136:19:61", + "nodeType": "YulBlock", + "src": "8136:19:61", + "statements": [ + { + "nativeSrc": "8138:15:61", + "nodeType": "YulAssignment", + "src": "8138:15:61", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "8147:1:61", + "nodeType": "YulIdentifier", + "src": "8147:1:61" + }, + { + "name": "_1", + "nativeSrc": "8150:2:61", + "nodeType": "YulIdentifier", + "src": "8150:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8143:3:61", + "nodeType": "YulIdentifier", + "src": "8143:3:61" + }, + "nativeSrc": "8143:10:61", + "nodeType": "YulFunctionCall", + "src": "8143:10:61" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "8138:1:61", + "nodeType": "YulIdentifier", + "src": "8138:1:61" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "8118:3:61", + "nodeType": "YulBlock", + "src": "8118:3:61", + "statements": [] + }, + "src": "8114:141:61" + }, + { + "nativeSrc": "8264:13:61", + "nodeType": "YulVariableDeclaration", + "src": "8264:13:61", + "value": { + "kind": "number", + "nativeSrc": "8274:3:61", + "nodeType": "YulLiteral", + "src": "8274:3:61", + "type": "", + "value": "256" + }, + "variables": [ + { + "name": "_2", + "nativeSrc": "8268:2:61", + "nodeType": "YulTypedName", + "src": "8268:2:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8301:9:61", + "nodeType": "YulIdentifier", + "src": "8301:9:61" + }, + { + "name": "length", + "nativeSrc": "8312:6:61", + "nodeType": "YulIdentifier", + "src": "8312:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8297:3:61", + "nodeType": "YulIdentifier", + "src": "8297:3:61" + }, + "nativeSrc": "8297:22:61", + "nodeType": "YulFunctionCall", + "src": "8297:22:61" + }, + { + "name": "_2", + "nativeSrc": "8321:2:61", + "nodeType": "YulIdentifier", + "src": "8321:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8293:3:61", + "nodeType": "YulIdentifier", + "src": "8293:3:61" + }, + "nativeSrc": "8293:31:61", + "nodeType": "YulFunctionCall", + "src": "8293:31:61" + }, + { + "kind": "number", + "nativeSrc": "8326:1:61", + "nodeType": "YulLiteral", + "src": "8326:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8286:6:61", + "nodeType": "YulIdentifier", + "src": "8286:6:61" + }, + "nativeSrc": "8286:42:61", + "nodeType": "YulFunctionCall", + "src": "8286:42:61" + }, + "nativeSrc": "8286:42:61", + "nodeType": "YulExpressionStatement", + "src": "8286:42:61" + }, + { + "nativeSrc": "8337:62:61", + "nodeType": "YulAssignment", + "src": "8337:62:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8353:9:61", + "nodeType": "YulIdentifier", + "src": "8353:9:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nativeSrc": "8372:6:61", + "nodeType": "YulIdentifier", + "src": "8372:6:61" + }, + { + "kind": "number", + "nativeSrc": "8380:2:61", + "nodeType": "YulLiteral", + "src": "8380:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8368:3:61", + "nodeType": "YulIdentifier", + "src": "8368:3:61" + }, + "nativeSrc": "8368:15:61", + "nodeType": "YulFunctionCall", + "src": "8368:15:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8389:2:61", + "nodeType": "YulLiteral", + "src": "8389:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "8385:3:61", + "nodeType": "YulIdentifier", + "src": "8385:3:61" + }, + "nativeSrc": "8385:7:61", + "nodeType": "YulFunctionCall", + "src": "8385:7:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "8364:3:61", + "nodeType": "YulIdentifier", + "src": "8364:3:61" + }, + "nativeSrc": "8364:29:61", + "nodeType": "YulFunctionCall", + "src": "8364:29:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8349:3:61", + "nodeType": "YulIdentifier", + "src": "8349:3:61" + }, + "nativeSrc": "8349:45:61", + "nodeType": "YulFunctionCall", + "src": "8349:45:61" + }, + { + "name": "_2", + "nativeSrc": "8396:2:61", + "nodeType": "YulIdentifier", + "src": "8396:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8345:3:61", + "nodeType": "YulIdentifier", + "src": "8345:3:61" + }, + "nativeSrc": "8345:54:61", + "nodeType": "YulFunctionCall", + "src": "8345:54:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "8337:4:61", + "nodeType": "YulIdentifier", + "src": "8337:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8419:9:61", + "nodeType": "YulIdentifier", + "src": "8419:9:61" + }, + { + "kind": "number", + "nativeSrc": "8430:2:61", + "nodeType": "YulLiteral", + "src": "8430:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8415:3:61", + "nodeType": "YulIdentifier", + "src": "8415:3:61" + }, + "nativeSrc": "8415:18:61", + "nodeType": "YulFunctionCall", + "src": "8415:18:61" + }, + { + "name": "value2", + "nativeSrc": "8435:6:61", + "nodeType": "YulIdentifier", + "src": "8435:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8408:6:61", + "nodeType": "YulIdentifier", + "src": "8408:6:61" + }, + "nativeSrc": "8408:34:61", + "nodeType": "YulFunctionCall", + "src": "8408:34:61" + }, + "nativeSrc": "8408:34:61", + "nodeType": "YulExpressionStatement", + "src": "8408:34:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8462:9:61", + "nodeType": "YulIdentifier", + "src": "8462:9:61" + }, + { + "kind": "number", + "nativeSrc": "8473:2:61", + "nodeType": "YulLiteral", + "src": "8473:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8458:3:61", + "nodeType": "YulIdentifier", + "src": "8458:3:61" + }, + "nativeSrc": "8458:18:61", + "nodeType": "YulFunctionCall", + "src": "8458:18:61" + }, + { + "name": "value3", + "nativeSrc": "8478:6:61", + "nodeType": "YulIdentifier", + "src": "8478:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8451:6:61", + "nodeType": "YulIdentifier", + "src": "8451:6:61" + }, + "nativeSrc": "8451:34:61", + "nodeType": "YulFunctionCall", + "src": "8451:34:61" + }, + "nativeSrc": "8451:34:61", + "nodeType": "YulExpressionStatement", + "src": "8451:34:61" + }, + { + "expression": { + "arguments": [ + { + "name": "value4", + "nativeSrc": "8521:6:61", + "nodeType": "YulIdentifier", + "src": "8521:6:61" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8533:9:61", + "nodeType": "YulIdentifier", + "src": "8533:9:61" + }, + { + "kind": "number", + "nativeSrc": "8544:3:61", + "nodeType": "YulLiteral", + "src": "8544:3:61", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8529:3:61", + "nodeType": "YulIdentifier", + "src": "8529:3:61" + }, + "nativeSrc": "8529:19:61", + "nodeType": "YulFunctionCall", + "src": "8529:19:61" + } + ], + "functionName": { + "name": "abi_encode_contract_IERC20", + "nativeSrc": "8494:26:61", + "nodeType": "YulIdentifier", + "src": "8494:26:61" + }, + "nativeSrc": "8494:55:61", + "nodeType": "YulFunctionCall", + "src": "8494:55:61" + }, + "nativeSrc": "8494:55:61", + "nodeType": "YulExpressionStatement", + "src": "8494:55:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8569:9:61", + "nodeType": "YulIdentifier", + "src": "8569:9:61" + }, + { + "kind": "number", + "nativeSrc": "8580:3:61", + "nodeType": "YulLiteral", + "src": "8580:3:61", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8565:3:61", + "nodeType": "YulIdentifier", + "src": "8565:3:61" + }, + "nativeSrc": "8565:19:61", + "nodeType": "YulFunctionCall", + "src": "8565:19:61" + }, + { + "name": "value5", + "nativeSrc": "8586:6:61", + "nodeType": "YulIdentifier", + "src": "8586:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8558:6:61", + "nodeType": "YulIdentifier", + "src": "8558:6:61" + }, + "nativeSrc": "8558:35:61", + "nodeType": "YulFunctionCall", + "src": "8558:35:61" + }, + "nativeSrc": "8558:35:61", + "nodeType": "YulExpressionStatement", + "src": "8558:35:61" + }, + { + "expression": { + "arguments": [ + { + "name": "value6", + "nativeSrc": "8618:6:61", + "nodeType": "YulIdentifier", + "src": "8618:6:61" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8630:9:61", + "nodeType": "YulIdentifier", + "src": "8630:9:61" + }, + { + "kind": "number", + "nativeSrc": "8641:3:61", + "nodeType": "YulLiteral", + "src": "8641:3:61", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8626:3:61", + "nodeType": "YulIdentifier", + "src": "8626:3:61" + }, + "nativeSrc": "8626:19:61", + "nodeType": "YulFunctionCall", + "src": "8626:19:61" + } + ], + "functionName": { + "name": "abi_encode_bool", + "nativeSrc": "8602:15:61", + "nodeType": "YulIdentifier", + "src": "8602:15:61" + }, + "nativeSrc": "8602:44:61", + "nodeType": "YulFunctionCall", + "src": "8602:44:61" + }, + "nativeSrc": "8602:44:61", + "nodeType": "YulExpressionStatement", + "src": "8602:44:61" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_string_memory_ptr_t_uint256_t_uint256_t_contract$_IERC20_$4513_t_uint256_t_bool__to_t_address_t_string_memory_ptr_t_uint256_t_uint256_t_address_t_uint256_t_bool__fromStack_reversed", + "nativeSrc": "7586:1066:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "7805:9:61", + "nodeType": "YulTypedName", + "src": "7805:9:61", + "type": "" + }, + { + "name": "value6", + "nativeSrc": "7816:6:61", + "nodeType": "YulTypedName", + "src": "7816:6:61", + "type": "" + }, + { + "name": "value5", + "nativeSrc": "7824:6:61", + "nodeType": "YulTypedName", + "src": "7824:6:61", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "7832:6:61", + "nodeType": "YulTypedName", + "src": "7832:6:61", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "7840:6:61", + "nodeType": "YulTypedName", + "src": "7840:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "7848:6:61", + "nodeType": "YulTypedName", + "src": "7848:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "7856:6:61", + "nodeType": "YulTypedName", + "src": "7856:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "7864:6:61", + "nodeType": "YulTypedName", + "src": "7864:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "7875:4:61", + "nodeType": "YulTypedName", + "src": "7875:4:61", + "type": "" + } + ], + "src": "7586:1066:61" + }, + { + "body": { + "nativeSrc": "8786:145:61", + "nodeType": "YulBlock", + "src": "8786:145:61", + "statements": [ + { + "nativeSrc": "8796:26:61", + "nodeType": "YulAssignment", + "src": "8796:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8808:9:61", + "nodeType": "YulIdentifier", + "src": "8808:9:61" + }, + { + "kind": "number", + "nativeSrc": "8819:2:61", + "nodeType": "YulLiteral", + "src": "8819:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8804:3:61", + "nodeType": "YulIdentifier", + "src": "8804:3:61" + }, + "nativeSrc": "8804:18:61", + "nodeType": "YulFunctionCall", + "src": "8804:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "8796:4:61", + "nodeType": "YulIdentifier", + "src": "8796:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8838:9:61", + "nodeType": "YulIdentifier", + "src": "8838:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "8853:6:61", + "nodeType": "YulIdentifier", + "src": "8853:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8869:3:61", + "nodeType": "YulLiteral", + "src": "8869:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "8874:1:61", + "nodeType": "YulLiteral", + "src": "8874:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "8865:3:61", + "nodeType": "YulIdentifier", + "src": "8865:3:61" + }, + "nativeSrc": "8865:11:61", + "nodeType": "YulFunctionCall", + "src": "8865:11:61" + }, + { + "kind": "number", + "nativeSrc": "8878:1:61", + "nodeType": "YulLiteral", + "src": "8878:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "8861:3:61", + "nodeType": "YulIdentifier", + "src": "8861:3:61" + }, + "nativeSrc": "8861:19:61", + "nodeType": "YulFunctionCall", + "src": "8861:19:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "8849:3:61", + "nodeType": "YulIdentifier", + "src": "8849:3:61" + }, + "nativeSrc": "8849:32:61", + "nodeType": "YulFunctionCall", + "src": "8849:32:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8831:6:61", + "nodeType": "YulIdentifier", + "src": "8831:6:61" + }, + "nativeSrc": "8831:51:61", + "nodeType": "YulFunctionCall", + "src": "8831:51:61" + }, + "nativeSrc": "8831:51:61", + "nodeType": "YulExpressionStatement", + "src": "8831:51:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8902:9:61", + "nodeType": "YulIdentifier", + "src": "8902:9:61" + }, + { + "kind": "number", + "nativeSrc": "8913:2:61", + "nodeType": "YulLiteral", + "src": "8913:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8898:3:61", + "nodeType": "YulIdentifier", + "src": "8898:3:61" + }, + "nativeSrc": "8898:18:61", + "nodeType": "YulFunctionCall", + "src": "8898:18:61" + }, + { + "name": "value1", + "nativeSrc": "8918:6:61", + "nodeType": "YulIdentifier", + "src": "8918:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8891:6:61", + "nodeType": "YulIdentifier", + "src": "8891:6:61" + }, + "nativeSrc": "8891:34:61", + "nodeType": "YulFunctionCall", + "src": "8891:34:61" + }, + "nativeSrc": "8891:34:61", + "nodeType": "YulExpressionStatement", + "src": "8891:34:61" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed", + "nativeSrc": "8657:274:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "8747:9:61", + "nodeType": "YulTypedName", + "src": "8747:9:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "8758:6:61", + "nodeType": "YulTypedName", + "src": "8758:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "8766:6:61", + "nodeType": "YulTypedName", + "src": "8766:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "8777:4:61", + "nodeType": "YulTypedName", + "src": "8777:4:61", + "type": "" + } + ], + "src": "8657:274:61" + }, + { + "body": { + "nativeSrc": "9073:145:61", + "nodeType": "YulBlock", + "src": "9073:145:61", + "statements": [ + { + "nativeSrc": "9083:26:61", + "nodeType": "YulAssignment", + "src": "9083:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "9095:9:61", + "nodeType": "YulIdentifier", + "src": "9095:9:61" + }, + { + "kind": "number", + "nativeSrc": "9106:2:61", + "nodeType": "YulLiteral", + "src": "9106:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9091:3:61", + "nodeType": "YulIdentifier", + "src": "9091:3:61" + }, + "nativeSrc": "9091:18:61", + "nodeType": "YulFunctionCall", + "src": "9091:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "9083:4:61", + "nodeType": "YulIdentifier", + "src": "9083:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "9125:9:61", + "nodeType": "YulIdentifier", + "src": "9125:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "9140:6:61", + "nodeType": "YulIdentifier", + "src": "9140:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9156:3:61", + "nodeType": "YulLiteral", + "src": "9156:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "9161:1:61", + "nodeType": "YulLiteral", + "src": "9161:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "9152:3:61", + "nodeType": "YulIdentifier", + "src": "9152:3:61" + }, + "nativeSrc": "9152:11:61", + "nodeType": "YulFunctionCall", + "src": "9152:11:61" + }, + { + "kind": "number", + "nativeSrc": "9165:1:61", + "nodeType": "YulLiteral", + "src": "9165:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "9148:3:61", + "nodeType": "YulIdentifier", + "src": "9148:3:61" + }, + "nativeSrc": "9148:19:61", + "nodeType": "YulFunctionCall", + "src": "9148:19:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "9136:3:61", + "nodeType": "YulIdentifier", + "src": "9136:3:61" + }, + "nativeSrc": "9136:32:61", + "nodeType": "YulFunctionCall", + "src": "9136:32:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9118:6:61", + "nodeType": "YulIdentifier", + "src": "9118:6:61" + }, + "nativeSrc": "9118:51:61", + "nodeType": "YulFunctionCall", + "src": "9118:51:61" + }, + "nativeSrc": "9118:51:61", + "nodeType": "YulExpressionStatement", + "src": "9118:51:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "9189:9:61", + "nodeType": "YulIdentifier", + "src": "9189:9:61" + }, + { + "kind": "number", + "nativeSrc": "9200:2:61", + "nodeType": "YulLiteral", + "src": "9200:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9185:3:61", + "nodeType": "YulIdentifier", + "src": "9185:3:61" + }, + "nativeSrc": "9185:18:61", + "nodeType": "YulFunctionCall", + "src": "9185:18:61" + }, + { + "name": "value1", + "nativeSrc": "9205:6:61", + "nodeType": "YulIdentifier", + "src": "9205:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9178:6:61", + "nodeType": "YulIdentifier", + "src": "9178:6:61" + }, + "nativeSrc": "9178:34:61", + "nodeType": "YulFunctionCall", + "src": "9178:34:61" + }, + "nativeSrc": "9178:34:61", + "nodeType": "YulExpressionStatement", + "src": "9178:34:61" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_rational_0_by_1__to_t_address_t_uint256__fromStack_reversed", + "nativeSrc": "8936:282:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "9034:9:61", + "nodeType": "YulTypedName", + "src": "9034:9:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "9045:6:61", + "nodeType": "YulTypedName", + "src": "9045:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "9053:6:61", + "nodeType": "YulTypedName", + "src": "9053:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "9064:4:61", + "nodeType": "YulTypedName", + "src": "9064:4:61", + "type": "" + } + ], + "src": "8936:282:61" + }, + { + "body": { + "nativeSrc": "9324:102:61", + "nodeType": "YulBlock", + "src": "9324:102:61", + "statements": [ + { + "nativeSrc": "9334:26:61", + "nodeType": "YulAssignment", + "src": "9334:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "9346:9:61", + "nodeType": "YulIdentifier", + "src": "9346:9:61" + }, + { + "kind": "number", + "nativeSrc": "9357:2:61", + "nodeType": "YulLiteral", + "src": "9357:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9342:3:61", + "nodeType": "YulIdentifier", + "src": "9342:3:61" + }, + "nativeSrc": "9342:18:61", + "nodeType": "YulFunctionCall", + "src": "9342:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "9334:4:61", + "nodeType": "YulIdentifier", + "src": "9334:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "9376:9:61", + "nodeType": "YulIdentifier", + "src": "9376:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "9391:6:61", + "nodeType": "YulIdentifier", + "src": "9391:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9407:3:61", + "nodeType": "YulLiteral", + "src": "9407:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "9412:1:61", + "nodeType": "YulLiteral", + "src": "9412:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "9403:3:61", + "nodeType": "YulIdentifier", + "src": "9403:3:61" + }, + "nativeSrc": "9403:11:61", + "nodeType": "YulFunctionCall", + "src": "9403:11:61" + }, + { + "kind": "number", + "nativeSrc": "9416:1:61", + "nodeType": "YulLiteral", + "src": "9416:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "9399:3:61", + "nodeType": "YulIdentifier", + "src": "9399:3:61" + }, + "nativeSrc": "9399:19:61", + "nodeType": "YulFunctionCall", + "src": "9399:19:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "9387:3:61", + "nodeType": "YulIdentifier", + "src": "9387:3:61" + }, + "nativeSrc": "9387:32:61", + "nodeType": "YulFunctionCall", + "src": "9387:32:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9369:6:61", + "nodeType": "YulIdentifier", + "src": "9369:6:61" + }, + "nativeSrc": "9369:51:61", + "nodeType": "YulFunctionCall", + "src": "9369:51:61" + }, + "nativeSrc": "9369:51:61", + "nodeType": "YulExpressionStatement", + "src": "9369:51:61" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nativeSrc": "9223:203:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "9293:9:61", + "nodeType": "YulTypedName", + "src": "9293:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "9304:6:61", + "nodeType": "YulTypedName", + "src": "9304:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "9315:4:61", + "nodeType": "YulTypedName", + "src": "9315:4:61", + "type": "" + } + ], + "src": "9223:203:61" + } + ] + }, + "contents": "{\n { }\n function validator_revert_address(value)\n {\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_uint16(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, 0xffff))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint256t_uint16t_uint16(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n value1 := calldataload(add(headStart, 32))\n value2 := abi_decode_uint16(add(headStart, 64))\n value3 := abi_decode_uint16(add(headStart, 96))\n }\n function abi_decode_tuple_t_addresst_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n value1 := calldataload(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n }\n function abi_decode_contract_IERC20(offset) -> value\n {\n value := calldataload(offset)\n validator_revert_address(value)\n }\n function abi_decode_tuple_t_addresst_uint256t_uint256t_contract$_IERC20_$4513(headStart, dataEnd) -> value0, value1, value2, value3\n {\n if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n value1 := calldataload(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n let value_1 := calldataload(add(headStart, 96))\n validator_revert_address(value_1)\n value3 := value_1\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_library_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_decode_tuple_t_addresst_uint256t_uint256t_uint16t_uint16(headStart, dataEnd) -> value0, value1, value2, value3, value4\n {\n if slt(sub(dataEnd, headStart), 160) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n value1 := calldataload(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n value3 := abi_decode_uint16(add(headStart, 96))\n value4 := abi_decode_uint16(add(headStart, 128))\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n value1 := calldataload(add(headStart, 32))\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_bool(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_addresst_string_memory_ptrt_uint256t_uint256t_contract$_IERC20_$4513t_uint256t_bool(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7\n {\n if slt(sub(dataEnd, headStart), 256) { revert(0, 0) }\n let value := calldataload(headStart)\n validator_revert_address(value)\n value0 := value\n let value_1 := calldataload(add(headStart, 32))\n validator_revert_address(value_1)\n value1 := value_1\n let offset := calldataload(add(headStart, 64))\n let _1 := sub(shl(64, 1), 1)\n if gt(offset, _1) { revert(0, 0) }\n let _2 := add(headStart, offset)\n if iszero(slt(add(_2, 0x1f), dataEnd)) { revert(0, 0) }\n let _3 := calldataload(_2)\n if gt(_3, _1) { panic_error_0x41() }\n let _4 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(_3, 0x1f), _4), 63), _4))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n mstore(memPtr, _3)\n if gt(add(add(_2, _3), 32), dataEnd) { revert(0, 0) }\n calldatacopy(add(memPtr, 32), add(_2, 32), _3)\n mstore(add(add(memPtr, _3), 32), 0)\n value2 := memPtr\n value3 := calldataload(add(headStart, 96))\n value4 := calldataload(add(headStart, 128))\n value5 := abi_decode_contract_IERC20(add(headStart, 160))\n value6 := calldataload(add(headStart, 192))\n value7 := abi_decode_bool(add(headStart, 224))\n }\n function abi_encode_tuple_t_uint256_t_uint16_t_uint16__to_t_uint256_t_uint16_t_uint16__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n mstore(headStart, value0)\n let _1 := 0xffff\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), and(value2, _1))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_contract$_IERC20_$4513_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := mload(headStart)\n validator_revert_address(value)\n value0 := value\n }\n function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n }\n function abi_decode_tuple_t_uint256t_contract$_IERC20_$4513_fromMemory(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := mload(headStart)\n let value := mload(add(headStart, 32))\n validator_revert_address(value)\n value1 := value\n }\n function abi_encode_tuple_t_uint256_t_uint256_t_uint256__to_t_uint256_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n }\n function abi_encode_contract_IERC20(value, pos)\n {\n mstore(pos, and(value, sub(shl(160, 1), 1)))\n }\n function abi_encode_tuple_t_uint256_t_contract$_IERC20_$4513_t_contract$_IERC20_$4513__to_t_uint256_t_address_t_address__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n mstore(headStart, value0)\n let _1 := sub(shl(160, 1), 1)\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), and(value2, _1))\n }\n function abi_encode_tuple_t_uint256_t_uint256_t_uint16_t_uint16__to_t_uint256_t_uint256_t_uint16_t_uint16__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 128)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n let _1 := 0xffff\n mstore(add(headStart, 64), and(value2, _1))\n mstore(add(headStart, 96), and(value3, _1))\n }\n function abi_encode_bool(value, pos)\n {\n mstore(pos, iszero(iszero(value)))\n }\n function abi_encode_tuple_t_address_t_string_memory_ptr_t_uint256_t_uint256_t_contract$_IERC20_$4513_t_uint256_t_bool__to_t_address_t_string_memory_ptr_t_uint256_t_uint256_t_address_t_uint256_t_bool__fromStack_reversed(headStart, value6, value5, value4, value3, value2, value1, value0) -> tail\n {\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n let _1 := 32\n mstore(add(headStart, 32), 224)\n let length := mload(value1)\n mstore(add(headStart, 224), length)\n let i := 0\n for { } lt(i, length) { i := add(i, _1) }\n {\n mstore(add(add(headStart, i), 256), mload(add(add(value1, i), _1)))\n }\n let _2 := 256\n mstore(add(add(headStart, length), _2), 0)\n tail := add(add(headStart, and(add(length, 31), not(31))), _2)\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), value3)\n abi_encode_contract_IERC20(value4, add(headStart, 128))\n mstore(add(headStart, 160), value5)\n abi_encode_bool(value6, add(headStart, 192))\n }\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_t_address_t_rational_0_by_1__to_t_address_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n}", + "id": 61, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600436106100a35760003560e01c806307e47316146100a857806321b87f3a146100ca578063348e06dd146100ea578063793dddac1461010a5780637adf63b71461012a578063a0f07c741461014a578063b54e72d814610168578063bfb26c0614610188578063c7bffa9614610190578063e4c22569146101b0578063fd13a43e146101d0575b600080fd5b8180156100b457600080fd5b506100c86100c33660046109e7565b6101f0565b005b8180156100d657600080fd5b506100c86100e5366004610a36565b610257565b8180156100f657600080fd5b506100c8610105366004610a36565b6103f9565b81801561011657600080fd5b506100c86101253660046109e7565b61045e565b81801561013657600080fd5b506100c8610145366004610a76565b61048e565b610152600081565b60405161015f9190610ac0565b60405180910390f35b81801561017457600080fd5b506100c8610183366004610ad4565b6106d6565b610152600181565b81801561019c57600080fd5b506100c86101ab366004610b2d565b610741565b8180156101bc57600080fd5b506100c86101cb366004610b7f565b610797565b8180156101dc57600080fd5b506100c86101eb366004610ad4565b61080b565b6040516254232760e71b81526001600160a01b03851690632a1193809061021f90869086908690600401610c93565b600060405180830381600087803b15801561023957600080fd5b505af115801561024d573d6000803e3d6000fd5b5050505050505050565b6040516358c8e84960e11b8152600481018390526000906001600160a01b0385169063b191d09290602401602060405180830381865afa15801561029f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102c39190610cad565b90506001600160a01b03811661033a57604051631c54f0f760e01b81526001600160a01b03851690631c54f0f79084906103039087908390600401610cd1565b6000604051808303818588803b15801561031c57600080fd5b505af1158015610330573d6000803e3d6000fd5b50505050506103f3565b6000196001600160a01b038216016103b157604051631c54f0f760e01b81526001600160a01b03851690631c54f0f79061037a9086908690600401610cd1565b600060405180830381600087803b15801561039457600080fd5b505af11580156103a8573d6000803e3d6000fd5b505050506103f3565b6103c56001600160a01b038216858461083d565b604051631c54f0f760e01b81526001600160a01b03851690631c54f0f79061021f9086908690600401610cd1565b50505050565b6040516317ccce3160e31b81526001600160a01b0384169063be667188906104279085908590600401610cd1565b600060405180830381600087803b15801561044157600080fd5b505af1158015610455573d6000803e3d6000fd5b50505050505050565b6040516374fe60e960e01b81526001600160a01b038516906374fe60e99061021f90869086908690600401610c93565b6040516213f74f60e21b81526004810184905260009081906001600160a01b03871690624fdd3c906024016040805180830381865afa1580156104d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f99190610cdf565b91509150838214610533576040516330cb9c4160e01b81526004810186905260248101839052604481018590526064015b60405180910390fd5b826001600160a01b0316816001600160a01b03161461057f5760405163107f801560e21b8152600481018690526001600160a01b0380831660248301528416604482015260640161052a565b6001600160a01b0381166105ee576040516396591edd60e01b8152600481018690526001600160a01b038716906396591edd9084906024016000604051808303818588803b1580156105d057600080fd5b505af11580156105e4573d6000803e3d6000fd5b50505050506106ce565b6000196001600160a01b0382160161065f576040516396591edd60e01b8152600481018690526001600160a01b038716906396591edd90602401600060405180830381600087803b15801561064257600080fd5b505af1158015610656573d6000803e3d6000fd5b505050506106ce565b6106736001600160a01b038216878461083d565b6040516396591edd60e01b8152600481018690526001600160a01b038716906396591edd90602401600060405180830381600087803b1580156106b557600080fd5b505af11580156106c9573d6000803e3d6000fd5b505050505b505050505050565b60405163f7e45f0960e01b81526001600160a01b0386169063f7e45f0990610708908790879087908790600401610d0f565b600060405180830381600087803b15801561072257600080fd5b505af1158015610736573d6000803e3d6000fd5b505050505050505050565b6040516339699c9760e21b8152600481018290526001600160a01b0383169063e5a6725c90602401600060405180830381600087803b15801561078357600080fd5b505af11580156106ce573d6000803e3d6000fd5b604051636d95934160e11b81526001600160a01b0389169063db2b2682906107cf908a908a908a908a908a908a908a90600401610d31565b600060405180830381600087803b1580156107e957600080fd5b505af11580156107fd573d6000803e3d6000fd5b505050505050505050505050565b604051630e95440960e31b81526001600160a01b038616906374aa204890610708908790879087908790600401610d0f565b6000836001600160a01b031663095ea7b38484604051602401610861929190610dce565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050905061089a8482610901565b6103f3576108f784856001600160a01b031663095ea7b38660006040516024016108c5929190610dce565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050610950565b6103f38482610950565b6000806000806020600086516020880160008a5af192503d91506000519050828015610946575081156109375780600114610946565b6000866001600160a01b03163b115b9695505050505050565b600080602060008451602086016000885af180610973576040513d6000823e3d81fd5b50506000513d9150811561098b578060011415610998565b6001600160a01b0384163b155b156103f35783604051635274afe760e01b815260040161052a9190610ac0565b6001600160a01b03811681146109cd57600080fd5b50565b803561ffff811681146109e257600080fd5b919050565b600080600080608085870312156109fd57600080fd5b8435610a08816109b8565b935060208501359250610a1d604086016109d0565b9150610a2b606086016109d0565b905092959194509250565b600080600060608486031215610a4b57600080fd5b8335610a56816109b8565b95602085013595506040909401359392505050565b80356109e2816109b8565b60008060008060808587031215610a8c57600080fd5b8435610a97816109b8565b935060208501359250604085013591506060850135610ab5816109b8565b939692955090935050565b6001600160a01b0391909116815260200190565b600080600080600060a08688031215610aec57600080fd5b8535610af7816109b8565b94506020860135935060408601359250610b13606087016109d0565b9150610b21608087016109d0565b90509295509295909350565b60008060408385031215610b4057600080fd5b8235610b4b816109b8565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b803580151581146109e257600080fd5b600080600080600080600080610100898b031215610b9c57600080fd5b8835610ba7816109b8565b97506020890135610bb7816109b8565b965060408901356001600160401b0380821115610bd357600080fd5b818b0191508b601f830112610be757600080fd5b813581811115610bf957610bf9610b59565b604051601f8201601f19908116603f01168101908382118183101715610c2157610c21610b59565b816040528281528e6020848701011115610c3a57600080fd5b82602086016020830137600060208483010152809a5050505050506060890135945060808901359350610c6f60a08a01610a6b565b925060c08901359150610c8460e08a01610b6f565b90509295985092959890939650565b92835261ffff918216602084015216604082015260600190565b600060208284031215610cbf57600080fd5b8151610cca816109b8565b9392505050565b918252602082015260400190565b60008060408385031215610cf257600080fd5b825191506020830151610d04816109b8565b809150509250929050565b938452602084019290925261ffff908116604084015216606082015260800190565b60018060a01b03881681526000602060e0602084015288518060e085015260005b81811015610d6f578a810183015185820161010001528201610d52565b506101009150600082828601015281601f19601f83011685010192505050866040830152856060830152610dae60808301866001600160a01b03169052565b8360a0830152610dc260c083018415159052565b98975050505050505050565b6001600160a01b0392909216825260208201526040019056fea264697066735822122084540fefd928b98a6276d315bd50a8a3f0275ecdfc9709a3251b9e5780a0e80b64736f6c63430008180033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7E47316 EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x21B87F3A EQ PUSH2 0xCA JUMPI DUP1 PUSH4 0x348E06DD EQ PUSH2 0xEA JUMPI DUP1 PUSH4 0x793DDDAC EQ PUSH2 0x10A JUMPI DUP1 PUSH4 0x7ADF63B7 EQ PUSH2 0x12A JUMPI DUP1 PUSH4 0xA0F07C74 EQ PUSH2 0x14A JUMPI DUP1 PUSH4 0xB54E72D8 EQ PUSH2 0x168 JUMPI DUP1 PUSH4 0xBFB26C06 EQ PUSH2 0x188 JUMPI DUP1 PUSH4 0xC7BFFA96 EQ PUSH2 0x190 JUMPI DUP1 PUSH4 0xE4C22569 EQ PUSH2 0x1B0 JUMPI DUP1 PUSH4 0xFD13A43E EQ PUSH2 0x1D0 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP1 ISZERO PUSH2 0xB4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC8 PUSH2 0xC3 CALLDATASIZE PUSH1 0x4 PUSH2 0x9E7 JUMP JUMPDEST PUSH2 0x1F0 JUMP JUMPDEST STOP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0xD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC8 PUSH2 0xE5 CALLDATASIZE PUSH1 0x4 PUSH2 0xA36 JUMP JUMPDEST PUSH2 0x257 JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0xF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC8 PUSH2 0x105 CALLDATASIZE PUSH1 0x4 PUSH2 0xA36 JUMP JUMPDEST PUSH2 0x3F9 JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x116 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC8 PUSH2 0x125 CALLDATASIZE PUSH1 0x4 PUSH2 0x9E7 JUMP JUMPDEST PUSH2 0x45E JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x136 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC8 PUSH2 0x145 CALLDATASIZE PUSH1 0x4 PUSH2 0xA76 JUMP JUMPDEST PUSH2 0x48E JUMP JUMPDEST PUSH2 0x152 PUSH1 0x0 DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x15F SWAP2 SWAP1 PUSH2 0xAC0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x174 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC8 PUSH2 0x183 CALLDATASIZE PUSH1 0x4 PUSH2 0xAD4 JUMP JUMPDEST PUSH2 0x6D6 JUMP JUMPDEST PUSH2 0x152 PUSH1 0x1 DUP2 JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x19C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC8 PUSH2 0x1AB CALLDATASIZE PUSH1 0x4 PUSH2 0xB2D JUMP JUMPDEST PUSH2 0x741 JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x1BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC8 PUSH2 0x1CB CALLDATASIZE PUSH1 0x4 PUSH2 0xB7F JUMP JUMPDEST PUSH2 0x797 JUMP JUMPDEST DUP2 DUP1 ISZERO PUSH2 0x1DC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xC8 PUSH2 0x1EB CALLDATASIZE PUSH1 0x4 PUSH2 0xAD4 JUMP JUMPDEST PUSH2 0x80B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x542327 PUSH1 0xE7 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x2A119380 SWAP1 PUSH2 0x21F SWAP1 DUP7 SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0xC93 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x239 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x24D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x58C8E849 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x0 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0xB191D092 SWAP1 PUSH1 0x24 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x29F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2C3 SWAP2 SWAP1 PUSH2 0xCAD JUMP JUMPDEST SWAP1 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x33A JUMPI PUSH1 0x40 MLOAD PUSH4 0x1C54F0F7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x1C54F0F7 SWAP1 DUP5 SWAP1 PUSH2 0x303 SWAP1 DUP8 SWAP1 DUP4 SWAP1 PUSH1 0x4 ADD PUSH2 0xCD1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x31C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x330 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x3F3 JUMP JUMPDEST PUSH1 0x0 NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ADD PUSH2 0x3B1 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1C54F0F7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x1C54F0F7 SWAP1 PUSH2 0x37A SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0xCD1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x394 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x3F3 JUMP JUMPDEST PUSH2 0x3C5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP6 DUP5 PUSH2 0x83D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x1C54F0F7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x1C54F0F7 SWAP1 PUSH2 0x21F SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0xCD1 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x17CCCE31 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 PUSH4 0xBE667188 SWAP1 PUSH2 0x427 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0xCD1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x441 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x455 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x74FE60E9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP1 PUSH4 0x74FE60E9 SWAP1 PUSH2 0x21F SWAP1 DUP7 SWAP1 DUP7 SWAP1 DUP7 SWAP1 PUSH1 0x4 ADD PUSH2 0xC93 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x13F74F PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP5 SWAP1 MSTORE PUSH1 0x0 SWAP1 DUP2 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH3 0x4FDD3C SWAP1 PUSH1 0x24 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x4D5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4F9 SWAP2 SWAP1 PUSH2 0xCDF JUMP JUMPDEST SWAP2 POP SWAP2 POP DUP4 DUP3 EQ PUSH2 0x533 JUMPI PUSH1 0x40 MLOAD PUSH4 0x30CB9C41 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x64 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x57F JUMPI PUSH1 0x40 MLOAD PUSH4 0x107F8015 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP4 AND PUSH1 0x24 DUP4 ADD MSTORE DUP5 AND PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x52A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x5EE JUMPI PUSH1 0x40 MLOAD PUSH4 0x96591EDD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0x96591EDD SWAP1 DUP5 SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x5D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x5E4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH2 0x6CE JUMP JUMPDEST PUSH1 0x0 NOT PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND ADD PUSH2 0x65F JUMPI PUSH1 0x40 MLOAD PUSH4 0x96591EDD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0x96591EDD SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x642 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x656 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x6CE JUMP JUMPDEST PUSH2 0x673 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP8 DUP5 PUSH2 0x83D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x96591EDD PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP7 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP1 PUSH4 0x96591EDD SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x6B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6C9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xF7E45F09 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH4 0xF7E45F09 SWAP1 PUSH2 0x708 SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0xD0F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x722 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x736 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x39699C97 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH4 0xE5A6725C SWAP1 PUSH1 0x24 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x783 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6CE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0x6D959341 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND SWAP1 PUSH4 0xDB2B2682 SWAP1 PUSH2 0x7CF SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0xD31 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7FD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xE954409 PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND SWAP1 PUSH4 0x74AA2048 SWAP1 PUSH2 0x708 SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 DUP8 SWAP1 PUSH1 0x4 ADD PUSH2 0xD0F JUMP JUMPDEST PUSH1 0x0 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x95EA7B3 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x861 SWAP3 SWAP2 SWAP1 PUSH2 0xDCE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP SWAP1 POP PUSH2 0x89A DUP5 DUP3 PUSH2 0x901 JUMP JUMPDEST PUSH2 0x3F3 JUMPI PUSH2 0x8F7 DUP5 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x95EA7B3 DUP7 PUSH1 0x0 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x8C5 SWAP3 SWAP2 SWAP1 PUSH2 0xDCE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP2 POP PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH2 0x950 JUMP JUMPDEST PUSH2 0x3F3 DUP5 DUP3 PUSH2 0x950 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x20 PUSH1 0x0 DUP7 MLOAD PUSH1 0x20 DUP9 ADD PUSH1 0x0 DUP11 GAS CALL SWAP3 POP RETURNDATASIZE SWAP2 POP PUSH1 0x0 MLOAD SWAP1 POP DUP3 DUP1 ISZERO PUSH2 0x946 JUMPI POP DUP2 ISZERO PUSH2 0x937 JUMPI DUP1 PUSH1 0x1 EQ PUSH2 0x946 JUMP JUMPDEST PUSH1 0x0 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE GT JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x20 PUSH1 0x0 DUP5 MLOAD PUSH1 0x20 DUP7 ADD PUSH1 0x0 DUP9 GAS CALL DUP1 PUSH2 0x973 JUMPI PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE DUP2 REVERT JUMPDEST POP POP PUSH1 0x0 MLOAD RETURNDATASIZE SWAP2 POP DUP2 ISZERO PUSH2 0x98B JUMPI DUP1 PUSH1 0x1 EQ ISZERO PUSH2 0x998 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x3F3 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x5274AFE7 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x52A SWAP2 SWAP1 PUSH2 0xAC0 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x9CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0xFFFF DUP2 AND DUP2 EQ PUSH2 0x9E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x9FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0xA08 DUP2 PUSH2 0x9B8 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH2 0xA1D PUSH1 0x40 DUP7 ADD PUSH2 0x9D0 JUMP JUMPDEST SWAP2 POP PUSH2 0xA2B PUSH1 0x60 DUP7 ADD PUSH2 0x9D0 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0xA4B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 CALLDATALOAD PUSH2 0xA56 DUP2 PUSH2 0x9B8 JUMP JUMPDEST SWAP6 PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 SWAP1 SWAP5 ADD CALLDATALOAD SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH2 0x9E2 DUP2 PUSH2 0x9B8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0xA8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH2 0xA97 DUP2 PUSH2 0x9B8 JUMP JUMPDEST SWAP4 POP PUSH1 0x20 DUP6 ADD CALLDATALOAD SWAP3 POP PUSH1 0x40 DUP6 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 DUP6 ADD CALLDATALOAD PUSH2 0xAB5 DUP2 PUSH2 0x9B8 JUMP JUMPDEST SWAP4 SWAP7 SWAP3 SWAP6 POP SWAP1 SWAP4 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xAEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0xAF7 DUP2 PUSH2 0x9B8 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH2 0xB13 PUSH1 0x60 DUP8 ADD PUSH2 0x9D0 JUMP JUMPDEST SWAP2 POP PUSH2 0xB21 PUSH1 0x80 DUP8 ADD PUSH2 0x9D0 JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xB40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0xB4B DUP2 PUSH2 0x9B8 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP1 CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x9E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0xB9C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0xBA7 DUP2 PUSH2 0x9B8 JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0xBB7 DUP2 PUSH2 0x9B8 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0xBD3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP12 ADD SWAP2 POP DUP12 PUSH1 0x1F DUP4 ADD SLT PUSH2 0xBE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD DUP2 DUP2 GT ISZERO PUSH2 0xBF9 JUMPI PUSH2 0xBF9 PUSH2 0xB59 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0xC21 JUMPI PUSH2 0xC21 PUSH2 0xB59 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP15 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0xC3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP5 DUP4 ADD ADD MSTORE DUP1 SWAP11 POP POP POP POP POP POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP4 POP PUSH2 0xC6F PUSH1 0xA0 DUP11 ADD PUSH2 0xA6B JUMP JUMPDEST SWAP3 POP PUSH1 0xC0 DUP10 ADD CALLDATALOAD SWAP2 POP PUSH2 0xC84 PUSH1 0xE0 DUP11 ADD PUSH2 0xB6F JUMP JUMPDEST SWAP1 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST SWAP3 DUP4 MSTORE PUSH2 0xFFFF SWAP2 DUP3 AND PUSH1 0x20 DUP5 ADD MSTORE AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xCBF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xCCA DUP2 PUSH2 0x9B8 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xCF2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD SWAP2 POP PUSH1 0x20 DUP4 ADD MLOAD PUSH2 0xD04 DUP2 PUSH2 0x9B8 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH2 0xFFFF SWAP1 DUP2 AND PUSH1 0x40 DUP5 ADD MSTORE AND PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP9 AND DUP2 MSTORE PUSH1 0x0 PUSH1 0x20 PUSH1 0xE0 PUSH1 0x20 DUP5 ADD MSTORE DUP9 MLOAD DUP1 PUSH1 0xE0 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0xD6F JUMPI DUP11 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH2 0x100 ADD MSTORE DUP3 ADD PUSH2 0xD52 JUMP JUMPDEST POP PUSH2 0x100 SWAP2 POP PUSH1 0x0 DUP3 DUP3 DUP7 ADD ADD MSTORE DUP2 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP DUP7 PUSH1 0x40 DUP4 ADD MSTORE DUP6 PUSH1 0x60 DUP4 ADD MSTORE PUSH2 0xDAE PUSH1 0x80 DUP4 ADD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 MSTORE JUMP JUMPDEST DUP4 PUSH1 0xA0 DUP4 ADD MSTORE PUSH2 0xDC2 PUSH1 0xC0 DUP4 ADD DUP5 ISZERO ISZERO SWAP1 MSTORE JUMP JUMPDEST SWAP9 SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP5 SLOAD 0xF 0xEF 0xD9 0x28 0xB9 DUP11 PUSH3 0x76D315 0xBD POP 0xA8 LOG3 CREATE 0x27 MCOPY 0xCD 0xFC SWAP8 MULMOD LOG3 0x25 SHL SWAP15 JUMPI DUP1 LOG0 0xE8 SIGNEXTEND PUSH5 0x736F6C6343 STOP ADDMOD XOR STOP CALLER ", + "sourceMap": "584:9105:52:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7252:210;;;;;;;;;;-1:-1:-1;7252:210:52;;;;;:::i;:::-;;:::i;:::-;;8495:1192;;;;;;;;;;-1:-1:-1;8495:1192:52;;;;;:::i;:::-;;:::i;6191:184::-;;;;;;;;;;-1:-1:-1;6191:184:52;;;;;:::i;:::-;;:::i;7840:282::-;;;;;;;;;;-1:-1:-1;7840:282:52;;;;;:::i;:::-;;:::i;3096:1549::-;;;;;;;;;;-1:-1:-1;3096:1549:52;;;;;:::i;:::-;;:::i;955:51::-;;1004:1;955:51;;;;;;;;;:::i;:::-;;;;;;;;5493:400;;;;;;;;;;-1:-1:-1;5493:400:52;;;;;:::i;:::-;;:::i;1145:53::-;;1196:1;1145:53;;4820:142;;;;;;;;;;-1:-1:-1;4820:142:52;;;;;:::i;:::-;;:::i;2334:541::-;;;;;;;;;;-1:-1:-1;2334:541:52;;;;;:::i;:::-;;:::i;6592:318::-;;;;;;;;;;-1:-1:-1;6592:318:52;;;;;:::i;:::-;;:::i;7252:210::-;7375:80;;-1:-1:-1;;;7375:80:52;;-1:-1:-1;;;;;7375:48:52;;;;;:80;;7424:7;;7433:6;;7441:13;;7375:80;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7252:210;;;;:::o;8495:1192::-;8625:63;;-1:-1:-1;;;8625:63:52;;;;;5312:25:61;;;8603:19:52;;-1:-1:-1;;;;;8625:54:52;;;;;5285:18:61;;8625:63:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8603:85;-1:-1:-1;;;;;;8765:39:52;;8761:920;;8979:94;;-1:-1:-1;;;8979:94:52;;-1:-1:-1;;;;;8979:48:52;;;;;9036:12;;8979:94;;9051:7;;9036:12;;8979:94;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8761:920;;;-1:-1:-1;;;;;;;9094:41:52;;;9090:591;;9214:71;;-1:-1:-1;;;9214:71:52;;-1:-1:-1;;;;;9214:48:52;;;;;:71;;9263:7;;9272:12;;9214:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9090:591;;;9492:53;-1:-1:-1;;;;;9492:25:52;;9518:12;9532;9492:25;:53::i;:::-;9599:71;;-1:-1:-1;;;9599:71:52;;-1:-1:-1;;;;;9599:48:52;;;;;:71;;9648:7;;9657:12;;9599:71;;;:::i;9090:591::-;8593:1094;8495:1192;;;:::o;6191:184::-;6299:69;;-1:-1:-1;;;6299:69:52;;-1:-1:-1;;;;;6299:46:52;;;;;:69;;6346:7;;6355:12;;6299:69;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6191:184;;;:::o;7840:282::-;8019:96;;-1:-1:-1;;;8019:96:52;;-1:-1:-1;;;;;8019:46:52;;;;;:96;;8066:7;;8075:15;;8092:22;;8019:96;;;:::i;3096:1549::-;3363:56;;-1:-1:-1;;;3363:56:52;;;;;5312:25:61;;;3325:13:52;;;;-1:-1:-1;;;;;3363:47:52;;;;;5285:18:61;;3363:56:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3324:95;;;;3484:13;3475:5;:22;3471:106;;3520:46;;-1:-1:-1;;;3520:46:52;;;;;6406:25:61;;;6447:18;;;6440:34;;;6490:18;;;6483:34;;;6379:18;;3520:46:52;;;;;;;;3471:106;3673:20;-1:-1:-1;;;;;3640:54:52;3648:12;-1:-1:-1;;;;;3640:54:52;;3636:159;;3717:67;;-1:-1:-1;;;3717:67:52;;;;;6877:25:61;;;-1:-1:-1;;;;;6976:15:61;;;6956:18;;;6949:43;7028:15;;7008:18;;;7001:43;6850:18;;3717:67:52;6645:405:61;3636:159:52;-1:-1:-1;;;;;3809:39:52;;3805:834;;4011:69;;-1:-1:-1;;;4011:69:52;;;;;5312:25:61;;;-1:-1:-1;;;;;4011:44:52;;;;;4064:5;;5285:18:61;;4011:69:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3805:834;;;-1:-1:-1;;;;;;;4101:41:52;;;4097:542;;4221:53;;-1:-1:-1;;;4221:53:52;;;;;5312:25:61;;;-1:-1:-1;;;;;4221:44:52;;;;;5285:18:61;;4221:53:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4097:542;;;4485:46;-1:-1:-1;;;;;4485:25:52;;4511:12;4525:5;4485:25;:46::i;:::-;4575:53;;-1:-1:-1;;;4575:53:52;;;;;5312:25:61;;;-1:-1:-1;;;;;4575:44:52;;;;;5285:18:61;;4575:53:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4097:542;3257:1388;;3096:1549;;;;:::o;5493:400::-;5710:176;;-1:-1:-1;;;5710:176:52;;-1:-1:-1;;;;;5710:48:52;;;;;:176;;5772:7;;5793:12;;5819:18;;5851:25;;5710:176;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5493:400;;;;;:::o;4820:142::-;4902:53;;-1:-1:-1;;;4902:53:52;;;;;5312:25:61;;;-1:-1:-1;;;;;4902:44:52;;;;;5285:18:61;;4902:53:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2334:541;2625:243;;-1:-1:-1;;;2625:243:52;;-1:-1:-1;;;;;2625:51:52;;;;;:243;;2690:11;;2715:3;;2732:19;;2765:5;;2784:12;;2810:23;;2847:11;;2625:243;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2334:541;;;;;;;;:::o;6592:318::-;6796:107;;-1:-1:-1;;;6796:107:52;;-1:-1:-1;;;;;6796:47:52;;;;;:107;;6844:7;;6853:12;;6867:13;;6882:20;;6796:107;;;:::i;4452:380:28:-;4539:25;4582:5;-1:-1:-1;;;;;4582:13:28;;4598:7;4607:5;4567:47;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4567:47:28;;;;;;;;;;;4539:75;;4630:44;4654:5;4661:12;4630:23;:44::i;:::-;4625:201;;4690:71;4710:5;4732;-1:-1:-1;;;;;4732:13:28;;4748:7;4757:1;4717:43;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4717:43:28;;;;;;;;;;;4690:19;:71::i;:::-;4775:40;4795:5;4802:12;4775:19;:40::i;8960:480::-;9043:4;9059:12;9081:18;9109:19;9243:4;9240:1;9233:4;9227:11;9220:4;9214;9210:15;9207:1;9200:5;9193;9188:60;9177:71;;9275:16;9261:30;;9325:1;9319:8;9304:23;;9353:7;:80;;;;-1:-1:-1;9365:15:28;;:67;;9416:11;9431:1;9416:16;9365:67;;;9412:1;9391:5;-1:-1:-1;;;;;9383:26:28;;:30;9365:67;9346:87;8960:480;-1:-1:-1;;;;;;8960:480:28:o;7738:720::-;7818:18;7846:19;7984:4;7981:1;7974:4;7968:11;7961:4;7955;7951:15;7948:1;7941:5;7934;7929:60;8041:7;8031:176;;8085:4;8079:11;8130:16;8127:1;8122:3;8107:40;8176:16;8171:3;8164:29;8031:176;-1:-1:-1;;8284:1:28;8278:8;8234:16;;-1:-1:-1;8310:15:28;;:68;;8362:11;8377:1;8362:16;;8310:68;;;-1:-1:-1;;;;;8328:26:28;;;:31;8310:68;8306:146;;;8434:5;8401:40;;-1:-1:-1;;;8401:40:28;;;;;;;;:::i;14:131:61:-;-1:-1:-1;;;;;89:31:61;;79:42;;69:70;;135:1;132;125:12;69:70;14:131;:::o;150:159::-;217:20;;277:6;266:18;;256:29;;246:57;;299:1;296;289:12;246:57;150:159;;;:::o;314:460::-;398:6;406;414;422;475:3;463:9;454:7;450:23;446:33;443:53;;;492:1;489;482:12;443:53;531:9;518:23;550:31;575:5;550:31;:::i;:::-;600:5;-1:-1:-1;652:2:61;637:18;;624:32;;-1:-1:-1;675:37:61;708:2;693:18;;675:37;:::i;:::-;665:47;;731:37;764:2;753:9;749:18;731:37;:::i;:::-;721:47;;314:460;;;;;;;:::o;779:383::-;856:6;864;872;925:2;913:9;904:7;900:23;896:32;893:52;;;941:1;938;931:12;893:52;980:9;967:23;999:31;1024:5;999:31;:::i;:::-;1049:5;1101:2;1086:18;;1073:32;;-1:-1:-1;1152:2:61;1137:18;;;1124:32;;779:383;-1:-1:-1;;;779:383:61:o;1167:142::-;1243:20;;1272:31;1243:20;1272:31;:::i;1314:540::-;1415:6;1423;1431;1439;1492:3;1480:9;1471:7;1467:23;1463:33;1460:53;;;1509:1;1506;1499:12;1460:53;1548:9;1535:23;1567:31;1592:5;1567:31;:::i;:::-;1617:5;-1:-1:-1;1669:2:61;1654:18;;1641:32;;-1:-1:-1;1720:2:61;1705:18;;1692:32;;-1:-1:-1;1776:2:61;1761:18;;1748:32;1789:33;1748:32;1789:33;:::i;:::-;1314:540;;;;-1:-1:-1;1314:540:61;;-1:-1:-1;;1314:540:61:o;1859:211::-;-1:-1:-1;;;;;2031:32:61;;;;2013:51;;2001:2;1986:18;;1859:211::o;2075:529::-;2168:6;2176;2184;2192;2200;2253:3;2241:9;2232:7;2228:23;2224:33;2221:53;;;2270:1;2267;2260:12;2221:53;2309:9;2296:23;2328:31;2353:5;2328:31;:::i;:::-;2378:5;-1:-1:-1;2430:2:61;2415:18;;2402:32;;-1:-1:-1;2481:2:61;2466:18;;2453:32;;-1:-1:-1;2504:37:61;2537:2;2522:18;;2504:37;:::i;:::-;2494:47;;2560:38;2593:3;2582:9;2578:19;2560:38;:::i;:::-;2550:48;;2075:529;;;;;;;;:::o;2609:315::-;2677:6;2685;2738:2;2726:9;2717:7;2713:23;2709:32;2706:52;;;2754:1;2751;2744:12;2706:52;2793:9;2780:23;2812:31;2837:5;2812:31;:::i;:::-;2862:5;2914:2;2899:18;;;;2886:32;;-1:-1:-1;;;2609:315:61:o;2929:127::-;2990:10;2985:3;2981:20;2978:1;2971:31;3021:4;3018:1;3011:15;3045:4;3042:1;3035:15;3061:160;3126:20;;3182:13;;3175:21;3165:32;;3155:60;;3211:1;3208;3201:12;3226:1572;3370:6;3378;3386;3394;3402;3410;3418;3426;3479:3;3467:9;3458:7;3454:23;3450:33;3447:53;;;3496:1;3493;3486:12;3447:53;3535:9;3522:23;3554:31;3579:5;3554:31;:::i;:::-;3604:5;-1:-1:-1;3661:2:61;3646:18;;3633:32;3674:33;3633:32;3674:33;:::i;:::-;3726:7;-1:-1:-1;3784:2:61;3769:18;;3756:32;-1:-1:-1;;;;;3837:14:61;;;3834:34;;;3864:1;3861;3854:12;3834:34;3902:6;3891:9;3887:22;3877:32;;3947:7;3940:4;3936:2;3932:13;3928:27;3918:55;;3969:1;3966;3959:12;3918:55;4005:2;3992:16;4027:2;4023;4020:10;4017:36;;;4033:18;;:::i;:::-;4108:2;4102:9;4076:2;4162:13;;-1:-1:-1;;4158:22:61;;;4182:2;4154:31;4150:40;4138:53;;;4206:18;;;4226:22;;;4203:46;4200:72;;;4252:18;;:::i;:::-;4292:10;4288:2;4281:22;4327:2;4319:6;4312:18;4367:7;4362:2;4357;4353;4349:11;4345:20;4342:33;4339:53;;;4388:1;4385;4378:12;4339:53;4444:2;4439;4435;4431:11;4426:2;4418:6;4414:15;4401:46;4489:1;4484:2;4479;4471:6;4467:15;4463:24;4456:35;4510:6;4500:16;;;;;;;4563:2;4552:9;4548:18;4535:32;4525:42;;4614:3;4603:9;4599:19;4586:33;4576:43;;4638:47;4680:3;4669:9;4665:19;4638:47;:::i;:::-;4628:57;;4732:3;4721:9;4717:19;4704:33;4694:43;;4756:36;4787:3;4776:9;4772:19;4756:36;:::i;:::-;4746:46;;3226:1572;;;;;;;;;;;:::o;4803:358::-;5001:25;;;5045:6;5087:15;;;5082:2;5067:18;;5060:43;5139:15;5134:2;5119:18;;5112:43;4989:2;4974:18;;4803:358::o;5348:266::-;5433:6;5486:2;5474:9;5465:7;5461:23;5457:32;5454:52;;;5502:1;5499;5492:12;5454:52;5534:9;5528:16;5553:31;5578:5;5553:31;:::i;:::-;5603:5;5348:266;-1:-1:-1;;;5348:266:61:o;5619:248::-;5793:25;;;5849:2;5834:18;;5827:34;5781:2;5766:18;;5619:248::o;5872:327::-;5966:6;5974;6027:2;6015:9;6006:7;6002:23;5998:32;5995:52;;;6043:1;6040;6033:12;5995:52;6072:9;6066:16;6056:26;;6125:2;6114:9;6110:18;6104:25;6138:31;6163:5;6138:31;:::i;:::-;6188:5;6178:15;;;5872:327;;;;;:::o;7055:430::-;7282:25;;;7338:2;7323:18;;7316:34;;;;7369:6;7411:15;;;7406:2;7391:18;;7384:43;7463:15;7458:2;7443:18;;7436:43;7269:3;7254:19;;7055:430::o;7586:1066::-;7941:1;7937;7932:3;7928:11;7924:19;7916:6;7912:32;7901:9;7894:51;7875:4;7964:2;8002:3;7997:2;7986:9;7982:18;7975:31;8035:6;8029:13;8079:6;8073:3;8062:9;8058:19;8051:35;8104:1;8114:141;8128:6;8125:1;8122:13;8114:141;;;8224:14;;;8220:23;;8214:30;8189:17;;;8208:3;8185:27;8178:67;8143:10;;8114:141;;;8118:3;8274;8264:13;;8326:1;8321:2;8312:6;8301:9;8297:22;8293:31;8286:42;8396:2;8389;8385:7;8380:2;8372:6;8368:15;8364:29;8353:9;8349:45;8345:54;8337:62;;;;8435:6;8430:2;8419:9;8415:18;8408:34;8478:6;8473:2;8462:9;8458:18;8451:34;8494:55;8544:3;8533:9;8529:19;8521:6;-1:-1:-1;;;;;6602:31:61;6590:44;;6528:112;8494:55;8586:6;8580:3;8569:9;8565:19;8558:35;8602:44;8641:3;8630:9;8626:19;8618:6;7560:13;7553:21;7541:34;;7490:91;8602:44;7586:1066;;;;;;;;;;:::o;8657:274::-;-1:-1:-1;;;;;8849:32:61;;;;8831:51;;8913:2;8898:18;;8891:34;8819:2;8804:18;;8657:274::o" + }, + "methodIdentifiers": { + "NATIVE_PAYMENT()": "a0f07c74", + "OFFCHAIN_PAYMENT()": "bfb26c06", + "acceptCancellation(address,uint256,uint256)": "348e06dd", + "buyBookingToken(address,uint256,uint256,IERC20)": "7adf63b7", + "counterCancellation(address,uint256,uint256,uint16,uint16)": "fd13a43e", + "finalizeCancellation(address,uint256,uint256)": "21b87f3a", + "initiateCancellation(address,uint256,uint256,uint16,uint16)": "b54e72d8", + "mintBookingToken(address,address,string,uint256,uint256,IERC20,uint256,bool)": "e4c22569", + "recordExpiration(address,uint256)": "c7bffa96", + "rejectCancellation(address,uint256,uint16,uint16)": "793dddac", + "withdrawCancellation(address,uint256,uint16,uint16)": "07e47316" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SafeERC20FailedOperation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC20\",\"name\":\"actualPaymentToken\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"expectedPaymentToken\",\"type\":\"address\"}],\"name\":\"UnexpectedPaymentToken\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actualPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expectedPrice\",\"type\":\"uint256\"}],\"name\":\"UnexpectedPrice\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NATIVE_PAYMENT\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OFFCHAIN_PAYMENT\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"SafeERC20FailedOperation(address)\":[{\"details\":\"An operation with an ERC-20 token failed.\"}]},\"kind\":\"dev\",\"methods\":{\"acceptCancellation(address,uint256,uint256)\":{\"params\":{\"refundAmount\":\"The refund amount to check, this is to prevent front-running attacks\",\"tokenId\":\"The token id to accept the cancellation for\"}},\"buyBookingToken(address,uint256,uint256,IERC20)\":{\"details\":\"Buys a booking token with the specified price and payment token in the reservation.\",\"params\":{\"bookingToken\":\"booking token contract address\",\"tokenId\":\"token id\"}},\"counterCancellation(address,uint256,uint256,uint16,uint16)\":{\"params\":{\"bookingToken\":\"booking token contract address\",\"refundAmount\":\"proposed refund amount\",\"tokenId\":\"token id\"}},\"finalizeCancellation(address,uint256,uint256)\":{\"params\":{\"bookingToken\":\"BookingToken contract address\",\"refundAmount\":\"The refund amount to check, this is to prevent front-running attacks\",\"tokenId\":\"The token id for which to finalize the proposal\"}},\"initiateCancellation(address,uint256,uint256,uint16,uint16)\":{\"params\":{\"bookingToken\":\"booking token contract address\",\"cancellationReason\":\"cancellation reason\",\"cancellationReasonVersion\":\"cancellation reason version\",\"refundAmount\":\"proposed refund amount\",\"tokenId\":\"token id\"}},\"mintBookingToken(address,address,string,uint256,uint256,IERC20,uint256,bool)\":{\"details\":\"Mints a booking token with offchain payment currency and cancellable support.\",\"params\":{\"bookingToken\":\"booking token contract address\",\"cancellable\":\"cancellable flag\",\"expirationTimestamp\":\"expiration timestamp of the token in seconds\",\"offchainPaymentCurrency\":\"payment token address\",\"paymentToken\":\"payment token address\",\"price\":\"price of the token\",\"reservedFor\":\"address of the CM Account that can buy the token (generally the distributor)\",\"uri\":\"URI of the token\"}},\"recordExpiration(address,uint256)\":{\"params\":{\"bookingToken\":\"booking token contract address\",\"tokenId\":\"token id\"}},\"rejectCancellation(address,uint256,uint16,uint16)\":{\"params\":{\"bookingToken\":\"booking token contract address\",\"rejectionReason\":\"The reason for rejecting the cancellation\",\"rejectionReasonVersion\":\"Version of the rejection reason enum from the CMP\",\"tokenId\":\"The token id to reject the cancellation for\"}},\"withdrawCancellation(address,uint256,uint16,uint16)\":{\"params\":{\"bookingToken\":\"booking token contract address\",\"reason\":\"The reason for withdrawing the proposal\",\"reasonVersion\":\"The version of the withdrawal reason from the CMP\",\"tokenId\":\"token id for which to withdraw the proposal\"}}},\"stateVariables\":{\"NATIVE_PAYMENT\":{\"details\":\"Special address for native payments.\"},\"OFFCHAIN_PAYMENT\":{\"details\":\"Special address for offchain payments.\"}},\"title\":\"BookingTokenOperator\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"NATIVE_PAYMENT()\":{\"notice\":\"Tokens are directly transferred to the recipient.\"},\"OFFCHAIN_PAYMENT()\":{\"notice\":\"A third-party service is used to handle payments.\"},\"acceptCancellation(address,uint256,uint256)\":{\"notice\":\"Sets accepted by the owner or supplier flag for a cancellation proposal for a bought token.\"},\"counterCancellation(address,uint256,uint256,uint16,uint16)\":{\"notice\":\"Counters a cancellation proposal.\"},\"finalizeCancellation(address,uint256,uint256)\":{\"notice\":\"Finalizes a cancellation proposal by transferring the refund amount to the Booking Token contract.\"},\"initiateCancellation(address,uint256,uint256,uint16,uint16)\":{\"notice\":\"Initiates a cancellation proposal for a bought token.\"},\"recordExpiration(address,uint256)\":{\"notice\":\"Record the expiration of a booking token.\"},\"rejectCancellation(address,uint256,uint16,uint16)\":{\"notice\":\"Reject a cancellation proposal for a bought token.\"},\"withdrawCancellation(address,uint256,uint16,uint16)\":{\"notice\":\"Withdraws a cancellation proposal.\"}},\"notice\":\"Booking token operator contract is used by the {CMAccount} contract to mint and buy booking tokens. We made this a library so that we can use it in the {CMAccount} contract without increasing the size of the contract.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/booking-token/BookingTokenOperator.sol\":\"BookingTokenOperator\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"@openzeppelin/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xca2ae13e0610f6a99238dd00b97bd786bc92732dae6d6b9d61f573ec51018310\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://75f8c71ce0c91c40dd5f249ace0b7d8270f8f1767231bcf71490f7157d6ba862\",\"dweb:/ipfs/QmYXgxeDyFHvz3JsXxLEYN6GNUR44ThHeFj5XkpkgMoG4w\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"contracts/booking-token/BookingTokenCancellable.sol\":{\"keccak256\":\"0x1c5c5af99af0d9886e63c9c4ae366d7b54d7d578b9341416b225b97b7651f24a\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://bda88975353ed62c73e6cb71caab10ea79d60a23793dfc7540427156998157ff\",\"dweb:/ipfs/QmRuosqXwx64TRUk2yzyNb3m4hneMnV4faDP2wGW6PBhra\"]},\"contracts/booking-token/BookingTokenOperator.sol\":{\"keccak256\":\"0x44a2b11be1e1fed55921a26abc9de52e436a7b42803220df6557ef0aa66223e5\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://5ab172b26e956d873b7e96f7461fed43b0c01b0477151b4d7e00dd0176711fef\",\"dweb:/ipfs/QmUpaRuqNawGJXFx85ekqrqUgee4Z9uxnqtuA4qVTmtfvz\"]},\"contracts/booking-token/IBookingToken.sol\":{\"keccak256\":\"0x3a132b732b1c4f1be41728eb2c8ddb8c6a94657889ae153df541bbb5da7000a6\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://25de3108abb0700111147fb4b4da1effad4a0917883df7c6ea14cd1a1aac5674\",\"dweb:/ipfs/QmWXJRG6WDmJ8Ch36njGNTZt5UQdo6KfxvwiJorCXukVmX\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "contracts/booking-token/IBookingToken.sol": { + "IBookingToken": { + "abi": [ + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "refundAmount", + "type": "uint256" + } + ], + "name": "acceptCancellation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "buyReservedToken", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "refundAmount", + "type": "uint256" + }, + { + "internalType": "uint16", + "name": "counterReason", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "counterReasonVersion", + "type": "uint16" + } + ], + "name": "counterCancellation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "refundAmount", + "type": "uint256" + } + ], + "name": "finalizeCancellation", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getReservationPaymentToken", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "paymentToken", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getReservationPrice", + "outputs": [ + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + }, + { + "internalType": "contract IERC20", + "name": "paymentToken", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "refundAmount", + "type": "uint256" + }, + { + "internalType": "uint16", + "name": "cancellationReason", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "cancellationReasonVersion", + "type": "uint16" + } + ], + "name": "initiateCancellation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "recordExpiration", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint16", + "name": "rejectionReason", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "rejectionReasonVersion", + "type": "uint16" + } + ], + "name": "rejectCancellation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "reservedFor", + "type": "address" + }, + { + "internalType": "string", + "name": "uri", + "type": "string" + }, + { + "internalType": "uint256", + "name": "expirationTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + }, + { + "internalType": "contract IERC20", + "name": "paymentToken", + "type": "address" + }, + { + "internalType": "uint256", + "name": "offchainPaymentCurrency", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "isCancellable", + "type": "bool" + } + ], + "name": "safeMintWithReservation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "uint16", + "name": "withdrawalReason", + "type": "uint16" + }, + { + "internalType": "uint16", + "name": "withdrawalReasonVersion", + "type": "uint16" + } + ], + "name": "withdrawCancellation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "acceptCancellation(uint256,uint256)": "be667188", + "buyReservedToken(uint256)": "96591edd", + "counterCancellation(uint256,uint256,uint16,uint16)": "74aa2048", + "finalizeCancellation(uint256,uint256)": "1c54f0f7", + "getReservationPaymentToken(uint256)": "b191d092", + "getReservationPrice(uint256)": "004fdd3c", + "initiateCancellation(uint256,uint256,uint16,uint16)": "f7e45f09", + "recordExpiration(uint256)": "e5a6725c", + "rejectCancellation(uint256,uint16,uint16)": "74fe60e9", + "safeMintWithReservation(address,string,uint256,uint256,address,uint256,bool)": "db2b2682", + "withdrawCancellation(uint256,uint16,uint16)": "2a119380" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"refundAmount\",\"type\":\"uint256\"}],\"name\":\"acceptCancellation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"buyReservedToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"refundAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"counterReason\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"counterReasonVersion\",\"type\":\"uint16\"}],\"name\":\"counterCancellation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"refundAmount\",\"type\":\"uint256\"}],\"name\":\"finalizeCancellation\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getReservationPaymentToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"paymentToken\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getReservationPrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC20\",\"name\":\"paymentToken\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"refundAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"cancellationReason\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"cancellationReasonVersion\",\"type\":\"uint16\"}],\"name\":\"initiateCancellation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"recordExpiration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"rejectionReason\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"rejectionReasonVersion\",\"type\":\"uint16\"}],\"name\":\"rejectCancellation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"reservedFor\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"uri\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"expirationTimestamp\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"},{\"internalType\":\"contract IERC20\",\"name\":\"paymentToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"offchainPaymentCurrency\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isCancellable\",\"type\":\"bool\"}],\"name\":\"safeMintWithReservation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint16\",\"name\":\"withdrawalReason\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"withdrawalReasonVersion\",\"type\":\"uint16\"}],\"name\":\"withdrawCancellation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"acceptCancellation(uint256,uint256)\":{\"params\":{\"refundAmount\":\"The refund amount to check, this is to prevent front-running attacks\",\"tokenId\":\"The token id to accept the cancellation for\"}},\"counterCancellation(uint256,uint256,uint16,uint16)\":{\"params\":{\"counterReason\":\"The reason for the counter\",\"counterReasonVersion\":\"The version of the counter reason\",\"refundAmount\":\"The refund amount to check, this is to prevent front-running attacks\",\"tokenId\":\"The token id to counter the cancellation for\"}},\"finalizeCancellation(uint256,uint256)\":{\"params\":{\"refundAmount\":\"The refund amount to check, this is to prevent front-running attacks\",\"tokenId\":\"The token id for which to finalize the proposal\"}},\"initiateCancellation(uint256,uint256,uint16,uint16)\":{\"params\":{\"cancellationReason\":\"The reason for cancellation\",\"cancellationReasonVersion\":\"The version of the cancellation reason\",\"refundAmount\":\"The proposed refund amount in wei\",\"tokenId\":\"The token id to initiate the cancellation for\"}},\"recordExpiration(uint256)\":{\"params\":{\"tokenId\":\"The token id to record as expired\"}},\"rejectCancellation(uint256,uint16,uint16)\":{\"params\":{\"rejectionReason\":\"The reason for rejection\",\"rejectionReasonVersion\":\"The version of the rejection reason\",\"tokenId\":\"The token id to reject the cancellation for\"}},\"withdrawCancellation(uint256,uint16,uint16)\":{\"params\":{\"tokenId\":\"The token id for which to withdraw the proposal\",\"withdrawalReason\":\"The reason for withdrawing the proposal\",\"withdrawalReasonVersion\":\"The version of the withdrawal reason\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"acceptCancellation(uint256,uint256)\":{\"notice\":\"Sets accepted by the owner or supplier flag for a cancellation proposal for a bought token.\"},\"counterCancellation(uint256,uint256,uint16,uint16)\":{\"notice\":\"Counters a cancellation proposal with a new proposal.\"},\"finalizeCancellation(uint256,uint256)\":{\"notice\":\"Finalizes a cancellation proposal. Only the supplier of the token can finalize.\"},\"initiateCancellation(uint256,uint256,uint16,uint16)\":{\"notice\":\"Initiates a cancellation for a bought token.\"},\"recordExpiration(uint256)\":{\"notice\":\"Record expiration status if the token is expired\"},\"rejectCancellation(uint256,uint16,uint16)\":{\"notice\":\"Reject a cancellation proposal for a bought token.\"},\"withdrawCancellation(uint256,uint16,uint16)\":{\"notice\":\"Withdraws an active cancellation proposal. Only the current proposer of the proposal can withdraw.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/booking-token/IBookingToken.sol\":\"IBookingToken\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"contracts/booking-token/IBookingToken.sol\":{\"keccak256\":\"0x3a132b732b1c4f1be41728eb2c8ddb8c6a94657889ae153df541bbb5da7000a6\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://25de3108abb0700111147fb4b4da1effad4a0917883df7c6ea14cd1a1aac5674\",\"dweb:/ipfs/QmWXJRG6WDmJ8Ch36njGNTZt5UQdo6KfxvwiJorCXukVmX\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "contracts/manager/CMAccountManager.sol": { + "CMAccountManager": { + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + } + ], + "name": "AddressEmptyCode", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "admin", + "type": "address" + } + ], + "name": "CMAccountInvalidAdmin", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "CMAccountInvalidImplementation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "ERC1967InvalidImplementation", + "type": "error" + }, + { + "inputs": [], + "name": "ERC1967NonPayable", + "type": "error" + }, + { + "inputs": [], + "name": "EnforcedPause", + "type": "error" + }, + { + "inputs": [], + "name": "ExpectedPause", + "type": "error" + }, + { + "inputs": [], + "name": "FailedCall", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "sended", + "type": "uint256" + } + ], + "name": "IncorrectPrefundAmount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "bookingToken", + "type": "address" + } + ], + "name": "InvalidBookingTokenAddress", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "developerWallet", + "type": "address" + } + ], + "name": "InvalidDeveloperWallet", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "inputs": [], + "name": "ReentrancyGuardReentrantCall", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "ServiceAlreadyRegistered", + "type": "error" + }, + { + "inputs": [], + "name": "ServiceNotRegistered", + "type": "error" + }, + { + "inputs": [], + "name": "UUPSUnauthorizedCallContext", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "slot", + "type": "bytes32" + } + ], + "name": "UUPSUnsupportedProxiableUUID", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldBookingToken", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newBookingToken", + "type": "address" + } + ], + "name": "BookingTokenAddressUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "CMAccountCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldImplementation", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "CMAccountImplementationUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldDeveloperFeeBp", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newDeveloperFeeBp", + "type": "uint256" + } + ], + "name": "DeveloperFeeBpUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldDeveloperWallet", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newDeveloperWallet", + "type": "address" + } + ], + "name": "DeveloperWalletUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceRegistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceUnregistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "inputs": [], + "name": "CMACCOUNT_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEVELOPER_WALLET_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "FEE_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PAUSER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PREFUND_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SERVICE_REGISTRY_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UPGRADER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UPGRADE_INTERFACE_VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "VERSIONER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "admin", + "type": "address" + }, + { + "internalType": "address", + "name": "upgrader", + "type": "address" + } + ], + "name": "createCMAccount", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "getAccountImplementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getAllRegisteredServiceHashes", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "services", + "type": "bytes32[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getAllRegisteredServiceNames", + "outputs": [ + { + "internalType": "string[]", + "name": "services", + "type": "string[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getBookingTokenAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getCMAccountCreator", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getDeveloperFeeBp", + "outputs": [ + { + "internalType": "uint256", + "name": "developerFeeBp", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getDeveloperWallet", + "outputs": [ + { + "internalType": "address", + "name": "developerWallet", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPrefundAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "getRegisteredServiceHashByName", + "outputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "getRegisteredServiceNameByHash", + "outputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoleMember", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMemberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMembers", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "defaultAdmin", + "type": "address" + }, + { + "internalType": "address", + "name": "pauser", + "type": "address" + }, + { + "internalType": "address", + "name": "upgrader", + "type": "address" + }, + { + "internalType": "address", + "name": "versioner", + "type": "address" + }, + { + "internalType": "address", + "name": "developerWallet", + "type": "address" + }, + { + "internalType": "uint256", + "name": "developerFeeBp", + "type": "uint256" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isCMAccount", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "registerService", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "callerConfirmation", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "setAccountImplementation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "setBookingTokenAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "bp", + "type": "uint256" + } + ], + "name": "setDeveloperFeeBp", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "developerWallet", + "type": "address" + } + ], + "name": "setDeveloperWallet", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "newPrefundAmount", + "type": "uint256" + } + ], + "name": "setPrefundAmount", + "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": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "unregisterService", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": { + "@_16219": { + "entryPoint": null, + "id": 16219, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_disableInitializers_808": { + "entryPoint": 38, + "id": 808, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_getInitializableStorage_839": { + "entryPoint": null, + "id": 839, + "parameterSlots": 0, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + } + }, + "generatedSources": [ + { + "ast": { + "nativeSrc": "0:216:61", + "nodeType": "YulBlock", + "src": "0:216:61", + "statements": [ + { + "nativeSrc": "6:3:61", + "nodeType": "YulBlock", + "src": "6:3:61", + "statements": [] + }, + { + "body": { + "nativeSrc": "113:101:61", + "nodeType": "YulBlock", + "src": "113:101:61", + "statements": [ + { + "nativeSrc": "123:26:61", + "nodeType": "YulAssignment", + "src": "123:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "135:9:61", + "nodeType": "YulIdentifier", + "src": "135:9:61" + }, + { + "kind": "number", + "nativeSrc": "146:2:61", + "nodeType": "YulLiteral", + "src": "146:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "131:3:61", + "nodeType": "YulIdentifier", + "src": "131:3:61" + }, + "nativeSrc": "131:18:61", + "nodeType": "YulFunctionCall", + "src": "131:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "123:4:61", + "nodeType": "YulIdentifier", + "src": "123:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "165:9:61", + "nodeType": "YulIdentifier", + "src": "165:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "180:6:61", + "nodeType": "YulIdentifier", + "src": "180:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "196:2:61", + "nodeType": "YulLiteral", + "src": "196:2:61", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "200:1:61", + "nodeType": "YulLiteral", + "src": "200:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "192:3:61", + "nodeType": "YulIdentifier", + "src": "192:3:61" + }, + "nativeSrc": "192:10:61", + "nodeType": "YulFunctionCall", + "src": "192:10:61" + }, + { + "kind": "number", + "nativeSrc": "204:1:61", + "nodeType": "YulLiteral", + "src": "204:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "188:3:61", + "nodeType": "YulIdentifier", + "src": "188:3:61" + }, + "nativeSrc": "188:18:61", + "nodeType": "YulFunctionCall", + "src": "188:18:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "176:3:61", + "nodeType": "YulIdentifier", + "src": "176:3:61" + }, + "nativeSrc": "176:31:61", + "nodeType": "YulFunctionCall", + "src": "176:31:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "158:6:61", + "nodeType": "YulIdentifier", + "src": "158:6:61" + }, + "nativeSrc": "158:50:61", + "nodeType": "YulFunctionCall", + "src": "158:50:61" + }, + "nativeSrc": "158:50:61", + "nodeType": "YulExpressionStatement", + "src": "158:50:61" + } + ] + }, + "name": "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed", + "nativeSrc": "14:200:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "82:9:61", + "nodeType": "YulTypedName", + "src": "82:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "93:6:61", + "nodeType": "YulTypedName", + "src": "93:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "104:4:61", + "nodeType": "YulTypedName", + "src": "104:4:61", + "type": "" + } + ], + "src": "14:200:61" + } + ] + }, + "contents": "{\n { }\n function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(64, 1), 1)))\n }\n}", + "id": 61, + "language": "Yul", + "name": "#utility.yul" + } + ], + "linkReferences": {}, + "object": "60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161302762000104600039600081816116290152818161165301526117ae01526130276000f3fe608060405260043610620002245760003560e01c806301601d2f146200022957806301ffc9a714620002615780630470d3ac146200029757806309766da214620002be5780630d6115d014620002e557806312b357b5146200030a5780631c2b3afc146200032f578063248a9ca314620003545780632cec1a0614620003795780632f2ff15d146200039e578063352af39a14620003c357806336568abe14620003e85780633c555938146200040d5780633f4ba83a146200042557806340df8d84146200043d5780634cba593a14620004625780634f1ef28614620004875780634f3f4639146200049e57806352d1902d14620004b65780635a81a62614620004ce5780635c975abb14620005025780635e818619146200051a5780636cd56878146200053f5780637fa3465714620005645780638127f46514620005895780638456cb5914620005b05780639010d07c14620005c857806391d1485414620005ed57806392cf833f146200061257806395b6ef0c14620006375780639d825bc5146200065c578063a217fddf1462000674578063a3246ad3146200068b578063ad3cb1cc14620006bf578063b289819c14620006f2578063c17e30bf1462000717578063c2a1db78146200073c578063c39409e11462000763578063ca15c873146200077b578063d547741f14620007a0578063e63ab1e914620007c5578063f72c0d8b14620007ea578063f85b4a9c146200080f578063fd2fbd521462000834575b600080fd5b3480156200023657600080fd5b506200024e60008051602062002ed283398151915281565b6040519081526020015b60405180910390f35b3480156200026e57600080fd5b5062000286620002803660046200248c565b6200084b565b604051901515815260200162000258565b348015620002a457600080fd5b50620002af62000879565b604051620002589190620024b8565b348015620002cb57600080fd5b50620002e3620002dd366004620024e9565b62000899565b005b348015620002f257600080fd5b50620002e36200030436600462002599565b6200094b565b3480156200031757600080fd5b506200028662000329366004620024e9565b62000975565b3480156200033c57600080fd5b50620002e36200034e366004620025e6565b620009a7565b3480156200036157600080fd5b506200024e62000373366004620025e6565b620009d9565b3480156200038657600080fd5b50620002af62000398366004620024e9565b620009fb565b348015620003ab57600080fd5b50620002e3620003bd36600462002600565b62000a33565b348015620003d057600080fd5b506200024e620003e236600462002599565b62000a5b565b348015620003f557600080fd5b50620002e36200040736600462002600565b62000aea565b3480156200041a57600080fd5b506200024e62000b25565b3480156200043257600080fd5b50620002e362000b3c565b3480156200044a57600080fd5b506200024e60008051602062002fb283398151915281565b3480156200046f57600080fd5b506200024e60008051602062002f1283398151915281565b620002e3620004983660046200262f565b62000b64565b348015620004ab57600080fd5b50620002af62000b85565b348015620004c357600080fd5b506200024e62000ba5565b348015620004db57600080fd5b50620004f3620004ed366004620025e6565b62000bc5565b604051620002589190620026eb565b3480156200050f57600080fd5b506200028662000ca8565b3480156200052757600080fd5b50620002e36200053936600462002599565b62000cbf565b3480156200054c57600080fd5b50620002e36200055e366004620024e9565b62000ce5565b3480156200057157600080fd5b506200024e60008051602062002fd283398151915281565b3480156200059657600080fd5b50620005a162000d8a565b60405162000258919062002700565b348015620005bd57600080fd5b50620002e362000dab565b348015620005d557600080fd5b50620002af620005e736600462002746565b62000dd0565b348015620005fa57600080fd5b50620002866200060c36600462002600565b62000e02565b3480156200061f57600080fd5b506200024e60008051602062002ef283398151915281565b3480156200064457600080fd5b50620002e36200065636600462002769565b62000e3a565b3480156200066957600080fd5b50620002af62000ff8565b3480156200068157600080fd5b506200024e600081565b3480156200069857600080fd5b50620006b0620006aa366004620025e6565b62001015565b604051620002589190620027e1565b348015620006cc57600080fd5b50620004f3604051806040016040528060058152602001640352e302e360dc1b81525081565b348015620006ff57600080fd5b506200024e60008051602062002f3283398151915281565b3480156200072457600080fd5b50620002e362000736366004620024e9565b62001046565b3480156200074957600080fd5b5062000754620010ef565b60405162000258919062002824565b3480156200077057600080fd5b506200024e62001264565b3480156200078857600080fd5b506200024e6200079a366004620025e6565b6200127b565b348015620007ad57600080fd5b50620002e3620007bf36600462002600565b620012a4565b348015620007d257600080fd5b506200024e60008051602062002f9283398151915281565b348015620007f757600080fd5b506200024e60008051602062002f5283398151915281565b3480156200081c57600080fd5b50620002e36200082e366004620025e6565b620012c6565b620002af620008453660046200288c565b6200132c565b60006001600160e01b03198216635a05180f60e01b148062000873575062000873826200135a565b92915050565b6000806200088662001391565b600201546001600160a01b031692915050565b60008051602062002f32833981519152620008b481620013b5565b816001600160a01b03163b600003620008ed57816040516337766f4360e11b8152600401620008e49190620024b8565b60405180910390fd5b6000620008f962000ff8565b90506200090683620013c1565b826001600160a01b0316816001600160a01b03167fecd599290ada9c149ae0fb600bc6ada3c103a716eadb877b5341b7d298b62d9360405160405180910390a3505050565b60008051602062002ef28339815191526200096681620013b5565b6200097182620013ef565b5050565b6000806200098262001391565b6001600160a01b03909316600090815260059093016020525050604090205460ff1690565b60008051602062002ed2833981519152620009c281620013b5565b6000620009ce62001391565b600101929092555050565b600080620009e6620014e2565b60009384526020525050604090206001015490565b60008062000a0862001391565b6001600160a01b03938416600090815260059091016020526040902054610100900490921692915050565b62000a3e82620009d9565b62000a4981620013b5565b62000a55838362001506565b50505050565b60008062000a686200154f565b905062000aa18360405160200162000a819190620028bb565b60408051601f198184030181529190528051602090910120829062001573565b62000abf5760405163162e926760e11b815260040160405180910390fd5b806003018360405162000ad39190620028bb565b908152602001604051809103902054915050919050565b6001600160a01b038116331462000b145760405163334bd91960e11b815260040160405180910390fd5b62000b20828262001581565b505050565b60008062000b3262001391565b6003015492915050565b60008051602062002f9283398151915262000b5781620013b5565b62000b61620015c1565b50565b62000b6e6200161e565b62000b7982620016c9565b620009718282620016e4565b60008062000b9262001391565b600401546001600160a01b031692915050565b600062000bb1620017a3565b5060008051602062002f7283398151915290565b6060600062000bd36200154f565b905062000be1818462001573565b62000bff5760405163162e926760e11b815260040160405180910390fd5b60008381526002820160205260409020805462000c1c90620028d9565b80601f016020809104026020016040519081016040528092919081815260200182805462000c4a90620028d9565b801562000c9b5780601f1062000c6f5761010080835404028352916020019162000c9b565b820191906000526020600020905b81548152906001019060200180831162000c7d57829003601f168201915b5050505050915050919050565b60008062000cb5620017ed565b5460ff1692915050565b60008051602062002ef283398151915262000cda81620013b5565b620009718262001811565b60008051602062002fb283398151915262000d0081620013b5565b6001600160a01b03821662000d2c578160405163220b4f1160e11b8152600401620008e49190620024b8565b600062000d3862000879565b905062000d4583620018ef565b826001600160a01b0316816001600160a01b03167f88bf70d4f3c446213b5064d7cfe95ec0ed196748f014c19a833117bac32468fd60405160405180910390a3505050565b6060600062000d986200154f565b905062000da58162001920565b91505090565b60008051602062002f9283398151915262000dc681620013b5565b62000b616200192f565b60008062000ddd6200197b565b600085815260208290526040902090915062000dfa90846200199f565b949350505050565b60008062000e0f620014e2565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b600062000e46620019ad565b805490915060ff600160401b82041615906001600160401b031660008115801562000e6e5750825b90506000826001600160401b0316600114801562000e8b5750303b155b90508115801562000e9a575080155b1562000eb95760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b0319166001178555831562000ee357845460ff60401b1916600160401b1785555b62000eed620019d1565b62000ef7620019e5565b62000f01620019e5565b62000f0e60008c62001506565b5062000f2a60008051602062002f928339815191528b62001506565b5062000f4660008051602062002f528339815191528a62001506565b5062000f6260008051602062002f328339815191528962001506565b50600062000f6f62001391565b6002810180546001600160a01b0319166001600160a01b038b161790556003810188905568056bc75e2d6310000060019091015550831562000feb57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050565b6000806200100562001391565b546001600160a01b031692915050565b60606000620010236200197b565b60008481526020829052604090209091506200103f9062001920565b9392505050565b60008051602062002f328339815191526200106181620013b5565b816001600160a01b03163b60000362001091578160405163c9c10a6160e01b8152600401620008e49190620024b8565b60006200109d62000b85565b9050620010aa83620019ef565b826001600160a01b0316816001600160a01b03167f8752daf55fa0ccd919c149bbc809abaad4433f02ba7aa93ac6d5acfd2f8dc22c60405160405180910390a3505050565b60606000620010fd6200154f565b905060006200110c8262001920565b9050600081516001600160401b038111156200112c576200112c62002507565b6040519080825280602002602001820160405280156200116157816020015b60608152602001906001900390816200114b5790505b50905060005b82518110156200125c578360020160008483815181106200118c576200118c62002915565b602002602001015181526020019081526020016000208054620011af90620028d9565b80601f0160208091040260200160405190810160405280929190818152602001828054620011dd90620028d9565b80156200122e5780601f1062001202576101008083540402835291602001916200122e565b820191906000526020600020905b8154815290600101906020018083116200121057829003601f168201915b505050505082828151811062001248576200124862002915565b602090810291909101015260010162001167565b509392505050565b6000806200127162001391565b6001015492915050565b600080620012886200197b565b60008481526020829052604090209091506200103f9062001a20565b620012af82620009d9565b620012ba81620013b5565b62000a55838362001581565b60008051602062002f12833981519152620012e181620013b5565b6000620012ed62000b25565b9050620012fa8362001a2b565b604051839082907fc1fec27bbb8c533fedd3d449016c429341bfc0df21a9600e6162605e08f1c78f90600090a3505050565b60006200133862001a41565b6200134262001a7a565b6200134e838362001aa3565b90506200087362001ce3565b60006001600160e01b03198216637965db0b60e01b14806200087357506301ffc9a760e01b6001600160e01b031983161462000873565b7f2b421af391835920c41e77b6810f6e715f5b713c17bc590f55de6a7d3912e80090565b62000b61813362001cf6565b6000620013cd62001391565b80546001600160a01b0319166001600160a01b03939093169290921790915550565b600081604051602001620014049190620028bb565b6040516020818303038152906040528051906020012090506000620014286200154f565b9050600062001438828462001d33565b9050806200145d5783604051633dad0df560e11b8152600401620008e49190620026eb565b600083815260028301602052604090206200147985826200297f565b508282600301856040516200148f9190620028bb565b9081526020016040518091039020819055507fbad43a69707ac20dd539f3163b927e83baef6e967f2c95432129b1ded41664588484604051620014d492919062002a4b565b60405180910390a150505050565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b600080620015136200197b565b9050600062001523858562001d41565b9050801562000dfa57600085815260208390526040902062001546908562001dea565b50949350505050565b7f563e037355fff0507705f481e4b362e4c3996a3b57d07307deabfca3d816860090565b60006200103f838362001e01565b6000806200158e6200197b565b905060006200159e858562001e19565b9050801562000dfa57600085815260208390526040902062001546908562001e97565b620015cb62001eae565b6000620015d7620017ed565b805460ff1916815590507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b604051620016139190620024b8565b60405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480620016a857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166200169c60008051602062002f72833981519152546001600160a01b031690565b6001600160a01b031614155b15620016c75760405163703e46dd60e11b815260040160405180910390fd5b565b60008051602062002f528339815191526200097181620013b5565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801562001741575060408051601f3d908101601f191682019092526200173e9181019062002a6f565b60015b620017635781604051634c9c8ce360e01b8152600401620008e49190620024b8565b60008051602062002f7283398151915281146200179757604051632a87526960e21b815260048101829052602401620008e4565b62000b20838362001ed6565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614620016c75760405163703e46dd60e11b815260040160405180910390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330090565b600081604051602001620018269190620028bb565b60405160208183030381529060405280519060200120905060006200184a6200154f565b905060006200185a828462001f33565b9050806200187b5760405163162e926760e11b815260040160405180910390fd5b60008381526002830160205260408120620018969162002424565b8160030184604051620018aa9190620028bb565b9081526020016040518091039020600090557f57158eaa7e642cefd761327d5cd6c147ddaad706ec257f90f4d8b59b3d365eb78484604051620014d492919062002a4b565b6000620018fb62001391565b60020180546001600160a01b0319166001600160a01b03939093169290921790915550565b606060006200103f8362001f41565b6200193962001a7a565b600062001945620017ed565b805460ff1916600117815590507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258620016043390565b7fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200090565b60006200103f838362001f9f565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b620019db62001fcc565b620016c762001ff4565b620016c762001fcc565b6000620019fb62001391565b60040180546001600160a01b0319166001600160a01b03939093169290921790915550565b600062000873825490565b600062001a3762001391565b6003019190915550565b600062001a4d62002015565b80549091506001190162001a7457604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b62001a8462000ca8565b15620016c75760405163d93c066560e01b815260040160405180910390fd5b60006001600160a01b03831662001ad1578260405163715397cd60e11b8152600401620008e49190620024b8565b600062001add62001264565b90508034101562001b0b576040516353f01c6360e11b815260048101829052346024820152604401620008e4565b600062001b1762000ff8565b9050806001600160a01b03163b60000362001b4957806040516337766f4360e11b8152600401620008e49190620024b8565b600062001b5562000b85565b9050806001600160a01b03163b60000362001b87578060405163c9c10a6160e01b8152600401620008e49190620024b8565b60008260405162001b989062002463565b6001600160a01b039091168152604060208201819052600090820152606001604051809103906000f08015801562001bd4573d6000803e3d6000fd5b506040516333e1a22360e01b81523060048201526001600160a01b0384811660248301526044820187905289811660648301528881166084830152919250908216906333e1a2239060a401600060405180830381600087803b15801562001c3a57600080fd5b505af115801562001c4f573d6000803e3d6000fd5b5050604080518082019091526001815233602082015262001c74925083915062002039565b62001c8f60008051602062002fd28339815191528262001506565b5062001ca56001600160a01b038216346200209c565b6040516001600160a01b038216907f22de16ef21e3a33810fbcaf0e737ab9c9e2854fa565d8535041456c789afcd9390600090a29695505050505050565b600062001cef62002015565b6001905550565b62001d02828262000e02565b620009715760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401620008e4565b60006200103f83836200213f565b60008062001d4e620014e2565b905062001d5c848462000e02565b62001ddf576000848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905562001d943390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505062000873565b600091505062000873565b60006200103f836001600160a01b0384166200213f565b60009081526001919091016020526040902054151590565b60008062001e26620014e2565b905062001e34848462000e02565b1562001ddf576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505062000873565b60006200103f836001600160a01b0384166200218e565b62001eb862000ca8565b620016c757604051638dfc202b60e01b815260040160405180910390fd5b62001ee18262002287565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511562001f295762000b208282620022e7565b6200097162002363565b60006200103f83836200218e565b60608160000180548060200260200160405190810160405280929190818152602001828054801562001f9357602002820191906000526020600020905b81548152602001906001019080831162001f7e575b50505050509050919050565b600082600001828154811062001fb95762001fb962002915565b9060005260206000200154905092915050565b62001fd662002383565b620016c757604051631afcd79f60e31b815260040160405180910390fd5b62001ffe62001fcc565b60006200200a620017ed565b805460ff1916905550565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b60006200204562001391565b6001600160a01b03938416600090815260059091016020908152604090912083518154929094015190941661010002610100600160a81b0319931515939093166001600160a81b0319909116179190911790915550565b80471015620020c85760405163cf47918160e01b815247600482015260248101829052604401620008e4565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811462002117576040519150601f19603f3d011682016040523d82523d6000602084013e6200211c565b606091505b505090508062000b205760405163d6bda27560e01b815260040160405180910390fd5b60006200214d838362001e01565b620021855750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000873565b50600062000873565b6000818152600183016020526040812054801562001ddf576000620021b560018362002a89565b8554909150600090620021cb9060019062002a89565b905080821462002237576000866000018281548110620021ef57620021ef62002915565b906000526020600020015490508087600001848154811062002215576200221562002915565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806200224b576200224b62002aab565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505062000873565b806001600160a01b03163b600003620022b75780604051634c9c8ce360e01b8152600401620008e49190620024b8565b60008051602062002f7283398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051620023069190620028bb565b600060405180830381855af49150503d806000811462002343576040519150601f19603f3d011682016040523d82523d6000602084013e62002348565b606091505b50915091506200235a8583836200239f565b95945050505050565b3415620016c75760405163b398979f60e01b815260040160405180910390fd5b60006200238f620019ad565b54600160401b900460ff16919050565b606082620023b857620023b282620023fa565b6200103f565b8151158015620023d057506001600160a01b0384163b155b15620023f35783604051639996b31560e01b8152600401620008e49190620024b8565b5092915050565b8051156200240b5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b5080546200243290620028d9565b6000825580601f1062002443575050565b601f01602090049060005260206000209081019062000b61919062002471565b6104108062002ac283390190565b5b8082111562002488576000815560010162002472565b5090565b6000602082840312156200249f57600080fd5b81356001600160e01b0319811681146200103f57600080fd5b6001600160a01b0391909116815260200190565b80356001600160a01b0381168114620024e457600080fd5b919050565b600060208284031215620024fc57600080fd5b6200103f82620024cc565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b03808411156200253a576200253a62002507565b604051601f8501601f19908116603f0116810190828211818310171562002565576200256562002507565b816040528093508581528686860111156200257f57600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215620025ac57600080fd5b81356001600160401b03811115620025c357600080fd5b8201601f81018413620025d557600080fd5b62000dfa848235602084016200251d565b600060208284031215620025f957600080fd5b5035919050565b600080604083850312156200261457600080fd5b823591506200262660208401620024cc565b90509250929050565b600080604083850312156200264357600080fd5b6200264e83620024cc565b915060208301356001600160401b038111156200266a57600080fd5b8301601f810185136200267c57600080fd5b6200268d858235602084016200251d565b9150509250929050565b60005b83811015620026b45781810151838201526020016200269a565b50506000910152565b60008151808452620026d781602086016020860162002697565b601f01601f19169290920160200192915050565b6020815260006200103f6020830184620026bd565b6020808252825182820181905260009190848201906040850190845b818110156200273a578351835292840192918401916001016200271c565b50909695505050505050565b600080604083850312156200275a57600080fd5b50508035926020909101359150565b60008060008060008060c087890312156200278357600080fd5b6200278e87620024cc565b95506200279e60208801620024cc565b9450620027ae60408801620024cc565b9350620027be60608801620024cc565b9250620027ce60808801620024cc565b915060a087013590509295509295509295565b6020808252825182820181905260009190848201906040850190845b818110156200273a5783516001600160a01b031683529284019291840191600101620027fd565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b828110156200287f57603f198886030184526200286c858351620026bd565b945092850192908501906001016200284d565b5092979650505050505050565b60008060408385031215620028a057600080fd5b620028ab83620024cc565b91506200262660208401620024cc565b60008251620028cf81846020870162002697565b9190910192915050565b600181811c90821680620028ee57607f821691505b6020821081036200290f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b601f82111562000b20576000816000526020600020601f850160051c81016020861015620029565750805b601f850160051c820191505b81811015620029775782815560010162002962565b505050505050565b81516001600160401b038111156200299b576200299b62002507565b620029b381620029ac8454620028d9565b846200292b565b602080601f831160018114620029eb5760008415620029d25750858301515b600019600386901b1c1916600185901b17855562002977565b600085815260208120601f198616915b8281101562002a1c57888601518255948401946001909101908401620029fb565b508582101562002a3b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60408152600062002a606040830185620026bd565b90508260208301529392505050565b60006020828403121562002a8257600080fd5b5051919050565b818103818111156200087357634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fdfe60806040526040516104103803806104108339810160408190526100229161025a565b61002c8282610033565b5050610358565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610086576100818282610109565b505050565b61008e610180565b5050565b806001600160a01b03163b6000036100c85780604051634c9c8ce360e01b81526004016100bf9190610328565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610126919061033c565b600060405180830381855af49150503d8060008114610161576040519150601f19603f3d011682016040523d82523d6000602084013e610166565b606091505b5090925090506101778583836101a1565b95945050505050565b341561019f5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b6576101b1826101f7565b6101f0565b81511580156101cd57506001600160a01b0384163b155b156101ed5783604051639996b31560e01b81526004016100bf9190610328565b50805b9392505050565b8051156102075780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b83811015610251578181015183820152602001610239565b50506000910152565b6000806040838503121561026d57600080fd5b82516001600160a01b038116811461028457600080fd5b60208401519092506001600160401b03808211156102a157600080fd5b818501915085601f8301126102b557600080fd5b8151818111156102c7576102c7610220565b604051601f8201601f19908116603f011681019083821181831017156102ef576102ef610220565b8160405282815288602084870101111561030857600080fd5b610319836020830160208801610236565b80955050505050509250929050565b6001600160a01b0391909116815260200190565b6000825161034e818460208701610236565b9190910192915050565b60aa806103666000396000f3fe6080604052600a600c565b005b60186014601a565b6051565b565b6000604c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015606f573d6000f35b3d6000fdfea26469706673582212205010fbd336314ff514e3c3a5ed98aed1c9c96a5210a9df6dc914e2a04bbe772564736f6c6343000818003330f3325e23b502dce693b147d37de928d14dd5ab09bbc928fb79867329ac5b83dccfb718b018e1b06f849958baf67b0b252302f06a69871f72c5127ee92f659d349eec46d2c564a125684d1934a6120a70cc341d3a26d362e358a775e07dec176a42249708403f5ed28bf492facd11e85bc1054e6c27c155ed468f6ff4f7ecd0189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a819590c814c6d279357359f817d25adb06a7b9f6e493592b7d3b8bb268adb6764f22871c78b70c8896c7119179fc4e9b6f4cf323f8db6eadb7d79007d1e00c3fa26469706673582212200d6628730b2d330eb2e16dd8190c75aa9580d54d6cf9599d066d9a36e02f067264736f6c63430008180033", + "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x20 PUSH3 0x26 JUMP JUMPDEST PUSH3 0xDA JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 DUP1 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH3 0x77 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND EQ PUSH3 0xD7 JUMPI DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x3027 PUSH3 0x104 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x1629 ADD MSTORE DUP2 DUP2 PUSH2 0x1653 ADD MSTORE PUSH2 0x17AE ADD MSTORE PUSH2 0x3027 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH3 0x224 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1601D2F EQ PUSH3 0x229 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH3 0x261 JUMPI DUP1 PUSH4 0x470D3AC EQ PUSH3 0x297 JUMPI DUP1 PUSH4 0x9766DA2 EQ PUSH3 0x2BE JUMPI DUP1 PUSH4 0xD6115D0 EQ PUSH3 0x2E5 JUMPI DUP1 PUSH4 0x12B357B5 EQ PUSH3 0x30A JUMPI DUP1 PUSH4 0x1C2B3AFC EQ PUSH3 0x32F JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH3 0x354 JUMPI DUP1 PUSH4 0x2CEC1A06 EQ PUSH3 0x379 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH3 0x39E JUMPI DUP1 PUSH4 0x352AF39A EQ PUSH3 0x3C3 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH3 0x3E8 JUMPI DUP1 PUSH4 0x3C555938 EQ PUSH3 0x40D JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH3 0x425 JUMPI DUP1 PUSH4 0x40DF8D84 EQ PUSH3 0x43D JUMPI DUP1 PUSH4 0x4CBA593A EQ PUSH3 0x462 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH3 0x487 JUMPI DUP1 PUSH4 0x4F3F4639 EQ PUSH3 0x49E JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH3 0x4B6 JUMPI DUP1 PUSH4 0x5A81A626 EQ PUSH3 0x4CE JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH3 0x502 JUMPI DUP1 PUSH4 0x5E818619 EQ PUSH3 0x51A JUMPI DUP1 PUSH4 0x6CD56878 EQ PUSH3 0x53F JUMPI DUP1 PUSH4 0x7FA34657 EQ PUSH3 0x564 JUMPI DUP1 PUSH4 0x8127F465 EQ PUSH3 0x589 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH3 0x5B0 JUMPI DUP1 PUSH4 0x9010D07C EQ PUSH3 0x5C8 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH3 0x5ED JUMPI DUP1 PUSH4 0x92CF833F EQ PUSH3 0x612 JUMPI DUP1 PUSH4 0x95B6EF0C EQ PUSH3 0x637 JUMPI DUP1 PUSH4 0x9D825BC5 EQ PUSH3 0x65C JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH3 0x674 JUMPI DUP1 PUSH4 0xA3246AD3 EQ PUSH3 0x68B JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH3 0x6BF JUMPI DUP1 PUSH4 0xB289819C EQ PUSH3 0x6F2 JUMPI DUP1 PUSH4 0xC17E30BF EQ PUSH3 0x717 JUMPI DUP1 PUSH4 0xC2A1DB78 EQ PUSH3 0x73C JUMPI DUP1 PUSH4 0xC39409E1 EQ PUSH3 0x763 JUMPI DUP1 PUSH4 0xCA15C873 EQ PUSH3 0x77B JUMPI DUP1 PUSH4 0xD547741F EQ PUSH3 0x7A0 JUMPI DUP1 PUSH4 0xE63AB1E9 EQ PUSH3 0x7C5 JUMPI DUP1 PUSH4 0xF72C0D8B EQ PUSH3 0x7EA JUMPI DUP1 PUSH4 0xF85B4A9C EQ PUSH3 0x80F JUMPI DUP1 PUSH4 0xFD2FBD52 EQ PUSH3 0x834 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2ED2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x26E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x286 PUSH3 0x280 CALLDATASIZE PUSH1 0x4 PUSH3 0x248C JUMP JUMPDEST PUSH3 0x84B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x258 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2AF PUSH3 0x879 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x258 SWAP2 SWAP1 PUSH3 0x24B8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x2CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x2DD CALLDATASIZE PUSH1 0x4 PUSH3 0x24E9 JUMP JUMPDEST PUSH3 0x899 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x2F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x304 CALLDATASIZE PUSH1 0x4 PUSH3 0x2599 JUMP JUMPDEST PUSH3 0x94B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x317 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x286 PUSH3 0x329 CALLDATASIZE PUSH1 0x4 PUSH3 0x24E9 JUMP JUMPDEST PUSH3 0x975 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x33C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x34E CALLDATASIZE PUSH1 0x4 PUSH3 0x25E6 JUMP JUMPDEST PUSH3 0x9A7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x361 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH3 0x373 CALLDATASIZE PUSH1 0x4 PUSH3 0x25E6 JUMP JUMPDEST PUSH3 0x9D9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x386 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2AF PUSH3 0x398 CALLDATASIZE PUSH1 0x4 PUSH3 0x24E9 JUMP JUMPDEST PUSH3 0x9FB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x3AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x3BD CALLDATASIZE PUSH1 0x4 PUSH3 0x2600 JUMP JUMPDEST PUSH3 0xA33 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x3D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH3 0x3E2 CALLDATASIZE PUSH1 0x4 PUSH3 0x2599 JUMP JUMPDEST PUSH3 0xA5B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x3F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x407 CALLDATASIZE PUSH1 0x4 PUSH3 0x2600 JUMP JUMPDEST PUSH3 0xAEA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x41A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH3 0xB25 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x432 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0xB3C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x44A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2FB2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x46F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F12 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST PUSH3 0x2E3 PUSH3 0x498 CALLDATASIZE PUSH1 0x4 PUSH3 0x262F JUMP JUMPDEST PUSH3 0xB64 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x4AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2AF PUSH3 0xB85 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x4C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH3 0xBA5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x4DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x4F3 PUSH3 0x4ED CALLDATASIZE PUSH1 0x4 PUSH3 0x25E6 JUMP JUMPDEST PUSH3 0xBC5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x258 SWAP2 SWAP1 PUSH3 0x26EB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x50F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x286 PUSH3 0xCA8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x527 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x539 CALLDATASIZE PUSH1 0x4 PUSH3 0x2599 JUMP JUMPDEST PUSH3 0xCBF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x54C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x55E CALLDATASIZE PUSH1 0x4 PUSH3 0x24E9 JUMP JUMPDEST PUSH3 0xCE5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x571 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2FD2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x596 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x5A1 PUSH3 0xD8A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x258 SWAP2 SWAP1 PUSH3 0x2700 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x5BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0xDAB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x5D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2AF PUSH3 0x5E7 CALLDATASIZE PUSH1 0x4 PUSH3 0x2746 JUMP JUMPDEST PUSH3 0xDD0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x5FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x286 PUSH3 0x60C CALLDATASIZE PUSH1 0x4 PUSH3 0x2600 JUMP JUMPDEST PUSH3 0xE02 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x61F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2EF2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x644 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x656 CALLDATASIZE PUSH1 0x4 PUSH3 0x2769 JUMP JUMPDEST PUSH3 0xE3A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x669 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2AF PUSH3 0xFF8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x681 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH1 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x698 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x6B0 PUSH3 0x6AA CALLDATASIZE PUSH1 0x4 PUSH3 0x25E6 JUMP JUMPDEST PUSH3 0x1015 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x258 SWAP2 SWAP1 PUSH3 0x27E1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x6CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x4F3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x352E302E3 PUSH1 0xDC SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x6FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F32 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x724 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x736 CALLDATASIZE PUSH1 0x4 PUSH3 0x24E9 JUMP JUMPDEST PUSH3 0x1046 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x749 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x754 PUSH3 0x10EF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x258 SWAP2 SWAP1 PUSH3 0x2824 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x770 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH3 0x1264 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x788 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH3 0x79A CALLDATASIZE PUSH1 0x4 PUSH3 0x25E6 JUMP JUMPDEST PUSH3 0x127B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x7AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x7BF CALLDATASIZE PUSH1 0x4 PUSH3 0x2600 JUMP JUMPDEST PUSH3 0x12A4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x7D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F92 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x7F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F52 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x81C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x82E CALLDATASIZE PUSH1 0x4 PUSH3 0x25E6 JUMP JUMPDEST PUSH3 0x12C6 JUMP JUMPDEST PUSH3 0x2AF PUSH3 0x845 CALLDATASIZE PUSH1 0x4 PUSH3 0x288C JUMP JUMPDEST PUSH3 0x132C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5A05180F PUSH1 0xE0 SHL EQ DUP1 PUSH3 0x873 JUMPI POP PUSH3 0x873 DUP3 PUSH3 0x135A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x886 PUSH3 0x1391 JUMP JUMPDEST PUSH1 0x2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F32 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x8B4 DUP2 PUSH3 0x13B5 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH3 0x8ED JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x37766F43 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8E4 SWAP2 SWAP1 PUSH3 0x24B8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x8F9 PUSH3 0xFF8 JUMP JUMPDEST SWAP1 POP PUSH3 0x906 DUP4 PUSH3 0x13C1 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xECD599290ADA9C149AE0FB600BC6ADA3C103A716EADB877B5341B7D298B62D93 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2EF2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x966 DUP2 PUSH3 0x13B5 JUMP JUMPDEST PUSH3 0x971 DUP3 PUSH3 0x13EF JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x982 PUSH3 0x1391 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 SWAP1 SWAP4 ADD PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2ED2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x9C2 DUP2 PUSH3 0x13B5 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x9CE PUSH3 0x1391 JUMP JUMPDEST PUSH1 0x1 ADD SWAP3 SWAP1 SWAP3 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x9E6 PUSH3 0x14E2 JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xA08 PUSH3 0x1391 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x100 SWAP1 DIV SWAP1 SWAP3 AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0xA3E DUP3 PUSH3 0x9D9 JUMP JUMPDEST PUSH3 0xA49 DUP2 PUSH3 0x13B5 JUMP JUMPDEST PUSH3 0xA55 DUP4 DUP4 PUSH3 0x1506 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xA68 PUSH3 0x154F JUMP JUMPDEST SWAP1 POP PUSH3 0xAA1 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0xA81 SWAP2 SWAP1 PUSH3 0x28BB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 DUP3 SWAP1 PUSH3 0x1573 JUMP JUMPDEST PUSH3 0xABF JUMPI PUSH1 0x40 MLOAD PUSH4 0x162E9267 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x3 ADD DUP4 PUSH1 0x40 MLOAD PUSH3 0xAD3 SWAP2 SWAP1 PUSH3 0x28BB JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SLOAD SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH3 0xB14 JUMPI PUSH1 0x40 MLOAD PUSH4 0x334BD919 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0xB20 DUP3 DUP3 PUSH3 0x1581 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xB32 PUSH3 0x1391 JUMP JUMPDEST PUSH1 0x3 ADD SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F92 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0xB57 DUP2 PUSH3 0x13B5 JUMP JUMPDEST PUSH3 0xB61 PUSH3 0x15C1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0xB6E PUSH3 0x161E JUMP JUMPDEST PUSH3 0xB79 DUP3 PUSH3 0x16C9 JUMP JUMPDEST PUSH3 0x971 DUP3 DUP3 PUSH3 0x16E4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xB92 PUSH3 0x1391 JUMP JUMPDEST PUSH1 0x4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0xBB1 PUSH3 0x17A3 JUMP JUMPDEST POP PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F72 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH3 0xBD3 PUSH3 0x154F JUMP JUMPDEST SWAP1 POP PUSH3 0xBE1 DUP2 DUP5 PUSH3 0x1573 JUMP JUMPDEST PUSH3 0xBFF JUMPI PUSH1 0x40 MLOAD PUSH4 0x162E9267 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH3 0xC1C SWAP1 PUSH3 0x28D9 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH3 0xC4A SWAP1 PUSH3 0x28D9 JUMP JUMPDEST DUP1 ISZERO PUSH3 0xC9B JUMPI DUP1 PUSH1 0x1F LT PUSH3 0xC6F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH3 0xC9B JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH3 0xC7D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xCB5 PUSH3 0x17ED JUMP JUMPDEST SLOAD PUSH1 0xFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2EF2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0xCDA DUP2 PUSH3 0x13B5 JUMP JUMPDEST PUSH3 0x971 DUP3 PUSH3 0x1811 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2FB2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0xD00 DUP2 PUSH3 0x13B5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0xD2C JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x220B4F11 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8E4 SWAP2 SWAP1 PUSH3 0x24B8 JUMP JUMPDEST PUSH1 0x0 PUSH3 0xD38 PUSH3 0x879 JUMP JUMPDEST SWAP1 POP PUSH3 0xD45 DUP4 PUSH3 0x18EF JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x88BF70D4F3C446213B5064D7CFE95EC0ED196748F014C19A833117BAC32468FD PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH3 0xD98 PUSH3 0x154F JUMP JUMPDEST SWAP1 POP PUSH3 0xDA5 DUP2 PUSH3 0x1920 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F92 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0xDC6 DUP2 PUSH3 0x13B5 JUMP JUMPDEST PUSH3 0xB61 PUSH3 0x192F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xDDD PUSH3 0x197B JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH3 0xDFA SWAP1 DUP5 PUSH3 0x199F JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xE0F PUSH3 0x14E2 JUMP JUMPDEST PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP7 MSTORE SWAP4 SWAP1 MSTORE POP POP SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0xE46 PUSH3 0x19AD JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV AND ISZERO SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x0 DUP2 ISZERO DUP1 ISZERO PUSH3 0xE6E JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH3 0xE8B JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH3 0xE9A JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH3 0xEB9 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT AND PUSH1 0x1 OR DUP6 SSTORE DUP4 ISZERO PUSH3 0xEE3 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR DUP6 SSTORE JUMPDEST PUSH3 0xEED PUSH3 0x19D1 JUMP JUMPDEST PUSH3 0xEF7 PUSH3 0x19E5 JUMP JUMPDEST PUSH3 0xF01 PUSH3 0x19E5 JUMP JUMPDEST PUSH3 0xF0E PUSH1 0x0 DUP13 PUSH3 0x1506 JUMP JUMPDEST POP PUSH3 0xF2A PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F92 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP12 PUSH3 0x1506 JUMP JUMPDEST POP PUSH3 0xF46 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F52 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP11 PUSH3 0x1506 JUMP JUMPDEST POP PUSH3 0xF62 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F32 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP10 PUSH3 0x1506 JUMP JUMPDEST POP PUSH1 0x0 PUSH3 0xF6F PUSH3 0x1391 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND OR SWAP1 SSTORE PUSH1 0x3 DUP2 ADD DUP9 SWAP1 SSTORE PUSH9 0x56BC75E2D63100000 PUSH1 0x1 SWAP1 SWAP2 ADD SSTORE POP DUP4 ISZERO PUSH3 0xFEB JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND DUP6 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x1005 PUSH3 0x1391 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH3 0x1023 PUSH3 0x197B JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH3 0x103F SWAP1 PUSH3 0x1920 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F32 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x1061 DUP2 PUSH3 0x13B5 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH3 0x1091 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0xC9C10A61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8E4 SWAP2 SWAP1 PUSH3 0x24B8 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x109D PUSH3 0xB85 JUMP JUMPDEST SWAP1 POP PUSH3 0x10AA DUP4 PUSH3 0x19EF JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8752DAF55FA0CCD919C149BBC809ABAAD4433F02BA7AA93AC6D5ACFD2F8DC22C PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH3 0x10FD PUSH3 0x154F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0x110C DUP3 PUSH3 0x1920 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x112C JUMPI PUSH3 0x112C PUSH3 0x2507 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x1161 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH3 0x114B JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH3 0x125C JUMPI DUP4 PUSH1 0x2 ADD PUSH1 0x0 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH3 0x118C JUMPI PUSH3 0x118C PUSH3 0x2915 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH3 0x11AF SWAP1 PUSH3 0x28D9 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH3 0x11DD SWAP1 PUSH3 0x28D9 JUMP JUMPDEST DUP1 ISZERO PUSH3 0x122E JUMPI DUP1 PUSH1 0x1F LT PUSH3 0x1202 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH3 0x122E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH3 0x1210 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x1248 JUMPI PUSH3 0x1248 PUSH3 0x2915 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH3 0x1167 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x1271 PUSH3 0x1391 JUMP JUMPDEST PUSH1 0x1 ADD SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x1288 PUSH3 0x197B JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH3 0x103F SWAP1 PUSH3 0x1A20 JUMP JUMPDEST PUSH3 0x12AF DUP3 PUSH3 0x9D9 JUMP JUMPDEST PUSH3 0x12BA DUP2 PUSH3 0x13B5 JUMP JUMPDEST PUSH3 0xA55 DUP4 DUP4 PUSH3 0x1581 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F12 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x12E1 DUP2 PUSH3 0x13B5 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x12ED PUSH3 0xB25 JUMP JUMPDEST SWAP1 POP PUSH3 0x12FA DUP4 PUSH3 0x1A2B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 SWAP1 DUP3 SWAP1 PUSH32 0xC1FEC27BBB8C533FEDD3D449016C429341BFC0DF21A9600E6162605E08F1C78F SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1338 PUSH3 0x1A41 JUMP JUMPDEST PUSH3 0x1342 PUSH3 0x1A7A JUMP JUMPDEST PUSH3 0x134E DUP4 DUP4 PUSH3 0x1AA3 JUMP JUMPDEST SWAP1 POP PUSH3 0x873 PUSH3 0x1CE3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x7965DB0B PUSH1 0xE0 SHL EQ DUP1 PUSH3 0x873 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH3 0x873 JUMP JUMPDEST PUSH32 0x2B421AF391835920C41E77B6810F6E715F5B713C17BC590F55DE6A7D3912E800 SWAP1 JUMP JUMPDEST PUSH3 0xB61 DUP2 CALLER PUSH3 0x1CF6 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x13CD PUSH3 0x1391 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x1404 SWAP2 SWAP1 PUSH3 0x28BB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH3 0x1428 PUSH3 0x154F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0x1438 DUP3 DUP5 PUSH3 0x1D33 JUMP JUMPDEST SWAP1 POP DUP1 PUSH3 0x145D JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x3DAD0DF5 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8E4 SWAP2 SWAP1 PUSH3 0x26EB JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH3 0x1479 DUP6 DUP3 PUSH3 0x297F JUMP JUMPDEST POP DUP3 DUP3 PUSH1 0x3 ADD DUP6 PUSH1 0x40 MLOAD PUSH3 0x148F SWAP2 SWAP1 PUSH3 0x28BB JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH32 0xBAD43A69707AC20DD539F3163B927E83BAEF6E967F2C95432129B1DED4166458 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH3 0x14D4 SWAP3 SWAP2 SWAP1 PUSH3 0x2A4B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x1513 PUSH3 0x197B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0x1523 DUP6 DUP6 PUSH3 0x1D41 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH3 0xDFA JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH3 0x1546 SWAP1 DUP6 PUSH3 0x1DEA JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x563E037355FFF0507705F481E4B362E4C3996A3B57D07307DEABFCA3D8168600 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x103F DUP4 DUP4 PUSH3 0x1E01 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x158E PUSH3 0x197B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0x159E DUP6 DUP6 PUSH3 0x1E19 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH3 0xDFA JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH3 0x1546 SWAP1 DUP6 PUSH3 0x1E97 JUMP JUMPDEST PUSH3 0x15CB PUSH3 0x1EAE JUMP JUMPDEST PUSH1 0x0 PUSH3 0x15D7 PUSH3 0x17ED JUMP JUMPDEST DUP1 SLOAD PUSH1 0xFF NOT AND DUP2 SSTORE SWAP1 POP PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA CALLER JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x1613 SWAP2 SWAP1 PUSH3 0x24B8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH3 0x16A8 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x169C PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F72 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH3 0x16C7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F52 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x971 DUP2 PUSH3 0x13B5 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH3 0x1741 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH3 0x173E SWAP2 DUP2 ADD SWAP1 PUSH3 0x2A6F JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH3 0x1763 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8E4 SWAP2 SWAP1 PUSH3 0x24B8 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F72 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 EQ PUSH3 0x1797 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH3 0x8E4 JUMP JUMPDEST PUSH3 0xB20 DUP4 DUP4 PUSH3 0x1ED6 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH3 0x16C7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0xCD5ED15C6E187E77E9AEE88184C21F4F2182AB5827CB3B7E07FBEDCD63F03300 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x1826 SWAP2 SWAP1 PUSH3 0x28BB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH3 0x184A PUSH3 0x154F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0x185A DUP3 DUP5 PUSH3 0x1F33 JUMP JUMPDEST SWAP1 POP DUP1 PUSH3 0x187B JUMPI PUSH1 0x40 MLOAD PUSH4 0x162E9267 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH3 0x1896 SWAP2 PUSH3 0x2424 JUMP JUMPDEST DUP2 PUSH1 0x3 ADD DUP5 PUSH1 0x40 MLOAD PUSH3 0x18AA SWAP2 SWAP1 PUSH3 0x28BB JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH32 0x57158EAA7E642CEFD761327D5CD6C147DDAAD706EC257F90F4D8B59B3D365EB7 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH3 0x14D4 SWAP3 SWAP2 SWAP1 PUSH3 0x2A4B JUMP JUMPDEST PUSH1 0x0 PUSH3 0x18FB PUSH3 0x1391 JUMP JUMPDEST PUSH1 0x2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH3 0x103F DUP4 PUSH3 0x1F41 JUMP JUMPDEST PUSH3 0x1939 PUSH3 0x1A7A JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1945 PUSH3 0x17ED JUMP JUMPDEST DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR DUP2 SSTORE SWAP1 POP PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH3 0x1604 CALLER SWAP1 JUMP JUMPDEST PUSH32 0xC1F6FE24621CE81EC5827CAF0253CADB74709B061630E6B55E82371705932000 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x103F DUP4 DUP4 PUSH3 0x1F9F JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH3 0x19DB PUSH3 0x1FCC JUMP JUMPDEST PUSH3 0x16C7 PUSH3 0x1FF4 JUMP JUMPDEST PUSH3 0x16C7 PUSH3 0x1FCC JUMP JUMPDEST PUSH1 0x0 PUSH3 0x19FB PUSH3 0x1391 JUMP JUMPDEST PUSH1 0x4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x873 DUP3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1A37 PUSH3 0x1391 JUMP JUMPDEST PUSH1 0x3 ADD SWAP2 SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1A4D PUSH3 0x2015 JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 NOT ADD PUSH3 0x1A74 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3EE5AEB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 SWAP1 SSTORE JUMP JUMPDEST PUSH3 0x1A84 PUSH3 0xCA8 JUMP JUMPDEST ISZERO PUSH3 0x16C7 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD93C0665 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH3 0x1AD1 JUMPI DUP3 PUSH1 0x40 MLOAD PUSH4 0x715397CD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8E4 SWAP2 SWAP1 PUSH3 0x24B8 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1ADD PUSH3 0x1264 JUMP JUMPDEST SWAP1 POP DUP1 CALLVALUE LT ISZERO PUSH3 0x1B0B JUMPI PUSH1 0x40 MLOAD PUSH4 0x53F01C63 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE CALLVALUE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH3 0x8E4 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1B17 PUSH3 0xFF8 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH3 0x1B49 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x37766F43 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8E4 SWAP2 SWAP1 PUSH3 0x24B8 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1B55 PUSH3 0xB85 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH3 0x1B87 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0xC9C10A61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8E4 SWAP2 SWAP1 PUSH3 0x24B8 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x40 MLOAD PUSH3 0x1B98 SWAP1 PUSH3 0x2463 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x1BD4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x33E1A223 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP8 SWAP1 MSTORE DUP10 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE DUP9 DUP2 AND PUSH1 0x84 DUP4 ADD MSTORE SWAP2 SWAP3 POP SWAP1 DUP3 AND SWAP1 PUSH4 0x33E1A223 SWAP1 PUSH1 0xA4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x1C3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x1C4F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE CALLER PUSH1 0x20 DUP3 ADD MSTORE PUSH3 0x1C74 SWAP3 POP DUP4 SWAP2 POP PUSH3 0x2039 JUMP JUMPDEST PUSH3 0x1C8F PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2FD2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH3 0x1506 JUMP JUMPDEST POP PUSH3 0x1CA5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND CALLVALUE PUSH3 0x209C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0x22DE16EF21E3A33810FBCAF0E737AB9C9E2854FA565D8535041456C789AFCD93 SWAP1 PUSH1 0x0 SWAP1 LOG2 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1CEF PUSH3 0x2015 JUMP JUMPDEST PUSH1 0x1 SWAP1 SSTORE POP JUMP JUMPDEST PUSH3 0x1D02 DUP3 DUP3 PUSH3 0xE02 JUMP JUMPDEST PUSH3 0x971 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE2517D3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH3 0x8E4 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x103F DUP4 DUP4 PUSH3 0x213F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x1D4E PUSH3 0x14E2 JUMP JUMPDEST SWAP1 POP PUSH3 0x1D5C DUP5 DUP5 PUSH3 0xE02 JUMP JUMPDEST PUSH3 0x1DDF JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH3 0x1D94 CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH3 0x873 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH3 0x873 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x103F DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH3 0x213F JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x1E26 PUSH3 0x14E2 JUMP JUMPDEST SWAP1 POP PUSH3 0x1E34 DUP5 DUP5 PUSH3 0xE02 JUMP JUMPDEST ISZERO PUSH3 0x1DDF JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP8 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH3 0x873 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x103F DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH3 0x218E JUMP JUMPDEST PUSH3 0x1EB8 PUSH3 0xCA8 JUMP JUMPDEST PUSH3 0x16C7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x8DFC202B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x1EE1 DUP3 PUSH3 0x2287 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH3 0x1F29 JUMPI PUSH3 0xB20 DUP3 DUP3 PUSH3 0x22E7 JUMP JUMPDEST PUSH3 0x971 PUSH3 0x2363 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x103F DUP4 DUP4 PUSH3 0x218E JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x0 ADD DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH3 0x1F93 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH3 0x1F7E JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH3 0x1FB9 JUMPI PUSH3 0x1FB9 PUSH3 0x2915 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x1FD6 PUSH3 0x2383 JUMP JUMPDEST PUSH3 0x16C7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1AFCD79F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x1FFE PUSH3 0x1FCC JUMP JUMPDEST PUSH1 0x0 PUSH3 0x200A PUSH3 0x17ED JUMP JUMPDEST DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE POP JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x2045 PUSH3 0x1391 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 SWAP1 SWAP2 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP4 MLOAD DUP2 SLOAD SWAP3 SWAP1 SWAP5 ADD MLOAD SWAP1 SWAP5 AND PUSH2 0x100 MUL PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT SWAP4 ISZERO ISZERO SWAP4 SWAP1 SWAP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT SWAP1 SWAP2 AND OR SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH3 0x20C8 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCF479181 PUSH1 0xE0 SHL DUP2 MSTORE SELFBALANCE PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 ADD PUSH3 0x8E4 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x2117 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x211C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH3 0xB20 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x214D DUP4 DUP4 PUSH3 0x1E01 JUMP JUMPDEST PUSH3 0x2185 JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP5 SWAP1 SSTORE DUP5 SLOAD DUP5 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH3 0x873 JUMP JUMPDEST POP PUSH1 0x0 PUSH3 0x873 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH3 0x1DDF JUMPI PUSH1 0x0 PUSH3 0x21B5 PUSH1 0x1 DUP4 PUSH3 0x2A89 JUMP JUMPDEST DUP6 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH3 0x21CB SWAP1 PUSH1 0x1 SWAP1 PUSH3 0x2A89 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 EQ PUSH3 0x2237 JUMPI PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH3 0x21EF JUMPI PUSH3 0x21EF PUSH3 0x2915 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP8 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH3 0x2215 JUMPI PUSH3 0x2215 PUSH3 0x2915 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 DUP3 MSTORE PUSH1 0x1 DUP9 ADD SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP4 SWAP1 SSTORE JUMPDEST DUP6 SLOAD DUP7 SWAP1 DUP1 PUSH3 0x224B JUMPI PUSH3 0x224B PUSH3 0x2AAB JUMP JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH1 0x1 SWAP4 POP POP POP POP PUSH3 0x873 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH3 0x22B7 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8E4 SWAP2 SWAP1 PUSH3 0x24B8 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F72 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH3 0x2306 SWAP2 SWAP1 PUSH3 0x28BB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x2343 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x2348 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH3 0x235A DUP6 DUP4 DUP4 PUSH3 0x239F JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH3 0x16C7 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x238F PUSH3 0x19AD JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH3 0x23B8 JUMPI PUSH3 0x23B2 DUP3 PUSH3 0x23FA JUMP JUMPDEST PUSH3 0x103F JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH3 0x23D0 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH3 0x23F3 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8E4 SWAP2 SWAP1 PUSH3 0x24B8 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH3 0x240B JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP1 SLOAD PUSH3 0x2432 SWAP1 PUSH3 0x28D9 JUMP JUMPDEST PUSH1 0x0 DUP3 SSTORE DUP1 PUSH1 0x1F LT PUSH3 0x2443 JUMPI POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH3 0xB61 SWAP2 SWAP1 PUSH3 0x2471 JUMP JUMPDEST PUSH2 0x410 DUP1 PUSH3 0x2AC2 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x2488 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x2472 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x249F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH3 0x103F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x24E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x24FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x103F DUP3 PUSH3 0x24CC JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP5 GT ISZERO PUSH3 0x253A JUMPI PUSH3 0x253A PUSH3 0x2507 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP6 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x2565 JUMPI PUSH3 0x2565 PUSH3 0x2507 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP1 SWAP4 POP DUP6 DUP2 MSTORE DUP7 DUP7 DUP7 ADD GT ISZERO PUSH3 0x257F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 DUP6 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP8 DUP4 ADD ADD MSTORE POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x25AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x25C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH3 0x25D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xDFA DUP5 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH3 0x251D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x25F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x2614 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH3 0x2626 PUSH1 0x20 DUP5 ADD PUSH3 0x24CC JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x2643 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x264E DUP4 PUSH3 0x24CC JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x266A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH3 0x267C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x268D DUP6 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH3 0x251D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x26B4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x269A JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH3 0x26D7 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH3 0x2697 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH3 0x103F PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x26BD JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x273A JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x271C JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x275A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH3 0x2783 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x278E DUP8 PUSH3 0x24CC JUMP JUMPDEST SWAP6 POP PUSH3 0x279E PUSH1 0x20 DUP9 ADD PUSH3 0x24CC JUMP JUMPDEST SWAP5 POP PUSH3 0x27AE PUSH1 0x40 DUP9 ADD PUSH3 0x24CC JUMP JUMPDEST SWAP4 POP PUSH3 0x27BE PUSH1 0x60 DUP9 ADD PUSH3 0x24CC JUMP JUMPDEST SWAP3 POP PUSH3 0x27CE PUSH1 0x80 DUP9 ADD PUSH3 0x24CC JUMP JUMPDEST SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x273A JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x27FD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD PUSH1 0x20 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP3 POP PUSH1 0x20 DUP8 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x287F JUMPI PUSH1 0x3F NOT DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH3 0x286C DUP6 DUP4 MLOAD PUSH3 0x26BD JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH3 0x284D JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x28A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x28AB DUP4 PUSH3 0x24CC JUMP JUMPDEST SWAP2 POP PUSH3 0x2626 PUSH1 0x20 DUP5 ADD PUSH3 0x24CC JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH3 0x28CF DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH3 0x2697 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x28EE JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x290F JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0xB20 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH3 0x2956 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x2977 JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x2962 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x299B JUMPI PUSH3 0x299B PUSH3 0x2507 JUMP JUMPDEST PUSH3 0x29B3 DUP2 PUSH3 0x29AC DUP5 SLOAD PUSH3 0x28D9 JUMP JUMPDEST DUP5 PUSH3 0x292B JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x29EB JUMPI PUSH1 0x0 DUP5 ISZERO PUSH3 0x29D2 JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH3 0x2977 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x2A1C JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH3 0x29FB JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH3 0x2A3B JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH3 0x2A60 PUSH1 0x40 DUP4 ADD DUP6 PUSH3 0x26BD JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x2A82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH3 0x873 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x410 CODESIZE SUB DUP1 PUSH2 0x410 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x25A JUMP JUMPDEST PUSH2 0x2C DUP3 DUP3 PUSH2 0x33 JUMP JUMPDEST POP POP PUSH2 0x358 JUMP JUMPDEST PUSH2 0x3C DUP3 PUSH2 0x92 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x86 JUMPI PUSH2 0x81 DUP3 DUP3 PUSH2 0x109 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x8E PUSH2 0x180 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH2 0xC8 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF SWAP2 SWAP1 PUSH2 0x328 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x126 SWAP2 SWAP1 PUSH2 0x33C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x161 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x166 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x177 DUP6 DUP4 DUP4 PUSH2 0x1A1 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x19F JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x1B6 JUMPI PUSH2 0x1B1 DUP3 PUSH2 0x1F7 JUMP JUMPDEST PUSH2 0x1F0 JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x1CD JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x1ED JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF SWAP2 SWAP1 PUSH2 0x328 JUMP JUMPDEST POP DUP1 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x207 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x251 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x239 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x26D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x284 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x2A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x2C7 JUMPI PUSH2 0x2C7 PUSH2 0x220 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x2EF JUMPI PUSH2 0x2EF PUSH2 0x220 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x308 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x319 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x236 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x34E DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x236 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xAA DUP1 PUSH2 0x366 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0xA PUSH1 0xC JUMP JUMPDEST STOP JUMPDEST PUSH1 0x18 PUSH1 0x14 PUSH1 0x1A JUMP JUMPDEST PUSH1 0x51 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4C PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH1 0x6F JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 POP LT 0xFB 0xD3 CALLDATASIZE BALANCE 0x4F CREATE2 EQ 0xE3 0xC3 0xA5 0xED SWAP9 0xAE 0xD1 0xC9 0xC9 PUSH11 0x5210A9DF6DC914E2A04BBE PUSH24 0x2564736F6C6343000818003330F3325E23B502DCE693B147 0xD3 PUSH30 0xE928D14DD5AB09BBC928FB79867329AC5B83DCCFB718B018E1B06F849958 0xBA 0xF6 PUSH28 0xB252302F06A69871F72C5127EE92F659D349EEC46D2C564A125684D NOT CALLVALUE 0xA6 SLT EXP PUSH17 0xCC341D3A26D362E358A775E07DEC176A42 0x24 SWAP8 ADDMOD BLOCKHASH EXTCODEHASH MCOPY 0xD2 DUP12 DELEGATECALL SWAP3 STATICCALL 0xCD GT 0xE8 JUMPDEST 0xC1 SDIV 0x4E PUSH13 0x27C155ED468F6FF4F7ECD0189A 0xB7 0xA9 0x24 0x4D CREATE DUP5 DUP2 0x22 ISZERO NUMBER ISZERO 0xAF PUSH18 0xFE140F3DB0FE014031783B0946B8C9D2E336 ADDMOD SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC65D7A28E3265B37A647492 SWAP16 CALLER PUSH6 0x21B332C1681B SWAP4 EXTCODEHASH PUSH13 0xB9F3376673440D862A819590C8 EQ 0xC6 0xD2 PUSH26 0x357359F817D25ADB06A7B9F6E493592B7D3B8BB268ADB6764F22 DUP8 SHR PUSH25 0xB70C8896C7119179FC4E9B6F4CF323F8DB6EADB7D79007D1E0 0xC EXTCODEHASH LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD PUSH7 0x28730B2D330EB2 0xE1 PUSH14 0xD8190C75AA9580D54D6CF9599D06 PUSH14 0x9A36E02F067264736F6C63430008 XOR STOP CALLER ", + "sourceMap": "2315:18022:54:-:0;;;1171:4:3;1128:48;;9531:53:54;;;;;;;;;-1:-1:-1;9555:22:54;:20;:22::i;:::-;2315:18022;;7711:422:2;8870:21;7900:15;;;;;;;7896:76;;;7938:23;;-1:-1:-1;;;7938:23:2;;;;;;;;;;;7896:76;7985:14;;-1:-1:-1;;;;;7985:14:2;;;:34;7981:146;;8035:33;;-1:-1:-1;;;;;;8035:33:2;-1:-1:-1;;;;;8035:33:2;;;;;8087:29;;158:50:61;;;8087:29:2;;146:2:61;131:18;8087:29:2;;;;;;;7981:146;7760:373;7711:422::o;14:200:61:-;2315:18022:54;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@CMACCOUNT_ROLE_16111": { + "entryPoint": null, + "id": 16111, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@DEFAULT_ADMIN_ROLE_28": { + "entryPoint": null, + "id": 28, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@DEVELOPER_WALLET_ADMIN_ROLE_16093": { + "entryPoint": null, + "id": 16093, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@FEE_ADMIN_ROLE_16087": { + "entryPoint": null, + "id": 16087, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@PAUSER_ROLE_16069": { + "entryPoint": null, + "id": 16069, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@PREFUND_ADMIN_ROLE_16099": { + "entryPoint": null, + "id": 16099, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@SERVICE_REGISTRY_ADMIN_ROLE_16105": { + "entryPoint": null, + "id": 16105, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@UPGRADER_ROLE_16075": { + "entryPoint": null, + "id": 16075, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@UPGRADE_INTERFACE_VERSION_864": { + "entryPoint": null, + "id": 864, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@VERSIONER_ROLE_16081": { + "entryPoint": null, + "id": 16081, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@__AccessControl_init_63": { + "entryPoint": 6629, + "id": 63, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@__Pausable_init_2854": { + "entryPoint": 6609, + "id": 2854, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@__Pausable_init_unchained_2872": { + "entryPoint": 8180, + "id": 2872, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@__UUPSUpgradeable_init_894": { + "entryPoint": null, + "id": 894, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_add_9957": { + "entryPoint": 8511, + "id": 9957, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_at_10091": { + "entryPoint": 8095, + "id": 10091, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_authorizeUpgrade_16323": { + "entryPoint": 5833, + "id": 16323, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_checkInitializing_762": { + "entryPoint": 8140, + "id": 762, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_checkNonPayable_3873": { + "entryPoint": 9059, + "id": 3873, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_checkNotDelegated_970": { + "entryPoint": 6051, + "id": 970, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_checkProxy_954": { + "entryPoint": 5662, + "id": 954, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_checkRole_129": { + "entryPoint": 5045, + "id": 129, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_checkRole_150": { + "entryPoint": 7414, + "id": 150, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_contains_10060": { + "entryPoint": 7681, + "id": 10060, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_createCMAccount_16483": { + "entryPoint": 6819, + "id": 16483, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_getAccessControlEnumerableStorage_401": { + "entryPoint": 6523, + "id": 401, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getAccessControlStorage_46": { + "entryPoint": 5346, + "id": 46, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getCMAccountManagerStorage_16151": { + "entryPoint": 5009, + "id": 16151, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getInitializableStorage_839": { + "entryPoint": 6573, + "id": 839, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getPausableStorage_2828": { + "entryPoint": 6125, + "id": 2828, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getReentrancyGuardStorage_3006": { + "entryPoint": 8213, + "id": 3006, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getServiceRegistryStorage_17873": { + "entryPoint": 5455, + "id": 17873, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_grantRole_315": { + "entryPoint": 7489, + "id": 315, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_grantRole_545": { + "entryPoint": 5382, + "id": 545, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_isInitializing_830": { + "entryPoint": 9091, + "id": 830, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_length_10074": { + "entryPoint": null, + "id": 10074, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@_msgSender_2784": { + "entryPoint": null, + "id": 2784, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_nonReentrantAfter_3088": { + "entryPoint": 7395, + "id": 3088, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_nonReentrantBefore_3072": { + "entryPoint": 6721, + "id": 3072, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_pause_2953": { + "entryPoint": 6447, + "id": 2953, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_registerServiceName_17962": { + "entryPoint": 5103, + "id": 17962, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_remove_10041": { + "entryPoint": 8590, + "id": 10041, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_requireNotPaused_2916": { + "entryPoint": 6778, + "id": 2916, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_requirePaused_2929": { + "entryPoint": 7854, + "id": 2929, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_revert_5480": { + "entryPoint": 9210, + "id": 5480, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_revokeRole_361": { + "entryPoint": 7705, + "id": 361, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_revokeRole_585": { + "entryPoint": 5505, + "id": 585, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_setAccountImplementation_16617": { + "entryPoint": 5057, + "id": 16617, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_setBookingTokenAddress_16724": { + "entryPoint": 6639, + "id": 16724, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_setCMAccountInfo_16506": { + "entryPoint": 8249, + "id": 16506, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_setDeveloperFeeBp_16852": { + "entryPoint": 6699, + "id": 16852, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_setDeveloperWallet_16794": { + "entryPoint": 6383, + "id": 16794, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_setImplementation_3653": { + "entryPoint": 8839, + "id": 3653, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_unpause_2977": { + "entryPoint": 5569, + "id": 2977, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_unregisterServiceName_18016": { + "entryPoint": 6161, + "id": 18016, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_upgradeToAndCallUUPS_1021": { + "entryPoint": 5860, + "id": 1021, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_values_10105": { + "entryPoint": 8001, + "id": 10105, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@add_10127": { + "entryPoint": 7475, + "id": 10127, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@add_10257": { + "entryPoint": 7658, + "id": 10257, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@at_10353": { + "entryPoint": 6559, + "id": 10353, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@contains_10163": { + "entryPoint": 5491, + "id": 10163, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@createCMAccount_16343": { + "entryPoint": 4908, + "id": 16343, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@functionDelegateCall_5398": { + "entryPoint": 8935, + "id": 5398, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@getAccountImplementation_16564": { + "entryPoint": 4088, + "id": 16564, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getAddressSlot_5620": { + "entryPoint": null, + "id": 5620, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getAllRegisteredServiceHashes_18102": { + "entryPoint": 3466, + "id": 18102, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getAllRegisteredServiceNames_18164": { + "entryPoint": 4335, + "id": 18164, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getBookingTokenAddress_16671": { + "entryPoint": 2949, + "id": 16671, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getCMAccountCreator_16527": { + "entryPoint": 2555, + "id": 16527, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getDeveloperFeeBp_16810": { + "entryPoint": 2853, + "id": 16810, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getDeveloperWallet_16740": { + "entryPoint": 2169, + "id": 16740, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getImplementation_3626": { + "entryPoint": null, + "id": 3626, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getPrefundAmount_16633": { + "entryPoint": 4708, + "id": 16633, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getRegisteredServiceHashByName_18083": { + "entryPoint": 2651, + "id": 18083, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getRegisteredServiceNameByHash_18047": { + "entryPoint": 3013, + "id": 18047, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getRoleAdmin_171": { + "entryPoint": 2521, + "id": 171, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getRoleMemberCount_482": { + "entryPoint": 4731, + "id": 482, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getRoleMember_460": { + "entryPoint": 3536, + "id": 460, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@getRoleMembers_505": { + "entryPoint": 4117, + "id": 505, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@grantRole_190": { + "entryPoint": 2611, + "id": 190, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@hasRole_116": { + "entryPoint": 3586, + "id": 116, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@initialize_16290": { + "entryPoint": 3642, + "id": 16290, + "parameterSlots": 6, + "returnSlots": 0 + }, + "@isCMAccount_16548": { + "entryPoint": 2421, + "id": 16548, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@length_10326": { + "entryPoint": 6688, + "id": 10326, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@pause_16301": { + "entryPoint": 3499, + "id": 16301, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@paused_2904": { + "entryPoint": 3240, + "id": 2904, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@proxiableUUID_912": { + "entryPoint": 2981, + "id": 912, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@registerService_16866": { + "entryPoint": 2379, + "id": 16866, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@remove_10145": { + "entryPoint": 7987, + "id": 10145, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@remove_10284": { + "entryPoint": 7831, + "id": 10284, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@renounceRole_232": { + "entryPoint": 2794, + "id": 232, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@revokeRole_209": { + "entryPoint": 4772, + "id": 209, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@sendValue_5279": { + "entryPoint": 8348, + "id": 5279, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@setAccountImplementation_16599": { + "entryPoint": 2201, + "id": 16599, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@setBookingTokenAddress_16706": { + "entryPoint": 4166, + "id": 16706, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@setDeveloperFeeBp_16834": { + "entryPoint": 4806, + "id": 16834, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@setDeveloperWallet_16776": { + "entryPoint": 3301, + "id": 16776, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@setPrefundAmount_16655": { + "entryPoint": 2471, + "id": 16655, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@supportsInterface_3146": { + "entryPoint": null, + "id": 3146, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@supportsInterface_435": { + "entryPoint": 2123, + "id": 435, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@supportsInterface_91": { + "entryPoint": 4954, + "id": 91, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@unpause_16312": { + "entryPoint": 2876, + "id": 16312, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@unregisterService_16880": { + "entryPoint": 3263, + "id": 16880, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@upgradeToAndCall_3689": { + "entryPoint": 7894, + "id": 3689, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@upgradeToAndCall_932": { + "entryPoint": 2916, + "id": 932, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@values_10226": { + "entryPoint": 6432, + "id": 10226, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@values_10383": { + "entryPoint": null, + "id": 10383, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@verifyCallResultFromTarget_5438": { + "entryPoint": 9119, + "id": 5438, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_decode_address": { + "entryPoint": 9420, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_decode_available_length_string": { + "entryPoint": 9501, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address": { + "entryPoint": 9449, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_address": { + "entryPoint": 10380, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_addresst_addresst_addresst_addresst_addresst_uint256": { + "entryPoint": 10089, + "id": null, + "parameterSlots": 2, + "returnSlots": 6 + }, + "abi_decode_tuple_t_addresst_bytes_memory_ptr": { + "entryPoint": 9775, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_bytes32": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32_fromMemory": { + "entryPoint": 10863, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32t_address": { + "entryPoint": 9728, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_bytes32t_uint256": { + "entryPoint": 10054, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_bytes4": { + "entryPoint": 9356, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_string_memory_ptr": { + "entryPoint": 9625, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256": { + "entryPoint": 9702, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_string": { + "entryPoint": 9917, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": 10427, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": 9400, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address_t_uint256_t_address_t_address__to_t_address_t_address_t_uint256_t_address_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 6, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_bytes_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 10209, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 9984, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_array$_t_string_memory_ptr_$dyn_memory_ptr__to_t_array$_t_string_memory_ptr_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 10276, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": 9963, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_string_memory_ptr_t_bytes32__to_t_string_memory_ptr_t_bytes32__fromStack_reversed": { + "entryPoint": 10827, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "array_dataslot_string_storage": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "checked_sub_t_uint256": { + "entryPoint": 10889, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "clean_up_bytearray_end_slots_string_storage": { + "entryPoint": 10539, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage": { + "entryPoint": 10623, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "copy_memory_to_memory_with_cleanup": { + "entryPoint": 9879, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "extract_byte_array_length": { + "entryPoint": 10457, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "extract_used_part_and_set_length_of_short_byte_array": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "panic_error_0x31": { + "entryPoint": 10923, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x32": { + "entryPoint": 10517, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x41": { + "entryPoint": 9479, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nativeSrc": "0:13786:61", + "nodeType": "YulBlock", + "src": "0:13786:61", + "statements": [ + { + "nativeSrc": "6:3:61", + "nodeType": "YulBlock", + "src": "6:3:61", + "statements": [] + }, + { + "body": { + "nativeSrc": "115:76:61", + "nodeType": "YulBlock", + "src": "115:76:61", + "statements": [ + { + "nativeSrc": "125:26:61", + "nodeType": "YulAssignment", + "src": "125:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "137:9:61", + "nodeType": "YulIdentifier", + "src": "137:9:61" + }, + { + "kind": "number", + "nativeSrc": "148:2:61", + "nodeType": "YulLiteral", + "src": "148:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "133:3:61", + "nodeType": "YulIdentifier", + "src": "133:3:61" + }, + "nativeSrc": "133:18:61", + "nodeType": "YulFunctionCall", + "src": "133:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "125:4:61", + "nodeType": "YulIdentifier", + "src": "125:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "167:9:61", + "nodeType": "YulIdentifier", + "src": "167:9:61" + }, + { + "name": "value0", + "nativeSrc": "178:6:61", + "nodeType": "YulIdentifier", + "src": "178:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "160:6:61", + "nodeType": "YulIdentifier", + "src": "160:6:61" + }, + "nativeSrc": "160:25:61", + "nodeType": "YulFunctionCall", + "src": "160:25:61" + }, + "nativeSrc": "160:25:61", + "nodeType": "YulExpressionStatement", + "src": "160:25:61" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed", + "nativeSrc": "14:177:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "84:9:61", + "nodeType": "YulTypedName", + "src": "84:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "95:6:61", + "nodeType": "YulTypedName", + "src": "95:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "106:4:61", + "nodeType": "YulTypedName", + "src": "106:4:61", + "type": "" + } + ], + "src": "14:177:61" + }, + { + "body": { + "nativeSrc": "265:217:61", + "nodeType": "YulBlock", + "src": "265:217:61", + "statements": [ + { + "body": { + "nativeSrc": "311:16:61", + "nodeType": "YulBlock", + "src": "311:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "320:1:61", + "nodeType": "YulLiteral", + "src": "320:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "323:1:61", + "nodeType": "YulLiteral", + "src": "323:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "313:6:61", + "nodeType": "YulIdentifier", + "src": "313:6:61" + }, + "nativeSrc": "313:12:61", + "nodeType": "YulFunctionCall", + "src": "313:12:61" + }, + "nativeSrc": "313:12:61", + "nodeType": "YulExpressionStatement", + "src": "313:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "286:7:61", + "nodeType": "YulIdentifier", + "src": "286:7:61" + }, + { + "name": "headStart", + "nativeSrc": "295:9:61", + "nodeType": "YulIdentifier", + "src": "295:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "282:3:61", + "nodeType": "YulIdentifier", + "src": "282:3:61" + }, + "nativeSrc": "282:23:61", + "nodeType": "YulFunctionCall", + "src": "282:23:61" + }, + { + "kind": "number", + "nativeSrc": "307:2:61", + "nodeType": "YulLiteral", + "src": "307:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "278:3:61", + "nodeType": "YulIdentifier", + "src": "278:3:61" + }, + "nativeSrc": "278:32:61", + "nodeType": "YulFunctionCall", + "src": "278:32:61" + }, + "nativeSrc": "275:52:61", + "nodeType": "YulIf", + "src": "275:52:61" + }, + { + "nativeSrc": "336:36:61", + "nodeType": "YulVariableDeclaration", + "src": "336:36:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "362:9:61", + "nodeType": "YulIdentifier", + "src": "362:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "349:12:61", + "nodeType": "YulIdentifier", + "src": "349:12:61" + }, + "nativeSrc": "349:23:61", + "nodeType": "YulFunctionCall", + "src": "349:23:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "340:5:61", + "nodeType": "YulTypedName", + "src": "340:5:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "436:16:61", + "nodeType": "YulBlock", + "src": "436:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "445:1:61", + "nodeType": "YulLiteral", + "src": "445:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "448:1:61", + "nodeType": "YulLiteral", + "src": "448:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "438:6:61", + "nodeType": "YulIdentifier", + "src": "438:6:61" + }, + "nativeSrc": "438:12:61", + "nodeType": "YulFunctionCall", + "src": "438:12:61" + }, + "nativeSrc": "438:12:61", + "nodeType": "YulExpressionStatement", + "src": "438:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "394:5:61", + "nodeType": "YulIdentifier", + "src": "394:5:61" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "405:5:61", + "nodeType": "YulIdentifier", + "src": "405:5:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "416:3:61", + "nodeType": "YulLiteral", + "src": "416:3:61", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "421:10:61", + "nodeType": "YulLiteral", + "src": "421:10:61", + "type": "", + "value": "0xffffffff" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "412:3:61", + "nodeType": "YulIdentifier", + "src": "412:3:61" + }, + "nativeSrc": "412:20:61", + "nodeType": "YulFunctionCall", + "src": "412:20:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "401:3:61", + "nodeType": "YulIdentifier", + "src": "401:3:61" + }, + "nativeSrc": "401:32:61", + "nodeType": "YulFunctionCall", + "src": "401:32:61" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "391:2:61", + "nodeType": "YulIdentifier", + "src": "391:2:61" + }, + "nativeSrc": "391:43:61", + "nodeType": "YulFunctionCall", + "src": "391:43:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "384:6:61", + "nodeType": "YulIdentifier", + "src": "384:6:61" + }, + "nativeSrc": "384:51:61", + "nodeType": "YulFunctionCall", + "src": "384:51:61" + }, + "nativeSrc": "381:71:61", + "nodeType": "YulIf", + "src": "381:71:61" + }, + { + "nativeSrc": "461:15:61", + "nodeType": "YulAssignment", + "src": "461:15:61", + "value": { + "name": "value", + "nativeSrc": "471:5:61", + "nodeType": "YulIdentifier", + "src": "471:5:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "461:6:61", + "nodeType": "YulIdentifier", + "src": "461:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes4", + "nativeSrc": "196:286:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "231:9:61", + "nodeType": "YulTypedName", + "src": "231:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "242:7:61", + "nodeType": "YulTypedName", + "src": "242:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "254:6:61", + "nodeType": "YulTypedName", + "src": "254:6:61", + "type": "" + } + ], + "src": "196:286:61" + }, + { + "body": { + "nativeSrc": "582:92:61", + "nodeType": "YulBlock", + "src": "582:92:61", + "statements": [ + { + "nativeSrc": "592:26:61", + "nodeType": "YulAssignment", + "src": "592:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "604:9:61", + "nodeType": "YulIdentifier", + "src": "604:9:61" + }, + { + "kind": "number", + "nativeSrc": "615:2:61", + "nodeType": "YulLiteral", + "src": "615:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "600:3:61", + "nodeType": "YulIdentifier", + "src": "600:3:61" + }, + "nativeSrc": "600:18:61", + "nodeType": "YulFunctionCall", + "src": "600:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "592:4:61", + "nodeType": "YulIdentifier", + "src": "592:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "634:9:61", + "nodeType": "YulIdentifier", + "src": "634:9:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "659:6:61", + "nodeType": "YulIdentifier", + "src": "659:6:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "652:6:61", + "nodeType": "YulIdentifier", + "src": "652:6:61" + }, + "nativeSrc": "652:14:61", + "nodeType": "YulFunctionCall", + "src": "652:14:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "645:6:61", + "nodeType": "YulIdentifier", + "src": "645:6:61" + }, + "nativeSrc": "645:22:61", + "nodeType": "YulFunctionCall", + "src": "645:22:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "627:6:61", + "nodeType": "YulIdentifier", + "src": "627:6:61" + }, + "nativeSrc": "627:41:61", + "nodeType": "YulFunctionCall", + "src": "627:41:61" + }, + "nativeSrc": "627:41:61", + "nodeType": "YulExpressionStatement", + "src": "627:41:61" + } + ] + }, + "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", + "nativeSrc": "487:187:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "551:9:61", + "nodeType": "YulTypedName", + "src": "551:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "562:6:61", + "nodeType": "YulTypedName", + "src": "562:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "573:4:61", + "nodeType": "YulTypedName", + "src": "573:4:61", + "type": "" + } + ], + "src": "487:187:61" + }, + { + "body": { + "nativeSrc": "780:102:61", + "nodeType": "YulBlock", + "src": "780:102:61", + "statements": [ + { + "nativeSrc": "790:26:61", + "nodeType": "YulAssignment", + "src": "790:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "802:9:61", + "nodeType": "YulIdentifier", + "src": "802:9:61" + }, + { + "kind": "number", + "nativeSrc": "813:2:61", + "nodeType": "YulLiteral", + "src": "813:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "798:3:61", + "nodeType": "YulIdentifier", + "src": "798:3:61" + }, + "nativeSrc": "798:18:61", + "nodeType": "YulFunctionCall", + "src": "798:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "790:4:61", + "nodeType": "YulIdentifier", + "src": "790:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "832:9:61", + "nodeType": "YulIdentifier", + "src": "832:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "847:6:61", + "nodeType": "YulIdentifier", + "src": "847:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "863:3:61", + "nodeType": "YulLiteral", + "src": "863:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "868:1:61", + "nodeType": "YulLiteral", + "src": "868:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "859:3:61", + "nodeType": "YulIdentifier", + "src": "859:3:61" + }, + "nativeSrc": "859:11:61", + "nodeType": "YulFunctionCall", + "src": "859:11:61" + }, + { + "kind": "number", + "nativeSrc": "872:1:61", + "nodeType": "YulLiteral", + "src": "872:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "855:3:61", + "nodeType": "YulIdentifier", + "src": "855:3:61" + }, + "nativeSrc": "855:19:61", + "nodeType": "YulFunctionCall", + "src": "855:19:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "843:3:61", + "nodeType": "YulIdentifier", + "src": "843:3:61" + }, + "nativeSrc": "843:32:61", + "nodeType": "YulFunctionCall", + "src": "843:32:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "825:6:61", + "nodeType": "YulIdentifier", + "src": "825:6:61" + }, + "nativeSrc": "825:51:61", + "nodeType": "YulFunctionCall", + "src": "825:51:61" + }, + "nativeSrc": "825:51:61", + "nodeType": "YulExpressionStatement", + "src": "825:51:61" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nativeSrc": "679:203:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "749:9:61", + "nodeType": "YulTypedName", + "src": "749:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "760:6:61", + "nodeType": "YulTypedName", + "src": "760:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "771:4:61", + "nodeType": "YulTypedName", + "src": "771:4:61", + "type": "" + } + ], + "src": "679:203:61" + }, + { + "body": { + "nativeSrc": "936:124:61", + "nodeType": "YulBlock", + "src": "936:124:61", + "statements": [ + { + "nativeSrc": "946:29:61", + "nodeType": "YulAssignment", + "src": "946:29:61", + "value": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "968:6:61", + "nodeType": "YulIdentifier", + "src": "968:6:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "955:12:61", + "nodeType": "YulIdentifier", + "src": "955:12:61" + }, + "nativeSrc": "955:20:61", + "nodeType": "YulFunctionCall", + "src": "955:20:61" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "946:5:61", + "nodeType": "YulIdentifier", + "src": "946:5:61" + } + ] + }, + { + "body": { + "nativeSrc": "1038:16:61", + "nodeType": "YulBlock", + "src": "1038:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1047:1:61", + "nodeType": "YulLiteral", + "src": "1047:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1050:1:61", + "nodeType": "YulLiteral", + "src": "1050:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1040:6:61", + "nodeType": "YulIdentifier", + "src": "1040:6:61" + }, + "nativeSrc": "1040:12:61", + "nodeType": "YulFunctionCall", + "src": "1040:12:61" + }, + "nativeSrc": "1040:12:61", + "nodeType": "YulExpressionStatement", + "src": "1040:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "997:5:61", + "nodeType": "YulIdentifier", + "src": "997:5:61" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "1008:5:61", + "nodeType": "YulIdentifier", + "src": "1008:5:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1023:3:61", + "nodeType": "YulLiteral", + "src": "1023:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "1028:1:61", + "nodeType": "YulLiteral", + "src": "1028:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "1019:3:61", + "nodeType": "YulIdentifier", + "src": "1019:3:61" + }, + "nativeSrc": "1019:11:61", + "nodeType": "YulFunctionCall", + "src": "1019:11:61" + }, + { + "kind": "number", + "nativeSrc": "1032:1:61", + "nodeType": "YulLiteral", + "src": "1032:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "1015:3:61", + "nodeType": "YulIdentifier", + "src": "1015:3:61" + }, + "nativeSrc": "1015:19:61", + "nodeType": "YulFunctionCall", + "src": "1015:19:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1004:3:61", + "nodeType": "YulIdentifier", + "src": "1004:3:61" + }, + "nativeSrc": "1004:31:61", + "nodeType": "YulFunctionCall", + "src": "1004:31:61" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "994:2:61", + "nodeType": "YulIdentifier", + "src": "994:2:61" + }, + "nativeSrc": "994:42:61", + "nodeType": "YulFunctionCall", + "src": "994:42:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "987:6:61", + "nodeType": "YulIdentifier", + "src": "987:6:61" + }, + "nativeSrc": "987:50:61", + "nodeType": "YulFunctionCall", + "src": "987:50:61" + }, + "nativeSrc": "984:70:61", + "nodeType": "YulIf", + "src": "984:70:61" + } + ] + }, + "name": "abi_decode_address", + "nativeSrc": "887:173:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nativeSrc": "915:6:61", + "nodeType": "YulTypedName", + "src": "915:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nativeSrc": "926:5:61", + "nodeType": "YulTypedName", + "src": "926:5:61", + "type": "" + } + ], + "src": "887:173:61" + }, + { + "body": { + "nativeSrc": "1135:116:61", + "nodeType": "YulBlock", + "src": "1135:116:61", + "statements": [ + { + "body": { + "nativeSrc": "1181:16:61", + "nodeType": "YulBlock", + "src": "1181:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1190:1:61", + "nodeType": "YulLiteral", + "src": "1190:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1193:1:61", + "nodeType": "YulLiteral", + "src": "1193:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1183:6:61", + "nodeType": "YulIdentifier", + "src": "1183:6:61" + }, + "nativeSrc": "1183:12:61", + "nodeType": "YulFunctionCall", + "src": "1183:12:61" + }, + "nativeSrc": "1183:12:61", + "nodeType": "YulExpressionStatement", + "src": "1183:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "1156:7:61", + "nodeType": "YulIdentifier", + "src": "1156:7:61" + }, + { + "name": "headStart", + "nativeSrc": "1165:9:61", + "nodeType": "YulIdentifier", + "src": "1165:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "1152:3:61", + "nodeType": "YulIdentifier", + "src": "1152:3:61" + }, + "nativeSrc": "1152:23:61", + "nodeType": "YulFunctionCall", + "src": "1152:23:61" + }, + { + "kind": "number", + "nativeSrc": "1177:2:61", + "nodeType": "YulLiteral", + "src": "1177:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "1148:3:61", + "nodeType": "YulIdentifier", + "src": "1148:3:61" + }, + "nativeSrc": "1148:32:61", + "nodeType": "YulFunctionCall", + "src": "1148:32:61" + }, + "nativeSrc": "1145:52:61", + "nodeType": "YulIf", + "src": "1145:52:61" + }, + { + "nativeSrc": "1206:39:61", + "nodeType": "YulAssignment", + "src": "1206:39:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1235:9:61", + "nodeType": "YulIdentifier", + "src": "1235:9:61" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "1216:18:61", + "nodeType": "YulIdentifier", + "src": "1216:18:61" + }, + "nativeSrc": "1216:29:61", + "nodeType": "YulFunctionCall", + "src": "1216:29:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "1206:6:61", + "nodeType": "YulIdentifier", + "src": "1206:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nativeSrc": "1065:186:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "1101:9:61", + "nodeType": "YulTypedName", + "src": "1101:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "1112:7:61", + "nodeType": "YulTypedName", + "src": "1112:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "1124:6:61", + "nodeType": "YulTypedName", + "src": "1124:6:61", + "type": "" + } + ], + "src": "1065:186:61" + }, + { + "body": { + "nativeSrc": "1288:95:61", + "nodeType": "YulBlock", + "src": "1288:95:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1305:1:61", + "nodeType": "YulLiteral", + "src": "1305:1:61", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1312:3:61", + "nodeType": "YulLiteral", + "src": "1312:3:61", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "1317:10:61", + "nodeType": "YulLiteral", + "src": "1317:10:61", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "1308:3:61", + "nodeType": "YulIdentifier", + "src": "1308:3:61" + }, + "nativeSrc": "1308:20:61", + "nodeType": "YulFunctionCall", + "src": "1308:20:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1298:6:61", + "nodeType": "YulIdentifier", + "src": "1298:6:61" + }, + "nativeSrc": "1298:31:61", + "nodeType": "YulFunctionCall", + "src": "1298:31:61" + }, + "nativeSrc": "1298:31:61", + "nodeType": "YulExpressionStatement", + "src": "1298:31:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1345:1:61", + "nodeType": "YulLiteral", + "src": "1345:1:61", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "1348:4:61", + "nodeType": "YulLiteral", + "src": "1348:4:61", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1338:6:61", + "nodeType": "YulIdentifier", + "src": "1338:6:61" + }, + "nativeSrc": "1338:15:61", + "nodeType": "YulFunctionCall", + "src": "1338:15:61" + }, + "nativeSrc": "1338:15:61", + "nodeType": "YulExpressionStatement", + "src": "1338:15:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1369:1:61", + "nodeType": "YulLiteral", + "src": "1369:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1372:4:61", + "nodeType": "YulLiteral", + "src": "1372:4:61", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1362:6:61", + "nodeType": "YulIdentifier", + "src": "1362:6:61" + }, + "nativeSrc": "1362:15:61", + "nodeType": "YulFunctionCall", + "src": "1362:15:61" + }, + "nativeSrc": "1362:15:61", + "nodeType": "YulExpressionStatement", + "src": "1362:15:61" + } + ] + }, + "name": "panic_error_0x41", + "nativeSrc": "1256:127:61", + "nodeType": "YulFunctionDefinition", + "src": "1256:127:61" + }, + { + "body": { + "nativeSrc": "1463:557:61", + "nodeType": "YulBlock", + "src": "1463:557:61", + "statements": [ + { + "nativeSrc": "1473:28:61", + "nodeType": "YulVariableDeclaration", + "src": "1473:28:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1491:2:61", + "nodeType": "YulLiteral", + "src": "1491:2:61", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "1495:1:61", + "nodeType": "YulLiteral", + "src": "1495:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "1487:3:61", + "nodeType": "YulIdentifier", + "src": "1487:3:61" + }, + "nativeSrc": "1487:10:61", + "nodeType": "YulFunctionCall", + "src": "1487:10:61" + }, + { + "kind": "number", + "nativeSrc": "1499:1:61", + "nodeType": "YulLiteral", + "src": "1499:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "1483:3:61", + "nodeType": "YulIdentifier", + "src": "1483:3:61" + }, + "nativeSrc": "1483:18:61", + "nodeType": "YulFunctionCall", + "src": "1483:18:61" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "1477:2:61", + "nodeType": "YulTypedName", + "src": "1477:2:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "1528:22:61", + "nodeType": "YulBlock", + "src": "1528:22:61", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "1530:16:61", + "nodeType": "YulIdentifier", + "src": "1530:16:61" + }, + "nativeSrc": "1530:18:61", + "nodeType": "YulFunctionCall", + "src": "1530:18:61" + }, + "nativeSrc": "1530:18:61", + "nodeType": "YulExpressionStatement", + "src": "1530:18:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nativeSrc": "1516:6:61", + "nodeType": "YulIdentifier", + "src": "1516:6:61" + }, + { + "name": "_1", + "nativeSrc": "1524:2:61", + "nodeType": "YulIdentifier", + "src": "1524:2:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "1513:2:61", + "nodeType": "YulIdentifier", + "src": "1513:2:61" + }, + "nativeSrc": "1513:14:61", + "nodeType": "YulFunctionCall", + "src": "1513:14:61" + }, + "nativeSrc": "1510:40:61", + "nodeType": "YulIf", + "src": "1510:40:61" + }, + { + "nativeSrc": "1559:17:61", + "nodeType": "YulVariableDeclaration", + "src": "1559:17:61", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1573:2:61", + "nodeType": "YulLiteral", + "src": "1573:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "1569:3:61", + "nodeType": "YulIdentifier", + "src": "1569:3:61" + }, + "nativeSrc": "1569:7:61", + "nodeType": "YulFunctionCall", + "src": "1569:7:61" + }, + "variables": [ + { + "name": "_2", + "nativeSrc": "1563:2:61", + "nodeType": "YulTypedName", + "src": "1563:2:61", + "type": "" + } + ] + }, + { + "nativeSrc": "1585:23:61", + "nodeType": "YulVariableDeclaration", + "src": "1585:23:61", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1605:2:61", + "nodeType": "YulLiteral", + "src": "1605:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "1599:5:61", + "nodeType": "YulIdentifier", + "src": "1599:5:61" + }, + "nativeSrc": "1599:9:61", + "nodeType": "YulFunctionCall", + "src": "1599:9:61" + }, + "variables": [ + { + "name": "memPtr", + "nativeSrc": "1589:6:61", + "nodeType": "YulTypedName", + "src": "1589:6:61", + "type": "" + } + ] + }, + { + "nativeSrc": "1617:73:61", + "nodeType": "YulVariableDeclaration", + "src": "1617:73:61", + "value": { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "1639:6:61", + "nodeType": "YulIdentifier", + "src": "1639:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nativeSrc": "1663:6:61", + "nodeType": "YulIdentifier", + "src": "1663:6:61" + }, + { + "kind": "number", + "nativeSrc": "1671:2:61", + "nodeType": "YulLiteral", + "src": "1671:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1659:3:61", + "nodeType": "YulIdentifier", + "src": "1659:3:61" + }, + "nativeSrc": "1659:15:61", + "nodeType": "YulFunctionCall", + "src": "1659:15:61" + }, + { + "name": "_2", + "nativeSrc": "1676:2:61", + "nodeType": "YulIdentifier", + "src": "1676:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1655:3:61", + "nodeType": "YulIdentifier", + "src": "1655:3:61" + }, + "nativeSrc": "1655:24:61", + "nodeType": "YulFunctionCall", + "src": "1655:24:61" + }, + { + "kind": "number", + "nativeSrc": "1681:2:61", + "nodeType": "YulLiteral", + "src": "1681:2:61", + "type": "", + "value": "63" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1651:3:61", + "nodeType": "YulIdentifier", + "src": "1651:3:61" + }, + "nativeSrc": "1651:33:61", + "nodeType": "YulFunctionCall", + "src": "1651:33:61" + }, + { + "name": "_2", + "nativeSrc": "1686:2:61", + "nodeType": "YulIdentifier", + "src": "1686:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1647:3:61", + "nodeType": "YulIdentifier", + "src": "1647:3:61" + }, + "nativeSrc": "1647:42:61", + "nodeType": "YulFunctionCall", + "src": "1647:42:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1635:3:61", + "nodeType": "YulIdentifier", + "src": "1635:3:61" + }, + "nativeSrc": "1635:55:61", + "nodeType": "YulFunctionCall", + "src": "1635:55:61" + }, + "variables": [ + { + "name": "newFreePtr", + "nativeSrc": "1621:10:61", + "nodeType": "YulTypedName", + "src": "1621:10:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "1749:22:61", + "nodeType": "YulBlock", + "src": "1749:22:61", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "1751:16:61", + "nodeType": "YulIdentifier", + "src": "1751:16:61" + }, + "nativeSrc": "1751:18:61", + "nodeType": "YulFunctionCall", + "src": "1751:18:61" + }, + "nativeSrc": "1751:18:61", + "nodeType": "YulExpressionStatement", + "src": "1751:18:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nativeSrc": "1708:10:61", + "nodeType": "YulIdentifier", + "src": "1708:10:61" + }, + { + "name": "_1", + "nativeSrc": "1720:2:61", + "nodeType": "YulIdentifier", + "src": "1720:2:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "1705:2:61", + "nodeType": "YulIdentifier", + "src": "1705:2:61" + }, + "nativeSrc": "1705:18:61", + "nodeType": "YulFunctionCall", + "src": "1705:18:61" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nativeSrc": "1728:10:61", + "nodeType": "YulIdentifier", + "src": "1728:10:61" + }, + { + "name": "memPtr", + "nativeSrc": "1740:6:61", + "nodeType": "YulIdentifier", + "src": "1740:6:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "1725:2:61", + "nodeType": "YulIdentifier", + "src": "1725:2:61" + }, + "nativeSrc": "1725:22:61", + "nodeType": "YulFunctionCall", + "src": "1725:22:61" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "1702:2:61", + "nodeType": "YulIdentifier", + "src": "1702:2:61" + }, + "nativeSrc": "1702:46:61", + "nodeType": "YulFunctionCall", + "src": "1702:46:61" + }, + "nativeSrc": "1699:72:61", + "nodeType": "YulIf", + "src": "1699:72:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1787:2:61", + "nodeType": "YulLiteral", + "src": "1787:2:61", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nativeSrc": "1791:10:61", + "nodeType": "YulIdentifier", + "src": "1791:10:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1780:6:61", + "nodeType": "YulIdentifier", + "src": "1780:6:61" + }, + "nativeSrc": "1780:22:61", + "nodeType": "YulFunctionCall", + "src": "1780:22:61" + }, + "nativeSrc": "1780:22:61", + "nodeType": "YulExpressionStatement", + "src": "1780:22:61" + }, + { + "nativeSrc": "1811:15:61", + "nodeType": "YulAssignment", + "src": "1811:15:61", + "value": { + "name": "memPtr", + "nativeSrc": "1820:6:61", + "nodeType": "YulIdentifier", + "src": "1820:6:61" + }, + "variableNames": [ + { + "name": "array", + "nativeSrc": "1811:5:61", + "nodeType": "YulIdentifier", + "src": "1811:5:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "1842:6:61", + "nodeType": "YulIdentifier", + "src": "1842:6:61" + }, + { + "name": "length", + "nativeSrc": "1850:6:61", + "nodeType": "YulIdentifier", + "src": "1850:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1835:6:61", + "nodeType": "YulIdentifier", + "src": "1835:6:61" + }, + "nativeSrc": "1835:22:61", + "nodeType": "YulFunctionCall", + "src": "1835:22:61" + }, + "nativeSrc": "1835:22:61", + "nodeType": "YulExpressionStatement", + "src": "1835:22:61" + }, + { + "body": { + "nativeSrc": "1895:16:61", + "nodeType": "YulBlock", + "src": "1895:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1904:1:61", + "nodeType": "YulLiteral", + "src": "1904:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1907:1:61", + "nodeType": "YulLiteral", + "src": "1907:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1897:6:61", + "nodeType": "YulIdentifier", + "src": "1897:6:61" + }, + "nativeSrc": "1897:12:61", + "nodeType": "YulFunctionCall", + "src": "1897:12:61" + }, + "nativeSrc": "1897:12:61", + "nodeType": "YulExpressionStatement", + "src": "1897:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "1876:3:61", + "nodeType": "YulIdentifier", + "src": "1876:3:61" + }, + { + "name": "length", + "nativeSrc": "1881:6:61", + "nodeType": "YulIdentifier", + "src": "1881:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1872:3:61", + "nodeType": "YulIdentifier", + "src": "1872:3:61" + }, + "nativeSrc": "1872:16:61", + "nodeType": "YulFunctionCall", + "src": "1872:16:61" + }, + { + "name": "end", + "nativeSrc": "1890:3:61", + "nodeType": "YulIdentifier", + "src": "1890:3:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "1869:2:61", + "nodeType": "YulIdentifier", + "src": "1869:2:61" + }, + "nativeSrc": "1869:25:61", + "nodeType": "YulFunctionCall", + "src": "1869:25:61" + }, + "nativeSrc": "1866:45:61", + "nodeType": "YulIf", + "src": "1866:45:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "1937:6:61", + "nodeType": "YulIdentifier", + "src": "1937:6:61" + }, + { + "kind": "number", + "nativeSrc": "1945:4:61", + "nodeType": "YulLiteral", + "src": "1945:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1933:3:61", + "nodeType": "YulIdentifier", + "src": "1933:3:61" + }, + "nativeSrc": "1933:17:61", + "nodeType": "YulFunctionCall", + "src": "1933:17:61" + }, + { + "name": "src", + "nativeSrc": "1952:3:61", + "nodeType": "YulIdentifier", + "src": "1952:3:61" + }, + { + "name": "length", + "nativeSrc": "1957:6:61", + "nodeType": "YulIdentifier", + "src": "1957:6:61" + } + ], + "functionName": { + "name": "calldatacopy", + "nativeSrc": "1920:12:61", + "nodeType": "YulIdentifier", + "src": "1920:12:61" + }, + "nativeSrc": "1920:44:61", + "nodeType": "YulFunctionCall", + "src": "1920:44:61" + }, + "nativeSrc": "1920:44:61", + "nodeType": "YulExpressionStatement", + "src": "1920:44:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "1988:6:61", + "nodeType": "YulIdentifier", + "src": "1988:6:61" + }, + { + "name": "length", + "nativeSrc": "1996:6:61", + "nodeType": "YulIdentifier", + "src": "1996:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1984:3:61", + "nodeType": "YulIdentifier", + "src": "1984:3:61" + }, + "nativeSrc": "1984:19:61", + "nodeType": "YulFunctionCall", + "src": "1984:19:61" + }, + { + "kind": "number", + "nativeSrc": "2005:4:61", + "nodeType": "YulLiteral", + "src": "2005:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1980:3:61", + "nodeType": "YulIdentifier", + "src": "1980:3:61" + }, + "nativeSrc": "1980:30:61", + "nodeType": "YulFunctionCall", + "src": "1980:30:61" + }, + { + "kind": "number", + "nativeSrc": "2012:1:61", + "nodeType": "YulLiteral", + "src": "2012:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1973:6:61", + "nodeType": "YulIdentifier", + "src": "1973:6:61" + }, + "nativeSrc": "1973:41:61", + "nodeType": "YulFunctionCall", + "src": "1973:41:61" + }, + "nativeSrc": "1973:41:61", + "nodeType": "YulExpressionStatement", + "src": "1973:41:61" + } + ] + }, + "name": "abi_decode_available_length_string", + "nativeSrc": "1388:632:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nativeSrc": "1432:3:61", + "nodeType": "YulTypedName", + "src": "1432:3:61", + "type": "" + }, + { + "name": "length", + "nativeSrc": "1437:6:61", + "nodeType": "YulTypedName", + "src": "1437:6:61", + "type": "" + }, + { + "name": "end", + "nativeSrc": "1445:3:61", + "nodeType": "YulTypedName", + "src": "1445:3:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nativeSrc": "1453:5:61", + "nodeType": "YulTypedName", + "src": "1453:5:61", + "type": "" + } + ], + "src": "1388:632:61" + }, + { + "body": { + "nativeSrc": "2105:371:61", + "nodeType": "YulBlock", + "src": "2105:371:61", + "statements": [ + { + "body": { + "nativeSrc": "2151:16:61", + "nodeType": "YulBlock", + "src": "2151:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2160:1:61", + "nodeType": "YulLiteral", + "src": "2160:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2163:1:61", + "nodeType": "YulLiteral", + "src": "2163:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2153:6:61", + "nodeType": "YulIdentifier", + "src": "2153:6:61" + }, + "nativeSrc": "2153:12:61", + "nodeType": "YulFunctionCall", + "src": "2153:12:61" + }, + "nativeSrc": "2153:12:61", + "nodeType": "YulExpressionStatement", + "src": "2153:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "2126:7:61", + "nodeType": "YulIdentifier", + "src": "2126:7:61" + }, + { + "name": "headStart", + "nativeSrc": "2135:9:61", + "nodeType": "YulIdentifier", + "src": "2135:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "2122:3:61", + "nodeType": "YulIdentifier", + "src": "2122:3:61" + }, + "nativeSrc": "2122:23:61", + "nodeType": "YulFunctionCall", + "src": "2122:23:61" + }, + { + "kind": "number", + "nativeSrc": "2147:2:61", + "nodeType": "YulLiteral", + "src": "2147:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "2118:3:61", + "nodeType": "YulIdentifier", + "src": "2118:3:61" + }, + "nativeSrc": "2118:32:61", + "nodeType": "YulFunctionCall", + "src": "2118:32:61" + }, + "nativeSrc": "2115:52:61", + "nodeType": "YulIf", + "src": "2115:52:61" + }, + { + "nativeSrc": "2176:37:61", + "nodeType": "YulVariableDeclaration", + "src": "2176:37:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2203:9:61", + "nodeType": "YulIdentifier", + "src": "2203:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "2190:12:61", + "nodeType": "YulIdentifier", + "src": "2190:12:61" + }, + "nativeSrc": "2190:23:61", + "nodeType": "YulFunctionCall", + "src": "2190:23:61" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "2180:6:61", + "nodeType": "YulTypedName", + "src": "2180:6:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "2256:16:61", + "nodeType": "YulBlock", + "src": "2256:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2265:1:61", + "nodeType": "YulLiteral", + "src": "2265:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2268:1:61", + "nodeType": "YulLiteral", + "src": "2268:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2258:6:61", + "nodeType": "YulIdentifier", + "src": "2258:6:61" + }, + "nativeSrc": "2258:12:61", + "nodeType": "YulFunctionCall", + "src": "2258:12:61" + }, + "nativeSrc": "2258:12:61", + "nodeType": "YulExpressionStatement", + "src": "2258:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "2228:6:61", + "nodeType": "YulIdentifier", + "src": "2228:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2244:2:61", + "nodeType": "YulLiteral", + "src": "2244:2:61", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "2248:1:61", + "nodeType": "YulLiteral", + "src": "2248:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "2240:3:61", + "nodeType": "YulIdentifier", + "src": "2240:3:61" + }, + "nativeSrc": "2240:10:61", + "nodeType": "YulFunctionCall", + "src": "2240:10:61" + }, + { + "kind": "number", + "nativeSrc": "2252:1:61", + "nodeType": "YulLiteral", + "src": "2252:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "2236:3:61", + "nodeType": "YulIdentifier", + "src": "2236:3:61" + }, + "nativeSrc": "2236:18:61", + "nodeType": "YulFunctionCall", + "src": "2236:18:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "2225:2:61", + "nodeType": "YulIdentifier", + "src": "2225:2:61" + }, + "nativeSrc": "2225:30:61", + "nodeType": "YulFunctionCall", + "src": "2225:30:61" + }, + "nativeSrc": "2222:50:61", + "nodeType": "YulIf", + "src": "2222:50:61" + }, + { + "nativeSrc": "2281:32:61", + "nodeType": "YulVariableDeclaration", + "src": "2281:32:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2295:9:61", + "nodeType": "YulIdentifier", + "src": "2295:9:61" + }, + { + "name": "offset", + "nativeSrc": "2306:6:61", + "nodeType": "YulIdentifier", + "src": "2306:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2291:3:61", + "nodeType": "YulIdentifier", + "src": "2291:3:61" + }, + "nativeSrc": "2291:22:61", + "nodeType": "YulFunctionCall", + "src": "2291:22:61" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "2285:2:61", + "nodeType": "YulTypedName", + "src": "2285:2:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "2361:16:61", + "nodeType": "YulBlock", + "src": "2361:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2370:1:61", + "nodeType": "YulLiteral", + "src": "2370:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2373:1:61", + "nodeType": "YulLiteral", + "src": "2373:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2363:6:61", + "nodeType": "YulIdentifier", + "src": "2363:6:61" + }, + "nativeSrc": "2363:12:61", + "nodeType": "YulFunctionCall", + "src": "2363:12:61" + }, + "nativeSrc": "2363:12:61", + "nodeType": "YulExpressionStatement", + "src": "2363:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nativeSrc": "2340:2:61", + "nodeType": "YulIdentifier", + "src": "2340:2:61" + }, + { + "kind": "number", + "nativeSrc": "2344:4:61", + "nodeType": "YulLiteral", + "src": "2344:4:61", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2336:3:61", + "nodeType": "YulIdentifier", + "src": "2336:3:61" + }, + "nativeSrc": "2336:13:61", + "nodeType": "YulFunctionCall", + "src": "2336:13:61" + }, + { + "name": "dataEnd", + "nativeSrc": "2351:7:61", + "nodeType": "YulIdentifier", + "src": "2351:7:61" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "2332:3:61", + "nodeType": "YulIdentifier", + "src": "2332:3:61" + }, + "nativeSrc": "2332:27:61", + "nodeType": "YulFunctionCall", + "src": "2332:27:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "2325:6:61", + "nodeType": "YulIdentifier", + "src": "2325:6:61" + }, + "nativeSrc": "2325:35:61", + "nodeType": "YulFunctionCall", + "src": "2325:35:61" + }, + "nativeSrc": "2322:55:61", + "nodeType": "YulIf", + "src": "2322:55:61" + }, + { + "nativeSrc": "2386:84:61", + "nodeType": "YulAssignment", + "src": "2386:84:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nativeSrc": "2435:2:61", + "nodeType": "YulIdentifier", + "src": "2435:2:61" + }, + { + "kind": "number", + "nativeSrc": "2439:2:61", + "nodeType": "YulLiteral", + "src": "2439:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2431:3:61", + "nodeType": "YulIdentifier", + "src": "2431:3:61" + }, + "nativeSrc": "2431:11:61", + "nodeType": "YulFunctionCall", + "src": "2431:11:61" + }, + { + "arguments": [ + { + "name": "_1", + "nativeSrc": "2457:2:61", + "nodeType": "YulIdentifier", + "src": "2457:2:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "2444:12:61", + "nodeType": "YulIdentifier", + "src": "2444:12:61" + }, + "nativeSrc": "2444:16:61", + "nodeType": "YulFunctionCall", + "src": "2444:16:61" + }, + { + "name": "dataEnd", + "nativeSrc": "2462:7:61", + "nodeType": "YulIdentifier", + "src": "2462:7:61" + } + ], + "functionName": { + "name": "abi_decode_available_length_string", + "nativeSrc": "2396:34:61", + "nodeType": "YulIdentifier", + "src": "2396:34:61" + }, + "nativeSrc": "2396:74:61", + "nodeType": "YulFunctionCall", + "src": "2396:74:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "2386:6:61", + "nodeType": "YulIdentifier", + "src": "2386:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_string_memory_ptr", + "nativeSrc": "2025:451:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "2071:9:61", + "nodeType": "YulTypedName", + "src": "2071:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "2082:7:61", + "nodeType": "YulTypedName", + "src": "2082:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "2094:6:61", + "nodeType": "YulTypedName", + "src": "2094:6:61", + "type": "" + } + ], + "src": "2025:451:61" + }, + { + "body": { + "nativeSrc": "2551:110:61", + "nodeType": "YulBlock", + "src": "2551:110:61", + "statements": [ + { + "body": { + "nativeSrc": "2597:16:61", + "nodeType": "YulBlock", + "src": "2597:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2606:1:61", + "nodeType": "YulLiteral", + "src": "2606:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2609:1:61", + "nodeType": "YulLiteral", + "src": "2609:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2599:6:61", + "nodeType": "YulIdentifier", + "src": "2599:6:61" + }, + "nativeSrc": "2599:12:61", + "nodeType": "YulFunctionCall", + "src": "2599:12:61" + }, + "nativeSrc": "2599:12:61", + "nodeType": "YulExpressionStatement", + "src": "2599:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "2572:7:61", + "nodeType": "YulIdentifier", + "src": "2572:7:61" + }, + { + "name": "headStart", + "nativeSrc": "2581:9:61", + "nodeType": "YulIdentifier", + "src": "2581:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "2568:3:61", + "nodeType": "YulIdentifier", + "src": "2568:3:61" + }, + "nativeSrc": "2568:23:61", + "nodeType": "YulFunctionCall", + "src": "2568:23:61" + }, + { + "kind": "number", + "nativeSrc": "2593:2:61", + "nodeType": "YulLiteral", + "src": "2593:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "2564:3:61", + "nodeType": "YulIdentifier", + "src": "2564:3:61" + }, + "nativeSrc": "2564:32:61", + "nodeType": "YulFunctionCall", + "src": "2564:32:61" + }, + "nativeSrc": "2561:52:61", + "nodeType": "YulIf", + "src": "2561:52:61" + }, + { + "nativeSrc": "2622:33:61", + "nodeType": "YulAssignment", + "src": "2622:33:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2645:9:61", + "nodeType": "YulIdentifier", + "src": "2645:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "2632:12:61", + "nodeType": "YulIdentifier", + "src": "2632:12:61" + }, + "nativeSrc": "2632:23:61", + "nodeType": "YulFunctionCall", + "src": "2632:23:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "2622:6:61", + "nodeType": "YulIdentifier", + "src": "2622:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256", + "nativeSrc": "2481:180:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "2517:9:61", + "nodeType": "YulTypedName", + "src": "2517:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "2528:7:61", + "nodeType": "YulTypedName", + "src": "2528:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "2540:6:61", + "nodeType": "YulTypedName", + "src": "2540:6:61", + "type": "" + } + ], + "src": "2481:180:61" + }, + { + "body": { + "nativeSrc": "2736:110:61", + "nodeType": "YulBlock", + "src": "2736:110:61", + "statements": [ + { + "body": { + "nativeSrc": "2782:16:61", + "nodeType": "YulBlock", + "src": "2782:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2791:1:61", + "nodeType": "YulLiteral", + "src": "2791:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2794:1:61", + "nodeType": "YulLiteral", + "src": "2794:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2784:6:61", + "nodeType": "YulIdentifier", + "src": "2784:6:61" + }, + "nativeSrc": "2784:12:61", + "nodeType": "YulFunctionCall", + "src": "2784:12:61" + }, + "nativeSrc": "2784:12:61", + "nodeType": "YulExpressionStatement", + "src": "2784:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "2757:7:61", + "nodeType": "YulIdentifier", + "src": "2757:7:61" + }, + { + "name": "headStart", + "nativeSrc": "2766:9:61", + "nodeType": "YulIdentifier", + "src": "2766:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "2753:3:61", + "nodeType": "YulIdentifier", + "src": "2753:3:61" + }, + "nativeSrc": "2753:23:61", + "nodeType": "YulFunctionCall", + "src": "2753:23:61" + }, + { + "kind": "number", + "nativeSrc": "2778:2:61", + "nodeType": "YulLiteral", + "src": "2778:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "2749:3:61", + "nodeType": "YulIdentifier", + "src": "2749:3:61" + }, + "nativeSrc": "2749:32:61", + "nodeType": "YulFunctionCall", + "src": "2749:32:61" + }, + "nativeSrc": "2746:52:61", + "nodeType": "YulIf", + "src": "2746:52:61" + }, + { + "nativeSrc": "2807:33:61", + "nodeType": "YulAssignment", + "src": "2807:33:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2830:9:61", + "nodeType": "YulIdentifier", + "src": "2830:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "2817:12:61", + "nodeType": "YulIdentifier", + "src": "2817:12:61" + }, + "nativeSrc": "2817:23:61", + "nodeType": "YulFunctionCall", + "src": "2817:23:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "2807:6:61", + "nodeType": "YulIdentifier", + "src": "2807:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32", + "nativeSrc": "2666:180:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "2702:9:61", + "nodeType": "YulTypedName", + "src": "2702:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "2713:7:61", + "nodeType": "YulTypedName", + "src": "2713:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "2725:6:61", + "nodeType": "YulTypedName", + "src": "2725:6:61", + "type": "" + } + ], + "src": "2666:180:61" + }, + { + "body": { + "nativeSrc": "2938:167:61", + "nodeType": "YulBlock", + "src": "2938:167:61", + "statements": [ + { + "body": { + "nativeSrc": "2984:16:61", + "nodeType": "YulBlock", + "src": "2984:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2993:1:61", + "nodeType": "YulLiteral", + "src": "2993:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2996:1:61", + "nodeType": "YulLiteral", + "src": "2996:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2986:6:61", + "nodeType": "YulIdentifier", + "src": "2986:6:61" + }, + "nativeSrc": "2986:12:61", + "nodeType": "YulFunctionCall", + "src": "2986:12:61" + }, + "nativeSrc": "2986:12:61", + "nodeType": "YulExpressionStatement", + "src": "2986:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "2959:7:61", + "nodeType": "YulIdentifier", + "src": "2959:7:61" + }, + { + "name": "headStart", + "nativeSrc": "2968:9:61", + "nodeType": "YulIdentifier", + "src": "2968:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "2955:3:61", + "nodeType": "YulIdentifier", + "src": "2955:3:61" + }, + "nativeSrc": "2955:23:61", + "nodeType": "YulFunctionCall", + "src": "2955:23:61" + }, + { + "kind": "number", + "nativeSrc": "2980:2:61", + "nodeType": "YulLiteral", + "src": "2980:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "2951:3:61", + "nodeType": "YulIdentifier", + "src": "2951:3:61" + }, + "nativeSrc": "2951:32:61", + "nodeType": "YulFunctionCall", + "src": "2951:32:61" + }, + "nativeSrc": "2948:52:61", + "nodeType": "YulIf", + "src": "2948:52:61" + }, + { + "nativeSrc": "3009:33:61", + "nodeType": "YulAssignment", + "src": "3009:33:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3032:9:61", + "nodeType": "YulIdentifier", + "src": "3032:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "3019:12:61", + "nodeType": "YulIdentifier", + "src": "3019:12:61" + }, + "nativeSrc": "3019:23:61", + "nodeType": "YulFunctionCall", + "src": "3019:23:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "3009:6:61", + "nodeType": "YulIdentifier", + "src": "3009:6:61" + } + ] + }, + { + "nativeSrc": "3051:48:61", + "nodeType": "YulAssignment", + "src": "3051:48:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3084:9:61", + "nodeType": "YulIdentifier", + "src": "3084:9:61" + }, + { + "kind": "number", + "nativeSrc": "3095:2:61", + "nodeType": "YulLiteral", + "src": "3095:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3080:3:61", + "nodeType": "YulIdentifier", + "src": "3080:3:61" + }, + "nativeSrc": "3080:18:61", + "nodeType": "YulFunctionCall", + "src": "3080:18:61" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "3061:18:61", + "nodeType": "YulIdentifier", + "src": "3061:18:61" + }, + "nativeSrc": "3061:38:61", + "nodeType": "YulFunctionCall", + "src": "3061:38:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "3051:6:61", + "nodeType": "YulIdentifier", + "src": "3051:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_address", + "nativeSrc": "2851:254:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "2896:9:61", + "nodeType": "YulTypedName", + "src": "2896:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "2907:7:61", + "nodeType": "YulTypedName", + "src": "2907:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "2919:6:61", + "nodeType": "YulTypedName", + "src": "2919:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "2927:6:61", + "nodeType": "YulTypedName", + "src": "2927:6:61", + "type": "" + } + ], + "src": "2851:254:61" + }, + { + "body": { + "nativeSrc": "3211:76:61", + "nodeType": "YulBlock", + "src": "3211:76:61", + "statements": [ + { + "nativeSrc": "3221:26:61", + "nodeType": "YulAssignment", + "src": "3221:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3233:9:61", + "nodeType": "YulIdentifier", + "src": "3233:9:61" + }, + { + "kind": "number", + "nativeSrc": "3244:2:61", + "nodeType": "YulLiteral", + "src": "3244:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3229:3:61", + "nodeType": "YulIdentifier", + "src": "3229:3:61" + }, + "nativeSrc": "3229:18:61", + "nodeType": "YulFunctionCall", + "src": "3229:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "3221:4:61", + "nodeType": "YulIdentifier", + "src": "3221:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3263:9:61", + "nodeType": "YulIdentifier", + "src": "3263:9:61" + }, + { + "name": "value0", + "nativeSrc": "3274:6:61", + "nodeType": "YulIdentifier", + "src": "3274:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3256:6:61", + "nodeType": "YulIdentifier", + "src": "3256:6:61" + }, + "nativeSrc": "3256:25:61", + "nodeType": "YulFunctionCall", + "src": "3256:25:61" + }, + "nativeSrc": "3256:25:61", + "nodeType": "YulExpressionStatement", + "src": "3256:25:61" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nativeSrc": "3110:177:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "3180:9:61", + "nodeType": "YulTypedName", + "src": "3180:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "3191:6:61", + "nodeType": "YulTypedName", + "src": "3191:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "3202:4:61", + "nodeType": "YulTypedName", + "src": "3202:4:61", + "type": "" + } + ], + "src": "3110:177:61" + }, + { + "body": { + "nativeSrc": "3388:428:61", + "nodeType": "YulBlock", + "src": "3388:428:61", + "statements": [ + { + "body": { + "nativeSrc": "3434:16:61", + "nodeType": "YulBlock", + "src": "3434:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3443:1:61", + "nodeType": "YulLiteral", + "src": "3443:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "3446:1:61", + "nodeType": "YulLiteral", + "src": "3446:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "3436:6:61", + "nodeType": "YulIdentifier", + "src": "3436:6:61" + }, + "nativeSrc": "3436:12:61", + "nodeType": "YulFunctionCall", + "src": "3436:12:61" + }, + "nativeSrc": "3436:12:61", + "nodeType": "YulExpressionStatement", + "src": "3436:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "3409:7:61", + "nodeType": "YulIdentifier", + "src": "3409:7:61" + }, + { + "name": "headStart", + "nativeSrc": "3418:9:61", + "nodeType": "YulIdentifier", + "src": "3418:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "3405:3:61", + "nodeType": "YulIdentifier", + "src": "3405:3:61" + }, + "nativeSrc": "3405:23:61", + "nodeType": "YulFunctionCall", + "src": "3405:23:61" + }, + { + "kind": "number", + "nativeSrc": "3430:2:61", + "nodeType": "YulLiteral", + "src": "3430:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "3401:3:61", + "nodeType": "YulIdentifier", + "src": "3401:3:61" + }, + "nativeSrc": "3401:32:61", + "nodeType": "YulFunctionCall", + "src": "3401:32:61" + }, + "nativeSrc": "3398:52:61", + "nodeType": "YulIf", + "src": "3398:52:61" + }, + { + "nativeSrc": "3459:39:61", + "nodeType": "YulAssignment", + "src": "3459:39:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3488:9:61", + "nodeType": "YulIdentifier", + "src": "3488:9:61" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "3469:18:61", + "nodeType": "YulIdentifier", + "src": "3469:18:61" + }, + "nativeSrc": "3469:29:61", + "nodeType": "YulFunctionCall", + "src": "3469:29:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "3459:6:61", + "nodeType": "YulIdentifier", + "src": "3459:6:61" + } + ] + }, + { + "nativeSrc": "3507:46:61", + "nodeType": "YulVariableDeclaration", + "src": "3507:46:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3538:9:61", + "nodeType": "YulIdentifier", + "src": "3538:9:61" + }, + { + "kind": "number", + "nativeSrc": "3549:2:61", + "nodeType": "YulLiteral", + "src": "3549:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3534:3:61", + "nodeType": "YulIdentifier", + "src": "3534:3:61" + }, + "nativeSrc": "3534:18:61", + "nodeType": "YulFunctionCall", + "src": "3534:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "3521:12:61", + "nodeType": "YulIdentifier", + "src": "3521:12:61" + }, + "nativeSrc": "3521:32:61", + "nodeType": "YulFunctionCall", + "src": "3521:32:61" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "3511:6:61", + "nodeType": "YulTypedName", + "src": "3511:6:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "3596:16:61", + "nodeType": "YulBlock", + "src": "3596:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3605:1:61", + "nodeType": "YulLiteral", + "src": "3605:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "3608:1:61", + "nodeType": "YulLiteral", + "src": "3608:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "3598:6:61", + "nodeType": "YulIdentifier", + "src": "3598:6:61" + }, + "nativeSrc": "3598:12:61", + "nodeType": "YulFunctionCall", + "src": "3598:12:61" + }, + "nativeSrc": "3598:12:61", + "nodeType": "YulExpressionStatement", + "src": "3598:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "3568:6:61", + "nodeType": "YulIdentifier", + "src": "3568:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3584:2:61", + "nodeType": "YulLiteral", + "src": "3584:2:61", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "3588:1:61", + "nodeType": "YulLiteral", + "src": "3588:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "3580:3:61", + "nodeType": "YulIdentifier", + "src": "3580:3:61" + }, + "nativeSrc": "3580:10:61", + "nodeType": "YulFunctionCall", + "src": "3580:10:61" + }, + { + "kind": "number", + "nativeSrc": "3592:1:61", + "nodeType": "YulLiteral", + "src": "3592:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "3576:3:61", + "nodeType": "YulIdentifier", + "src": "3576:3:61" + }, + "nativeSrc": "3576:18:61", + "nodeType": "YulFunctionCall", + "src": "3576:18:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "3565:2:61", + "nodeType": "YulIdentifier", + "src": "3565:2:61" + }, + "nativeSrc": "3565:30:61", + "nodeType": "YulFunctionCall", + "src": "3565:30:61" + }, + "nativeSrc": "3562:50:61", + "nodeType": "YulIf", + "src": "3562:50:61" + }, + { + "nativeSrc": "3621:32:61", + "nodeType": "YulVariableDeclaration", + "src": "3621:32:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3635:9:61", + "nodeType": "YulIdentifier", + "src": "3635:9:61" + }, + { + "name": "offset", + "nativeSrc": "3646:6:61", + "nodeType": "YulIdentifier", + "src": "3646:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3631:3:61", + "nodeType": "YulIdentifier", + "src": "3631:3:61" + }, + "nativeSrc": "3631:22:61", + "nodeType": "YulFunctionCall", + "src": "3631:22:61" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "3625:2:61", + "nodeType": "YulTypedName", + "src": "3625:2:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "3701:16:61", + "nodeType": "YulBlock", + "src": "3701:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3710:1:61", + "nodeType": "YulLiteral", + "src": "3710:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "3713:1:61", + "nodeType": "YulLiteral", + "src": "3713:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "3703:6:61", + "nodeType": "YulIdentifier", + "src": "3703:6:61" + }, + "nativeSrc": "3703:12:61", + "nodeType": "YulFunctionCall", + "src": "3703:12:61" + }, + "nativeSrc": "3703:12:61", + "nodeType": "YulExpressionStatement", + "src": "3703:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nativeSrc": "3680:2:61", + "nodeType": "YulIdentifier", + "src": "3680:2:61" + }, + { + "kind": "number", + "nativeSrc": "3684:4:61", + "nodeType": "YulLiteral", + "src": "3684:4:61", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3676:3:61", + "nodeType": "YulIdentifier", + "src": "3676:3:61" + }, + "nativeSrc": "3676:13:61", + "nodeType": "YulFunctionCall", + "src": "3676:13:61" + }, + { + "name": "dataEnd", + "nativeSrc": "3691:7:61", + "nodeType": "YulIdentifier", + "src": "3691:7:61" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "3672:3:61", + "nodeType": "YulIdentifier", + "src": "3672:3:61" + }, + "nativeSrc": "3672:27:61", + "nodeType": "YulFunctionCall", + "src": "3672:27:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "3665:6:61", + "nodeType": "YulIdentifier", + "src": "3665:6:61" + }, + "nativeSrc": "3665:35:61", + "nodeType": "YulFunctionCall", + "src": "3665:35:61" + }, + "nativeSrc": "3662:55:61", + "nodeType": "YulIf", + "src": "3662:55:61" + }, + { + "nativeSrc": "3726:84:61", + "nodeType": "YulAssignment", + "src": "3726:84:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nativeSrc": "3775:2:61", + "nodeType": "YulIdentifier", + "src": "3775:2:61" + }, + { + "kind": "number", + "nativeSrc": "3779:2:61", + "nodeType": "YulLiteral", + "src": "3779:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3771:3:61", + "nodeType": "YulIdentifier", + "src": "3771:3:61" + }, + "nativeSrc": "3771:11:61", + "nodeType": "YulFunctionCall", + "src": "3771:11:61" + }, + { + "arguments": [ + { + "name": "_1", + "nativeSrc": "3797:2:61", + "nodeType": "YulIdentifier", + "src": "3797:2:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "3784:12:61", + "nodeType": "YulIdentifier", + "src": "3784:12:61" + }, + "nativeSrc": "3784:16:61", + "nodeType": "YulFunctionCall", + "src": "3784:16:61" + }, + { + "name": "dataEnd", + "nativeSrc": "3802:7:61", + "nodeType": "YulIdentifier", + "src": "3802:7:61" + } + ], + "functionName": { + "name": "abi_decode_available_length_string", + "nativeSrc": "3736:34:61", + "nodeType": "YulIdentifier", + "src": "3736:34:61" + }, + "nativeSrc": "3736:74:61", + "nodeType": "YulFunctionCall", + "src": "3736:74:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "3726:6:61", + "nodeType": "YulIdentifier", + "src": "3726:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_bytes_memory_ptr", + "nativeSrc": "3292:524:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "3346:9:61", + "nodeType": "YulTypedName", + "src": "3346:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "3357:7:61", + "nodeType": "YulTypedName", + "src": "3357:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "3369:6:61", + "nodeType": "YulTypedName", + "src": "3369:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "3377:6:61", + "nodeType": "YulTypedName", + "src": "3377:6:61", + "type": "" + } + ], + "src": "3292:524:61" + }, + { + "body": { + "nativeSrc": "3887:184:61", + "nodeType": "YulBlock", + "src": "3887:184:61", + "statements": [ + { + "nativeSrc": "3897:10:61", + "nodeType": "YulVariableDeclaration", + "src": "3897:10:61", + "value": { + "kind": "number", + "nativeSrc": "3906:1:61", + "nodeType": "YulLiteral", + "src": "3906:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "3901:1:61", + "nodeType": "YulTypedName", + "src": "3901:1:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "3966:63:61", + "nodeType": "YulBlock", + "src": "3966:63:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nativeSrc": "3991:3:61", + "nodeType": "YulIdentifier", + "src": "3991:3:61" + }, + { + "name": "i", + "nativeSrc": "3996:1:61", + "nodeType": "YulIdentifier", + "src": "3996:1:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3987:3:61", + "nodeType": "YulIdentifier", + "src": "3987:3:61" + }, + "nativeSrc": "3987:11:61", + "nodeType": "YulFunctionCall", + "src": "3987:11:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "4010:3:61", + "nodeType": "YulIdentifier", + "src": "4010:3:61" + }, + { + "name": "i", + "nativeSrc": "4015:1:61", + "nodeType": "YulIdentifier", + "src": "4015:1:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4006:3:61", + "nodeType": "YulIdentifier", + "src": "4006:3:61" + }, + "nativeSrc": "4006:11:61", + "nodeType": "YulFunctionCall", + "src": "4006:11:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "4000:5:61", + "nodeType": "YulIdentifier", + "src": "4000:5:61" + }, + "nativeSrc": "4000:18:61", + "nodeType": "YulFunctionCall", + "src": "4000:18:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3980:6:61", + "nodeType": "YulIdentifier", + "src": "3980:6:61" + }, + "nativeSrc": "3980:39:61", + "nodeType": "YulFunctionCall", + "src": "3980:39:61" + }, + "nativeSrc": "3980:39:61", + "nodeType": "YulExpressionStatement", + "src": "3980:39:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "3927:1:61", + "nodeType": "YulIdentifier", + "src": "3927:1:61" + }, + { + "name": "length", + "nativeSrc": "3930:6:61", + "nodeType": "YulIdentifier", + "src": "3930:6:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "3924:2:61", + "nodeType": "YulIdentifier", + "src": "3924:2:61" + }, + "nativeSrc": "3924:13:61", + "nodeType": "YulFunctionCall", + "src": "3924:13:61" + }, + "nativeSrc": "3916:113:61", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "3938:19:61", + "nodeType": "YulBlock", + "src": "3938:19:61", + "statements": [ + { + "nativeSrc": "3940:15:61", + "nodeType": "YulAssignment", + "src": "3940:15:61", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "3949:1:61", + "nodeType": "YulIdentifier", + "src": "3949:1:61" + }, + { + "kind": "number", + "nativeSrc": "3952:2:61", + "nodeType": "YulLiteral", + "src": "3952:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3945:3:61", + "nodeType": "YulIdentifier", + "src": "3945:3:61" + }, + "nativeSrc": "3945:10:61", + "nodeType": "YulFunctionCall", + "src": "3945:10:61" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "3940:1:61", + "nodeType": "YulIdentifier", + "src": "3940:1:61" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "3920:3:61", + "nodeType": "YulBlock", + "src": "3920:3:61", + "statements": [] + }, + "src": "3916:113:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nativeSrc": "4049:3:61", + "nodeType": "YulIdentifier", + "src": "4049:3:61" + }, + { + "name": "length", + "nativeSrc": "4054:6:61", + "nodeType": "YulIdentifier", + "src": "4054:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4045:3:61", + "nodeType": "YulIdentifier", + "src": "4045:3:61" + }, + "nativeSrc": "4045:16:61", + "nodeType": "YulFunctionCall", + "src": "4045:16:61" + }, + { + "kind": "number", + "nativeSrc": "4063:1:61", + "nodeType": "YulLiteral", + "src": "4063:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4038:6:61", + "nodeType": "YulIdentifier", + "src": "4038:6:61" + }, + "nativeSrc": "4038:27:61", + "nodeType": "YulFunctionCall", + "src": "4038:27:61" + }, + "nativeSrc": "4038:27:61", + "nodeType": "YulExpressionStatement", + "src": "4038:27:61" + } + ] + }, + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "3821:250:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nativeSrc": "3865:3:61", + "nodeType": "YulTypedName", + "src": "3865:3:61", + "type": "" + }, + { + "name": "dst", + "nativeSrc": "3870:3:61", + "nodeType": "YulTypedName", + "src": "3870:3:61", + "type": "" + }, + { + "name": "length", + "nativeSrc": "3875:6:61", + "nodeType": "YulTypedName", + "src": "3875:6:61", + "type": "" + } + ], + "src": "3821:250:61" + }, + { + "body": { + "nativeSrc": "4126:221:61", + "nodeType": "YulBlock", + "src": "4126:221:61", + "statements": [ + { + "nativeSrc": "4136:26:61", + "nodeType": "YulVariableDeclaration", + "src": "4136:26:61", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "4156:5:61", + "nodeType": "YulIdentifier", + "src": "4156:5:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "4150:5:61", + "nodeType": "YulIdentifier", + "src": "4150:5:61" + }, + "nativeSrc": "4150:12:61", + "nodeType": "YulFunctionCall", + "src": "4150:12:61" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "4140:6:61", + "nodeType": "YulTypedName", + "src": "4140:6:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "4178:3:61", + "nodeType": "YulIdentifier", + "src": "4178:3:61" + }, + { + "name": "length", + "nativeSrc": "4183:6:61", + "nodeType": "YulIdentifier", + "src": "4183:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4171:6:61", + "nodeType": "YulIdentifier", + "src": "4171:6:61" + }, + "nativeSrc": "4171:19:61", + "nodeType": "YulFunctionCall", + "src": "4171:19:61" + }, + "nativeSrc": "4171:19:61", + "nodeType": "YulExpressionStatement", + "src": "4171:19:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "4238:5:61", + "nodeType": "YulIdentifier", + "src": "4238:5:61" + }, + { + "kind": "number", + "nativeSrc": "4245:4:61", + "nodeType": "YulLiteral", + "src": "4245:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4234:3:61", + "nodeType": "YulIdentifier", + "src": "4234:3:61" + }, + "nativeSrc": "4234:16:61", + "nodeType": "YulFunctionCall", + "src": "4234:16:61" + }, + { + "arguments": [ + { + "name": "pos", + "nativeSrc": "4256:3:61", + "nodeType": "YulIdentifier", + "src": "4256:3:61" + }, + { + "kind": "number", + "nativeSrc": "4261:4:61", + "nodeType": "YulLiteral", + "src": "4261:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4252:3:61", + "nodeType": "YulIdentifier", + "src": "4252:3:61" + }, + "nativeSrc": "4252:14:61", + "nodeType": "YulFunctionCall", + "src": "4252:14:61" + }, + { + "name": "length", + "nativeSrc": "4268:6:61", + "nodeType": "YulIdentifier", + "src": "4268:6:61" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "4199:34:61", + "nodeType": "YulIdentifier", + "src": "4199:34:61" + }, + "nativeSrc": "4199:76:61", + "nodeType": "YulFunctionCall", + "src": "4199:76:61" + }, + "nativeSrc": "4199:76:61", + "nodeType": "YulExpressionStatement", + "src": "4199:76:61" + }, + { + "nativeSrc": "4284:57:61", + "nodeType": "YulAssignment", + "src": "4284:57:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nativeSrc": "4299:3:61", + "nodeType": "YulIdentifier", + "src": "4299:3:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nativeSrc": "4312:6:61", + "nodeType": "YulIdentifier", + "src": "4312:6:61" + }, + { + "kind": "number", + "nativeSrc": "4320:2:61", + "nodeType": "YulLiteral", + "src": "4320:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4308:3:61", + "nodeType": "YulIdentifier", + "src": "4308:3:61" + }, + "nativeSrc": "4308:15:61", + "nodeType": "YulFunctionCall", + "src": "4308:15:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4329:2:61", + "nodeType": "YulLiteral", + "src": "4329:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "4325:3:61", + "nodeType": "YulIdentifier", + "src": "4325:3:61" + }, + "nativeSrc": "4325:7:61", + "nodeType": "YulFunctionCall", + "src": "4325:7:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "4304:3:61", + "nodeType": "YulIdentifier", + "src": "4304:3:61" + }, + "nativeSrc": "4304:29:61", + "nodeType": "YulFunctionCall", + "src": "4304:29:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4295:3:61", + "nodeType": "YulIdentifier", + "src": "4295:3:61" + }, + "nativeSrc": "4295:39:61", + "nodeType": "YulFunctionCall", + "src": "4295:39:61" + }, + { + "kind": "number", + "nativeSrc": "4336:4:61", + "nodeType": "YulLiteral", + "src": "4336:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4291:3:61", + "nodeType": "YulIdentifier", + "src": "4291:3:61" + }, + "nativeSrc": "4291:50:61", + "nodeType": "YulFunctionCall", + "src": "4291:50:61" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "4284:3:61", + "nodeType": "YulIdentifier", + "src": "4284:3:61" + } + ] + } + ] + }, + "name": "abi_encode_string", + "nativeSrc": "4076:271:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "4103:5:61", + "nodeType": "YulTypedName", + "src": "4103:5:61", + "type": "" + }, + { + "name": "pos", + "nativeSrc": "4110:3:61", + "nodeType": "YulTypedName", + "src": "4110:3:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "4118:3:61", + "nodeType": "YulTypedName", + "src": "4118:3:61", + "type": "" + } + ], + "src": "4076:271:61" + }, + { + "body": { + "nativeSrc": "4473:99:61", + "nodeType": "YulBlock", + "src": "4473:99:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4490:9:61", + "nodeType": "YulIdentifier", + "src": "4490:9:61" + }, + { + "kind": "number", + "nativeSrc": "4501:2:61", + "nodeType": "YulLiteral", + "src": "4501:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4483:6:61", + "nodeType": "YulIdentifier", + "src": "4483:6:61" + }, + "nativeSrc": "4483:21:61", + "nodeType": "YulFunctionCall", + "src": "4483:21:61" + }, + "nativeSrc": "4483:21:61", + "nodeType": "YulExpressionStatement", + "src": "4483:21:61" + }, + { + "nativeSrc": "4513:53:61", + "nodeType": "YulAssignment", + "src": "4513:53:61", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "4539:6:61", + "nodeType": "YulIdentifier", + "src": "4539:6:61" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4551:9:61", + "nodeType": "YulIdentifier", + "src": "4551:9:61" + }, + { + "kind": "number", + "nativeSrc": "4562:2:61", + "nodeType": "YulLiteral", + "src": "4562:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4547:3:61", + "nodeType": "YulIdentifier", + "src": "4547:3:61" + }, + "nativeSrc": "4547:18:61", + "nodeType": "YulFunctionCall", + "src": "4547:18:61" + } + ], + "functionName": { + "name": "abi_encode_string", + "nativeSrc": "4521:17:61", + "nodeType": "YulIdentifier", + "src": "4521:17:61" + }, + "nativeSrc": "4521:45:61", + "nodeType": "YulFunctionCall", + "src": "4521:45:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "4513:4:61", + "nodeType": "YulIdentifier", + "src": "4513:4:61" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed", + "nativeSrc": "4352:220:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "4442:9:61", + "nodeType": "YulTypedName", + "src": "4442:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "4453:6:61", + "nodeType": "YulTypedName", + "src": "4453:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "4464:4:61", + "nodeType": "YulTypedName", + "src": "4464:4:61", + "type": "" + } + ], + "src": "4352:220:61" + }, + { + "body": { + "nativeSrc": "4728:481:61", + "nodeType": "YulBlock", + "src": "4728:481:61", + "statements": [ + { + "nativeSrc": "4738:12:61", + "nodeType": "YulVariableDeclaration", + "src": "4738:12:61", + "value": { + "kind": "number", + "nativeSrc": "4748:2:61", + "nodeType": "YulLiteral", + "src": "4748:2:61", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "4742:2:61", + "nodeType": "YulTypedName", + "src": "4742:2:61", + "type": "" + } + ] + }, + { + "nativeSrc": "4759:32:61", + "nodeType": "YulVariableDeclaration", + "src": "4759:32:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4777:9:61", + "nodeType": "YulIdentifier", + "src": "4777:9:61" + }, + { + "kind": "number", + "nativeSrc": "4788:2:61", + "nodeType": "YulLiteral", + "src": "4788:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4773:3:61", + "nodeType": "YulIdentifier", + "src": "4773:3:61" + }, + "nativeSrc": "4773:18:61", + "nodeType": "YulFunctionCall", + "src": "4773:18:61" + }, + "variables": [ + { + "name": "tail_1", + "nativeSrc": "4763:6:61", + "nodeType": "YulTypedName", + "src": "4763:6:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4807:9:61", + "nodeType": "YulIdentifier", + "src": "4807:9:61" + }, + { + "kind": "number", + "nativeSrc": "4818:2:61", + "nodeType": "YulLiteral", + "src": "4818:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4800:6:61", + "nodeType": "YulIdentifier", + "src": "4800:6:61" + }, + "nativeSrc": "4800:21:61", + "nodeType": "YulFunctionCall", + "src": "4800:21:61" + }, + "nativeSrc": "4800:21:61", + "nodeType": "YulExpressionStatement", + "src": "4800:21:61" + }, + { + "nativeSrc": "4830:17:61", + "nodeType": "YulVariableDeclaration", + "src": "4830:17:61", + "value": { + "name": "tail_1", + "nativeSrc": "4841:6:61", + "nodeType": "YulIdentifier", + "src": "4841:6:61" + }, + "variables": [ + { + "name": "pos", + "nativeSrc": "4834:3:61", + "nodeType": "YulTypedName", + "src": "4834:3:61", + "type": "" + } + ] + }, + { + "nativeSrc": "4856:27:61", + "nodeType": "YulVariableDeclaration", + "src": "4856:27:61", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "4876:6:61", + "nodeType": "YulIdentifier", + "src": "4876:6:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "4870:5:61", + "nodeType": "YulIdentifier", + "src": "4870:5:61" + }, + "nativeSrc": "4870:13:61", + "nodeType": "YulFunctionCall", + "src": "4870:13:61" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "4860:6:61", + "nodeType": "YulTypedName", + "src": "4860:6:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "tail_1", + "nativeSrc": "4899:6:61", + "nodeType": "YulIdentifier", + "src": "4899:6:61" + }, + { + "name": "length", + "nativeSrc": "4907:6:61", + "nodeType": "YulIdentifier", + "src": "4907:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4892:6:61", + "nodeType": "YulIdentifier", + "src": "4892:6:61" + }, + "nativeSrc": "4892:22:61", + "nodeType": "YulFunctionCall", + "src": "4892:22:61" + }, + "nativeSrc": "4892:22:61", + "nodeType": "YulExpressionStatement", + "src": "4892:22:61" + }, + { + "nativeSrc": "4923:25:61", + "nodeType": "YulAssignment", + "src": "4923:25:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4934:9:61", + "nodeType": "YulIdentifier", + "src": "4934:9:61" + }, + { + "kind": "number", + "nativeSrc": "4945:2:61", + "nodeType": "YulLiteral", + "src": "4945:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4930:3:61", + "nodeType": "YulIdentifier", + "src": "4930:3:61" + }, + "nativeSrc": "4930:18:61", + "nodeType": "YulFunctionCall", + "src": "4930:18:61" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "4923:3:61", + "nodeType": "YulIdentifier", + "src": "4923:3:61" + } + ] + }, + { + "nativeSrc": "4957:29:61", + "nodeType": "YulVariableDeclaration", + "src": "4957:29:61", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "4975:6:61", + "nodeType": "YulIdentifier", + "src": "4975:6:61" + }, + { + "kind": "number", + "nativeSrc": "4983:2:61", + "nodeType": "YulLiteral", + "src": "4983:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4971:3:61", + "nodeType": "YulIdentifier", + "src": "4971:3:61" + }, + "nativeSrc": "4971:15:61", + "nodeType": "YulFunctionCall", + "src": "4971:15:61" + }, + "variables": [ + { + "name": "srcPtr", + "nativeSrc": "4961:6:61", + "nodeType": "YulTypedName", + "src": "4961:6:61", + "type": "" + } + ] + }, + { + "nativeSrc": "4995:10:61", + "nodeType": "YulVariableDeclaration", + "src": "4995:10:61", + "value": { + "kind": "number", + "nativeSrc": "5004:1:61", + "nodeType": "YulLiteral", + "src": "5004:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "4999:1:61", + "nodeType": "YulTypedName", + "src": "4999:1:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "5063:120:61", + "nodeType": "YulBlock", + "src": "5063:120:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "5084:3:61", + "nodeType": "YulIdentifier", + "src": "5084:3:61" + }, + { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "5095:6:61", + "nodeType": "YulIdentifier", + "src": "5095:6:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "5089:5:61", + "nodeType": "YulIdentifier", + "src": "5089:5:61" + }, + "nativeSrc": "5089:13:61", + "nodeType": "YulFunctionCall", + "src": "5089:13:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5077:6:61", + "nodeType": "YulIdentifier", + "src": "5077:6:61" + }, + "nativeSrc": "5077:26:61", + "nodeType": "YulFunctionCall", + "src": "5077:26:61" + }, + "nativeSrc": "5077:26:61", + "nodeType": "YulExpressionStatement", + "src": "5077:26:61" + }, + { + "nativeSrc": "5116:19:61", + "nodeType": "YulAssignment", + "src": "5116:19:61", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "5127:3:61", + "nodeType": "YulIdentifier", + "src": "5127:3:61" + }, + { + "name": "_1", + "nativeSrc": "5132:2:61", + "nodeType": "YulIdentifier", + "src": "5132:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5123:3:61", + "nodeType": "YulIdentifier", + "src": "5123:3:61" + }, + "nativeSrc": "5123:12:61", + "nodeType": "YulFunctionCall", + "src": "5123:12:61" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "5116:3:61", + "nodeType": "YulIdentifier", + "src": "5116:3:61" + } + ] + }, + { + "nativeSrc": "5148:25:61", + "nodeType": "YulAssignment", + "src": "5148:25:61", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "5162:6:61", + "nodeType": "YulIdentifier", + "src": "5162:6:61" + }, + { + "name": "_1", + "nativeSrc": "5170:2:61", + "nodeType": "YulIdentifier", + "src": "5170:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5158:3:61", + "nodeType": "YulIdentifier", + "src": "5158:3:61" + }, + "nativeSrc": "5158:15:61", + "nodeType": "YulFunctionCall", + "src": "5158:15:61" + }, + "variableNames": [ + { + "name": "srcPtr", + "nativeSrc": "5148:6:61", + "nodeType": "YulIdentifier", + "src": "5148:6:61" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "5025:1:61", + "nodeType": "YulIdentifier", + "src": "5025:1:61" + }, + { + "name": "length", + "nativeSrc": "5028:6:61", + "nodeType": "YulIdentifier", + "src": "5028:6:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "5022:2:61", + "nodeType": "YulIdentifier", + "src": "5022:2:61" + }, + "nativeSrc": "5022:13:61", + "nodeType": "YulFunctionCall", + "src": "5022:13:61" + }, + "nativeSrc": "5014:169:61", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "5036:18:61", + "nodeType": "YulBlock", + "src": "5036:18:61", + "statements": [ + { + "nativeSrc": "5038:14:61", + "nodeType": "YulAssignment", + "src": "5038:14:61", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "5047:1:61", + "nodeType": "YulIdentifier", + "src": "5047:1:61" + }, + { + "kind": "number", + "nativeSrc": "5050:1:61", + "nodeType": "YulLiteral", + "src": "5050:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5043:3:61", + "nodeType": "YulIdentifier", + "src": "5043:3:61" + }, + "nativeSrc": "5043:9:61", + "nodeType": "YulFunctionCall", + "src": "5043:9:61" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "5038:1:61", + "nodeType": "YulIdentifier", + "src": "5038:1:61" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "5018:3:61", + "nodeType": "YulBlock", + "src": "5018:3:61", + "statements": [] + }, + "src": "5014:169:61" + }, + { + "nativeSrc": "5192:11:61", + "nodeType": "YulAssignment", + "src": "5192:11:61", + "value": { + "name": "pos", + "nativeSrc": "5200:3:61", + "nodeType": "YulIdentifier", + "src": "5200:3:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "5192:4:61", + "nodeType": "YulIdentifier", + "src": "5192:4:61" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed", + "nativeSrc": "4577:632:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "4697:9:61", + "nodeType": "YulTypedName", + "src": "4697:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "4708:6:61", + "nodeType": "YulTypedName", + "src": "4708:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "4719:4:61", + "nodeType": "YulTypedName", + "src": "4719:4:61", + "type": "" + } + ], + "src": "4577:632:61" + }, + { + "body": { + "nativeSrc": "5301:161:61", + "nodeType": "YulBlock", + "src": "5301:161:61", + "statements": [ + { + "body": { + "nativeSrc": "5347:16:61", + "nodeType": "YulBlock", + "src": "5347:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5356:1:61", + "nodeType": "YulLiteral", + "src": "5356:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "5359:1:61", + "nodeType": "YulLiteral", + "src": "5359:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "5349:6:61", + "nodeType": "YulIdentifier", + "src": "5349:6:61" + }, + "nativeSrc": "5349:12:61", + "nodeType": "YulFunctionCall", + "src": "5349:12:61" + }, + "nativeSrc": "5349:12:61", + "nodeType": "YulExpressionStatement", + "src": "5349:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "5322:7:61", + "nodeType": "YulIdentifier", + "src": "5322:7:61" + }, + { + "name": "headStart", + "nativeSrc": "5331:9:61", + "nodeType": "YulIdentifier", + "src": "5331:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "5318:3:61", + "nodeType": "YulIdentifier", + "src": "5318:3:61" + }, + "nativeSrc": "5318:23:61", + "nodeType": "YulFunctionCall", + "src": "5318:23:61" + }, + { + "kind": "number", + "nativeSrc": "5343:2:61", + "nodeType": "YulLiteral", + "src": "5343:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "5314:3:61", + "nodeType": "YulIdentifier", + "src": "5314:3:61" + }, + "nativeSrc": "5314:32:61", + "nodeType": "YulFunctionCall", + "src": "5314:32:61" + }, + "nativeSrc": "5311:52:61", + "nodeType": "YulIf", + "src": "5311:52:61" + }, + { + "nativeSrc": "5372:33:61", + "nodeType": "YulAssignment", + "src": "5372:33:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5395:9:61", + "nodeType": "YulIdentifier", + "src": "5395:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "5382:12:61", + "nodeType": "YulIdentifier", + "src": "5382:12:61" + }, + "nativeSrc": "5382:23:61", + "nodeType": "YulFunctionCall", + "src": "5382:23:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "5372:6:61", + "nodeType": "YulIdentifier", + "src": "5372:6:61" + } + ] + }, + { + "nativeSrc": "5414:42:61", + "nodeType": "YulAssignment", + "src": "5414:42:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5441:9:61", + "nodeType": "YulIdentifier", + "src": "5441:9:61" + }, + { + "kind": "number", + "nativeSrc": "5452:2:61", + "nodeType": "YulLiteral", + "src": "5452:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5437:3:61", + "nodeType": "YulIdentifier", + "src": "5437:3:61" + }, + "nativeSrc": "5437:18:61", + "nodeType": "YulFunctionCall", + "src": "5437:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "5424:12:61", + "nodeType": "YulIdentifier", + "src": "5424:12:61" + }, + "nativeSrc": "5424:32:61", + "nodeType": "YulFunctionCall", + "src": "5424:32:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "5414:6:61", + "nodeType": "YulIdentifier", + "src": "5414:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_uint256", + "nativeSrc": "5214:248:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "5259:9:61", + "nodeType": "YulTypedName", + "src": "5259:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "5270:7:61", + "nodeType": "YulTypedName", + "src": "5270:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "5282:6:61", + "nodeType": "YulTypedName", + "src": "5282:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "5290:6:61", + "nodeType": "YulTypedName", + "src": "5290:6:61", + "type": "" + } + ], + "src": "5214:248:61" + }, + { + "body": { + "nativeSrc": "5622:398:61", + "nodeType": "YulBlock", + "src": "5622:398:61", + "statements": [ + { + "body": { + "nativeSrc": "5669:16:61", + "nodeType": "YulBlock", + "src": "5669:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5678:1:61", + "nodeType": "YulLiteral", + "src": "5678:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "5681:1:61", + "nodeType": "YulLiteral", + "src": "5681:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "5671:6:61", + "nodeType": "YulIdentifier", + "src": "5671:6:61" + }, + "nativeSrc": "5671:12:61", + "nodeType": "YulFunctionCall", + "src": "5671:12:61" + }, + "nativeSrc": "5671:12:61", + "nodeType": "YulExpressionStatement", + "src": "5671:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "5643:7:61", + "nodeType": "YulIdentifier", + "src": "5643:7:61" + }, + { + "name": "headStart", + "nativeSrc": "5652:9:61", + "nodeType": "YulIdentifier", + "src": "5652:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "5639:3:61", + "nodeType": "YulIdentifier", + "src": "5639:3:61" + }, + "nativeSrc": "5639:23:61", + "nodeType": "YulFunctionCall", + "src": "5639:23:61" + }, + { + "kind": "number", + "nativeSrc": "5664:3:61", + "nodeType": "YulLiteral", + "src": "5664:3:61", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "5635:3:61", + "nodeType": "YulIdentifier", + "src": "5635:3:61" + }, + "nativeSrc": "5635:33:61", + "nodeType": "YulFunctionCall", + "src": "5635:33:61" + }, + "nativeSrc": "5632:53:61", + "nodeType": "YulIf", + "src": "5632:53:61" + }, + { + "nativeSrc": "5694:39:61", + "nodeType": "YulAssignment", + "src": "5694:39:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5723:9:61", + "nodeType": "YulIdentifier", + "src": "5723:9:61" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "5704:18:61", + "nodeType": "YulIdentifier", + "src": "5704:18:61" + }, + "nativeSrc": "5704:29:61", + "nodeType": "YulFunctionCall", + "src": "5704:29:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "5694:6:61", + "nodeType": "YulIdentifier", + "src": "5694:6:61" + } + ] + }, + { + "nativeSrc": "5742:48:61", + "nodeType": "YulAssignment", + "src": "5742:48:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5775:9:61", + "nodeType": "YulIdentifier", + "src": "5775:9:61" + }, + { + "kind": "number", + "nativeSrc": "5786:2:61", + "nodeType": "YulLiteral", + "src": "5786:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5771:3:61", + "nodeType": "YulIdentifier", + "src": "5771:3:61" + }, + "nativeSrc": "5771:18:61", + "nodeType": "YulFunctionCall", + "src": "5771:18:61" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "5752:18:61", + "nodeType": "YulIdentifier", + "src": "5752:18:61" + }, + "nativeSrc": "5752:38:61", + "nodeType": "YulFunctionCall", + "src": "5752:38:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "5742:6:61", + "nodeType": "YulIdentifier", + "src": "5742:6:61" + } + ] + }, + { + "nativeSrc": "5799:48:61", + "nodeType": "YulAssignment", + "src": "5799:48:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5832:9:61", + "nodeType": "YulIdentifier", + "src": "5832:9:61" + }, + { + "kind": "number", + "nativeSrc": "5843:2:61", + "nodeType": "YulLiteral", + "src": "5843:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5828:3:61", + "nodeType": "YulIdentifier", + "src": "5828:3:61" + }, + "nativeSrc": "5828:18:61", + "nodeType": "YulFunctionCall", + "src": "5828:18:61" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "5809:18:61", + "nodeType": "YulIdentifier", + "src": "5809:18:61" + }, + "nativeSrc": "5809:38:61", + "nodeType": "YulFunctionCall", + "src": "5809:38:61" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "5799:6:61", + "nodeType": "YulIdentifier", + "src": "5799:6:61" + } + ] + }, + { + "nativeSrc": "5856:48:61", + "nodeType": "YulAssignment", + "src": "5856:48:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5889:9:61", + "nodeType": "YulIdentifier", + "src": "5889:9:61" + }, + { + "kind": "number", + "nativeSrc": "5900:2:61", + "nodeType": "YulLiteral", + "src": "5900:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5885:3:61", + "nodeType": "YulIdentifier", + "src": "5885:3:61" + }, + "nativeSrc": "5885:18:61", + "nodeType": "YulFunctionCall", + "src": "5885:18:61" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "5866:18:61", + "nodeType": "YulIdentifier", + "src": "5866:18:61" + }, + "nativeSrc": "5866:38:61", + "nodeType": "YulFunctionCall", + "src": "5866:38:61" + }, + "variableNames": [ + { + "name": "value3", + "nativeSrc": "5856:6:61", + "nodeType": "YulIdentifier", + "src": "5856:6:61" + } + ] + }, + { + "nativeSrc": "5913:49:61", + "nodeType": "YulAssignment", + "src": "5913:49:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5946:9:61", + "nodeType": "YulIdentifier", + "src": "5946:9:61" + }, + { + "kind": "number", + "nativeSrc": "5957:3:61", + "nodeType": "YulLiteral", + "src": "5957:3:61", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5942:3:61", + "nodeType": "YulIdentifier", + "src": "5942:3:61" + }, + "nativeSrc": "5942:19:61", + "nodeType": "YulFunctionCall", + "src": "5942:19:61" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "5923:18:61", + "nodeType": "YulIdentifier", + "src": "5923:18:61" + }, + "nativeSrc": "5923:39:61", + "nodeType": "YulFunctionCall", + "src": "5923:39:61" + }, + "variableNames": [ + { + "name": "value4", + "nativeSrc": "5913:6:61", + "nodeType": "YulIdentifier", + "src": "5913:6:61" + } + ] + }, + { + "nativeSrc": "5971:43:61", + "nodeType": "YulAssignment", + "src": "5971:43:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5998:9:61", + "nodeType": "YulIdentifier", + "src": "5998:9:61" + }, + { + "kind": "number", + "nativeSrc": "6009:3:61", + "nodeType": "YulLiteral", + "src": "6009:3:61", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5994:3:61", + "nodeType": "YulIdentifier", + "src": "5994:3:61" + }, + "nativeSrc": "5994:19:61", + "nodeType": "YulFunctionCall", + "src": "5994:19:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "5981:12:61", + "nodeType": "YulIdentifier", + "src": "5981:12:61" + }, + "nativeSrc": "5981:33:61", + "nodeType": "YulFunctionCall", + "src": "5981:33:61" + }, + "variableNames": [ + { + "name": "value5", + "nativeSrc": "5971:6:61", + "nodeType": "YulIdentifier", + "src": "5971:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_addresst_addresst_addresst_uint256", + "nativeSrc": "5467:553:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "5548:9:61", + "nodeType": "YulTypedName", + "src": "5548:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "5559:7:61", + "nodeType": "YulTypedName", + "src": "5559:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "5571:6:61", + "nodeType": "YulTypedName", + "src": "5571:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "5579:6:61", + "nodeType": "YulTypedName", + "src": "5579:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "5587:6:61", + "nodeType": "YulTypedName", + "src": "5587:6:61", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "5595:6:61", + "nodeType": "YulTypedName", + "src": "5595:6:61", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "5603:6:61", + "nodeType": "YulTypedName", + "src": "5603:6:61", + "type": "" + }, + { + "name": "value5", + "nativeSrc": "5611:6:61", + "nodeType": "YulTypedName", + "src": "5611:6:61", + "type": "" + } + ], + "src": "5467:553:61" + }, + { + "body": { + "nativeSrc": "6176:507:61", + "nodeType": "YulBlock", + "src": "6176:507:61", + "statements": [ + { + "nativeSrc": "6186:12:61", + "nodeType": "YulVariableDeclaration", + "src": "6186:12:61", + "value": { + "kind": "number", + "nativeSrc": "6196:2:61", + "nodeType": "YulLiteral", + "src": "6196:2:61", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "6190:2:61", + "nodeType": "YulTypedName", + "src": "6190:2:61", + "type": "" + } + ] + }, + { + "nativeSrc": "6207:32:61", + "nodeType": "YulVariableDeclaration", + "src": "6207:32:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6225:9:61", + "nodeType": "YulIdentifier", + "src": "6225:9:61" + }, + { + "kind": "number", + "nativeSrc": "6236:2:61", + "nodeType": "YulLiteral", + "src": "6236:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6221:3:61", + "nodeType": "YulIdentifier", + "src": "6221:3:61" + }, + "nativeSrc": "6221:18:61", + "nodeType": "YulFunctionCall", + "src": "6221:18:61" + }, + "variables": [ + { + "name": "tail_1", + "nativeSrc": "6211:6:61", + "nodeType": "YulTypedName", + "src": "6211:6:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6255:9:61", + "nodeType": "YulIdentifier", + "src": "6255:9:61" + }, + { + "kind": "number", + "nativeSrc": "6266:2:61", + "nodeType": "YulLiteral", + "src": "6266:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6248:6:61", + "nodeType": "YulIdentifier", + "src": "6248:6:61" + }, + "nativeSrc": "6248:21:61", + "nodeType": "YulFunctionCall", + "src": "6248:21:61" + }, + "nativeSrc": "6248:21:61", + "nodeType": "YulExpressionStatement", + "src": "6248:21:61" + }, + { + "nativeSrc": "6278:17:61", + "nodeType": "YulVariableDeclaration", + "src": "6278:17:61", + "value": { + "name": "tail_1", + "nativeSrc": "6289:6:61", + "nodeType": "YulIdentifier", + "src": "6289:6:61" + }, + "variables": [ + { + "name": "pos", + "nativeSrc": "6282:3:61", + "nodeType": "YulTypedName", + "src": "6282:3:61", + "type": "" + } + ] + }, + { + "nativeSrc": "6304:27:61", + "nodeType": "YulVariableDeclaration", + "src": "6304:27:61", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "6324:6:61", + "nodeType": "YulIdentifier", + "src": "6324:6:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "6318:5:61", + "nodeType": "YulIdentifier", + "src": "6318:5:61" + }, + "nativeSrc": "6318:13:61", + "nodeType": "YulFunctionCall", + "src": "6318:13:61" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "6308:6:61", + "nodeType": "YulTypedName", + "src": "6308:6:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "tail_1", + "nativeSrc": "6347:6:61", + "nodeType": "YulIdentifier", + "src": "6347:6:61" + }, + { + "name": "length", + "nativeSrc": "6355:6:61", + "nodeType": "YulIdentifier", + "src": "6355:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6340:6:61", + "nodeType": "YulIdentifier", + "src": "6340:6:61" + }, + "nativeSrc": "6340:22:61", + "nodeType": "YulFunctionCall", + "src": "6340:22:61" + }, + "nativeSrc": "6340:22:61", + "nodeType": "YulExpressionStatement", + "src": "6340:22:61" + }, + { + "nativeSrc": "6371:25:61", + "nodeType": "YulAssignment", + "src": "6371:25:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6382:9:61", + "nodeType": "YulIdentifier", + "src": "6382:9:61" + }, + { + "kind": "number", + "nativeSrc": "6393:2:61", + "nodeType": "YulLiteral", + "src": "6393:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6378:3:61", + "nodeType": "YulIdentifier", + "src": "6378:3:61" + }, + "nativeSrc": "6378:18:61", + "nodeType": "YulFunctionCall", + "src": "6378:18:61" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "6371:3:61", + "nodeType": "YulIdentifier", + "src": "6371:3:61" + } + ] + }, + { + "nativeSrc": "6405:29:61", + "nodeType": "YulVariableDeclaration", + "src": "6405:29:61", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "6423:6:61", + "nodeType": "YulIdentifier", + "src": "6423:6:61" + }, + { + "kind": "number", + "nativeSrc": "6431:2:61", + "nodeType": "YulLiteral", + "src": "6431:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6419:3:61", + "nodeType": "YulIdentifier", + "src": "6419:3:61" + }, + "nativeSrc": "6419:15:61", + "nodeType": "YulFunctionCall", + "src": "6419:15:61" + }, + "variables": [ + { + "name": "srcPtr", + "nativeSrc": "6409:6:61", + "nodeType": "YulTypedName", + "src": "6409:6:61", + "type": "" + } + ] + }, + { + "nativeSrc": "6443:10:61", + "nodeType": "YulVariableDeclaration", + "src": "6443:10:61", + "value": { + "kind": "number", + "nativeSrc": "6452:1:61", + "nodeType": "YulLiteral", + "src": "6452:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "6447:1:61", + "nodeType": "YulTypedName", + "src": "6447:1:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "6511:146:61", + "nodeType": "YulBlock", + "src": "6511:146:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "6532:3:61", + "nodeType": "YulIdentifier", + "src": "6532:3:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "6547:6:61", + "nodeType": "YulIdentifier", + "src": "6547:6:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "6541:5:61", + "nodeType": "YulIdentifier", + "src": "6541:5:61" + }, + "nativeSrc": "6541:13:61", + "nodeType": "YulFunctionCall", + "src": "6541:13:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6564:3:61", + "nodeType": "YulLiteral", + "src": "6564:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "6569:1:61", + "nodeType": "YulLiteral", + "src": "6569:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "6560:3:61", + "nodeType": "YulIdentifier", + "src": "6560:3:61" + }, + "nativeSrc": "6560:11:61", + "nodeType": "YulFunctionCall", + "src": "6560:11:61" + }, + { + "kind": "number", + "nativeSrc": "6573:1:61", + "nodeType": "YulLiteral", + "src": "6573:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "6556:3:61", + "nodeType": "YulIdentifier", + "src": "6556:3:61" + }, + "nativeSrc": "6556:19:61", + "nodeType": "YulFunctionCall", + "src": "6556:19:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "6537:3:61", + "nodeType": "YulIdentifier", + "src": "6537:3:61" + }, + "nativeSrc": "6537:39:61", + "nodeType": "YulFunctionCall", + "src": "6537:39:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6525:6:61", + "nodeType": "YulIdentifier", + "src": "6525:6:61" + }, + "nativeSrc": "6525:52:61", + "nodeType": "YulFunctionCall", + "src": "6525:52:61" + }, + "nativeSrc": "6525:52:61", + "nodeType": "YulExpressionStatement", + "src": "6525:52:61" + }, + { + "nativeSrc": "6590:19:61", + "nodeType": "YulAssignment", + "src": "6590:19:61", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "6601:3:61", + "nodeType": "YulIdentifier", + "src": "6601:3:61" + }, + { + "name": "_1", + "nativeSrc": "6606:2:61", + "nodeType": "YulIdentifier", + "src": "6606:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6597:3:61", + "nodeType": "YulIdentifier", + "src": "6597:3:61" + }, + "nativeSrc": "6597:12:61", + "nodeType": "YulFunctionCall", + "src": "6597:12:61" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "6590:3:61", + "nodeType": "YulIdentifier", + "src": "6590:3:61" + } + ] + }, + { + "nativeSrc": "6622:25:61", + "nodeType": "YulAssignment", + "src": "6622:25:61", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "6636:6:61", + "nodeType": "YulIdentifier", + "src": "6636:6:61" + }, + { + "name": "_1", + "nativeSrc": "6644:2:61", + "nodeType": "YulIdentifier", + "src": "6644:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6632:3:61", + "nodeType": "YulIdentifier", + "src": "6632:3:61" + }, + "nativeSrc": "6632:15:61", + "nodeType": "YulFunctionCall", + "src": "6632:15:61" + }, + "variableNames": [ + { + "name": "srcPtr", + "nativeSrc": "6622:6:61", + "nodeType": "YulIdentifier", + "src": "6622:6:61" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "6473:1:61", + "nodeType": "YulIdentifier", + "src": "6473:1:61" + }, + { + "name": "length", + "nativeSrc": "6476:6:61", + "nodeType": "YulIdentifier", + "src": "6476:6:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "6470:2:61", + "nodeType": "YulIdentifier", + "src": "6470:2:61" + }, + "nativeSrc": "6470:13:61", + "nodeType": "YulFunctionCall", + "src": "6470:13:61" + }, + "nativeSrc": "6462:195:61", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "6484:18:61", + "nodeType": "YulBlock", + "src": "6484:18:61", + "statements": [ + { + "nativeSrc": "6486:14:61", + "nodeType": "YulAssignment", + "src": "6486:14:61", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "6495:1:61", + "nodeType": "YulIdentifier", + "src": "6495:1:61" + }, + { + "kind": "number", + "nativeSrc": "6498:1:61", + "nodeType": "YulLiteral", + "src": "6498:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6491:3:61", + "nodeType": "YulIdentifier", + "src": "6491:3:61" + }, + "nativeSrc": "6491:9:61", + "nodeType": "YulFunctionCall", + "src": "6491:9:61" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "6486:1:61", + "nodeType": "YulIdentifier", + "src": "6486:1:61" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "6466:3:61", + "nodeType": "YulBlock", + "src": "6466:3:61", + "statements": [] + }, + "src": "6462:195:61" + }, + { + "nativeSrc": "6666:11:61", + "nodeType": "YulAssignment", + "src": "6666:11:61", + "value": { + "name": "pos", + "nativeSrc": "6674:3:61", + "nodeType": "YulIdentifier", + "src": "6674:3:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "6666:4:61", + "nodeType": "YulIdentifier", + "src": "6666:4:61" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed", + "nativeSrc": "6025:658:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "6145:9:61", + "nodeType": "YulTypedName", + "src": "6145:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "6156:6:61", + "nodeType": "YulTypedName", + "src": "6156:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "6167:4:61", + "nodeType": "YulTypedName", + "src": "6167:4:61", + "type": "" + } + ], + "src": "6025:658:61" + }, + { + "body": { + "nativeSrc": "6859:632:61", + "nodeType": "YulBlock", + "src": "6859:632:61", + "statements": [ + { + "nativeSrc": "6869:12:61", + "nodeType": "YulVariableDeclaration", + "src": "6869:12:61", + "value": { + "kind": "number", + "nativeSrc": "6879:2:61", + "nodeType": "YulLiteral", + "src": "6879:2:61", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "6873:2:61", + "nodeType": "YulTypedName", + "src": "6873:2:61", + "type": "" + } + ] + }, + { + "nativeSrc": "6890:32:61", + "nodeType": "YulVariableDeclaration", + "src": "6890:32:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6908:9:61", + "nodeType": "YulIdentifier", + "src": "6908:9:61" + }, + { + "kind": "number", + "nativeSrc": "6919:2:61", + "nodeType": "YulLiteral", + "src": "6919:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6904:3:61", + "nodeType": "YulIdentifier", + "src": "6904:3:61" + }, + "nativeSrc": "6904:18:61", + "nodeType": "YulFunctionCall", + "src": "6904:18:61" + }, + "variables": [ + { + "name": "tail_1", + "nativeSrc": "6894:6:61", + "nodeType": "YulTypedName", + "src": "6894:6:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6938:9:61", + "nodeType": "YulIdentifier", + "src": "6938:9:61" + }, + { + "kind": "number", + "nativeSrc": "6949:2:61", + "nodeType": "YulLiteral", + "src": "6949:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6931:6:61", + "nodeType": "YulIdentifier", + "src": "6931:6:61" + }, + "nativeSrc": "6931:21:61", + "nodeType": "YulFunctionCall", + "src": "6931:21:61" + }, + "nativeSrc": "6931:21:61", + "nodeType": "YulExpressionStatement", + "src": "6931:21:61" + }, + { + "nativeSrc": "6961:17:61", + "nodeType": "YulVariableDeclaration", + "src": "6961:17:61", + "value": { + "name": "tail_1", + "nativeSrc": "6972:6:61", + "nodeType": "YulIdentifier", + "src": "6972:6:61" + }, + "variables": [ + { + "name": "pos", + "nativeSrc": "6965:3:61", + "nodeType": "YulTypedName", + "src": "6965:3:61", + "type": "" + } + ] + }, + { + "nativeSrc": "6987:27:61", + "nodeType": "YulVariableDeclaration", + "src": "6987:27:61", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "7007:6:61", + "nodeType": "YulIdentifier", + "src": "7007:6:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "7001:5:61", + "nodeType": "YulIdentifier", + "src": "7001:5:61" + }, + "nativeSrc": "7001:13:61", + "nodeType": "YulFunctionCall", + "src": "7001:13:61" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "6991:6:61", + "nodeType": "YulTypedName", + "src": "6991:6:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "tail_1", + "nativeSrc": "7030:6:61", + "nodeType": "YulIdentifier", + "src": "7030:6:61" + }, + { + "name": "length", + "nativeSrc": "7038:6:61", + "nodeType": "YulIdentifier", + "src": "7038:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7023:6:61", + "nodeType": "YulIdentifier", + "src": "7023:6:61" + }, + "nativeSrc": "7023:22:61", + "nodeType": "YulFunctionCall", + "src": "7023:22:61" + }, + "nativeSrc": "7023:22:61", + "nodeType": "YulExpressionStatement", + "src": "7023:22:61" + }, + { + "nativeSrc": "7054:25:61", + "nodeType": "YulAssignment", + "src": "7054:25:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7065:9:61", + "nodeType": "YulIdentifier", + "src": "7065:9:61" + }, + { + "kind": "number", + "nativeSrc": "7076:2:61", + "nodeType": "YulLiteral", + "src": "7076:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7061:3:61", + "nodeType": "YulIdentifier", + "src": "7061:3:61" + }, + "nativeSrc": "7061:18:61", + "nodeType": "YulFunctionCall", + "src": "7061:18:61" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "7054:3:61", + "nodeType": "YulIdentifier", + "src": "7054:3:61" + } + ] + }, + { + "nativeSrc": "7088:53:61", + "nodeType": "YulVariableDeclaration", + "src": "7088:53:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7110:9:61", + "nodeType": "YulIdentifier", + "src": "7110:9:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7125:1:61", + "nodeType": "YulLiteral", + "src": "7125:1:61", + "type": "", + "value": "5" + }, + { + "name": "length", + "nativeSrc": "7128:6:61", + "nodeType": "YulIdentifier", + "src": "7128:6:61" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "7121:3:61", + "nodeType": "YulIdentifier", + "src": "7121:3:61" + }, + "nativeSrc": "7121:14:61", + "nodeType": "YulFunctionCall", + "src": "7121:14:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7106:3:61", + "nodeType": "YulIdentifier", + "src": "7106:3:61" + }, + "nativeSrc": "7106:30:61", + "nodeType": "YulFunctionCall", + "src": "7106:30:61" + }, + { + "kind": "number", + "nativeSrc": "7138:2:61", + "nodeType": "YulLiteral", + "src": "7138:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7102:3:61", + "nodeType": "YulIdentifier", + "src": "7102:3:61" + }, + "nativeSrc": "7102:39:61", + "nodeType": "YulFunctionCall", + "src": "7102:39:61" + }, + "variables": [ + { + "name": "tail_2", + "nativeSrc": "7092:6:61", + "nodeType": "YulTypedName", + "src": "7092:6:61", + "type": "" + } + ] + }, + { + "nativeSrc": "7150:29:61", + "nodeType": "YulVariableDeclaration", + "src": "7150:29:61", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "7168:6:61", + "nodeType": "YulIdentifier", + "src": "7168:6:61" + }, + { + "kind": "number", + "nativeSrc": "7176:2:61", + "nodeType": "YulLiteral", + "src": "7176:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7164:3:61", + "nodeType": "YulIdentifier", + "src": "7164:3:61" + }, + "nativeSrc": "7164:15:61", + "nodeType": "YulFunctionCall", + "src": "7164:15:61" + }, + "variables": [ + { + "name": "srcPtr", + "nativeSrc": "7154:6:61", + "nodeType": "YulTypedName", + "src": "7154:6:61", + "type": "" + } + ] + }, + { + "nativeSrc": "7188:10:61", + "nodeType": "YulVariableDeclaration", + "src": "7188:10:61", + "value": { + "kind": "number", + "nativeSrc": "7197:1:61", + "nodeType": "YulLiteral", + "src": "7197:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "7192:1:61", + "nodeType": "YulTypedName", + "src": "7192:1:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "7256:206:61", + "nodeType": "YulBlock", + "src": "7256:206:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "7277:3:61", + "nodeType": "YulIdentifier", + "src": "7277:3:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "tail_2", + "nativeSrc": "7290:6:61", + "nodeType": "YulIdentifier", + "src": "7290:6:61" + }, + { + "name": "headStart", + "nativeSrc": "7298:9:61", + "nodeType": "YulIdentifier", + "src": "7298:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "7286:3:61", + "nodeType": "YulIdentifier", + "src": "7286:3:61" + }, + "nativeSrc": "7286:22:61", + "nodeType": "YulFunctionCall", + "src": "7286:22:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7314:2:61", + "nodeType": "YulLiteral", + "src": "7314:2:61", + "type": "", + "value": "63" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "7310:3:61", + "nodeType": "YulIdentifier", + "src": "7310:3:61" + }, + "nativeSrc": "7310:7:61", + "nodeType": "YulFunctionCall", + "src": "7310:7:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7282:3:61", + "nodeType": "YulIdentifier", + "src": "7282:3:61" + }, + "nativeSrc": "7282:36:61", + "nodeType": "YulFunctionCall", + "src": "7282:36:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7270:6:61", + "nodeType": "YulIdentifier", + "src": "7270:6:61" + }, + "nativeSrc": "7270:49:61", + "nodeType": "YulFunctionCall", + "src": "7270:49:61" + }, + "nativeSrc": "7270:49:61", + "nodeType": "YulExpressionStatement", + "src": "7270:49:61" + }, + { + "nativeSrc": "7332:50:61", + "nodeType": "YulAssignment", + "src": "7332:50:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "7366:6:61", + "nodeType": "YulIdentifier", + "src": "7366:6:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "7360:5:61", + "nodeType": "YulIdentifier", + "src": "7360:5:61" + }, + "nativeSrc": "7360:13:61", + "nodeType": "YulFunctionCall", + "src": "7360:13:61" + }, + { + "name": "tail_2", + "nativeSrc": "7375:6:61", + "nodeType": "YulIdentifier", + "src": "7375:6:61" + } + ], + "functionName": { + "name": "abi_encode_string", + "nativeSrc": "7342:17:61", + "nodeType": "YulIdentifier", + "src": "7342:17:61" + }, + "nativeSrc": "7342:40:61", + "nodeType": "YulFunctionCall", + "src": "7342:40:61" + }, + "variableNames": [ + { + "name": "tail_2", + "nativeSrc": "7332:6:61", + "nodeType": "YulIdentifier", + "src": "7332:6:61" + } + ] + }, + { + "nativeSrc": "7395:25:61", + "nodeType": "YulAssignment", + "src": "7395:25:61", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "7409:6:61", + "nodeType": "YulIdentifier", + "src": "7409:6:61" + }, + { + "name": "_1", + "nativeSrc": "7417:2:61", + "nodeType": "YulIdentifier", + "src": "7417:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7405:3:61", + "nodeType": "YulIdentifier", + "src": "7405:3:61" + }, + "nativeSrc": "7405:15:61", + "nodeType": "YulFunctionCall", + "src": "7405:15:61" + }, + "variableNames": [ + { + "name": "srcPtr", + "nativeSrc": "7395:6:61", + "nodeType": "YulIdentifier", + "src": "7395:6:61" + } + ] + }, + { + "nativeSrc": "7433:19:61", + "nodeType": "YulAssignment", + "src": "7433:19:61", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "7444:3:61", + "nodeType": "YulIdentifier", + "src": "7444:3:61" + }, + { + "name": "_1", + "nativeSrc": "7449:2:61", + "nodeType": "YulIdentifier", + "src": "7449:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7440:3:61", + "nodeType": "YulIdentifier", + "src": "7440:3:61" + }, + "nativeSrc": "7440:12:61", + "nodeType": "YulFunctionCall", + "src": "7440:12:61" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "7433:3:61", + "nodeType": "YulIdentifier", + "src": "7433:3:61" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "7218:1:61", + "nodeType": "YulIdentifier", + "src": "7218:1:61" + }, + { + "name": "length", + "nativeSrc": "7221:6:61", + "nodeType": "YulIdentifier", + "src": "7221:6:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "7215:2:61", + "nodeType": "YulIdentifier", + "src": "7215:2:61" + }, + "nativeSrc": "7215:13:61", + "nodeType": "YulFunctionCall", + "src": "7215:13:61" + }, + "nativeSrc": "7207:255:61", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "7229:18:61", + "nodeType": "YulBlock", + "src": "7229:18:61", + "statements": [ + { + "nativeSrc": "7231:14:61", + "nodeType": "YulAssignment", + "src": "7231:14:61", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "7240:1:61", + "nodeType": "YulIdentifier", + "src": "7240:1:61" + }, + { + "kind": "number", + "nativeSrc": "7243:1:61", + "nodeType": "YulLiteral", + "src": "7243:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7236:3:61", + "nodeType": "YulIdentifier", + "src": "7236:3:61" + }, + "nativeSrc": "7236:9:61", + "nodeType": "YulFunctionCall", + "src": "7236:9:61" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "7231:1:61", + "nodeType": "YulIdentifier", + "src": "7231:1:61" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "7211:3:61", + "nodeType": "YulBlock", + "src": "7211:3:61", + "statements": [] + }, + "src": "7207:255:61" + }, + { + "nativeSrc": "7471:14:61", + "nodeType": "YulAssignment", + "src": "7471:14:61", + "value": { + "name": "tail_2", + "nativeSrc": "7479:6:61", + "nodeType": "YulIdentifier", + "src": "7479:6:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "7471:4:61", + "nodeType": "YulIdentifier", + "src": "7471:4:61" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_array$_t_string_memory_ptr_$dyn_memory_ptr__to_t_array$_t_string_memory_ptr_$dyn_memory_ptr__fromStack_reversed", + "nativeSrc": "6688:803:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "6828:9:61", + "nodeType": "YulTypedName", + "src": "6828:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "6839:6:61", + "nodeType": "YulTypedName", + "src": "6839:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "6850:4:61", + "nodeType": "YulTypedName", + "src": "6850:4:61", + "type": "" + } + ], + "src": "6688:803:61" + }, + { + "body": { + "nativeSrc": "7583:173:61", + "nodeType": "YulBlock", + "src": "7583:173:61", + "statements": [ + { + "body": { + "nativeSrc": "7629:16:61", + "nodeType": "YulBlock", + "src": "7629:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7638:1:61", + "nodeType": "YulLiteral", + "src": "7638:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "7641:1:61", + "nodeType": "YulLiteral", + "src": "7641:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "7631:6:61", + "nodeType": "YulIdentifier", + "src": "7631:6:61" + }, + "nativeSrc": "7631:12:61", + "nodeType": "YulFunctionCall", + "src": "7631:12:61" + }, + "nativeSrc": "7631:12:61", + "nodeType": "YulExpressionStatement", + "src": "7631:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "7604:7:61", + "nodeType": "YulIdentifier", + "src": "7604:7:61" + }, + { + "name": "headStart", + "nativeSrc": "7613:9:61", + "nodeType": "YulIdentifier", + "src": "7613:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "7600:3:61", + "nodeType": "YulIdentifier", + "src": "7600:3:61" + }, + "nativeSrc": "7600:23:61", + "nodeType": "YulFunctionCall", + "src": "7600:23:61" + }, + { + "kind": "number", + "nativeSrc": "7625:2:61", + "nodeType": "YulLiteral", + "src": "7625:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "7596:3:61", + "nodeType": "YulIdentifier", + "src": "7596:3:61" + }, + "nativeSrc": "7596:32:61", + "nodeType": "YulFunctionCall", + "src": "7596:32:61" + }, + "nativeSrc": "7593:52:61", + "nodeType": "YulIf", + "src": "7593:52:61" + }, + { + "nativeSrc": "7654:39:61", + "nodeType": "YulAssignment", + "src": "7654:39:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7683:9:61", + "nodeType": "YulIdentifier", + "src": "7683:9:61" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "7664:18:61", + "nodeType": "YulIdentifier", + "src": "7664:18:61" + }, + "nativeSrc": "7664:29:61", + "nodeType": "YulFunctionCall", + "src": "7664:29:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "7654:6:61", + "nodeType": "YulIdentifier", + "src": "7654:6:61" + } + ] + }, + { + "nativeSrc": "7702:48:61", + "nodeType": "YulAssignment", + "src": "7702:48:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7735:9:61", + "nodeType": "YulIdentifier", + "src": "7735:9:61" + }, + { + "kind": "number", + "nativeSrc": "7746:2:61", + "nodeType": "YulLiteral", + "src": "7746:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7731:3:61", + "nodeType": "YulIdentifier", + "src": "7731:3:61" + }, + "nativeSrc": "7731:18:61", + "nodeType": "YulFunctionCall", + "src": "7731:18:61" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "7712:18:61", + "nodeType": "YulIdentifier", + "src": "7712:18:61" + }, + "nativeSrc": "7712:38:61", + "nodeType": "YulFunctionCall", + "src": "7712:38:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "7702:6:61", + "nodeType": "YulIdentifier", + "src": "7702:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_address", + "nativeSrc": "7496:260:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "7541:9:61", + "nodeType": "YulTypedName", + "src": "7541:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "7552:7:61", + "nodeType": "YulTypedName", + "src": "7552:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "7564:6:61", + "nodeType": "YulTypedName", + "src": "7564:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "7572:6:61", + "nodeType": "YulTypedName", + "src": "7572:6:61", + "type": "" + } + ], + "src": "7496:260:61" + }, + { + "body": { + "nativeSrc": "7900:150:61", + "nodeType": "YulBlock", + "src": "7900:150:61", + "statements": [ + { + "nativeSrc": "7910:27:61", + "nodeType": "YulVariableDeclaration", + "src": "7910:27:61", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "7930:6:61", + "nodeType": "YulIdentifier", + "src": "7930:6:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "7924:5:61", + "nodeType": "YulIdentifier", + "src": "7924:5:61" + }, + "nativeSrc": "7924:13:61", + "nodeType": "YulFunctionCall", + "src": "7924:13:61" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "7914:6:61", + "nodeType": "YulTypedName", + "src": "7914:6:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "7985:6:61", + "nodeType": "YulIdentifier", + "src": "7985:6:61" + }, + { + "kind": "number", + "nativeSrc": "7993:4:61", + "nodeType": "YulLiteral", + "src": "7993:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7981:3:61", + "nodeType": "YulIdentifier", + "src": "7981:3:61" + }, + "nativeSrc": "7981:17:61", + "nodeType": "YulFunctionCall", + "src": "7981:17:61" + }, + { + "name": "pos", + "nativeSrc": "8000:3:61", + "nodeType": "YulIdentifier", + "src": "8000:3:61" + }, + { + "name": "length", + "nativeSrc": "8005:6:61", + "nodeType": "YulIdentifier", + "src": "8005:6:61" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "7946:34:61", + "nodeType": "YulIdentifier", + "src": "7946:34:61" + }, + "nativeSrc": "7946:66:61", + "nodeType": "YulFunctionCall", + "src": "7946:66:61" + }, + "nativeSrc": "7946:66:61", + "nodeType": "YulExpressionStatement", + "src": "7946:66:61" + }, + { + "nativeSrc": "8021:23:61", + "nodeType": "YulAssignment", + "src": "8021:23:61", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "8032:3:61", + "nodeType": "YulIdentifier", + "src": "8032:3:61" + }, + { + "name": "length", + "nativeSrc": "8037:6:61", + "nodeType": "YulIdentifier", + "src": "8037:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8028:3:61", + "nodeType": "YulIdentifier", + "src": "8028:3:61" + }, + "nativeSrc": "8028:16:61", + "nodeType": "YulFunctionCall", + "src": "8028:16:61" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "8021:3:61", + "nodeType": "YulIdentifier", + "src": "8021:3:61" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nativeSrc": "7761:289:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "7876:3:61", + "nodeType": "YulTypedName", + "src": "7876:3:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "7881:6:61", + "nodeType": "YulTypedName", + "src": "7881:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "7892:3:61", + "nodeType": "YulTypedName", + "src": "7892:3:61", + "type": "" + } + ], + "src": "7761:289:61" + }, + { + "body": { + "nativeSrc": "8110:325:61", + "nodeType": "YulBlock", + "src": "8110:325:61", + "statements": [ + { + "nativeSrc": "8120:22:61", + "nodeType": "YulAssignment", + "src": "8120:22:61", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8134:1:61", + "nodeType": "YulLiteral", + "src": "8134:1:61", + "type": "", + "value": "1" + }, + { + "name": "data", + "nativeSrc": "8137:4:61", + "nodeType": "YulIdentifier", + "src": "8137:4:61" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "8130:3:61", + "nodeType": "YulIdentifier", + "src": "8130:3:61" + }, + "nativeSrc": "8130:12:61", + "nodeType": "YulFunctionCall", + "src": "8130:12:61" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "8120:6:61", + "nodeType": "YulIdentifier", + "src": "8120:6:61" + } + ] + }, + { + "nativeSrc": "8151:38:61", + "nodeType": "YulVariableDeclaration", + "src": "8151:38:61", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "8181:4:61", + "nodeType": "YulIdentifier", + "src": "8181:4:61" + }, + { + "kind": "number", + "nativeSrc": "8187:1:61", + "nodeType": "YulLiteral", + "src": "8187:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "8177:3:61", + "nodeType": "YulIdentifier", + "src": "8177:3:61" + }, + "nativeSrc": "8177:12:61", + "nodeType": "YulFunctionCall", + "src": "8177:12:61" + }, + "variables": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "8155:18:61", + "nodeType": "YulTypedName", + "src": "8155:18:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "8228:31:61", + "nodeType": "YulBlock", + "src": "8228:31:61", + "statements": [ + { + "nativeSrc": "8230:27:61", + "nodeType": "YulAssignment", + "src": "8230:27:61", + "value": { + "arguments": [ + { + "name": "length", + "nativeSrc": "8244:6:61", + "nodeType": "YulIdentifier", + "src": "8244:6:61" + }, + { + "kind": "number", + "nativeSrc": "8252:4:61", + "nodeType": "YulLiteral", + "src": "8252:4:61", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "8240:3:61", + "nodeType": "YulIdentifier", + "src": "8240:3:61" + }, + "nativeSrc": "8240:17:61", + "nodeType": "YulFunctionCall", + "src": "8240:17:61" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "8230:6:61", + "nodeType": "YulIdentifier", + "src": "8230:6:61" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "8208:18:61", + "nodeType": "YulIdentifier", + "src": "8208:18:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "8201:6:61", + "nodeType": "YulIdentifier", + "src": "8201:6:61" + }, + "nativeSrc": "8201:26:61", + "nodeType": "YulFunctionCall", + "src": "8201:26:61" + }, + "nativeSrc": "8198:61:61", + "nodeType": "YulIf", + "src": "8198:61:61" + }, + { + "body": { + "nativeSrc": "8318:111:61", + "nodeType": "YulBlock", + "src": "8318:111:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8339:1:61", + "nodeType": "YulLiteral", + "src": "8339:1:61", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8346:3:61", + "nodeType": "YulLiteral", + "src": "8346:3:61", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "8351:10:61", + "nodeType": "YulLiteral", + "src": "8351:10:61", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "8342:3:61", + "nodeType": "YulIdentifier", + "src": "8342:3:61" + }, + "nativeSrc": "8342:20:61", + "nodeType": "YulFunctionCall", + "src": "8342:20:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8332:6:61", + "nodeType": "YulIdentifier", + "src": "8332:6:61" + }, + "nativeSrc": "8332:31:61", + "nodeType": "YulFunctionCall", + "src": "8332:31:61" + }, + "nativeSrc": "8332:31:61", + "nodeType": "YulExpressionStatement", + "src": "8332:31:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8383:1:61", + "nodeType": "YulLiteral", + "src": "8383:1:61", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "8386:4:61", + "nodeType": "YulLiteral", + "src": "8386:4:61", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8376:6:61", + "nodeType": "YulIdentifier", + "src": "8376:6:61" + }, + "nativeSrc": "8376:15:61", + "nodeType": "YulFunctionCall", + "src": "8376:15:61" + }, + "nativeSrc": "8376:15:61", + "nodeType": "YulExpressionStatement", + "src": "8376:15:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8411:1:61", + "nodeType": "YulLiteral", + "src": "8411:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "8414:4:61", + "nodeType": "YulLiteral", + "src": "8414:4:61", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "8404:6:61", + "nodeType": "YulIdentifier", + "src": "8404:6:61" + }, + "nativeSrc": "8404:15:61", + "nodeType": "YulFunctionCall", + "src": "8404:15:61" + }, + "nativeSrc": "8404:15:61", + "nodeType": "YulExpressionStatement", + "src": "8404:15:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "8274:18:61", + "nodeType": "YulIdentifier", + "src": "8274:18:61" + }, + { + "arguments": [ + { + "name": "length", + "nativeSrc": "8297:6:61", + "nodeType": "YulIdentifier", + "src": "8297:6:61" + }, + { + "kind": "number", + "nativeSrc": "8305:2:61", + "nodeType": "YulLiteral", + "src": "8305:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "8294:2:61", + "nodeType": "YulIdentifier", + "src": "8294:2:61" + }, + "nativeSrc": "8294:14:61", + "nodeType": "YulFunctionCall", + "src": "8294:14:61" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "8271:2:61", + "nodeType": "YulIdentifier", + "src": "8271:2:61" + }, + "nativeSrc": "8271:38:61", + "nodeType": "YulFunctionCall", + "src": "8271:38:61" + }, + "nativeSrc": "8268:161:61", + "nodeType": "YulIf", + "src": "8268:161:61" + } + ] + }, + "name": "extract_byte_array_length", + "nativeSrc": "8055:380:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nativeSrc": "8090:4:61", + "nodeType": "YulTypedName", + "src": "8090:4:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nativeSrc": "8099:6:61", + "nodeType": "YulTypedName", + "src": "8099:6:61", + "type": "" + } + ], + "src": "8055:380:61" + }, + { + "body": { + "nativeSrc": "8548:101:61", + "nodeType": "YulBlock", + "src": "8548:101:61", + "statements": [ + { + "nativeSrc": "8558:26:61", + "nodeType": "YulAssignment", + "src": "8558:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8570:9:61", + "nodeType": "YulIdentifier", + "src": "8570:9:61" + }, + { + "kind": "number", + "nativeSrc": "8581:2:61", + "nodeType": "YulLiteral", + "src": "8581:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8566:3:61", + "nodeType": "YulIdentifier", + "src": "8566:3:61" + }, + "nativeSrc": "8566:18:61", + "nodeType": "YulFunctionCall", + "src": "8566:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "8558:4:61", + "nodeType": "YulIdentifier", + "src": "8558:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8600:9:61", + "nodeType": "YulIdentifier", + "src": "8600:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "8615:6:61", + "nodeType": "YulIdentifier", + "src": "8615:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8631:2:61", + "nodeType": "YulLiteral", + "src": "8631:2:61", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "8635:1:61", + "nodeType": "YulLiteral", + "src": "8635:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "8627:3:61", + "nodeType": "YulIdentifier", + "src": "8627:3:61" + }, + "nativeSrc": "8627:10:61", + "nodeType": "YulFunctionCall", + "src": "8627:10:61" + }, + { + "kind": "number", + "nativeSrc": "8639:1:61", + "nodeType": "YulLiteral", + "src": "8639:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "8623:3:61", + "nodeType": "YulIdentifier", + "src": "8623:3:61" + }, + "nativeSrc": "8623:18:61", + "nodeType": "YulFunctionCall", + "src": "8623:18:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "8611:3:61", + "nodeType": "YulIdentifier", + "src": "8611:3:61" + }, + "nativeSrc": "8611:31:61", + "nodeType": "YulFunctionCall", + "src": "8611:31:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8593:6:61", + "nodeType": "YulIdentifier", + "src": "8593:6:61" + }, + "nativeSrc": "8593:50:61", + "nodeType": "YulFunctionCall", + "src": "8593:50:61" + }, + "nativeSrc": "8593:50:61", + "nodeType": "YulExpressionStatement", + "src": "8593:50:61" + } + ] + }, + "name": "abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed", + "nativeSrc": "8440:209:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "8517:9:61", + "nodeType": "YulTypedName", + "src": "8517:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "8528:6:61", + "nodeType": "YulTypedName", + "src": "8528:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "8539:4:61", + "nodeType": "YulTypedName", + "src": "8539:4:61", + "type": "" + } + ], + "src": "8440:209:61" + }, + { + "body": { + "nativeSrc": "8686:95:61", + "nodeType": "YulBlock", + "src": "8686:95:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8703:1:61", + "nodeType": "YulLiteral", + "src": "8703:1:61", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8710:3:61", + "nodeType": "YulLiteral", + "src": "8710:3:61", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "8715:10:61", + "nodeType": "YulLiteral", + "src": "8715:10:61", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "8706:3:61", + "nodeType": "YulIdentifier", + "src": "8706:3:61" + }, + "nativeSrc": "8706:20:61", + "nodeType": "YulFunctionCall", + "src": "8706:20:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8696:6:61", + "nodeType": "YulIdentifier", + "src": "8696:6:61" + }, + "nativeSrc": "8696:31:61", + "nodeType": "YulFunctionCall", + "src": "8696:31:61" + }, + "nativeSrc": "8696:31:61", + "nodeType": "YulExpressionStatement", + "src": "8696:31:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8743:1:61", + "nodeType": "YulLiteral", + "src": "8743:1:61", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "8746:4:61", + "nodeType": "YulLiteral", + "src": "8746:4:61", + "type": "", + "value": "0x32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8736:6:61", + "nodeType": "YulIdentifier", + "src": "8736:6:61" + }, + "nativeSrc": "8736:15:61", + "nodeType": "YulFunctionCall", + "src": "8736:15:61" + }, + "nativeSrc": "8736:15:61", + "nodeType": "YulExpressionStatement", + "src": "8736:15:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8767:1:61", + "nodeType": "YulLiteral", + "src": "8767:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "8770:4:61", + "nodeType": "YulLiteral", + "src": "8770:4:61", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "8760:6:61", + "nodeType": "YulIdentifier", + "src": "8760:6:61" + }, + "nativeSrc": "8760:15:61", + "nodeType": "YulFunctionCall", + "src": "8760:15:61" + }, + "nativeSrc": "8760:15:61", + "nodeType": "YulExpressionStatement", + "src": "8760:15:61" + } + ] + }, + "name": "panic_error_0x32", + "nativeSrc": "8654:127:61", + "nodeType": "YulFunctionDefinition", + "src": "8654:127:61" + }, + { + "body": { + "nativeSrc": "8842:65:61", + "nodeType": "YulBlock", + "src": "8842:65:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8859:1:61", + "nodeType": "YulLiteral", + "src": "8859:1:61", + "type": "", + "value": "0" + }, + { + "name": "ptr", + "nativeSrc": "8862:3:61", + "nodeType": "YulIdentifier", + "src": "8862:3:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8852:6:61", + "nodeType": "YulIdentifier", + "src": "8852:6:61" + }, + "nativeSrc": "8852:14:61", + "nodeType": "YulFunctionCall", + "src": "8852:14:61" + }, + "nativeSrc": "8852:14:61", + "nodeType": "YulExpressionStatement", + "src": "8852:14:61" + }, + { + "nativeSrc": "8875:26:61", + "nodeType": "YulAssignment", + "src": "8875:26:61", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8893:1:61", + "nodeType": "YulLiteral", + "src": "8893:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "8896:4:61", + "nodeType": "YulLiteral", + "src": "8896:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "8883:9:61", + "nodeType": "YulIdentifier", + "src": "8883:9:61" + }, + "nativeSrc": "8883:18:61", + "nodeType": "YulFunctionCall", + "src": "8883:18:61" + }, + "variableNames": [ + { + "name": "data", + "nativeSrc": "8875:4:61", + "nodeType": "YulIdentifier", + "src": "8875:4:61" + } + ] + } + ] + }, + "name": "array_dataslot_string_storage", + "nativeSrc": "8786:121:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "ptr", + "nativeSrc": "8825:3:61", + "nodeType": "YulTypedName", + "src": "8825:3:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "data", + "nativeSrc": "8833:4:61", + "nodeType": "YulTypedName", + "src": "8833:4:61", + "type": "" + } + ], + "src": "8786:121:61" + }, + { + "body": { + "nativeSrc": "8993:462:61", + "nodeType": "YulBlock", + "src": "8993:462:61", + "statements": [ + { + "body": { + "nativeSrc": "9026:423:61", + "nodeType": "YulBlock", + "src": "9026:423:61", + "statements": [ + { + "nativeSrc": "9040:11:61", + "nodeType": "YulVariableDeclaration", + "src": "9040:11:61", + "value": { + "kind": "number", + "nativeSrc": "9050:1:61", + "nodeType": "YulLiteral", + "src": "9050:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "9044:2:61", + "nodeType": "YulTypedName", + "src": "9044:2:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9071:1:61", + "nodeType": "YulLiteral", + "src": "9071:1:61", + "type": "", + "value": "0" + }, + { + "name": "array", + "nativeSrc": "9074:5:61", + "nodeType": "YulIdentifier", + "src": "9074:5:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9064:6:61", + "nodeType": "YulIdentifier", + "src": "9064:6:61" + }, + "nativeSrc": "9064:16:61", + "nodeType": "YulFunctionCall", + "src": "9064:16:61" + }, + "nativeSrc": "9064:16:61", + "nodeType": "YulExpressionStatement", + "src": "9064:16:61" + }, + { + "nativeSrc": "9093:30:61", + "nodeType": "YulVariableDeclaration", + "src": "9093:30:61", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9115:1:61", + "nodeType": "YulLiteral", + "src": "9115:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "9118:4:61", + "nodeType": "YulLiteral", + "src": "9118:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "9105:9:61", + "nodeType": "YulIdentifier", + "src": "9105:9:61" + }, + "nativeSrc": "9105:18:61", + "nodeType": "YulFunctionCall", + "src": "9105:18:61" + }, + "variables": [ + { + "name": "data", + "nativeSrc": "9097:4:61", + "nodeType": "YulTypedName", + "src": "9097:4:61", + "type": "" + } + ] + }, + { + "nativeSrc": "9136:57:61", + "nodeType": "YulVariableDeclaration", + "src": "9136:57:61", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "9159:4:61", + "nodeType": "YulIdentifier", + "src": "9159:4:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9169:1:61", + "nodeType": "YulLiteral", + "src": "9169:1:61", + "type": "", + "value": "5" + }, + { + "arguments": [ + { + "name": "startIndex", + "nativeSrc": "9176:10:61", + "nodeType": "YulIdentifier", + "src": "9176:10:61" + }, + { + "kind": "number", + "nativeSrc": "9188:2:61", + "nodeType": "YulLiteral", + "src": "9188:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9172:3:61", + "nodeType": "YulIdentifier", + "src": "9172:3:61" + }, + "nativeSrc": "9172:19:61", + "nodeType": "YulFunctionCall", + "src": "9172:19:61" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "9165:3:61", + "nodeType": "YulIdentifier", + "src": "9165:3:61" + }, + "nativeSrc": "9165:27:61", + "nodeType": "YulFunctionCall", + "src": "9165:27:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9155:3:61", + "nodeType": "YulIdentifier", + "src": "9155:3:61" + }, + "nativeSrc": "9155:38:61", + "nodeType": "YulFunctionCall", + "src": "9155:38:61" + }, + "variables": [ + { + "name": "deleteStart", + "nativeSrc": "9140:11:61", + "nodeType": "YulTypedName", + "src": "9140:11:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "9230:23:61", + "nodeType": "YulBlock", + "src": "9230:23:61", + "statements": [ + { + "nativeSrc": "9232:19:61", + "nodeType": "YulAssignment", + "src": "9232:19:61", + "value": { + "name": "data", + "nativeSrc": "9247:4:61", + "nodeType": "YulIdentifier", + "src": "9247:4:61" + }, + "variableNames": [ + { + "name": "deleteStart", + "nativeSrc": "9232:11:61", + "nodeType": "YulIdentifier", + "src": "9232:11:61" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "startIndex", + "nativeSrc": "9212:10:61", + "nodeType": "YulIdentifier", + "src": "9212:10:61" + }, + { + "kind": "number", + "nativeSrc": "9224:4:61", + "nodeType": "YulLiteral", + "src": "9224:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "9209:2:61", + "nodeType": "YulIdentifier", + "src": "9209:2:61" + }, + "nativeSrc": "9209:20:61", + "nodeType": "YulFunctionCall", + "src": "9209:20:61" + }, + "nativeSrc": "9206:47:61", + "nodeType": "YulIf", + "src": "9206:47:61" + }, + { + "nativeSrc": "9266:41:61", + "nodeType": "YulVariableDeclaration", + "src": "9266:41:61", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "9280:4:61", + "nodeType": "YulIdentifier", + "src": "9280:4:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9290:1:61", + "nodeType": "YulLiteral", + "src": "9290:1:61", + "type": "", + "value": "5" + }, + { + "arguments": [ + { + "name": "len", + "nativeSrc": "9297:3:61", + "nodeType": "YulIdentifier", + "src": "9297:3:61" + }, + { + "kind": "number", + "nativeSrc": "9302:2:61", + "nodeType": "YulLiteral", + "src": "9302:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9293:3:61", + "nodeType": "YulIdentifier", + "src": "9293:3:61" + }, + "nativeSrc": "9293:12:61", + "nodeType": "YulFunctionCall", + "src": "9293:12:61" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "9286:3:61", + "nodeType": "YulIdentifier", + "src": "9286:3:61" + }, + "nativeSrc": "9286:20:61", + "nodeType": "YulFunctionCall", + "src": "9286:20:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9276:3:61", + "nodeType": "YulIdentifier", + "src": "9276:3:61" + }, + "nativeSrc": "9276:31:61", + "nodeType": "YulFunctionCall", + "src": "9276:31:61" + }, + "variables": [ + { + "name": "_2", + "nativeSrc": "9270:2:61", + "nodeType": "YulTypedName", + "src": "9270:2:61", + "type": "" + } + ] + }, + { + "nativeSrc": "9320:24:61", + "nodeType": "YulVariableDeclaration", + "src": "9320:24:61", + "value": { + "name": "deleteStart", + "nativeSrc": "9333:11:61", + "nodeType": "YulIdentifier", + "src": "9333:11:61" + }, + "variables": [ + { + "name": "start", + "nativeSrc": "9324:5:61", + "nodeType": "YulTypedName", + "src": "9324:5:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "9418:21:61", + "nodeType": "YulBlock", + "src": "9418:21:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "start", + "nativeSrc": "9427:5:61", + "nodeType": "YulIdentifier", + "src": "9427:5:61" + }, + { + "name": "_1", + "nativeSrc": "9434:2:61", + "nodeType": "YulIdentifier", + "src": "9434:2:61" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "9420:6:61", + "nodeType": "YulIdentifier", + "src": "9420:6:61" + }, + "nativeSrc": "9420:17:61", + "nodeType": "YulFunctionCall", + "src": "9420:17:61" + }, + "nativeSrc": "9420:17:61", + "nodeType": "YulExpressionStatement", + "src": "9420:17:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "start", + "nativeSrc": "9368:5:61", + "nodeType": "YulIdentifier", + "src": "9368:5:61" + }, + { + "name": "_2", + "nativeSrc": "9375:2:61", + "nodeType": "YulIdentifier", + "src": "9375:2:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "9365:2:61", + "nodeType": "YulIdentifier", + "src": "9365:2:61" + }, + "nativeSrc": "9365:13:61", + "nodeType": "YulFunctionCall", + "src": "9365:13:61" + }, + "nativeSrc": "9357:82:61", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "9379:26:61", + "nodeType": "YulBlock", + "src": "9379:26:61", + "statements": [ + { + "nativeSrc": "9381:22:61", + "nodeType": "YulAssignment", + "src": "9381:22:61", + "value": { + "arguments": [ + { + "name": "start", + "nativeSrc": "9394:5:61", + "nodeType": "YulIdentifier", + "src": "9394:5:61" + }, + { + "kind": "number", + "nativeSrc": "9401:1:61", + "nodeType": "YulLiteral", + "src": "9401:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9390:3:61", + "nodeType": "YulIdentifier", + "src": "9390:3:61" + }, + "nativeSrc": "9390:13:61", + "nodeType": "YulFunctionCall", + "src": "9390:13:61" + }, + "variableNames": [ + { + "name": "start", + "nativeSrc": "9381:5:61", + "nodeType": "YulIdentifier", + "src": "9381:5:61" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "9361:3:61", + "nodeType": "YulBlock", + "src": "9361:3:61", + "statements": [] + }, + "src": "9357:82:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "len", + "nativeSrc": "9009:3:61", + "nodeType": "YulIdentifier", + "src": "9009:3:61" + }, + { + "kind": "number", + "nativeSrc": "9014:2:61", + "nodeType": "YulLiteral", + "src": "9014:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "9006:2:61", + "nodeType": "YulIdentifier", + "src": "9006:2:61" + }, + "nativeSrc": "9006:11:61", + "nodeType": "YulFunctionCall", + "src": "9006:11:61" + }, + "nativeSrc": "9003:446:61", + "nodeType": "YulIf", + "src": "9003:446:61" + } + ] + }, + "name": "clean_up_bytearray_end_slots_string_storage", + "nativeSrc": "8912:543:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "array", + "nativeSrc": "8965:5:61", + "nodeType": "YulTypedName", + "src": "8965:5:61", + "type": "" + }, + { + "name": "len", + "nativeSrc": "8972:3:61", + "nodeType": "YulTypedName", + "src": "8972:3:61", + "type": "" + }, + { + "name": "startIndex", + "nativeSrc": "8977:10:61", + "nodeType": "YulTypedName", + "src": "8977:10:61", + "type": "" + } + ], + "src": "8912:543:61" + }, + { + "body": { + "nativeSrc": "9545:81:61", + "nodeType": "YulBlock", + "src": "9545:81:61", + "statements": [ + { + "nativeSrc": "9555:65:61", + "nodeType": "YulAssignment", + "src": "9555:65:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "data", + "nativeSrc": "9570:4:61", + "nodeType": "YulIdentifier", + "src": "9570:4:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9588:1:61", + "nodeType": "YulLiteral", + "src": "9588:1:61", + "type": "", + "value": "3" + }, + { + "name": "len", + "nativeSrc": "9591:3:61", + "nodeType": "YulIdentifier", + "src": "9591:3:61" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "9584:3:61", + "nodeType": "YulIdentifier", + "src": "9584:3:61" + }, + "nativeSrc": "9584:11:61", + "nodeType": "YulFunctionCall", + "src": "9584:11:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9601:1:61", + "nodeType": "YulLiteral", + "src": "9601:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "9597:3:61", + "nodeType": "YulIdentifier", + "src": "9597:3:61" + }, + "nativeSrc": "9597:6:61", + "nodeType": "YulFunctionCall", + "src": "9597:6:61" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "9580:3:61", + "nodeType": "YulIdentifier", + "src": "9580:3:61" + }, + "nativeSrc": "9580:24:61", + "nodeType": "YulFunctionCall", + "src": "9580:24:61" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "9576:3:61", + "nodeType": "YulIdentifier", + "src": "9576:3:61" + }, + "nativeSrc": "9576:29:61", + "nodeType": "YulFunctionCall", + "src": "9576:29:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "9566:3:61", + "nodeType": "YulIdentifier", + "src": "9566:3:61" + }, + "nativeSrc": "9566:40:61", + "nodeType": "YulFunctionCall", + "src": "9566:40:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9612:1:61", + "nodeType": "YulLiteral", + "src": "9612:1:61", + "type": "", + "value": "1" + }, + { + "name": "len", + "nativeSrc": "9615:3:61", + "nodeType": "YulIdentifier", + "src": "9615:3:61" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "9608:3:61", + "nodeType": "YulIdentifier", + "src": "9608:3:61" + }, + "nativeSrc": "9608:11:61", + "nodeType": "YulFunctionCall", + "src": "9608:11:61" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "9563:2:61", + "nodeType": "YulIdentifier", + "src": "9563:2:61" + }, + "nativeSrc": "9563:57:61", + "nodeType": "YulFunctionCall", + "src": "9563:57:61" + }, + "variableNames": [ + { + "name": "used", + "nativeSrc": "9555:4:61", + "nodeType": "YulIdentifier", + "src": "9555:4:61" + } + ] + } + ] + }, + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nativeSrc": "9460:166:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nativeSrc": "9522:4:61", + "nodeType": "YulTypedName", + "src": "9522:4:61", + "type": "" + }, + { + "name": "len", + "nativeSrc": "9528:3:61", + "nodeType": "YulTypedName", + "src": "9528:3:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "used", + "nativeSrc": "9536:4:61", + "nodeType": "YulTypedName", + "src": "9536:4:61", + "type": "" + } + ], + "src": "9460:166:61" + }, + { + "body": { + "nativeSrc": "9727:1249:61", + "nodeType": "YulBlock", + "src": "9727:1249:61", + "statements": [ + { + "nativeSrc": "9737:24:61", + "nodeType": "YulVariableDeclaration", + "src": "9737:24:61", + "value": { + "arguments": [ + { + "name": "src", + "nativeSrc": "9757:3:61", + "nodeType": "YulIdentifier", + "src": "9757:3:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "9751:5:61", + "nodeType": "YulIdentifier", + "src": "9751:5:61" + }, + "nativeSrc": "9751:10:61", + "nodeType": "YulFunctionCall", + "src": "9751:10:61" + }, + "variables": [ + { + "name": "newLen", + "nativeSrc": "9741:6:61", + "nodeType": "YulTypedName", + "src": "9741:6:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "9804:22:61", + "nodeType": "YulBlock", + "src": "9804:22:61", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "9806:16:61", + "nodeType": "YulIdentifier", + "src": "9806:16:61" + }, + "nativeSrc": "9806:18:61", + "nodeType": "YulFunctionCall", + "src": "9806:18:61" + }, + "nativeSrc": "9806:18:61", + "nodeType": "YulExpressionStatement", + "src": "9806:18:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "9776:6:61", + "nodeType": "YulIdentifier", + "src": "9776:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9792:2:61", + "nodeType": "YulLiteral", + "src": "9792:2:61", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "9796:1:61", + "nodeType": "YulLiteral", + "src": "9796:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "9788:3:61", + "nodeType": "YulIdentifier", + "src": "9788:3:61" + }, + "nativeSrc": "9788:10:61", + "nodeType": "YulFunctionCall", + "src": "9788:10:61" + }, + { + "kind": "number", + "nativeSrc": "9800:1:61", + "nodeType": "YulLiteral", + "src": "9800:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "9784:3:61", + "nodeType": "YulIdentifier", + "src": "9784:3:61" + }, + "nativeSrc": "9784:18:61", + "nodeType": "YulFunctionCall", + "src": "9784:18:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "9773:2:61", + "nodeType": "YulIdentifier", + "src": "9773:2:61" + }, + "nativeSrc": "9773:30:61", + "nodeType": "YulFunctionCall", + "src": "9773:30:61" + }, + "nativeSrc": "9770:56:61", + "nodeType": "YulIf", + "src": "9770:56:61" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "9879:4:61", + "nodeType": "YulIdentifier", + "src": "9879:4:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "slot", + "nativeSrc": "9917:4:61", + "nodeType": "YulIdentifier", + "src": "9917:4:61" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "9911:5:61", + "nodeType": "YulIdentifier", + "src": "9911:5:61" + }, + "nativeSrc": "9911:11:61", + "nodeType": "YulFunctionCall", + "src": "9911:11:61" + } + ], + "functionName": { + "name": "extract_byte_array_length", + "nativeSrc": "9885:25:61", + "nodeType": "YulIdentifier", + "src": "9885:25:61" + }, + "nativeSrc": "9885:38:61", + "nodeType": "YulFunctionCall", + "src": "9885:38:61" + }, + { + "name": "newLen", + "nativeSrc": "9925:6:61", + "nodeType": "YulIdentifier", + "src": "9925:6:61" + } + ], + "functionName": { + "name": "clean_up_bytearray_end_slots_string_storage", + "nativeSrc": "9835:43:61", + "nodeType": "YulIdentifier", + "src": "9835:43:61" + }, + "nativeSrc": "9835:97:61", + "nodeType": "YulFunctionCall", + "src": "9835:97:61" + }, + "nativeSrc": "9835:97:61", + "nodeType": "YulExpressionStatement", + "src": "9835:97:61" + }, + { + "nativeSrc": "9941:18:61", + "nodeType": "YulVariableDeclaration", + "src": "9941:18:61", + "value": { + "kind": "number", + "nativeSrc": "9958:1:61", + "nodeType": "YulLiteral", + "src": "9958:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "srcOffset", + "nativeSrc": "9945:9:61", + "nodeType": "YulTypedName", + "src": "9945:9:61", + "type": "" + } + ] + }, + { + "nativeSrc": "9968:23:61", + "nodeType": "YulVariableDeclaration", + "src": "9968:23:61", + "value": { + "kind": "number", + "nativeSrc": "9987:4:61", + "nodeType": "YulLiteral", + "src": "9987:4:61", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "srcOffset_1", + "nativeSrc": "9972:11:61", + "nodeType": "YulTypedName", + "src": "9972:11:61", + "type": "" + } + ] + }, + { + "nativeSrc": "10000:17:61", + "nodeType": "YulAssignment", + "src": "10000:17:61", + "value": { + "kind": "number", + "nativeSrc": "10013:4:61", + "nodeType": "YulLiteral", + "src": "10013:4:61", + "type": "", + "value": "0x20" + }, + "variableNames": [ + { + "name": "srcOffset", + "nativeSrc": "10000:9:61", + "nodeType": "YulIdentifier", + "src": "10000:9:61" + } + ] + }, + { + "cases": [ + { + "body": { + "nativeSrc": "10063:656:61", + "nodeType": "YulBlock", + "src": "10063:656:61", + "statements": [ + { + "nativeSrc": "10077:35:61", + "nodeType": "YulVariableDeclaration", + "src": "10077:35:61", + "value": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "10096:6:61", + "nodeType": "YulIdentifier", + "src": "10096:6:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10108:2:61", + "nodeType": "YulLiteral", + "src": "10108:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "10104:3:61", + "nodeType": "YulIdentifier", + "src": "10104:3:61" + }, + "nativeSrc": "10104:7:61", + "nodeType": "YulFunctionCall", + "src": "10104:7:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "10092:3:61", + "nodeType": "YulIdentifier", + "src": "10092:3:61" + }, + "nativeSrc": "10092:20:61", + "nodeType": "YulFunctionCall", + "src": "10092:20:61" + }, + "variables": [ + { + "name": "loopEnd", + "nativeSrc": "10081:7:61", + "nodeType": "YulTypedName", + "src": "10081:7:61", + "type": "" + } + ] + }, + { + "nativeSrc": "10125:49:61", + "nodeType": "YulVariableDeclaration", + "src": "10125:49:61", + "value": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "10169:4:61", + "nodeType": "YulIdentifier", + "src": "10169:4:61" + } + ], + "functionName": { + "name": "array_dataslot_string_storage", + "nativeSrc": "10139:29:61", + "nodeType": "YulIdentifier", + "src": "10139:29:61" + }, + "nativeSrc": "10139:35:61", + "nodeType": "YulFunctionCall", + "src": "10139:35:61" + }, + "variables": [ + { + "name": "dstPtr", + "nativeSrc": "10129:6:61", + "nodeType": "YulTypedName", + "src": "10129:6:61", + "type": "" + } + ] + }, + { + "nativeSrc": "10187:10:61", + "nodeType": "YulVariableDeclaration", + "src": "10187:10:61", + "value": { + "kind": "number", + "nativeSrc": "10196:1:61", + "nodeType": "YulLiteral", + "src": "10196:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "10191:1:61", + "nodeType": "YulTypedName", + "src": "10191:1:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "10274:172:61", + "nodeType": "YulBlock", + "src": "10274:172:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "10299:6:61", + "nodeType": "YulIdentifier", + "src": "10299:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "10317:3:61", + "nodeType": "YulIdentifier", + "src": "10317:3:61" + }, + { + "name": "srcOffset", + "nativeSrc": "10322:9:61", + "nodeType": "YulIdentifier", + "src": "10322:9:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10313:3:61", + "nodeType": "YulIdentifier", + "src": "10313:3:61" + }, + "nativeSrc": "10313:19:61", + "nodeType": "YulFunctionCall", + "src": "10313:19:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "10307:5:61", + "nodeType": "YulIdentifier", + "src": "10307:5:61" + }, + "nativeSrc": "10307:26:61", + "nodeType": "YulFunctionCall", + "src": "10307:26:61" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "10292:6:61", + "nodeType": "YulIdentifier", + "src": "10292:6:61" + }, + "nativeSrc": "10292:42:61", + "nodeType": "YulFunctionCall", + "src": "10292:42:61" + }, + "nativeSrc": "10292:42:61", + "nodeType": "YulExpressionStatement", + "src": "10292:42:61" + }, + { + "nativeSrc": "10351:24:61", + "nodeType": "YulAssignment", + "src": "10351:24:61", + "value": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "10365:6:61", + "nodeType": "YulIdentifier", + "src": "10365:6:61" + }, + { + "kind": "number", + "nativeSrc": "10373:1:61", + "nodeType": "YulLiteral", + "src": "10373:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10361:3:61", + "nodeType": "YulIdentifier", + "src": "10361:3:61" + }, + "nativeSrc": "10361:14:61", + "nodeType": "YulFunctionCall", + "src": "10361:14:61" + }, + "variableNames": [ + { + "name": "dstPtr", + "nativeSrc": "10351:6:61", + "nodeType": "YulIdentifier", + "src": "10351:6:61" + } + ] + }, + { + "nativeSrc": "10392:40:61", + "nodeType": "YulAssignment", + "src": "10392:40:61", + "value": { + "arguments": [ + { + "name": "srcOffset", + "nativeSrc": "10409:9:61", + "nodeType": "YulIdentifier", + "src": "10409:9:61" + }, + { + "name": "srcOffset_1", + "nativeSrc": "10420:11:61", + "nodeType": "YulIdentifier", + "src": "10420:11:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10405:3:61", + "nodeType": "YulIdentifier", + "src": "10405:3:61" + }, + "nativeSrc": "10405:27:61", + "nodeType": "YulFunctionCall", + "src": "10405:27:61" + }, + "variableNames": [ + { + "name": "srcOffset", + "nativeSrc": "10392:9:61", + "nodeType": "YulIdentifier", + "src": "10392:9:61" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "10221:1:61", + "nodeType": "YulIdentifier", + "src": "10221:1:61" + }, + { + "name": "loopEnd", + "nativeSrc": "10224:7:61", + "nodeType": "YulIdentifier", + "src": "10224:7:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "10218:2:61", + "nodeType": "YulIdentifier", + "src": "10218:2:61" + }, + "nativeSrc": "10218:14:61", + "nodeType": "YulFunctionCall", + "src": "10218:14:61" + }, + "nativeSrc": "10210:236:61", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "10233:28:61", + "nodeType": "YulBlock", + "src": "10233:28:61", + "statements": [ + { + "nativeSrc": "10235:24:61", + "nodeType": "YulAssignment", + "src": "10235:24:61", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "10244:1:61", + "nodeType": "YulIdentifier", + "src": "10244:1:61" + }, + { + "name": "srcOffset_1", + "nativeSrc": "10247:11:61", + "nodeType": "YulIdentifier", + "src": "10247:11:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10240:3:61", + "nodeType": "YulIdentifier", + "src": "10240:3:61" + }, + "nativeSrc": "10240:19:61", + "nodeType": "YulFunctionCall", + "src": "10240:19:61" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "10235:1:61", + "nodeType": "YulIdentifier", + "src": "10235:1:61" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "10214:3:61", + "nodeType": "YulBlock", + "src": "10214:3:61", + "statements": [] + }, + "src": "10210:236:61" + }, + { + "body": { + "nativeSrc": "10494:166:61", + "nodeType": "YulBlock", + "src": "10494:166:61", + "statements": [ + { + "nativeSrc": "10512:43:61", + "nodeType": "YulVariableDeclaration", + "src": "10512:43:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "10539:3:61", + "nodeType": "YulIdentifier", + "src": "10539:3:61" + }, + { + "name": "srcOffset", + "nativeSrc": "10544:9:61", + "nodeType": "YulIdentifier", + "src": "10544:9:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10535:3:61", + "nodeType": "YulIdentifier", + "src": "10535:3:61" + }, + "nativeSrc": "10535:19:61", + "nodeType": "YulFunctionCall", + "src": "10535:19:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "10529:5:61", + "nodeType": "YulIdentifier", + "src": "10529:5:61" + }, + "nativeSrc": "10529:26:61", + "nodeType": "YulFunctionCall", + "src": "10529:26:61" + }, + "variables": [ + { + "name": "lastValue", + "nativeSrc": "10516:9:61", + "nodeType": "YulTypedName", + "src": "10516:9:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "10579:6:61", + "nodeType": "YulIdentifier", + "src": "10579:6:61" + }, + { + "arguments": [ + { + "name": "lastValue", + "nativeSrc": "10591:9:61", + "nodeType": "YulIdentifier", + "src": "10591:9:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10618:1:61", + "nodeType": "YulLiteral", + "src": "10618:1:61", + "type": "", + "value": "3" + }, + { + "name": "newLen", + "nativeSrc": "10621:6:61", + "nodeType": "YulIdentifier", + "src": "10621:6:61" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "10614:3:61", + "nodeType": "YulIdentifier", + "src": "10614:3:61" + }, + "nativeSrc": "10614:14:61", + "nodeType": "YulFunctionCall", + "src": "10614:14:61" + }, + { + "kind": "number", + "nativeSrc": "10630:3:61", + "nodeType": "YulLiteral", + "src": "10630:3:61", + "type": "", + "value": "248" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "10610:3:61", + "nodeType": "YulIdentifier", + "src": "10610:3:61" + }, + "nativeSrc": "10610:24:61", + "nodeType": "YulFunctionCall", + "src": "10610:24:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10640:1:61", + "nodeType": "YulLiteral", + "src": "10640:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "10636:3:61", + "nodeType": "YulIdentifier", + "src": "10636:3:61" + }, + "nativeSrc": "10636:6:61", + "nodeType": "YulFunctionCall", + "src": "10636:6:61" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "10606:3:61", + "nodeType": "YulIdentifier", + "src": "10606:3:61" + }, + "nativeSrc": "10606:37:61", + "nodeType": "YulFunctionCall", + "src": "10606:37:61" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "10602:3:61", + "nodeType": "YulIdentifier", + "src": "10602:3:61" + }, + "nativeSrc": "10602:42:61", + "nodeType": "YulFunctionCall", + "src": "10602:42:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "10587:3:61", + "nodeType": "YulIdentifier", + "src": "10587:3:61" + }, + "nativeSrc": "10587:58:61", + "nodeType": "YulFunctionCall", + "src": "10587:58:61" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "10572:6:61", + "nodeType": "YulIdentifier", + "src": "10572:6:61" + }, + "nativeSrc": "10572:74:61", + "nodeType": "YulFunctionCall", + "src": "10572:74:61" + }, + "nativeSrc": "10572:74:61", + "nodeType": "YulExpressionStatement", + "src": "10572:74:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "loopEnd", + "nativeSrc": "10465:7:61", + "nodeType": "YulIdentifier", + "src": "10465:7:61" + }, + { + "name": "newLen", + "nativeSrc": "10474:6:61", + "nodeType": "YulIdentifier", + "src": "10474:6:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "10462:2:61", + "nodeType": "YulIdentifier", + "src": "10462:2:61" + }, + "nativeSrc": "10462:19:61", + "nodeType": "YulFunctionCall", + "src": "10462:19:61" + }, + "nativeSrc": "10459:201:61", + "nodeType": "YulIf", + "src": "10459:201:61" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "10680:4:61", + "nodeType": "YulIdentifier", + "src": "10680:4:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10694:1:61", + "nodeType": "YulLiteral", + "src": "10694:1:61", + "type": "", + "value": "1" + }, + { + "name": "newLen", + "nativeSrc": "10697:6:61", + "nodeType": "YulIdentifier", + "src": "10697:6:61" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "10690:3:61", + "nodeType": "YulIdentifier", + "src": "10690:3:61" + }, + "nativeSrc": "10690:14:61", + "nodeType": "YulFunctionCall", + "src": "10690:14:61" + }, + { + "kind": "number", + "nativeSrc": "10706:1:61", + "nodeType": "YulLiteral", + "src": "10706:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10686:3:61", + "nodeType": "YulIdentifier", + "src": "10686:3:61" + }, + "nativeSrc": "10686:22:61", + "nodeType": "YulFunctionCall", + "src": "10686:22:61" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "10673:6:61", + "nodeType": "YulIdentifier", + "src": "10673:6:61" + }, + "nativeSrc": "10673:36:61", + "nodeType": "YulFunctionCall", + "src": "10673:36:61" + }, + "nativeSrc": "10673:36:61", + "nodeType": "YulExpressionStatement", + "src": "10673:36:61" + } + ] + }, + "nativeSrc": "10056:663:61", + "nodeType": "YulCase", + "src": "10056:663:61", + "value": { + "kind": "number", + "nativeSrc": "10061:1:61", + "nodeType": "YulLiteral", + "src": "10061:1:61", + "type": "", + "value": "1" + } + }, + { + "body": { + "nativeSrc": "10736:234:61", + "nodeType": "YulBlock", + "src": "10736:234:61", + "statements": [ + { + "nativeSrc": "10750:14:61", + "nodeType": "YulVariableDeclaration", + "src": "10750:14:61", + "value": { + "kind": "number", + "nativeSrc": "10763:1:61", + "nodeType": "YulLiteral", + "src": "10763:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "10754:5:61", + "nodeType": "YulTypedName", + "src": "10754:5:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "10799:67:61", + "nodeType": "YulBlock", + "src": "10799:67:61", + "statements": [ + { + "nativeSrc": "10817:35:61", + "nodeType": "YulAssignment", + "src": "10817:35:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "10836:3:61", + "nodeType": "YulIdentifier", + "src": "10836:3:61" + }, + { + "name": "srcOffset", + "nativeSrc": "10841:9:61", + "nodeType": "YulIdentifier", + "src": "10841:9:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10832:3:61", + "nodeType": "YulIdentifier", + "src": "10832:3:61" + }, + "nativeSrc": "10832:19:61", + "nodeType": "YulFunctionCall", + "src": "10832:19:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "10826:5:61", + "nodeType": "YulIdentifier", + "src": "10826:5:61" + }, + "nativeSrc": "10826:26:61", + "nodeType": "YulFunctionCall", + "src": "10826:26:61" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "10817:5:61", + "nodeType": "YulIdentifier", + "src": "10817:5:61" + } + ] + } + ] + }, + "condition": { + "name": "newLen", + "nativeSrc": "10780:6:61", + "nodeType": "YulIdentifier", + "src": "10780:6:61" + }, + "nativeSrc": "10777:89:61", + "nodeType": "YulIf", + "src": "10777:89:61" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "10886:4:61", + "nodeType": "YulIdentifier", + "src": "10886:4:61" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "10945:5:61", + "nodeType": "YulIdentifier", + "src": "10945:5:61" + }, + { + "name": "newLen", + "nativeSrc": "10952:6:61", + "nodeType": "YulIdentifier", + "src": "10952:6:61" + } + ], + "functionName": { + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nativeSrc": "10892:52:61", + "nodeType": "YulIdentifier", + "src": "10892:52:61" + }, + "nativeSrc": "10892:67:61", + "nodeType": "YulFunctionCall", + "src": "10892:67:61" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "10879:6:61", + "nodeType": "YulIdentifier", + "src": "10879:6:61" + }, + "nativeSrc": "10879:81:61", + "nodeType": "YulFunctionCall", + "src": "10879:81:61" + }, + "nativeSrc": "10879:81:61", + "nodeType": "YulExpressionStatement", + "src": "10879:81:61" + } + ] + }, + "nativeSrc": "10728:242:61", + "nodeType": "YulCase", + "src": "10728:242:61", + "value": "default" + } + ], + "expression": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "10036:6:61", + "nodeType": "YulIdentifier", + "src": "10036:6:61" + }, + { + "kind": "number", + "nativeSrc": "10044:2:61", + "nodeType": "YulLiteral", + "src": "10044:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "10033:2:61", + "nodeType": "YulIdentifier", + "src": "10033:2:61" + }, + "nativeSrc": "10033:14:61", + "nodeType": "YulFunctionCall", + "src": "10033:14:61" + }, + "nativeSrc": "10026:944:61", + "nodeType": "YulSwitch", + "src": "10026:944:61" + } + ] + }, + "name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage", + "nativeSrc": "9631:1345:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "slot", + "nativeSrc": "9712:4:61", + "nodeType": "YulTypedName", + "src": "9712:4:61", + "type": "" + }, + { + "name": "src", + "nativeSrc": "9718:3:61", + "nodeType": "YulTypedName", + "src": "9718:3:61", + "type": "" + } + ], + "src": "9631:1345:61" + }, + { + "body": { + "nativeSrc": "11130:142:61", + "nodeType": "YulBlock", + "src": "11130:142:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11147:9:61", + "nodeType": "YulIdentifier", + "src": "11147:9:61" + }, + { + "kind": "number", + "nativeSrc": "11158:2:61", + "nodeType": "YulLiteral", + "src": "11158:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11140:6:61", + "nodeType": "YulIdentifier", + "src": "11140:6:61" + }, + "nativeSrc": "11140:21:61", + "nodeType": "YulFunctionCall", + "src": "11140:21:61" + }, + "nativeSrc": "11140:21:61", + "nodeType": "YulExpressionStatement", + "src": "11140:21:61" + }, + { + "nativeSrc": "11170:53:61", + "nodeType": "YulAssignment", + "src": "11170:53:61", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "11196:6:61", + "nodeType": "YulIdentifier", + "src": "11196:6:61" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11208:9:61", + "nodeType": "YulIdentifier", + "src": "11208:9:61" + }, + { + "kind": "number", + "nativeSrc": "11219:2:61", + "nodeType": "YulLiteral", + "src": "11219:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11204:3:61", + "nodeType": "YulIdentifier", + "src": "11204:3:61" + }, + "nativeSrc": "11204:18:61", + "nodeType": "YulFunctionCall", + "src": "11204:18:61" + } + ], + "functionName": { + "name": "abi_encode_string", + "nativeSrc": "11178:17:61", + "nodeType": "YulIdentifier", + "src": "11178:17:61" + }, + "nativeSrc": "11178:45:61", + "nodeType": "YulFunctionCall", + "src": "11178:45:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "11170:4:61", + "nodeType": "YulIdentifier", + "src": "11170:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11243:9:61", + "nodeType": "YulIdentifier", + "src": "11243:9:61" + }, + { + "kind": "number", + "nativeSrc": "11254:2:61", + "nodeType": "YulLiteral", + "src": "11254:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11239:3:61", + "nodeType": "YulIdentifier", + "src": "11239:3:61" + }, + "nativeSrc": "11239:18:61", + "nodeType": "YulFunctionCall", + "src": "11239:18:61" + }, + { + "name": "value1", + "nativeSrc": "11259:6:61", + "nodeType": "YulIdentifier", + "src": "11259:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11232:6:61", + "nodeType": "YulIdentifier", + "src": "11232:6:61" + }, + "nativeSrc": "11232:34:61", + "nodeType": "YulFunctionCall", + "src": "11232:34:61" + }, + "nativeSrc": "11232:34:61", + "nodeType": "YulExpressionStatement", + "src": "11232:34:61" + } + ] + }, + "name": "abi_encode_tuple_t_string_memory_ptr_t_bytes32__to_t_string_memory_ptr_t_bytes32__fromStack_reversed", + "nativeSrc": "10981:291:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "11091:9:61", + "nodeType": "YulTypedName", + "src": "11091:9:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "11102:6:61", + "nodeType": "YulTypedName", + "src": "11102:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "11110:6:61", + "nodeType": "YulTypedName", + "src": "11110:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "11121:4:61", + "nodeType": "YulTypedName", + "src": "11121:4:61", + "type": "" + } + ], + "src": "10981:291:61" + }, + { + "body": { + "nativeSrc": "11358:103:61", + "nodeType": "YulBlock", + "src": "11358:103:61", + "statements": [ + { + "body": { + "nativeSrc": "11404:16:61", + "nodeType": "YulBlock", + "src": "11404:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "11413:1:61", + "nodeType": "YulLiteral", + "src": "11413:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "11416:1:61", + "nodeType": "YulLiteral", + "src": "11416:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "11406:6:61", + "nodeType": "YulIdentifier", + "src": "11406:6:61" + }, + "nativeSrc": "11406:12:61", + "nodeType": "YulFunctionCall", + "src": "11406:12:61" + }, + "nativeSrc": "11406:12:61", + "nodeType": "YulExpressionStatement", + "src": "11406:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "11379:7:61", + "nodeType": "YulIdentifier", + "src": "11379:7:61" + }, + { + "name": "headStart", + "nativeSrc": "11388:9:61", + "nodeType": "YulIdentifier", + "src": "11388:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "11375:3:61", + "nodeType": "YulIdentifier", + "src": "11375:3:61" + }, + "nativeSrc": "11375:23:61", + "nodeType": "YulFunctionCall", + "src": "11375:23:61" + }, + { + "kind": "number", + "nativeSrc": "11400:2:61", + "nodeType": "YulLiteral", + "src": "11400:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "11371:3:61", + "nodeType": "YulIdentifier", + "src": "11371:3:61" + }, + "nativeSrc": "11371:32:61", + "nodeType": "YulFunctionCall", + "src": "11371:32:61" + }, + "nativeSrc": "11368:52:61", + "nodeType": "YulIf", + "src": "11368:52:61" + }, + { + "nativeSrc": "11429:26:61", + "nodeType": "YulAssignment", + "src": "11429:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11445:9:61", + "nodeType": "YulIdentifier", + "src": "11445:9:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "11439:5:61", + "nodeType": "YulIdentifier", + "src": "11439:5:61" + }, + "nativeSrc": "11439:16:61", + "nodeType": "YulFunctionCall", + "src": "11439:16:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "11429:6:61", + "nodeType": "YulIdentifier", + "src": "11429:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32_fromMemory", + "nativeSrc": "11277:184:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "11324:9:61", + "nodeType": "YulTypedName", + "src": "11324:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "11335:7:61", + "nodeType": "YulTypedName", + "src": "11335:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "11347:6:61", + "nodeType": "YulTypedName", + "src": "11347:6:61", + "type": "" + } + ], + "src": "11277:184:61" + }, + { + "body": { + "nativeSrc": "11595:119:61", + "nodeType": "YulBlock", + "src": "11595:119:61", + "statements": [ + { + "nativeSrc": "11605:26:61", + "nodeType": "YulAssignment", + "src": "11605:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11617:9:61", + "nodeType": "YulIdentifier", + "src": "11617:9:61" + }, + { + "kind": "number", + "nativeSrc": "11628:2:61", + "nodeType": "YulLiteral", + "src": "11628:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11613:3:61", + "nodeType": "YulIdentifier", + "src": "11613:3:61" + }, + "nativeSrc": "11613:18:61", + "nodeType": "YulFunctionCall", + "src": "11613:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "11605:4:61", + "nodeType": "YulIdentifier", + "src": "11605:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11647:9:61", + "nodeType": "YulIdentifier", + "src": "11647:9:61" + }, + { + "name": "value0", + "nativeSrc": "11658:6:61", + "nodeType": "YulIdentifier", + "src": "11658:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11640:6:61", + "nodeType": "YulIdentifier", + "src": "11640:6:61" + }, + "nativeSrc": "11640:25:61", + "nodeType": "YulFunctionCall", + "src": "11640:25:61" + }, + "nativeSrc": "11640:25:61", + "nodeType": "YulExpressionStatement", + "src": "11640:25:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11685:9:61", + "nodeType": "YulIdentifier", + "src": "11685:9:61" + }, + { + "kind": "number", + "nativeSrc": "11696:2:61", + "nodeType": "YulLiteral", + "src": "11696:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11681:3:61", + "nodeType": "YulIdentifier", + "src": "11681:3:61" + }, + "nativeSrc": "11681:18:61", + "nodeType": "YulFunctionCall", + "src": "11681:18:61" + }, + { + "name": "value1", + "nativeSrc": "11701:6:61", + "nodeType": "YulIdentifier", + "src": "11701:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11674:6:61", + "nodeType": "YulIdentifier", + "src": "11674:6:61" + }, + "nativeSrc": "11674:34:61", + "nodeType": "YulFunctionCall", + "src": "11674:34:61" + }, + "nativeSrc": "11674:34:61", + "nodeType": "YulExpressionStatement", + "src": "11674:34:61" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed", + "nativeSrc": "11466:248:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "11556:9:61", + "nodeType": "YulTypedName", + "src": "11556:9:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "11567:6:61", + "nodeType": "YulTypedName", + "src": "11567:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "11575:6:61", + "nodeType": "YulTypedName", + "src": "11575:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "11586:4:61", + "nodeType": "YulTypedName", + "src": "11586:4:61", + "type": "" + } + ], + "src": "11466:248:61" + }, + { + "body": { + "nativeSrc": "11920:179:61", + "nodeType": "YulBlock", + "src": "11920:179:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11937:9:61", + "nodeType": "YulIdentifier", + "src": "11937:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "11952:6:61", + "nodeType": "YulIdentifier", + "src": "11952:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "11968:3:61", + "nodeType": "YulLiteral", + "src": "11968:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "11973:1:61", + "nodeType": "YulLiteral", + "src": "11973:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "11964:3:61", + "nodeType": "YulIdentifier", + "src": "11964:3:61" + }, + "nativeSrc": "11964:11:61", + "nodeType": "YulFunctionCall", + "src": "11964:11:61" + }, + { + "kind": "number", + "nativeSrc": "11977:1:61", + "nodeType": "YulLiteral", + "src": "11977:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "11960:3:61", + "nodeType": "YulIdentifier", + "src": "11960:3:61" + }, + "nativeSrc": "11960:19:61", + "nodeType": "YulFunctionCall", + "src": "11960:19:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "11948:3:61", + "nodeType": "YulIdentifier", + "src": "11948:3:61" + }, + "nativeSrc": "11948:32:61", + "nodeType": "YulFunctionCall", + "src": "11948:32:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11930:6:61", + "nodeType": "YulIdentifier", + "src": "11930:6:61" + }, + "nativeSrc": "11930:51:61", + "nodeType": "YulFunctionCall", + "src": "11930:51:61" + }, + "nativeSrc": "11930:51:61", + "nodeType": "YulExpressionStatement", + "src": "11930:51:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12001:9:61", + "nodeType": "YulIdentifier", + "src": "12001:9:61" + }, + { + "kind": "number", + "nativeSrc": "12012:2:61", + "nodeType": "YulLiteral", + "src": "12012:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11997:3:61", + "nodeType": "YulIdentifier", + "src": "11997:3:61" + }, + "nativeSrc": "11997:18:61", + "nodeType": "YulFunctionCall", + "src": "11997:18:61" + }, + { + "kind": "number", + "nativeSrc": "12017:2:61", + "nodeType": "YulLiteral", + "src": "12017:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11990:6:61", + "nodeType": "YulIdentifier", + "src": "11990:6:61" + }, + "nativeSrc": "11990:30:61", + "nodeType": "YulFunctionCall", + "src": "11990:30:61" + }, + "nativeSrc": "11990:30:61", + "nodeType": "YulExpressionStatement", + "src": "11990:30:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12040:9:61", + "nodeType": "YulIdentifier", + "src": "12040:9:61" + }, + { + "kind": "number", + "nativeSrc": "12051:2:61", + "nodeType": "YulLiteral", + "src": "12051:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12036:3:61", + "nodeType": "YulIdentifier", + "src": "12036:3:61" + }, + "nativeSrc": "12036:18:61", + "nodeType": "YulFunctionCall", + "src": "12036:18:61" + }, + { + "kind": "number", + "nativeSrc": "12056:1:61", + "nodeType": "YulLiteral", + "src": "12056:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12029:6:61", + "nodeType": "YulIdentifier", + "src": "12029:6:61" + }, + "nativeSrc": "12029:29:61", + "nodeType": "YulFunctionCall", + "src": "12029:29:61" + }, + "nativeSrc": "12029:29:61", + "nodeType": "YulExpressionStatement", + "src": "12029:29:61" + }, + { + "nativeSrc": "12067:26:61", + "nodeType": "YulAssignment", + "src": "12067:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12079:9:61", + "nodeType": "YulIdentifier", + "src": "12079:9:61" + }, + { + "kind": "number", + "nativeSrc": "12090:2:61", + "nodeType": "YulLiteral", + "src": "12090:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12075:3:61", + "nodeType": "YulIdentifier", + "src": "12075:3:61" + }, + "nativeSrc": "12075:18:61", + "nodeType": "YulFunctionCall", + "src": "12075:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "12067:4:61", + "nodeType": "YulIdentifier", + "src": "12067:4:61" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_address_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_bytes_memory_ptr__fromStack_reversed", + "nativeSrc": "11719:380:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "11889:9:61", + "nodeType": "YulTypedName", + "src": "11889:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "11900:6:61", + "nodeType": "YulTypedName", + "src": "11900:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "11911:4:61", + "nodeType": "YulTypedName", + "src": "11911:4:61", + "type": "" + } + ], + "src": "11719:380:61" + }, + { + "body": { + "nativeSrc": "12317:324:61", + "nodeType": "YulBlock", + "src": "12317:324:61", + "statements": [ + { + "nativeSrc": "12327:27:61", + "nodeType": "YulAssignment", + "src": "12327:27:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12339:9:61", + "nodeType": "YulIdentifier", + "src": "12339:9:61" + }, + { + "kind": "number", + "nativeSrc": "12350:3:61", + "nodeType": "YulLiteral", + "src": "12350:3:61", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12335:3:61", + "nodeType": "YulIdentifier", + "src": "12335:3:61" + }, + "nativeSrc": "12335:19:61", + "nodeType": "YulFunctionCall", + "src": "12335:19:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "12327:4:61", + "nodeType": "YulIdentifier", + "src": "12327:4:61" + } + ] + }, + { + "nativeSrc": "12363:29:61", + "nodeType": "YulVariableDeclaration", + "src": "12363:29:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12381:3:61", + "nodeType": "YulLiteral", + "src": "12381:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "12386:1:61", + "nodeType": "YulLiteral", + "src": "12386:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "12377:3:61", + "nodeType": "YulIdentifier", + "src": "12377:3:61" + }, + "nativeSrc": "12377:11:61", + "nodeType": "YulFunctionCall", + "src": "12377:11:61" + }, + { + "kind": "number", + "nativeSrc": "12390:1:61", + "nodeType": "YulLiteral", + "src": "12390:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "12373:3:61", + "nodeType": "YulIdentifier", + "src": "12373:3:61" + }, + "nativeSrc": "12373:19:61", + "nodeType": "YulFunctionCall", + "src": "12373:19:61" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "12367:2:61", + "nodeType": "YulTypedName", + "src": "12367:2:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12408:9:61", + "nodeType": "YulIdentifier", + "src": "12408:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "12423:6:61", + "nodeType": "YulIdentifier", + "src": "12423:6:61" + }, + { + "name": "_1", + "nativeSrc": "12431:2:61", + "nodeType": "YulIdentifier", + "src": "12431:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "12419:3:61", + "nodeType": "YulIdentifier", + "src": "12419:3:61" + }, + "nativeSrc": "12419:15:61", + "nodeType": "YulFunctionCall", + "src": "12419:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12401:6:61", + "nodeType": "YulIdentifier", + "src": "12401:6:61" + }, + "nativeSrc": "12401:34:61", + "nodeType": "YulFunctionCall", + "src": "12401:34:61" + }, + "nativeSrc": "12401:34:61", + "nodeType": "YulExpressionStatement", + "src": "12401:34:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12455:9:61", + "nodeType": "YulIdentifier", + "src": "12455:9:61" + }, + { + "kind": "number", + "nativeSrc": "12466:2:61", + "nodeType": "YulLiteral", + "src": "12466:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12451:3:61", + "nodeType": "YulIdentifier", + "src": "12451:3:61" + }, + "nativeSrc": "12451:18:61", + "nodeType": "YulFunctionCall", + "src": "12451:18:61" + }, + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "12475:6:61", + "nodeType": "YulIdentifier", + "src": "12475:6:61" + }, + { + "name": "_1", + "nativeSrc": "12483:2:61", + "nodeType": "YulIdentifier", + "src": "12483:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "12471:3:61", + "nodeType": "YulIdentifier", + "src": "12471:3:61" + }, + "nativeSrc": "12471:15:61", + "nodeType": "YulFunctionCall", + "src": "12471:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12444:6:61", + "nodeType": "YulIdentifier", + "src": "12444:6:61" + }, + "nativeSrc": "12444:43:61", + "nodeType": "YulFunctionCall", + "src": "12444:43:61" + }, + "nativeSrc": "12444:43:61", + "nodeType": "YulExpressionStatement", + "src": "12444:43:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12507:9:61", + "nodeType": "YulIdentifier", + "src": "12507:9:61" + }, + { + "kind": "number", + "nativeSrc": "12518:2:61", + "nodeType": "YulLiteral", + "src": "12518:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12503:3:61", + "nodeType": "YulIdentifier", + "src": "12503:3:61" + }, + "nativeSrc": "12503:18:61", + "nodeType": "YulFunctionCall", + "src": "12503:18:61" + }, + { + "name": "value2", + "nativeSrc": "12523:6:61", + "nodeType": "YulIdentifier", + "src": "12523:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12496:6:61", + "nodeType": "YulIdentifier", + "src": "12496:6:61" + }, + "nativeSrc": "12496:34:61", + "nodeType": "YulFunctionCall", + "src": "12496:34:61" + }, + "nativeSrc": "12496:34:61", + "nodeType": "YulExpressionStatement", + "src": "12496:34:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12550:9:61", + "nodeType": "YulIdentifier", + "src": "12550:9:61" + }, + { + "kind": "number", + "nativeSrc": "12561:2:61", + "nodeType": "YulLiteral", + "src": "12561:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12546:3:61", + "nodeType": "YulIdentifier", + "src": "12546:3:61" + }, + "nativeSrc": "12546:18:61", + "nodeType": "YulFunctionCall", + "src": "12546:18:61" + }, + { + "arguments": [ + { + "name": "value3", + "nativeSrc": "12570:6:61", + "nodeType": "YulIdentifier", + "src": "12570:6:61" + }, + { + "name": "_1", + "nativeSrc": "12578:2:61", + "nodeType": "YulIdentifier", + "src": "12578:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "12566:3:61", + "nodeType": "YulIdentifier", + "src": "12566:3:61" + }, + "nativeSrc": "12566:15:61", + "nodeType": "YulFunctionCall", + "src": "12566:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12539:6:61", + "nodeType": "YulIdentifier", + "src": "12539:6:61" + }, + "nativeSrc": "12539:43:61", + "nodeType": "YulFunctionCall", + "src": "12539:43:61" + }, + "nativeSrc": "12539:43:61", + "nodeType": "YulExpressionStatement", + "src": "12539:43:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12602:9:61", + "nodeType": "YulIdentifier", + "src": "12602:9:61" + }, + { + "kind": "number", + "nativeSrc": "12613:3:61", + "nodeType": "YulLiteral", + "src": "12613:3:61", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12598:3:61", + "nodeType": "YulIdentifier", + "src": "12598:3:61" + }, + "nativeSrc": "12598:19:61", + "nodeType": "YulFunctionCall", + "src": "12598:19:61" + }, + { + "arguments": [ + { + "name": "value4", + "nativeSrc": "12623:6:61", + "nodeType": "YulIdentifier", + "src": "12623:6:61" + }, + { + "name": "_1", + "nativeSrc": "12631:2:61", + "nodeType": "YulIdentifier", + "src": "12631:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "12619:3:61", + "nodeType": "YulIdentifier", + "src": "12619:3:61" + }, + "nativeSrc": "12619:15:61", + "nodeType": "YulFunctionCall", + "src": "12619:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12591:6:61", + "nodeType": "YulIdentifier", + "src": "12591:6:61" + }, + "nativeSrc": "12591:44:61", + "nodeType": "YulFunctionCall", + "src": "12591:44:61" + }, + "nativeSrc": "12591:44:61", + "nodeType": "YulExpressionStatement", + "src": "12591:44:61" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_address_t_address__to_t_address_t_address_t_uint256_t_address_t_address__fromStack_reversed", + "nativeSrc": "12104:537:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "12254:9:61", + "nodeType": "YulTypedName", + "src": "12254:9:61", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "12265:6:61", + "nodeType": "YulTypedName", + "src": "12265:6:61", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "12273:6:61", + "nodeType": "YulTypedName", + "src": "12273:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "12281:6:61", + "nodeType": "YulTypedName", + "src": "12281:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "12289:6:61", + "nodeType": "YulTypedName", + "src": "12289:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "12297:6:61", + "nodeType": "YulTypedName", + "src": "12297:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "12308:4:61", + "nodeType": "YulTypedName", + "src": "12308:4:61", + "type": "" + } + ], + "src": "12104:537:61" + }, + { + "body": { + "nativeSrc": "12775:145:61", + "nodeType": "YulBlock", + "src": "12775:145:61", + "statements": [ + { + "nativeSrc": "12785:26:61", + "nodeType": "YulAssignment", + "src": "12785:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12797:9:61", + "nodeType": "YulIdentifier", + "src": "12797:9:61" + }, + { + "kind": "number", + "nativeSrc": "12808:2:61", + "nodeType": "YulLiteral", + "src": "12808:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12793:3:61", + "nodeType": "YulIdentifier", + "src": "12793:3:61" + }, + "nativeSrc": "12793:18:61", + "nodeType": "YulFunctionCall", + "src": "12793:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "12785:4:61", + "nodeType": "YulIdentifier", + "src": "12785:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12827:9:61", + "nodeType": "YulIdentifier", + "src": "12827:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "12842:6:61", + "nodeType": "YulIdentifier", + "src": "12842:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12858:3:61", + "nodeType": "YulLiteral", + "src": "12858:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "12863:1:61", + "nodeType": "YulLiteral", + "src": "12863:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "12854:3:61", + "nodeType": "YulIdentifier", + "src": "12854:3:61" + }, + "nativeSrc": "12854:11:61", + "nodeType": "YulFunctionCall", + "src": "12854:11:61" + }, + { + "kind": "number", + "nativeSrc": "12867:1:61", + "nodeType": "YulLiteral", + "src": "12867:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "12850:3:61", + "nodeType": "YulIdentifier", + "src": "12850:3:61" + }, + "nativeSrc": "12850:19:61", + "nodeType": "YulFunctionCall", + "src": "12850:19:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "12838:3:61", + "nodeType": "YulIdentifier", + "src": "12838:3:61" + }, + "nativeSrc": "12838:32:61", + "nodeType": "YulFunctionCall", + "src": "12838:32:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12820:6:61", + "nodeType": "YulIdentifier", + "src": "12820:6:61" + }, + "nativeSrc": "12820:51:61", + "nodeType": "YulFunctionCall", + "src": "12820:51:61" + }, + "nativeSrc": "12820:51:61", + "nodeType": "YulExpressionStatement", + "src": "12820:51:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12891:9:61", + "nodeType": "YulIdentifier", + "src": "12891:9:61" + }, + { + "kind": "number", + "nativeSrc": "12902:2:61", + "nodeType": "YulLiteral", + "src": "12902:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12887:3:61", + "nodeType": "YulIdentifier", + "src": "12887:3:61" + }, + "nativeSrc": "12887:18:61", + "nodeType": "YulFunctionCall", + "src": "12887:18:61" + }, + { + "name": "value1", + "nativeSrc": "12907:6:61", + "nodeType": "YulIdentifier", + "src": "12907:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12880:6:61", + "nodeType": "YulIdentifier", + "src": "12880:6:61" + }, + "nativeSrc": "12880:34:61", + "nodeType": "YulFunctionCall", + "src": "12880:34:61" + }, + "nativeSrc": "12880:34:61", + "nodeType": "YulExpressionStatement", + "src": "12880:34:61" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed", + "nativeSrc": "12646:274:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "12736:9:61", + "nodeType": "YulTypedName", + "src": "12736:9:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "12747:6:61", + "nodeType": "YulTypedName", + "src": "12747:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "12755:6:61", + "nodeType": "YulTypedName", + "src": "12755:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "12766:4:61", + "nodeType": "YulTypedName", + "src": "12766:4:61", + "type": "" + } + ], + "src": "12646:274:61" + }, + { + "body": { + "nativeSrc": "13116:14:61", + "nodeType": "YulBlock", + "src": "13116:14:61", + "statements": [ + { + "nativeSrc": "13118:10:61", + "nodeType": "YulAssignment", + "src": "13118:10:61", + "value": { + "name": "pos", + "nativeSrc": "13125:3:61", + "nodeType": "YulIdentifier", + "src": "13125:3:61" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "13118:3:61", + "nodeType": "YulIdentifier", + "src": "13118:3:61" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nativeSrc": "12925:205:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "13100:3:61", + "nodeType": "YulTypedName", + "src": "13100:3:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "13108:3:61", + "nodeType": "YulTypedName", + "src": "13108:3:61", + "type": "" + } + ], + "src": "12925:205:61" + }, + { + "body": { + "nativeSrc": "13184:176:61", + "nodeType": "YulBlock", + "src": "13184:176:61", + "statements": [ + { + "nativeSrc": "13194:17:61", + "nodeType": "YulAssignment", + "src": "13194:17:61", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "13206:1:61", + "nodeType": "YulIdentifier", + "src": "13206:1:61" + }, + { + "name": "y", + "nativeSrc": "13209:1:61", + "nodeType": "YulIdentifier", + "src": "13209:1:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "13202:3:61", + "nodeType": "YulIdentifier", + "src": "13202:3:61" + }, + "nativeSrc": "13202:9:61", + "nodeType": "YulFunctionCall", + "src": "13202:9:61" + }, + "variableNames": [ + { + "name": "diff", + "nativeSrc": "13194:4:61", + "nodeType": "YulIdentifier", + "src": "13194:4:61" + } + ] + }, + { + "body": { + "nativeSrc": "13243:111:61", + "nodeType": "YulBlock", + "src": "13243:111:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13264:1:61", + "nodeType": "YulLiteral", + "src": "13264:1:61", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13271:3:61", + "nodeType": "YulLiteral", + "src": "13271:3:61", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "13276:10:61", + "nodeType": "YulLiteral", + "src": "13276:10:61", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "13267:3:61", + "nodeType": "YulIdentifier", + "src": "13267:3:61" + }, + "nativeSrc": "13267:20:61", + "nodeType": "YulFunctionCall", + "src": "13267:20:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13257:6:61", + "nodeType": "YulIdentifier", + "src": "13257:6:61" + }, + "nativeSrc": "13257:31:61", + "nodeType": "YulFunctionCall", + "src": "13257:31:61" + }, + "nativeSrc": "13257:31:61", + "nodeType": "YulExpressionStatement", + "src": "13257:31:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13308:1:61", + "nodeType": "YulLiteral", + "src": "13308:1:61", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "13311:4:61", + "nodeType": "YulLiteral", + "src": "13311:4:61", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13301:6:61", + "nodeType": "YulIdentifier", + "src": "13301:6:61" + }, + "nativeSrc": "13301:15:61", + "nodeType": "YulFunctionCall", + "src": "13301:15:61" + }, + "nativeSrc": "13301:15:61", + "nodeType": "YulExpressionStatement", + "src": "13301:15:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13336:1:61", + "nodeType": "YulLiteral", + "src": "13336:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "13339:4:61", + "nodeType": "YulLiteral", + "src": "13339:4:61", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "13329:6:61", + "nodeType": "YulIdentifier", + "src": "13329:6:61" + }, + "nativeSrc": "13329:15:61", + "nodeType": "YulFunctionCall", + "src": "13329:15:61" + }, + "nativeSrc": "13329:15:61", + "nodeType": "YulExpressionStatement", + "src": "13329:15:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "diff", + "nativeSrc": "13226:4:61", + "nodeType": "YulIdentifier", + "src": "13226:4:61" + }, + { + "name": "x", + "nativeSrc": "13232:1:61", + "nodeType": "YulIdentifier", + "src": "13232:1:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "13223:2:61", + "nodeType": "YulIdentifier", + "src": "13223:2:61" + }, + "nativeSrc": "13223:11:61", + "nodeType": "YulFunctionCall", + "src": "13223:11:61" + }, + "nativeSrc": "13220:134:61", + "nodeType": "YulIf", + "src": "13220:134:61" + } + ] + }, + "name": "checked_sub_t_uint256", + "nativeSrc": "13135:225:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nativeSrc": "13166:1:61", + "nodeType": "YulTypedName", + "src": "13166:1:61", + "type": "" + }, + { + "name": "y", + "nativeSrc": "13169:1:61", + "nodeType": "YulTypedName", + "src": "13169:1:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nativeSrc": "13175:4:61", + "nodeType": "YulTypedName", + "src": "13175:4:61", + "type": "" + } + ], + "src": "13135:225:61" + }, + { + "body": { + "nativeSrc": "13397:95:61", + "nodeType": "YulBlock", + "src": "13397:95:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13414:1:61", + "nodeType": "YulLiteral", + "src": "13414:1:61", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13421:3:61", + "nodeType": "YulLiteral", + "src": "13421:3:61", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "13426:10:61", + "nodeType": "YulLiteral", + "src": "13426:10:61", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "13417:3:61", + "nodeType": "YulIdentifier", + "src": "13417:3:61" + }, + "nativeSrc": "13417:20:61", + "nodeType": "YulFunctionCall", + "src": "13417:20:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13407:6:61", + "nodeType": "YulIdentifier", + "src": "13407:6:61" + }, + "nativeSrc": "13407:31:61", + "nodeType": "YulFunctionCall", + "src": "13407:31:61" + }, + "nativeSrc": "13407:31:61", + "nodeType": "YulExpressionStatement", + "src": "13407:31:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13454:1:61", + "nodeType": "YulLiteral", + "src": "13454:1:61", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "13457:4:61", + "nodeType": "YulLiteral", + "src": "13457:4:61", + "type": "", + "value": "0x31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13447:6:61", + "nodeType": "YulIdentifier", + "src": "13447:6:61" + }, + "nativeSrc": "13447:15:61", + "nodeType": "YulFunctionCall", + "src": "13447:15:61" + }, + "nativeSrc": "13447:15:61", + "nodeType": "YulExpressionStatement", + "src": "13447:15:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13478:1:61", + "nodeType": "YulLiteral", + "src": "13478:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "13481:4:61", + "nodeType": "YulLiteral", + "src": "13481:4:61", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "13471:6:61", + "nodeType": "YulIdentifier", + "src": "13471:6:61" + }, + "nativeSrc": "13471:15:61", + "nodeType": "YulFunctionCall", + "src": "13471:15:61" + }, + "nativeSrc": "13471:15:61", + "nodeType": "YulExpressionStatement", + "src": "13471:15:61" + } + ] + }, + "name": "panic_error_0x31", + "nativeSrc": "13365:127:61", + "nodeType": "YulFunctionDefinition", + "src": "13365:127:61" + }, + { + "body": { + "nativeSrc": "13634:150:61", + "nodeType": "YulBlock", + "src": "13634:150:61", + "statements": [ + { + "nativeSrc": "13644:27:61", + "nodeType": "YulVariableDeclaration", + "src": "13644:27:61", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "13664:6:61", + "nodeType": "YulIdentifier", + "src": "13664:6:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "13658:5:61", + "nodeType": "YulIdentifier", + "src": "13658:5:61" + }, + "nativeSrc": "13658:13:61", + "nodeType": "YulFunctionCall", + "src": "13658:13:61" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "13648:6:61", + "nodeType": "YulTypedName", + "src": "13648:6:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "13719:6:61", + "nodeType": "YulIdentifier", + "src": "13719:6:61" + }, + { + "kind": "number", + "nativeSrc": "13727:4:61", + "nodeType": "YulLiteral", + "src": "13727:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13715:3:61", + "nodeType": "YulIdentifier", + "src": "13715:3:61" + }, + "nativeSrc": "13715:17:61", + "nodeType": "YulFunctionCall", + "src": "13715:17:61" + }, + { + "name": "pos", + "nativeSrc": "13734:3:61", + "nodeType": "YulIdentifier", + "src": "13734:3:61" + }, + { + "name": "length", + "nativeSrc": "13739:6:61", + "nodeType": "YulIdentifier", + "src": "13739:6:61" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "13680:34:61", + "nodeType": "YulIdentifier", + "src": "13680:34:61" + }, + "nativeSrc": "13680:66:61", + "nodeType": "YulFunctionCall", + "src": "13680:66:61" + }, + "nativeSrc": "13680:66:61", + "nodeType": "YulExpressionStatement", + "src": "13680:66:61" + }, + { + "nativeSrc": "13755:23:61", + "nodeType": "YulAssignment", + "src": "13755:23:61", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "13766:3:61", + "nodeType": "YulIdentifier", + "src": "13766:3:61" + }, + { + "name": "length", + "nativeSrc": "13771:6:61", + "nodeType": "YulIdentifier", + "src": "13771:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13762:3:61", + "nodeType": "YulIdentifier", + "src": "13762:3:61" + }, + "nativeSrc": "13762:16:61", + "nodeType": "YulFunctionCall", + "src": "13762:16:61" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "13755:3:61", + "nodeType": "YulIdentifier", + "src": "13755:3:61" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nativeSrc": "13497:287:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "13610:3:61", + "nodeType": "YulTypedName", + "src": "13610:3:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "13615:6:61", + "nodeType": "YulTypedName", + "src": "13615:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "13626:3:61", + "nodeType": "YulTypedName", + "src": "13626:3:61", + "type": "" + } + ], + "src": "13497:287:61" + } + ] + }, + "contents": "{\n { }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_available_length_string(src, length, end) -> array\n {\n let _1 := sub(shl(64, 1), 1)\n if gt(length, _1) { panic_error_0x41() }\n let _2 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(length, 31), _2), 63), _2))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n array := memPtr\n mstore(memPtr, length)\n if gt(add(src, length), end) { revert(0, 0) }\n calldatacopy(add(memPtr, 0x20), src, length)\n mstore(add(add(memPtr, length), 0x20), 0)\n }\n function abi_decode_tuple_t_string_memory_ptr(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n let _1 := add(headStart, offset)\n if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n value0 := abi_decode_available_length_string(add(_1, 32), calldataload(_1), dataEnd)\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n let _1 := add(headStart, offset)\n if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n value1 := abi_decode_available_length_string(add(_1, 32), calldataload(_1), dataEnd)\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_string(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_string(value0, add(headStart, 32))\n }\n function abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, 32)\n mstore(headStart, 32)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, 32)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, mload(srcPtr))\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_decode_tuple_t_bytes32t_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_decode_tuple_t_addresst_addresst_addresst_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n {\n if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := abi_decode_address(add(headStart, 64))\n value3 := abi_decode_address(add(headStart, 96))\n value4 := abi_decode_address(add(headStart, 128))\n value5 := calldataload(add(headStart, 160))\n }\n function abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, 32)\n mstore(headStart, 32)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, 32)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), sub(shl(160, 1), 1)))\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_encode_tuple_t_array$_t_string_memory_ptr_$dyn_memory_ptr__to_t_array$_t_string_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, 32)\n mstore(headStart, 32)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let tail_2 := add(add(headStart, shl(5, length)), 64)\n let srcPtr := add(value0, 32)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, add(sub(tail_2, headStart), not(63)))\n tail_2 := abi_encode_string(mload(srcPtr), tail_2)\n srcPtr := add(srcPtr, _1)\n pos := add(pos, _1)\n }\n tail := tail_2\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(64, 1), 1)))\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function array_dataslot_string_storage(ptr) -> data\n {\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n }\n function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n {\n if gt(len, 31)\n {\n let _1 := 0\n mstore(0, array)\n let data := keccak256(0, 0x20)\n let deleteStart := add(data, shr(5, add(startIndex, 31)))\n if lt(startIndex, 0x20) { deleteStart := data }\n let _2 := add(data, shr(5, add(len, 31)))\n let start := deleteStart\n for { } lt(start, _2) { start := add(start, 1) }\n { sstore(start, _1) }\n }\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n {\n used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n {\n let newLen := mload(src)\n if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n let srcOffset := 0\n let srcOffset_1 := 0x20\n srcOffset := 0x20\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(31))\n let dstPtr := array_dataslot_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, srcOffset_1)\n }\n if lt(loopEnd, newLen)\n {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n }\n sstore(slot, add(shl(1, newLen), 1))\n }\n default {\n let value := 0\n if newLen\n {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n function abi_encode_tuple_t_string_memory_ptr_t_bytes32__to_t_string_memory_ptr_t_bytes32__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n tail := abi_encode_string(value0, add(headStart, 64))\n mstore(add(headStart, 32), value1)\n }\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_t_address_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), 64)\n mstore(add(headStart, 64), 0)\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_address_t_address_t_uint256_t_address_t_address__to_t_address_t_address_t_uint256_t_address_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 160)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), and(value3, _1))\n mstore(add(headStart, 128), and(value4, _1))\n }\n function abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n { end := pos }\n function checked_sub_t_uint256(x, y) -> diff\n {\n diff := sub(x, y)\n if gt(diff, x)\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n }\n function panic_error_0x31()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x31)\n revert(0, 0x24)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n}", + "id": 61, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": { + "860": [ + { + "length": 32, + "start": 5673 + }, + { + "length": 32, + "start": 5715 + }, + { + "length": 32, + "start": 6062 + } + ] + }, + "linkReferences": {}, + "object": "608060405260043610620002245760003560e01c806301601d2f146200022957806301ffc9a714620002615780630470d3ac146200029757806309766da214620002be5780630d6115d014620002e557806312b357b5146200030a5780631c2b3afc146200032f578063248a9ca314620003545780632cec1a0614620003795780632f2ff15d146200039e578063352af39a14620003c357806336568abe14620003e85780633c555938146200040d5780633f4ba83a146200042557806340df8d84146200043d5780634cba593a14620004625780634f1ef28614620004875780634f3f4639146200049e57806352d1902d14620004b65780635a81a62614620004ce5780635c975abb14620005025780635e818619146200051a5780636cd56878146200053f5780637fa3465714620005645780638127f46514620005895780638456cb5914620005b05780639010d07c14620005c857806391d1485414620005ed57806392cf833f146200061257806395b6ef0c14620006375780639d825bc5146200065c578063a217fddf1462000674578063a3246ad3146200068b578063ad3cb1cc14620006bf578063b289819c14620006f2578063c17e30bf1462000717578063c2a1db78146200073c578063c39409e11462000763578063ca15c873146200077b578063d547741f14620007a0578063e63ab1e914620007c5578063f72c0d8b14620007ea578063f85b4a9c146200080f578063fd2fbd521462000834575b600080fd5b3480156200023657600080fd5b506200024e60008051602062002ed283398151915281565b6040519081526020015b60405180910390f35b3480156200026e57600080fd5b5062000286620002803660046200248c565b6200084b565b604051901515815260200162000258565b348015620002a457600080fd5b50620002af62000879565b604051620002589190620024b8565b348015620002cb57600080fd5b50620002e3620002dd366004620024e9565b62000899565b005b348015620002f257600080fd5b50620002e36200030436600462002599565b6200094b565b3480156200031757600080fd5b506200028662000329366004620024e9565b62000975565b3480156200033c57600080fd5b50620002e36200034e366004620025e6565b620009a7565b3480156200036157600080fd5b506200024e62000373366004620025e6565b620009d9565b3480156200038657600080fd5b50620002af62000398366004620024e9565b620009fb565b348015620003ab57600080fd5b50620002e3620003bd36600462002600565b62000a33565b348015620003d057600080fd5b506200024e620003e236600462002599565b62000a5b565b348015620003f557600080fd5b50620002e36200040736600462002600565b62000aea565b3480156200041a57600080fd5b506200024e62000b25565b3480156200043257600080fd5b50620002e362000b3c565b3480156200044a57600080fd5b506200024e60008051602062002fb283398151915281565b3480156200046f57600080fd5b506200024e60008051602062002f1283398151915281565b620002e3620004983660046200262f565b62000b64565b348015620004ab57600080fd5b50620002af62000b85565b348015620004c357600080fd5b506200024e62000ba5565b348015620004db57600080fd5b50620004f3620004ed366004620025e6565b62000bc5565b604051620002589190620026eb565b3480156200050f57600080fd5b506200028662000ca8565b3480156200052757600080fd5b50620002e36200053936600462002599565b62000cbf565b3480156200054c57600080fd5b50620002e36200055e366004620024e9565b62000ce5565b3480156200057157600080fd5b506200024e60008051602062002fd283398151915281565b3480156200059657600080fd5b50620005a162000d8a565b60405162000258919062002700565b348015620005bd57600080fd5b50620002e362000dab565b348015620005d557600080fd5b50620002af620005e736600462002746565b62000dd0565b348015620005fa57600080fd5b50620002866200060c36600462002600565b62000e02565b3480156200061f57600080fd5b506200024e60008051602062002ef283398151915281565b3480156200064457600080fd5b50620002e36200065636600462002769565b62000e3a565b3480156200066957600080fd5b50620002af62000ff8565b3480156200068157600080fd5b506200024e600081565b3480156200069857600080fd5b50620006b0620006aa366004620025e6565b62001015565b604051620002589190620027e1565b348015620006cc57600080fd5b50620004f3604051806040016040528060058152602001640352e302e360dc1b81525081565b348015620006ff57600080fd5b506200024e60008051602062002f3283398151915281565b3480156200072457600080fd5b50620002e362000736366004620024e9565b62001046565b3480156200074957600080fd5b5062000754620010ef565b60405162000258919062002824565b3480156200077057600080fd5b506200024e62001264565b3480156200078857600080fd5b506200024e6200079a366004620025e6565b6200127b565b348015620007ad57600080fd5b50620002e3620007bf36600462002600565b620012a4565b348015620007d257600080fd5b506200024e60008051602062002f9283398151915281565b348015620007f757600080fd5b506200024e60008051602062002f5283398151915281565b3480156200081c57600080fd5b50620002e36200082e366004620025e6565b620012c6565b620002af620008453660046200288c565b6200132c565b60006001600160e01b03198216635a05180f60e01b148062000873575062000873826200135a565b92915050565b6000806200088662001391565b600201546001600160a01b031692915050565b60008051602062002f32833981519152620008b481620013b5565b816001600160a01b03163b600003620008ed57816040516337766f4360e11b8152600401620008e49190620024b8565b60405180910390fd5b6000620008f962000ff8565b90506200090683620013c1565b826001600160a01b0316816001600160a01b03167fecd599290ada9c149ae0fb600bc6ada3c103a716eadb877b5341b7d298b62d9360405160405180910390a3505050565b60008051602062002ef28339815191526200096681620013b5565b6200097182620013ef565b5050565b6000806200098262001391565b6001600160a01b03909316600090815260059093016020525050604090205460ff1690565b60008051602062002ed2833981519152620009c281620013b5565b6000620009ce62001391565b600101929092555050565b600080620009e6620014e2565b60009384526020525050604090206001015490565b60008062000a0862001391565b6001600160a01b03938416600090815260059091016020526040902054610100900490921692915050565b62000a3e82620009d9565b62000a4981620013b5565b62000a55838362001506565b50505050565b60008062000a686200154f565b905062000aa18360405160200162000a819190620028bb565b60408051601f198184030181529190528051602090910120829062001573565b62000abf5760405163162e926760e11b815260040160405180910390fd5b806003018360405162000ad39190620028bb565b908152602001604051809103902054915050919050565b6001600160a01b038116331462000b145760405163334bd91960e11b815260040160405180910390fd5b62000b20828262001581565b505050565b60008062000b3262001391565b6003015492915050565b60008051602062002f9283398151915262000b5781620013b5565b62000b61620015c1565b50565b62000b6e6200161e565b62000b7982620016c9565b620009718282620016e4565b60008062000b9262001391565b600401546001600160a01b031692915050565b600062000bb1620017a3565b5060008051602062002f7283398151915290565b6060600062000bd36200154f565b905062000be1818462001573565b62000bff5760405163162e926760e11b815260040160405180910390fd5b60008381526002820160205260409020805462000c1c90620028d9565b80601f016020809104026020016040519081016040528092919081815260200182805462000c4a90620028d9565b801562000c9b5780601f1062000c6f5761010080835404028352916020019162000c9b565b820191906000526020600020905b81548152906001019060200180831162000c7d57829003601f168201915b5050505050915050919050565b60008062000cb5620017ed565b5460ff1692915050565b60008051602062002ef283398151915262000cda81620013b5565b620009718262001811565b60008051602062002fb283398151915262000d0081620013b5565b6001600160a01b03821662000d2c578160405163220b4f1160e11b8152600401620008e49190620024b8565b600062000d3862000879565b905062000d4583620018ef565b826001600160a01b0316816001600160a01b03167f88bf70d4f3c446213b5064d7cfe95ec0ed196748f014c19a833117bac32468fd60405160405180910390a3505050565b6060600062000d986200154f565b905062000da58162001920565b91505090565b60008051602062002f9283398151915262000dc681620013b5565b62000b616200192f565b60008062000ddd6200197b565b600085815260208290526040902090915062000dfa90846200199f565b949350505050565b60008062000e0f620014e2565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b600062000e46620019ad565b805490915060ff600160401b82041615906001600160401b031660008115801562000e6e5750825b90506000826001600160401b0316600114801562000e8b5750303b155b90508115801562000e9a575080155b1562000eb95760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b0319166001178555831562000ee357845460ff60401b1916600160401b1785555b62000eed620019d1565b62000ef7620019e5565b62000f01620019e5565b62000f0e60008c62001506565b5062000f2a60008051602062002f928339815191528b62001506565b5062000f4660008051602062002f528339815191528a62001506565b5062000f6260008051602062002f328339815191528962001506565b50600062000f6f62001391565b6002810180546001600160a01b0319166001600160a01b038b161790556003810188905568056bc75e2d6310000060019091015550831562000feb57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050565b6000806200100562001391565b546001600160a01b031692915050565b60606000620010236200197b565b60008481526020829052604090209091506200103f9062001920565b9392505050565b60008051602062002f328339815191526200106181620013b5565b816001600160a01b03163b60000362001091578160405163c9c10a6160e01b8152600401620008e49190620024b8565b60006200109d62000b85565b9050620010aa83620019ef565b826001600160a01b0316816001600160a01b03167f8752daf55fa0ccd919c149bbc809abaad4433f02ba7aa93ac6d5acfd2f8dc22c60405160405180910390a3505050565b60606000620010fd6200154f565b905060006200110c8262001920565b9050600081516001600160401b038111156200112c576200112c62002507565b6040519080825280602002602001820160405280156200116157816020015b60608152602001906001900390816200114b5790505b50905060005b82518110156200125c578360020160008483815181106200118c576200118c62002915565b602002602001015181526020019081526020016000208054620011af90620028d9565b80601f0160208091040260200160405190810160405280929190818152602001828054620011dd90620028d9565b80156200122e5780601f1062001202576101008083540402835291602001916200122e565b820191906000526020600020905b8154815290600101906020018083116200121057829003601f168201915b505050505082828151811062001248576200124862002915565b602090810291909101015260010162001167565b509392505050565b6000806200127162001391565b6001015492915050565b600080620012886200197b565b60008481526020829052604090209091506200103f9062001a20565b620012af82620009d9565b620012ba81620013b5565b62000a55838362001581565b60008051602062002f12833981519152620012e181620013b5565b6000620012ed62000b25565b9050620012fa8362001a2b565b604051839082907fc1fec27bbb8c533fedd3d449016c429341bfc0df21a9600e6162605e08f1c78f90600090a3505050565b60006200133862001a41565b6200134262001a7a565b6200134e838362001aa3565b90506200087362001ce3565b60006001600160e01b03198216637965db0b60e01b14806200087357506301ffc9a760e01b6001600160e01b031983161462000873565b7f2b421af391835920c41e77b6810f6e715f5b713c17bc590f55de6a7d3912e80090565b62000b61813362001cf6565b6000620013cd62001391565b80546001600160a01b0319166001600160a01b03939093169290921790915550565b600081604051602001620014049190620028bb565b6040516020818303038152906040528051906020012090506000620014286200154f565b9050600062001438828462001d33565b9050806200145d5783604051633dad0df560e11b8152600401620008e49190620026eb565b600083815260028301602052604090206200147985826200297f565b508282600301856040516200148f9190620028bb565b9081526020016040518091039020819055507fbad43a69707ac20dd539f3163b927e83baef6e967f2c95432129b1ded41664588484604051620014d492919062002a4b565b60405180910390a150505050565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b600080620015136200197b565b9050600062001523858562001d41565b9050801562000dfa57600085815260208390526040902062001546908562001dea565b50949350505050565b7f563e037355fff0507705f481e4b362e4c3996a3b57d07307deabfca3d816860090565b60006200103f838362001e01565b6000806200158e6200197b565b905060006200159e858562001e19565b9050801562000dfa57600085815260208390526040902062001546908562001e97565b620015cb62001eae565b6000620015d7620017ed565b805460ff1916815590507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b604051620016139190620024b8565b60405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480620016a857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166200169c60008051602062002f72833981519152546001600160a01b031690565b6001600160a01b031614155b15620016c75760405163703e46dd60e11b815260040160405180910390fd5b565b60008051602062002f528339815191526200097181620013b5565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801562001741575060408051601f3d908101601f191682019092526200173e9181019062002a6f565b60015b620017635781604051634c9c8ce360e01b8152600401620008e49190620024b8565b60008051602062002f7283398151915281146200179757604051632a87526960e21b815260048101829052602401620008e4565b62000b20838362001ed6565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614620016c75760405163703e46dd60e11b815260040160405180910390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330090565b600081604051602001620018269190620028bb565b60405160208183030381529060405280519060200120905060006200184a6200154f565b905060006200185a828462001f33565b9050806200187b5760405163162e926760e11b815260040160405180910390fd5b60008381526002830160205260408120620018969162002424565b8160030184604051620018aa9190620028bb565b9081526020016040518091039020600090557f57158eaa7e642cefd761327d5cd6c147ddaad706ec257f90f4d8b59b3d365eb78484604051620014d492919062002a4b565b6000620018fb62001391565b60020180546001600160a01b0319166001600160a01b03939093169290921790915550565b606060006200103f8362001f41565b6200193962001a7a565b600062001945620017ed565b805460ff1916600117815590507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258620016043390565b7fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200090565b60006200103f838362001f9f565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b620019db62001fcc565b620016c762001ff4565b620016c762001fcc565b6000620019fb62001391565b60040180546001600160a01b0319166001600160a01b03939093169290921790915550565b600062000873825490565b600062001a3762001391565b6003019190915550565b600062001a4d62002015565b80549091506001190162001a7457604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b62001a8462000ca8565b15620016c75760405163d93c066560e01b815260040160405180910390fd5b60006001600160a01b03831662001ad1578260405163715397cd60e11b8152600401620008e49190620024b8565b600062001add62001264565b90508034101562001b0b576040516353f01c6360e11b815260048101829052346024820152604401620008e4565b600062001b1762000ff8565b9050806001600160a01b03163b60000362001b4957806040516337766f4360e11b8152600401620008e49190620024b8565b600062001b5562000b85565b9050806001600160a01b03163b60000362001b87578060405163c9c10a6160e01b8152600401620008e49190620024b8565b60008260405162001b989062002463565b6001600160a01b039091168152604060208201819052600090820152606001604051809103906000f08015801562001bd4573d6000803e3d6000fd5b506040516333e1a22360e01b81523060048201526001600160a01b0384811660248301526044820187905289811660648301528881166084830152919250908216906333e1a2239060a401600060405180830381600087803b15801562001c3a57600080fd5b505af115801562001c4f573d6000803e3d6000fd5b5050604080518082019091526001815233602082015262001c74925083915062002039565b62001c8f60008051602062002fd28339815191528262001506565b5062001ca56001600160a01b038216346200209c565b6040516001600160a01b038216907f22de16ef21e3a33810fbcaf0e737ab9c9e2854fa565d8535041456c789afcd9390600090a29695505050505050565b600062001cef62002015565b6001905550565b62001d02828262000e02565b620009715760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401620008e4565b60006200103f83836200213f565b60008062001d4e620014e2565b905062001d5c848462000e02565b62001ddf576000848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905562001d943390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505062000873565b600091505062000873565b60006200103f836001600160a01b0384166200213f565b60009081526001919091016020526040902054151590565b60008062001e26620014e2565b905062001e34848462000e02565b1562001ddf576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505062000873565b60006200103f836001600160a01b0384166200218e565b62001eb862000ca8565b620016c757604051638dfc202b60e01b815260040160405180910390fd5b62001ee18262002287565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511562001f295762000b208282620022e7565b6200097162002363565b60006200103f83836200218e565b60608160000180548060200260200160405190810160405280929190818152602001828054801562001f9357602002820191906000526020600020905b81548152602001906001019080831162001f7e575b50505050509050919050565b600082600001828154811062001fb95762001fb962002915565b9060005260206000200154905092915050565b62001fd662002383565b620016c757604051631afcd79f60e31b815260040160405180910390fd5b62001ffe62001fcc565b60006200200a620017ed565b805460ff1916905550565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b60006200204562001391565b6001600160a01b03938416600090815260059091016020908152604090912083518154929094015190941661010002610100600160a81b0319931515939093166001600160a81b0319909116179190911790915550565b80471015620020c85760405163cf47918160e01b815247600482015260248101829052604401620008e4565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811462002117576040519150601f19603f3d011682016040523d82523d6000602084013e6200211c565b606091505b505090508062000b205760405163d6bda27560e01b815260040160405180910390fd5b60006200214d838362001e01565b620021855750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000873565b50600062000873565b6000818152600183016020526040812054801562001ddf576000620021b560018362002a89565b8554909150600090620021cb9060019062002a89565b905080821462002237576000866000018281548110620021ef57620021ef62002915565b906000526020600020015490508087600001848154811062002215576200221562002915565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806200224b576200224b62002aab565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505062000873565b806001600160a01b03163b600003620022b75780604051634c9c8ce360e01b8152600401620008e49190620024b8565b60008051602062002f7283398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051620023069190620028bb565b600060405180830381855af49150503d806000811462002343576040519150601f19603f3d011682016040523d82523d6000602084013e62002348565b606091505b50915091506200235a8583836200239f565b95945050505050565b3415620016c75760405163b398979f60e01b815260040160405180910390fd5b60006200238f620019ad565b54600160401b900460ff16919050565b606082620023b857620023b282620023fa565b6200103f565b8151158015620023d057506001600160a01b0384163b155b15620023f35783604051639996b31560e01b8152600401620008e49190620024b8565b5092915050565b8051156200240b5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b5080546200243290620028d9565b6000825580601f1062002443575050565b601f01602090049060005260206000209081019062000b61919062002471565b6104108062002ac283390190565b5b8082111562002488576000815560010162002472565b5090565b6000602082840312156200249f57600080fd5b81356001600160e01b0319811681146200103f57600080fd5b6001600160a01b0391909116815260200190565b80356001600160a01b0381168114620024e457600080fd5b919050565b600060208284031215620024fc57600080fd5b6200103f82620024cc565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b03808411156200253a576200253a62002507565b604051601f8501601f19908116603f0116810190828211818310171562002565576200256562002507565b816040528093508581528686860111156200257f57600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215620025ac57600080fd5b81356001600160401b03811115620025c357600080fd5b8201601f81018413620025d557600080fd5b62000dfa848235602084016200251d565b600060208284031215620025f957600080fd5b5035919050565b600080604083850312156200261457600080fd5b823591506200262660208401620024cc565b90509250929050565b600080604083850312156200264357600080fd5b6200264e83620024cc565b915060208301356001600160401b038111156200266a57600080fd5b8301601f810185136200267c57600080fd5b6200268d858235602084016200251d565b9150509250929050565b60005b83811015620026b45781810151838201526020016200269a565b50506000910152565b60008151808452620026d781602086016020860162002697565b601f01601f19169290920160200192915050565b6020815260006200103f6020830184620026bd565b6020808252825182820181905260009190848201906040850190845b818110156200273a578351835292840192918401916001016200271c565b50909695505050505050565b600080604083850312156200275a57600080fd5b50508035926020909101359150565b60008060008060008060c087890312156200278357600080fd5b6200278e87620024cc565b95506200279e60208801620024cc565b9450620027ae60408801620024cc565b9350620027be60608801620024cc565b9250620027ce60808801620024cc565b915060a087013590509295509295509295565b6020808252825182820181905260009190848201906040850190845b818110156200273a5783516001600160a01b031683529284019291840191600101620027fd565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b828110156200287f57603f198886030184526200286c858351620026bd565b945092850192908501906001016200284d565b5092979650505050505050565b60008060408385031215620028a057600080fd5b620028ab83620024cc565b91506200262660208401620024cc565b60008251620028cf81846020870162002697565b9190910192915050565b600181811c90821680620028ee57607f821691505b6020821081036200290f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b601f82111562000b20576000816000526020600020601f850160051c81016020861015620029565750805b601f850160051c820191505b81811015620029775782815560010162002962565b505050505050565b81516001600160401b038111156200299b576200299b62002507565b620029b381620029ac8454620028d9565b846200292b565b602080601f831160018114620029eb5760008415620029d25750858301515b600019600386901b1c1916600185901b17855562002977565b600085815260208120601f198616915b8281101562002a1c57888601518255948401946001909101908401620029fb565b508582101562002a3b5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60408152600062002a606040830185620026bd565b90508260208301529392505050565b60006020828403121562002a8257600080fd5b5051919050565b818103818111156200087357634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fdfe60806040526040516104103803806104108339810160408190526100229161025a565b61002c8282610033565b5050610358565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610086576100818282610109565b505050565b61008e610180565b5050565b806001600160a01b03163b6000036100c85780604051634c9c8ce360e01b81526004016100bf9190610328565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610126919061033c565b600060405180830381855af49150503d8060008114610161576040519150601f19603f3d011682016040523d82523d6000602084013e610166565b606091505b5090925090506101778583836101a1565b95945050505050565b341561019f5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b6576101b1826101f7565b6101f0565b81511580156101cd57506001600160a01b0384163b155b156101ed5783604051639996b31560e01b81526004016100bf9190610328565b50805b9392505050565b8051156102075780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b83811015610251578181015183820152602001610239565b50506000910152565b6000806040838503121561026d57600080fd5b82516001600160a01b038116811461028457600080fd5b60208401519092506001600160401b03808211156102a157600080fd5b818501915085601f8301126102b557600080fd5b8151818111156102c7576102c7610220565b604051601f8201601f19908116603f011681019083821181831017156102ef576102ef610220565b8160405282815288602084870101111561030857600080fd5b610319836020830160208801610236565b80955050505050509250929050565b6001600160a01b0391909116815260200190565b6000825161034e818460208701610236565b9190910192915050565b60aa806103666000396000f3fe6080604052600a600c565b005b60186014601a565b6051565b565b6000604c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015606f573d6000f35b3d6000fdfea26469706673582212205010fbd336314ff514e3c3a5ed98aed1c9c96a5210a9df6dc914e2a04bbe772564736f6c6343000818003330f3325e23b502dce693b147d37de928d14dd5ab09bbc928fb79867329ac5b83dccfb718b018e1b06f849958baf67b0b252302f06a69871f72c5127ee92f659d349eec46d2c564a125684d1934a6120a70cc341d3a26d362e358a775e07dec176a42249708403f5ed28bf492facd11e85bc1054e6c27c155ed468f6ff4f7ecd0189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a819590c814c6d279357359f817d25adb06a7b9f6e493592b7d3b8bb268adb6764f22871c78b70c8896c7119179fc4e9b6f4cf323f8db6eadb7d79007d1e00c3fa26469706673582212200d6628730b2d330eb2e16dd8190c75aa9580d54d6cf9599d066d9a36e02f067264736f6c63430008180033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH3 0x224 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1601D2F EQ PUSH3 0x229 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH3 0x261 JUMPI DUP1 PUSH4 0x470D3AC EQ PUSH3 0x297 JUMPI DUP1 PUSH4 0x9766DA2 EQ PUSH3 0x2BE JUMPI DUP1 PUSH4 0xD6115D0 EQ PUSH3 0x2E5 JUMPI DUP1 PUSH4 0x12B357B5 EQ PUSH3 0x30A JUMPI DUP1 PUSH4 0x1C2B3AFC EQ PUSH3 0x32F JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH3 0x354 JUMPI DUP1 PUSH4 0x2CEC1A06 EQ PUSH3 0x379 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH3 0x39E JUMPI DUP1 PUSH4 0x352AF39A EQ PUSH3 0x3C3 JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH3 0x3E8 JUMPI DUP1 PUSH4 0x3C555938 EQ PUSH3 0x40D JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH3 0x425 JUMPI DUP1 PUSH4 0x40DF8D84 EQ PUSH3 0x43D JUMPI DUP1 PUSH4 0x4CBA593A EQ PUSH3 0x462 JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH3 0x487 JUMPI DUP1 PUSH4 0x4F3F4639 EQ PUSH3 0x49E JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH3 0x4B6 JUMPI DUP1 PUSH4 0x5A81A626 EQ PUSH3 0x4CE JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH3 0x502 JUMPI DUP1 PUSH4 0x5E818619 EQ PUSH3 0x51A JUMPI DUP1 PUSH4 0x6CD56878 EQ PUSH3 0x53F JUMPI DUP1 PUSH4 0x7FA34657 EQ PUSH3 0x564 JUMPI DUP1 PUSH4 0x8127F465 EQ PUSH3 0x589 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH3 0x5B0 JUMPI DUP1 PUSH4 0x9010D07C EQ PUSH3 0x5C8 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH3 0x5ED JUMPI DUP1 PUSH4 0x92CF833F EQ PUSH3 0x612 JUMPI DUP1 PUSH4 0x95B6EF0C EQ PUSH3 0x637 JUMPI DUP1 PUSH4 0x9D825BC5 EQ PUSH3 0x65C JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH3 0x674 JUMPI DUP1 PUSH4 0xA3246AD3 EQ PUSH3 0x68B JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH3 0x6BF JUMPI DUP1 PUSH4 0xB289819C EQ PUSH3 0x6F2 JUMPI DUP1 PUSH4 0xC17E30BF EQ PUSH3 0x717 JUMPI DUP1 PUSH4 0xC2A1DB78 EQ PUSH3 0x73C JUMPI DUP1 PUSH4 0xC39409E1 EQ PUSH3 0x763 JUMPI DUP1 PUSH4 0xCA15C873 EQ PUSH3 0x77B JUMPI DUP1 PUSH4 0xD547741F EQ PUSH3 0x7A0 JUMPI DUP1 PUSH4 0xE63AB1E9 EQ PUSH3 0x7C5 JUMPI DUP1 PUSH4 0xF72C0D8B EQ PUSH3 0x7EA JUMPI DUP1 PUSH4 0xF85B4A9C EQ PUSH3 0x80F JUMPI DUP1 PUSH4 0xFD2FBD52 EQ PUSH3 0x834 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2ED2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x26E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x286 PUSH3 0x280 CALLDATASIZE PUSH1 0x4 PUSH3 0x248C JUMP JUMPDEST PUSH3 0x84B JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x258 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2AF PUSH3 0x879 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x258 SWAP2 SWAP1 PUSH3 0x24B8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x2CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x2DD CALLDATASIZE PUSH1 0x4 PUSH3 0x24E9 JUMP JUMPDEST PUSH3 0x899 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x2F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x304 CALLDATASIZE PUSH1 0x4 PUSH3 0x2599 JUMP JUMPDEST PUSH3 0x94B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x317 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x286 PUSH3 0x329 CALLDATASIZE PUSH1 0x4 PUSH3 0x24E9 JUMP JUMPDEST PUSH3 0x975 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x33C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x34E CALLDATASIZE PUSH1 0x4 PUSH3 0x25E6 JUMP JUMPDEST PUSH3 0x9A7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x361 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH3 0x373 CALLDATASIZE PUSH1 0x4 PUSH3 0x25E6 JUMP JUMPDEST PUSH3 0x9D9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x386 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2AF PUSH3 0x398 CALLDATASIZE PUSH1 0x4 PUSH3 0x24E9 JUMP JUMPDEST PUSH3 0x9FB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x3AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x3BD CALLDATASIZE PUSH1 0x4 PUSH3 0x2600 JUMP JUMPDEST PUSH3 0xA33 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x3D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH3 0x3E2 CALLDATASIZE PUSH1 0x4 PUSH3 0x2599 JUMP JUMPDEST PUSH3 0xA5B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x3F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x407 CALLDATASIZE PUSH1 0x4 PUSH3 0x2600 JUMP JUMPDEST PUSH3 0xAEA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x41A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH3 0xB25 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x432 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0xB3C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x44A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2FB2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x46F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F12 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST PUSH3 0x2E3 PUSH3 0x498 CALLDATASIZE PUSH1 0x4 PUSH3 0x262F JUMP JUMPDEST PUSH3 0xB64 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x4AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2AF PUSH3 0xB85 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x4C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH3 0xBA5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x4DB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x4F3 PUSH3 0x4ED CALLDATASIZE PUSH1 0x4 PUSH3 0x25E6 JUMP JUMPDEST PUSH3 0xBC5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x258 SWAP2 SWAP1 PUSH3 0x26EB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x50F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x286 PUSH3 0xCA8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x527 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x539 CALLDATASIZE PUSH1 0x4 PUSH3 0x2599 JUMP JUMPDEST PUSH3 0xCBF JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x54C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x55E CALLDATASIZE PUSH1 0x4 PUSH3 0x24E9 JUMP JUMPDEST PUSH3 0xCE5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x571 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2FD2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x596 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x5A1 PUSH3 0xD8A JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x258 SWAP2 SWAP1 PUSH3 0x2700 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x5BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0xDAB JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x5D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2AF PUSH3 0x5E7 CALLDATASIZE PUSH1 0x4 PUSH3 0x2746 JUMP JUMPDEST PUSH3 0xDD0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x5FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x286 PUSH3 0x60C CALLDATASIZE PUSH1 0x4 PUSH3 0x2600 JUMP JUMPDEST PUSH3 0xE02 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x61F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2EF2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x644 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x656 CALLDATASIZE PUSH1 0x4 PUSH3 0x2769 JUMP JUMPDEST PUSH3 0xE3A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x669 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2AF PUSH3 0xFF8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x681 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH1 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x698 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x6B0 PUSH3 0x6AA CALLDATASIZE PUSH1 0x4 PUSH3 0x25E6 JUMP JUMPDEST PUSH3 0x1015 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x258 SWAP2 SWAP1 PUSH3 0x27E1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x6CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x4F3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x352E302E3 PUSH1 0xDC SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x6FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F32 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x724 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x736 CALLDATASIZE PUSH1 0x4 PUSH3 0x24E9 JUMP JUMPDEST PUSH3 0x1046 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x749 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x754 PUSH3 0x10EF JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x258 SWAP2 SWAP1 PUSH3 0x2824 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x770 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH3 0x1264 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x788 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH3 0x79A CALLDATASIZE PUSH1 0x4 PUSH3 0x25E6 JUMP JUMPDEST PUSH3 0x127B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x7AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x7BF CALLDATASIZE PUSH1 0x4 PUSH3 0x2600 JUMP JUMPDEST PUSH3 0x12A4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x7D2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F92 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x7F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x24E PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F52 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x81C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2E3 PUSH3 0x82E CALLDATASIZE PUSH1 0x4 PUSH3 0x25E6 JUMP JUMPDEST PUSH3 0x12C6 JUMP JUMPDEST PUSH3 0x2AF PUSH3 0x845 CALLDATASIZE PUSH1 0x4 PUSH3 0x288C JUMP JUMPDEST PUSH3 0x132C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5A05180F PUSH1 0xE0 SHL EQ DUP1 PUSH3 0x873 JUMPI POP PUSH3 0x873 DUP3 PUSH3 0x135A JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x886 PUSH3 0x1391 JUMP JUMPDEST PUSH1 0x2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F32 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x8B4 DUP2 PUSH3 0x13B5 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH3 0x8ED JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x37766F43 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8E4 SWAP2 SWAP1 PUSH3 0x24B8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x8F9 PUSH3 0xFF8 JUMP JUMPDEST SWAP1 POP PUSH3 0x906 DUP4 PUSH3 0x13C1 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xECD599290ADA9C149AE0FB600BC6ADA3C103A716EADB877B5341B7D298B62D93 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2EF2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x966 DUP2 PUSH3 0x13B5 JUMP JUMPDEST PUSH3 0x971 DUP3 PUSH3 0x13EF JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x982 PUSH3 0x1391 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 SWAP1 SWAP4 ADD PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2ED2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x9C2 DUP2 PUSH3 0x13B5 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x9CE PUSH3 0x1391 JUMP JUMPDEST PUSH1 0x1 ADD SWAP3 SWAP1 SWAP3 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x9E6 PUSH3 0x14E2 JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xA08 PUSH3 0x1391 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x100 SWAP1 DIV SWAP1 SWAP3 AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0xA3E DUP3 PUSH3 0x9D9 JUMP JUMPDEST PUSH3 0xA49 DUP2 PUSH3 0x13B5 JUMP JUMPDEST PUSH3 0xA55 DUP4 DUP4 PUSH3 0x1506 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xA68 PUSH3 0x154F JUMP JUMPDEST SWAP1 POP PUSH3 0xAA1 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0xA81 SWAP2 SWAP1 PUSH3 0x28BB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 DUP3 SWAP1 PUSH3 0x1573 JUMP JUMPDEST PUSH3 0xABF JUMPI PUSH1 0x40 MLOAD PUSH4 0x162E9267 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x3 ADD DUP4 PUSH1 0x40 MLOAD PUSH3 0xAD3 SWAP2 SWAP1 PUSH3 0x28BB JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SLOAD SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH3 0xB14 JUMPI PUSH1 0x40 MLOAD PUSH4 0x334BD919 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0xB20 DUP3 DUP3 PUSH3 0x1581 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xB32 PUSH3 0x1391 JUMP JUMPDEST PUSH1 0x3 ADD SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F92 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0xB57 DUP2 PUSH3 0x13B5 JUMP JUMPDEST PUSH3 0xB61 PUSH3 0x15C1 JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0xB6E PUSH3 0x161E JUMP JUMPDEST PUSH3 0xB79 DUP3 PUSH3 0x16C9 JUMP JUMPDEST PUSH3 0x971 DUP3 DUP3 PUSH3 0x16E4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xB92 PUSH3 0x1391 JUMP JUMPDEST PUSH1 0x4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0xBB1 PUSH3 0x17A3 JUMP JUMPDEST POP PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F72 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH3 0xBD3 PUSH3 0x154F JUMP JUMPDEST SWAP1 POP PUSH3 0xBE1 DUP2 DUP5 PUSH3 0x1573 JUMP JUMPDEST PUSH3 0xBFF JUMPI PUSH1 0x40 MLOAD PUSH4 0x162E9267 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH3 0xC1C SWAP1 PUSH3 0x28D9 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH3 0xC4A SWAP1 PUSH3 0x28D9 JUMP JUMPDEST DUP1 ISZERO PUSH3 0xC9B JUMPI DUP1 PUSH1 0x1F LT PUSH3 0xC6F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH3 0xC9B JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH3 0xC7D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xCB5 PUSH3 0x17ED JUMP JUMPDEST SLOAD PUSH1 0xFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2EF2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0xCDA DUP2 PUSH3 0x13B5 JUMP JUMPDEST PUSH3 0x971 DUP3 PUSH3 0x1811 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2FB2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0xD00 DUP2 PUSH3 0x13B5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0xD2C JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x220B4F11 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8E4 SWAP2 SWAP1 PUSH3 0x24B8 JUMP JUMPDEST PUSH1 0x0 PUSH3 0xD38 PUSH3 0x879 JUMP JUMPDEST SWAP1 POP PUSH3 0xD45 DUP4 PUSH3 0x18EF JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x88BF70D4F3C446213B5064D7CFE95EC0ED196748F014C19A833117BAC32468FD PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH3 0xD98 PUSH3 0x154F JUMP JUMPDEST SWAP1 POP PUSH3 0xDA5 DUP2 PUSH3 0x1920 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F92 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0xDC6 DUP2 PUSH3 0x13B5 JUMP JUMPDEST PUSH3 0xB61 PUSH3 0x192F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xDDD PUSH3 0x197B JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH3 0xDFA SWAP1 DUP5 PUSH3 0x199F JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xE0F PUSH3 0x14E2 JUMP JUMPDEST PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP7 MSTORE SWAP4 SWAP1 MSTORE POP POP SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0xE46 PUSH3 0x19AD JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV AND ISZERO SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x0 DUP2 ISZERO DUP1 ISZERO PUSH3 0xE6E JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH3 0xE8B JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH3 0xE9A JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH3 0xEB9 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT AND PUSH1 0x1 OR DUP6 SSTORE DUP4 ISZERO PUSH3 0xEE3 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR DUP6 SSTORE JUMPDEST PUSH3 0xEED PUSH3 0x19D1 JUMP JUMPDEST PUSH3 0xEF7 PUSH3 0x19E5 JUMP JUMPDEST PUSH3 0xF01 PUSH3 0x19E5 JUMP JUMPDEST PUSH3 0xF0E PUSH1 0x0 DUP13 PUSH3 0x1506 JUMP JUMPDEST POP PUSH3 0xF2A PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F92 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP12 PUSH3 0x1506 JUMP JUMPDEST POP PUSH3 0xF46 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F52 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP11 PUSH3 0x1506 JUMP JUMPDEST POP PUSH3 0xF62 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F32 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP10 PUSH3 0x1506 JUMP JUMPDEST POP PUSH1 0x0 PUSH3 0xF6F PUSH3 0x1391 JUMP JUMPDEST PUSH1 0x2 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND OR SWAP1 SSTORE PUSH1 0x3 DUP2 ADD DUP9 SWAP1 SSTORE PUSH9 0x56BC75E2D63100000 PUSH1 0x1 SWAP1 SWAP2 ADD SSTORE POP DUP4 ISZERO PUSH3 0xFEB JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND DUP6 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x1005 PUSH3 0x1391 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH3 0x1023 PUSH3 0x197B JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH3 0x103F SWAP1 PUSH3 0x1920 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F32 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x1061 DUP2 PUSH3 0x13B5 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH3 0x1091 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0xC9C10A61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8E4 SWAP2 SWAP1 PUSH3 0x24B8 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x109D PUSH3 0xB85 JUMP JUMPDEST SWAP1 POP PUSH3 0x10AA DUP4 PUSH3 0x19EF JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8752DAF55FA0CCD919C149BBC809ABAAD4433F02BA7AA93AC6D5ACFD2F8DC22C PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH3 0x10FD PUSH3 0x154F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0x110C DUP3 PUSH3 0x1920 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x112C JUMPI PUSH3 0x112C PUSH3 0x2507 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x1161 JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH3 0x114B JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH3 0x125C JUMPI DUP4 PUSH1 0x2 ADD PUSH1 0x0 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH3 0x118C JUMPI PUSH3 0x118C PUSH3 0x2915 JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH3 0x11AF SWAP1 PUSH3 0x28D9 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH3 0x11DD SWAP1 PUSH3 0x28D9 JUMP JUMPDEST DUP1 ISZERO PUSH3 0x122E JUMPI DUP1 PUSH1 0x1F LT PUSH3 0x1202 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH3 0x122E JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH3 0x1210 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x1248 JUMPI PUSH3 0x1248 PUSH3 0x2915 JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH3 0x1167 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x1271 PUSH3 0x1391 JUMP JUMPDEST PUSH1 0x1 ADD SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x1288 PUSH3 0x197B JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH3 0x103F SWAP1 PUSH3 0x1A20 JUMP JUMPDEST PUSH3 0x12AF DUP3 PUSH3 0x9D9 JUMP JUMPDEST PUSH3 0x12BA DUP2 PUSH3 0x13B5 JUMP JUMPDEST PUSH3 0xA55 DUP4 DUP4 PUSH3 0x1581 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F12 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x12E1 DUP2 PUSH3 0x13B5 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x12ED PUSH3 0xB25 JUMP JUMPDEST SWAP1 POP PUSH3 0x12FA DUP4 PUSH3 0x1A2B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 SWAP1 DUP3 SWAP1 PUSH32 0xC1FEC27BBB8C533FEDD3D449016C429341BFC0DF21A9600E6162605E08F1C78F SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1338 PUSH3 0x1A41 JUMP JUMPDEST PUSH3 0x1342 PUSH3 0x1A7A JUMP JUMPDEST PUSH3 0x134E DUP4 DUP4 PUSH3 0x1AA3 JUMP JUMPDEST SWAP1 POP PUSH3 0x873 PUSH3 0x1CE3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x7965DB0B PUSH1 0xE0 SHL EQ DUP1 PUSH3 0x873 JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH3 0x873 JUMP JUMPDEST PUSH32 0x2B421AF391835920C41E77B6810F6E715F5B713C17BC590F55DE6A7D3912E800 SWAP1 JUMP JUMPDEST PUSH3 0xB61 DUP2 CALLER PUSH3 0x1CF6 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x13CD PUSH3 0x1391 JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x1404 SWAP2 SWAP1 PUSH3 0x28BB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH3 0x1428 PUSH3 0x154F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0x1438 DUP3 DUP5 PUSH3 0x1D33 JUMP JUMPDEST SWAP1 POP DUP1 PUSH3 0x145D JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x3DAD0DF5 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8E4 SWAP2 SWAP1 PUSH3 0x26EB JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH3 0x1479 DUP6 DUP3 PUSH3 0x297F JUMP JUMPDEST POP DUP3 DUP3 PUSH1 0x3 ADD DUP6 PUSH1 0x40 MLOAD PUSH3 0x148F SWAP2 SWAP1 PUSH3 0x28BB JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH32 0xBAD43A69707AC20DD539F3163B927E83BAEF6E967F2C95432129B1DED4166458 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH3 0x14D4 SWAP3 SWAP2 SWAP1 PUSH3 0x2A4B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x1513 PUSH3 0x197B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0x1523 DUP6 DUP6 PUSH3 0x1D41 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH3 0xDFA JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH3 0x1546 SWAP1 DUP6 PUSH3 0x1DEA JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x563E037355FFF0507705F481E4B362E4C3996A3B57D07307DEABFCA3D8168600 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x103F DUP4 DUP4 PUSH3 0x1E01 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x158E PUSH3 0x197B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0x159E DUP6 DUP6 PUSH3 0x1E19 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH3 0xDFA JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH3 0x1546 SWAP1 DUP6 PUSH3 0x1E97 JUMP JUMPDEST PUSH3 0x15CB PUSH3 0x1EAE JUMP JUMPDEST PUSH1 0x0 PUSH3 0x15D7 PUSH3 0x17ED JUMP JUMPDEST DUP1 SLOAD PUSH1 0xFF NOT AND DUP2 SSTORE SWAP1 POP PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA CALLER JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x1613 SWAP2 SWAP1 PUSH3 0x24B8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH3 0x16A8 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x169C PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F72 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH3 0x16C7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F52 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x971 DUP2 PUSH3 0x13B5 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH3 0x1741 JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH3 0x173E SWAP2 DUP2 ADD SWAP1 PUSH3 0x2A6F JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH3 0x1763 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8E4 SWAP2 SWAP1 PUSH3 0x24B8 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F72 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 EQ PUSH3 0x1797 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH3 0x8E4 JUMP JUMPDEST PUSH3 0xB20 DUP4 DUP4 PUSH3 0x1ED6 JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH3 0x16C7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0xCD5ED15C6E187E77E9AEE88184C21F4F2182AB5827CB3B7E07FBEDCD63F03300 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x1826 SWAP2 SWAP1 PUSH3 0x28BB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH3 0x184A PUSH3 0x154F JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0x185A DUP3 DUP5 PUSH3 0x1F33 JUMP JUMPDEST SWAP1 POP DUP1 PUSH3 0x187B JUMPI PUSH1 0x40 MLOAD PUSH4 0x162E9267 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH3 0x1896 SWAP2 PUSH3 0x2424 JUMP JUMPDEST DUP2 PUSH1 0x3 ADD DUP5 PUSH1 0x40 MLOAD PUSH3 0x18AA SWAP2 SWAP1 PUSH3 0x28BB JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH32 0x57158EAA7E642CEFD761327D5CD6C147DDAAD706EC257F90F4D8B59B3D365EB7 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH3 0x14D4 SWAP3 SWAP2 SWAP1 PUSH3 0x2A4B JUMP JUMPDEST PUSH1 0x0 PUSH3 0x18FB PUSH3 0x1391 JUMP JUMPDEST PUSH1 0x2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH3 0x103F DUP4 PUSH3 0x1F41 JUMP JUMPDEST PUSH3 0x1939 PUSH3 0x1A7A JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1945 PUSH3 0x17ED JUMP JUMPDEST DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR DUP2 SSTORE SWAP1 POP PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH3 0x1604 CALLER SWAP1 JUMP JUMPDEST PUSH32 0xC1F6FE24621CE81EC5827CAF0253CADB74709B061630E6B55E82371705932000 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x103F DUP4 DUP4 PUSH3 0x1F9F JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH3 0x19DB PUSH3 0x1FCC JUMP JUMPDEST PUSH3 0x16C7 PUSH3 0x1FF4 JUMP JUMPDEST PUSH3 0x16C7 PUSH3 0x1FCC JUMP JUMPDEST PUSH1 0x0 PUSH3 0x19FB PUSH3 0x1391 JUMP JUMPDEST PUSH1 0x4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x873 DUP3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1A37 PUSH3 0x1391 JUMP JUMPDEST PUSH1 0x3 ADD SWAP2 SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1A4D PUSH3 0x2015 JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 NOT ADD PUSH3 0x1A74 JUMPI PUSH1 0x40 MLOAD PUSH4 0x3EE5AEB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 SWAP1 SSTORE JUMP JUMPDEST PUSH3 0x1A84 PUSH3 0xCA8 JUMP JUMPDEST ISZERO PUSH3 0x16C7 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD93C0665 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH3 0x1AD1 JUMPI DUP3 PUSH1 0x40 MLOAD PUSH4 0x715397CD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8E4 SWAP2 SWAP1 PUSH3 0x24B8 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1ADD PUSH3 0x1264 JUMP JUMPDEST SWAP1 POP DUP1 CALLVALUE LT ISZERO PUSH3 0x1B0B JUMPI PUSH1 0x40 MLOAD PUSH4 0x53F01C63 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE CALLVALUE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH3 0x8E4 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1B17 PUSH3 0xFF8 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH3 0x1B49 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x37766F43 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8E4 SWAP2 SWAP1 PUSH3 0x24B8 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1B55 PUSH3 0xB85 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH3 0x1B87 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0xC9C10A61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8E4 SWAP2 SWAP1 PUSH3 0x24B8 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x40 MLOAD PUSH3 0x1B98 SWAP1 PUSH3 0x2463 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x1BD4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x33E1A223 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP8 SWAP1 MSTORE DUP10 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE DUP9 DUP2 AND PUSH1 0x84 DUP4 ADD MSTORE SWAP2 SWAP3 POP SWAP1 DUP3 AND SWAP1 PUSH4 0x33E1A223 SWAP1 PUSH1 0xA4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x1C3A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x1C4F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE CALLER PUSH1 0x20 DUP3 ADD MSTORE PUSH3 0x1C74 SWAP3 POP DUP4 SWAP2 POP PUSH3 0x2039 JUMP JUMPDEST PUSH3 0x1C8F PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2FD2 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH3 0x1506 JUMP JUMPDEST POP PUSH3 0x1CA5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND CALLVALUE PUSH3 0x209C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0x22DE16EF21E3A33810FBCAF0E737AB9C9E2854FA565D8535041456C789AFCD93 SWAP1 PUSH1 0x0 SWAP1 LOG2 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1CEF PUSH3 0x2015 JUMP JUMPDEST PUSH1 0x1 SWAP1 SSTORE POP JUMP JUMPDEST PUSH3 0x1D02 DUP3 DUP3 PUSH3 0xE02 JUMP JUMPDEST PUSH3 0x971 JUMPI PUSH1 0x40 MLOAD PUSH4 0xE2517D3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH3 0x8E4 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x103F DUP4 DUP4 PUSH3 0x213F JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x1D4E PUSH3 0x14E2 JUMP JUMPDEST SWAP1 POP PUSH3 0x1D5C DUP5 DUP5 PUSH3 0xE02 JUMP JUMPDEST PUSH3 0x1DDF JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH3 0x1D94 CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH3 0x873 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH3 0x873 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x103F DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH3 0x213F JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x1E26 PUSH3 0x14E2 JUMP JUMPDEST SWAP1 POP PUSH3 0x1E34 DUP5 DUP5 PUSH3 0xE02 JUMP JUMPDEST ISZERO PUSH3 0x1DDF JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP8 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH3 0x873 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x103F DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH3 0x218E JUMP JUMPDEST PUSH3 0x1EB8 PUSH3 0xCA8 JUMP JUMPDEST PUSH3 0x16C7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x8DFC202B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x1EE1 DUP3 PUSH3 0x2287 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH3 0x1F29 JUMPI PUSH3 0xB20 DUP3 DUP3 PUSH3 0x22E7 JUMP JUMPDEST PUSH3 0x971 PUSH3 0x2363 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x103F DUP4 DUP4 PUSH3 0x218E JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x0 ADD DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH3 0x1F93 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH3 0x1F7E JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH3 0x1FB9 JUMPI PUSH3 0x1FB9 PUSH3 0x2915 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x1FD6 PUSH3 0x2383 JUMP JUMPDEST PUSH3 0x16C7 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1AFCD79F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x1FFE PUSH3 0x1FCC JUMP JUMPDEST PUSH1 0x0 PUSH3 0x200A PUSH3 0x17ED JUMP JUMPDEST DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE POP JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x2045 PUSH3 0x1391 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 SWAP1 SWAP2 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP4 MLOAD DUP2 SLOAD SWAP3 SWAP1 SWAP5 ADD MLOAD SWAP1 SWAP5 AND PUSH2 0x100 MUL PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT SWAP4 ISZERO ISZERO SWAP4 SWAP1 SWAP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT SWAP1 SWAP2 AND OR SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH3 0x20C8 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCF479181 PUSH1 0xE0 SHL DUP2 MSTORE SELFBALANCE PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 ADD PUSH3 0x8E4 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x2117 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x211C JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH3 0xB20 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x214D DUP4 DUP4 PUSH3 0x1E01 JUMP JUMPDEST PUSH3 0x2185 JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP5 SWAP1 SSTORE DUP5 SLOAD DUP5 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH3 0x873 JUMP JUMPDEST POP PUSH1 0x0 PUSH3 0x873 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH3 0x1DDF JUMPI PUSH1 0x0 PUSH3 0x21B5 PUSH1 0x1 DUP4 PUSH3 0x2A89 JUMP JUMPDEST DUP6 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH3 0x21CB SWAP1 PUSH1 0x1 SWAP1 PUSH3 0x2A89 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 EQ PUSH3 0x2237 JUMPI PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH3 0x21EF JUMPI PUSH3 0x21EF PUSH3 0x2915 JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP8 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH3 0x2215 JUMPI PUSH3 0x2215 PUSH3 0x2915 JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 DUP3 MSTORE PUSH1 0x1 DUP9 ADD SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP4 SWAP1 SSTORE JUMPDEST DUP6 SLOAD DUP7 SWAP1 DUP1 PUSH3 0x224B JUMPI PUSH3 0x224B PUSH3 0x2AAB JUMP JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH1 0x1 SWAP4 POP POP POP POP PUSH3 0x873 JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH3 0x22B7 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8E4 SWAP2 SWAP1 PUSH3 0x24B8 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F72 DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH3 0x2306 SWAP2 SWAP1 PUSH3 0x28BB JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x2343 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x2348 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH3 0x235A DUP6 DUP4 DUP4 PUSH3 0x239F JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH3 0x16C7 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x238F PUSH3 0x19AD JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH3 0x23B8 JUMPI PUSH3 0x23B2 DUP3 PUSH3 0x23FA JUMP JUMPDEST PUSH3 0x103F JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH3 0x23D0 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH3 0x23F3 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x8E4 SWAP2 SWAP1 PUSH3 0x24B8 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH3 0x240B JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP1 SLOAD PUSH3 0x2432 SWAP1 PUSH3 0x28D9 JUMP JUMPDEST PUSH1 0x0 DUP3 SSTORE DUP1 PUSH1 0x1F LT PUSH3 0x2443 JUMPI POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH3 0xB61 SWAP2 SWAP1 PUSH3 0x2471 JUMP JUMPDEST PUSH2 0x410 DUP1 PUSH3 0x2AC2 DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x2488 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x2472 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x249F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH3 0x103F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x24E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x24FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x103F DUP3 PUSH3 0x24CC JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP5 GT ISZERO PUSH3 0x253A JUMPI PUSH3 0x253A PUSH3 0x2507 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP6 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x2565 JUMPI PUSH3 0x2565 PUSH3 0x2507 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP1 SWAP4 POP DUP6 DUP2 MSTORE DUP7 DUP7 DUP7 ADD GT ISZERO PUSH3 0x257F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 DUP6 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP8 DUP4 ADD ADD MSTORE POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x25AC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x25C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH3 0x25D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xDFA DUP5 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH3 0x251D JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x25F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x2614 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH3 0x2626 PUSH1 0x20 DUP5 ADD PUSH3 0x24CC JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x2643 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x264E DUP4 PUSH3 0x24CC JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x266A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH3 0x267C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x268D DUP6 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH3 0x251D JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x26B4 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x269A JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH3 0x26D7 DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH3 0x2697 JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH3 0x103F PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x26BD JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x273A JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x271C JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x275A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH3 0x2783 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x278E DUP8 PUSH3 0x24CC JUMP JUMPDEST SWAP6 POP PUSH3 0x279E PUSH1 0x20 DUP9 ADD PUSH3 0x24CC JUMP JUMPDEST SWAP5 POP PUSH3 0x27AE PUSH1 0x40 DUP9 ADD PUSH3 0x24CC JUMP JUMPDEST SWAP4 POP PUSH3 0x27BE PUSH1 0x60 DUP9 ADD PUSH3 0x24CC JUMP JUMPDEST SWAP3 POP PUSH3 0x27CE PUSH1 0x80 DUP9 ADD PUSH3 0x24CC JUMP JUMPDEST SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x273A JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x27FD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD PUSH1 0x20 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP3 POP PUSH1 0x20 DUP8 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x287F JUMPI PUSH1 0x3F NOT DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH3 0x286C DUP6 DUP4 MLOAD PUSH3 0x26BD JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH3 0x284D JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x28A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x28AB DUP4 PUSH3 0x24CC JUMP JUMPDEST SWAP2 POP PUSH3 0x2626 PUSH1 0x20 DUP5 ADD PUSH3 0x24CC JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH3 0x28CF DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH3 0x2697 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x28EE JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x290F JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0xB20 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH3 0x2956 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x2977 JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x2962 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x299B JUMPI PUSH3 0x299B PUSH3 0x2507 JUMP JUMPDEST PUSH3 0x29B3 DUP2 PUSH3 0x29AC DUP5 SLOAD PUSH3 0x28D9 JUMP JUMPDEST DUP5 PUSH3 0x292B JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x29EB JUMPI PUSH1 0x0 DUP5 ISZERO PUSH3 0x29D2 JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH3 0x2977 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x2A1C JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH3 0x29FB JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH3 0x2A3B JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH3 0x2A60 PUSH1 0x40 DUP4 ADD DUP6 PUSH3 0x26BD JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x2A82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH3 0x873 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x410 CODESIZE SUB DUP1 PUSH2 0x410 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x25A JUMP JUMPDEST PUSH2 0x2C DUP3 DUP3 PUSH2 0x33 JUMP JUMPDEST POP POP PUSH2 0x358 JUMP JUMPDEST PUSH2 0x3C DUP3 PUSH2 0x92 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x86 JUMPI PUSH2 0x81 DUP3 DUP3 PUSH2 0x109 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x8E PUSH2 0x180 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH2 0xC8 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF SWAP2 SWAP1 PUSH2 0x328 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x126 SWAP2 SWAP1 PUSH2 0x33C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x161 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x166 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x177 DUP6 DUP4 DUP4 PUSH2 0x1A1 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x19F JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x1B6 JUMPI PUSH2 0x1B1 DUP3 PUSH2 0x1F7 JUMP JUMPDEST PUSH2 0x1F0 JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x1CD JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x1ED JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF SWAP2 SWAP1 PUSH2 0x328 JUMP JUMPDEST POP DUP1 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x207 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x251 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x239 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x26D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x284 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x2A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x2C7 JUMPI PUSH2 0x2C7 PUSH2 0x220 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x2EF JUMPI PUSH2 0x2EF PUSH2 0x220 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x308 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x319 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x236 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x34E DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x236 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xAA DUP1 PUSH2 0x366 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0xA PUSH1 0xC JUMP JUMPDEST STOP JUMPDEST PUSH1 0x18 PUSH1 0x14 PUSH1 0x1A JUMP JUMPDEST PUSH1 0x51 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4C PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH1 0x6F JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 POP LT 0xFB 0xD3 CALLDATASIZE BALANCE 0x4F CREATE2 EQ 0xE3 0xC3 0xA5 0xED SWAP9 0xAE 0xD1 0xC9 0xC9 PUSH11 0x5210A9DF6DC914E2A04BBE PUSH24 0x2564736F6C6343000818003330F3325E23B502DCE693B147 0xD3 PUSH30 0xE928D14DD5AB09BBC928FB79867329AC5B83DCCFB718B018E1B06F849958 0xBA 0xF6 PUSH28 0xB252302F06A69871F72C5127EE92F659D349EEC46D2C564A125684D NOT CALLVALUE 0xA6 SLT EXP PUSH17 0xCC341D3A26D362E358A775E07DEC176A42 0x24 SWAP8 ADDMOD BLOCKHASH EXTCODEHASH MCOPY 0xD2 DUP12 DELEGATECALL SWAP3 STATICCALL 0xCD GT 0xE8 JUMPDEST 0xC1 SDIV 0x4E PUSH13 0x27C155ED468F6FF4F7ECD0189A 0xB7 0xA9 0x24 0x4D CREATE DUP5 DUP2 0x22 ISZERO NUMBER ISZERO 0xAF PUSH18 0xFE140F3DB0FE014031783B0946B8C9D2E336 ADDMOD SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC65D7A28E3265B37A647492 SWAP16 CALLER PUSH6 0x21B332C1681B SWAP4 EXTCODEHASH PUSH13 0xB9F3376673440D862A819590C8 EQ 0xC6 0xD2 PUSH26 0x357359F817D25ADB06A7B9F6E493592B7D3B8BB268ADB6764F22 DUP8 SHR PUSH25 0xB70C8896C7119179FC4E9B6F4CF323F8DB6EADB7D79007D1E0 0xC EXTCODEHASH LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD PUSH7 0x28730B2D330EB2 0xE1 PUSH14 0xD8190C75AA9580D54D6CF9599D06 PUSH14 0x9A36E02F067264736F6C63430008 XOR STOP CALLER ", + "sourceMap": "2315:18022:54:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4046:76;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4046:76:54;;;;;160:25:61;;;148:2;133:18;4046:76:54;;;;;;;;1695:212:1;;;;;;;;;;-1:-1:-1;1695:212:1;;;;;:::i;:::-;;:::i;:::-;;;652:14:61;;645:22;627:41;;615:2;600:18;1695:212:1;487:187:61;17650:193:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;15061:432::-;;;;;;;;;;-1:-1:-1;15061:432:54;;;;;:::i;:::-;;:::i;:::-;;19844:147;;;;;;;;;;-1:-1:-1;19844:147:54;;;;;:::i;:::-;;:::i;14265:201::-;;;;;;;;;;-1:-1:-1;14265:201:54;;;;;:::i;:::-;;:::i;16185:215::-;;;;;;;;;;-1:-1:-1;16185:215:54;;;;;:::i;:::-;;:::i;4759:191:0:-;;;;;;;;;;-1:-1:-1;4759:191:0;;;;;:::i;:::-;;:::i;13912:208:54:-;;;;;;;;;;-1:-1:-1;13912:208:54;;;;;:::i;:::-;;:::i;5246:136:0:-;;;;;;;;;;-1:-1:-1;5246:136:0;;;;;:::i;:::-;;:::i;5422:426:58:-;;;;;;;;;;-1:-1:-1;5422:426:58;;;;;:::i;:::-;;:::i;6348:245:0:-;;;;;;;;;;-1:-1:-1;6348:245:0;;;;;:::i;:::-;;:::i;18583:190:54:-;;;;;;;;;;;;;:::i;10892:75::-;;;;;;;;;;;;;:::i;3824:94::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3824:94:54;;3602:68;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3602:68:54;;4161:214:3;;;;;;:::i;:::-;;:::i;16645:178:54:-;;;;;;;;;;;;;:::i;3708:134:3:-;;;;;;;;;;;;;:::i;4893:396:58:-;;;;;;;;;;-1:-1:-1;4893:396:58;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2692:145:8:-;;;;;;;;;;;;;:::i;20184:151:54:-;;;;;;;;;;-1:-1:-1;20184:151:54;;;;;:::i;:::-;;:::i;17911:400::-;;;;;;;;;;-1:-1:-1;17911:400:54;;;;;:::i;:::-;;:::i;4541:68::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4541:68:54;;5989:213:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;10744:71:54:-;;;;;;;;;;;;;:::i;2492:233:1:-;;;;;;;;;;-1:-1:-1;2492:233:1;;;;;:::i;:::-;;:::i;3732:207:0:-;;;;;;;;;;-1:-1:-1;3732:207:0;;;;;:::i;:::-;;:::i;4299:94:54:-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4299:94:54;;9590:975;;;;;;;;;;-1:-1:-1;9590:975:54;;;;;:::i;:::-;;:::i;14722:195::-;;;;;;;;;;;;;:::i;2317:49:0:-;;;;;;;;;;-1:-1:-1;2317:49:0;2362:4;2317:49;;3658:227:1;;;;;;;;;;-1:-1:-1;3658:227:1;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1819:58:3:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:3;;;;;3352:68:54;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3352:68:54;;16888:340;;;;;;;;;;-1:-1:-1;16888:340:54;;;;;:::i;:::-;;:::i;6341:592:58:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;15950:173:54:-;;;;;;;;;;;;;:::i;2893:222:1:-;;;;;;;;;;-1:-1:-1;2893:222:1;;;;;:::i;:::-;;:::i;5662:138:0:-;;;;;;;;;;-1:-1:-1;5662:138:0;;;;;:::i;:::-;;:::i;2720:62:54:-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2720:62:54;;2884:66;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2884:66:54;;19056:202;;;;;;;;;;-1:-1:-1;19056:202:54;;;;;:::i;:::-;;:::i;11737:199::-;;;;;;:::i;:::-;;:::i;1695:212:1:-;1780:4;-1:-1:-1;;;;;;1803:57:1;;-1:-1:-1;;;1803:57:1;;:97;;;1864:36;1888:11;1864:23;:36::i;:::-;1796:104;1695:212;-1:-1:-1;;1695:212:1:o;17650:193:54:-;17701:23;17736:33;17772:29;:27;:29::i;:::-;17818:18;;;-1:-1:-1;;;;;17818:18:54;;17650:193;-1:-1:-1;;17650:193:54:o;15061:432::-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;15168:17:54::1;-1:-1:-1::0;;;;;15168:29:54::1;;15201:1;15168:34:::0;15164:121:::1;;15256:17;15225:49;;-1:-1:-1::0;;;15225:49:54::1;;;;;;;;:::i;:::-;;;;;;;;15164:121;15295:25;15323:26;:24;:26::i;:::-;15295:54;;15359:44;15385:17;15359:25;:44::i;:::-;15468:17;-1:-1:-1::0;;;;;15418:68:54::1;15449:17;-1:-1:-1::0;;;;;15418:68:54::1;;;;;;;;;;;15154:339;15061:432:::0;;:::o;19844:147::-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;19951:33:54::1;19972:11;19951:20;:33::i;:::-;19844:147:::0;;:::o;14265:201::-;14324:4;14340:33;14376:29;:27;:29::i;:::-;-1:-1:-1;;;;;14422:25:54;;;;;;;:16;;;;:25;;-1:-1:-1;;14422:25:54;;;:37;;;;14265:201::o;16185:215::-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;16283:33:54::1;16319:29;:27;:29::i;:::-;16358:16;;:35:::0;;;;-1:-1:-1;;16185:215:54:o;4759:191:0:-;4824:7;4843:30;4876:26;:24;:26::i;:::-;4919:8;:14;;;;;-1:-1:-1;;4919:14:0;;;:24;;;;4759:191::o;13912:208:54:-;13979:7;13998:33;14034:29;:27;:29::i;:::-;-1:-1:-1;;;;;14080:25:54;;;;;;;:16;;;;:25;;;;;:33;;;;;;;;13912:208;-1:-1:-1;;13912:208:54:o;5246:136:0:-;5320:18;5333:4;5320:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5350:25:::1;5361:4;5367:7;5350:10;:25::i;:::-;;5246:136:::0;;;:::o;5422:426:58:-;5510:19;5541:32;5576:28;:26;:28::i;:::-;5541:63;;5666:69;5721:11;5704:29;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5704:29:58;;;;;;;;;5694:40;;5704:29;5694:40;;;;5666:1;;:27;:69::i;:::-;5661:130;;5758:22;;-1:-1:-1;;;5758:22:58;;;;;;;;;;;5661:130;5808:1;:20;;5829:11;5808:33;;;;;;:::i;:::-;;;;;;;;;;;;;;5801:40;;;5422:426;;;:::o;6348:245:0:-;-1:-1:-1;;;;;6441:34:0;;966:10:7;6441:34:0;6437:102;;6498:30;;-1:-1:-1;;;6498:30:0;;;;;;;;;;;6437:102;6549:37;6561:4;6567:18;6549:11;:37::i;:::-;;6348:245;;:::o;18583:190:54:-;18633:22;18667:33;18703:29;:27;:29::i;:::-;18749:17;;;;18583:190;-1:-1:-1;;18583:190:54:o;10892:75::-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;10950:10:54::1;:8;:10::i;:::-;10892:75:::0;:::o;4161:214:3:-;2655:13;:11;:13::i;:::-;4276:36:::1;4294:17;4276;:36::i;:::-;4322:46;4344:17;4363:4;4322:21;:46::i;16645:178:54:-:0;16700:7;16719:33;16755:29;:27;:29::i;:::-;16801:15;;;-1:-1:-1;;;;;16801:15:54;;16645:178;-1:-1:-1;;16645:178:54:o;3708:134:3:-;3777:7;2926:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3708:134:3;:::o;4893:396:58:-;4975:25;5012:32;5047:28;:26;:28::i;:::-;5012:63;-1:-1:-1;5137:40:58;5012:63;5165:11;5137:27;:40::i;:::-;5132:101;;5200:22;;-1:-1:-1;;;5200:22:58;;;;;;;;;;;5132:101;5249:33;;;;:20;;;:33;;;;;5242:40;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4893:396;;;:::o;2692:145:8:-;2739:4;2755:25;2783:21;:19;:21::i;:::-;2821:9;;;;2692:145;-1:-1:-1;;2692:145:8:o;20184:151:54:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;20293:35:54::1;20316:11;20293:22;:35::i;17911:400::-:0;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;-1:-1:-1;;;;;18023:29:54;::::1;18019:106;;18098:15;18075:39;;-1:-1:-1::0;;;18075:39:54::1;;;;;;;;:::i;18019:106::-;18135:26;18164:20;:18;:20::i;:::-;18135:49;;18194:36;18214:15;18194:19;:36::i;:::-;18288:15;-1:-1:-1::0;;;;;18245:59:54::1;18268:18;-1:-1:-1::0;;;;;18245:59:54::1;;;;;;;;;;;18009:302;17911:400:::0;;:::o;5989:213:58:-;6051:25;6088:32;6123:28;:26;:28::i;:::-;6088:63;-1:-1:-1;6168:27:58;6088:63;6168:25;:27::i;:::-;6161:34;;;5989:213;:::o;10744:71:54:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;10800:8:54::1;:6;:8::i;2492:233:1:-:0;2573:7;2592:40;2635:36;:34;:36::i;:::-;2688:14;:20;;;;;;;;;;2592:79;;-1:-1:-1;2688:30:1;;2712:5;2688:23;:30::i;:::-;2681:37;2492:233;-1:-1:-1;;;;2492:233:1:o;3732:207:0:-;3809:4;3825:30;3858:26;:24;:26::i;:::-;3901:8;:14;;;;;;;;;;;-1:-1:-1;;;;;3901:31:0;;;;;;;;;-1:-1:-1;;3901:31:0;;;;;;3732:207::o;9590:975:54:-;4158:30:2;4191:26;:24;:26::i;:::-;4302:15;;4158:59;;-1:-1:-1;4302:15:2;-1:-1:-1;;;4302:15:2;;;4301:16;;-1:-1:-1;;;;;4348:14:2;4279:19;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:2;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:2;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:2;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;;;;;4951:18:2;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:2;-1:-1:-1;;;5013:22:2;;;4979:67;10032:17:54::1;:15;:17::i;:::-;10059:22;:20;:22::i;:::-;10091:24;:22;:24::i;:::-;10126:44;2362:4:0;10157:12:54::0;10126:10:::1;:44::i;:::-;;10180:31;-1:-1:-1::0;;;;;;;;;;;10204:6:54::1;10180:10;:31::i;:::-;;10221:35;-1:-1:-1::0;;;;;;;;;;;10247:8:54::1;10221:10;:35::i;:::-;;10266:37;-1:-1:-1::0;;;;;;;;;;;10293:9:54::1;10266:10;:37::i;:::-;;10314:33;10350:29;:27;:29::i;:::-;10390:18;::::0;::::1;:36:::0;;-1:-1:-1;;;;;;10390:36:54::1;-1:-1:-1::0;;;;;10390:36:54;::::1;;::::0;;10436:17:::1;::::0;::::1;:34:::0;;;10549:9:::1;-1:-1:-1::0;10530:16:54;;::::1;:28:::0;-1:-1:-1;5066:101:2;;;;5100:23;;-1:-1:-1;;;;5100:23:2;;;5142:14;;-1:-1:-1;8593:50:61;;5142:14:2;;8581:2:61;8566:18;5142:14:2;;;;;;;5066:101;4092:1081;;;;;9590:975:54;;;;;;:::o;14722:195::-;14779:7;14798:33;14834:29;:27;:29::i;:::-;14880:30;-1:-1:-1;;;;;14880:30:54;;14722:195;-1:-1:-1;;14722:195:54:o;3658:227:1:-;3725:16;3753:40;3796:36;:34;:36::i;:::-;3849:14;:20;;;;;;;;;;3753:79;;-1:-1:-1;3849:29:1;;:27;:29::i;:::-;3842:36;3658:227;-1:-1:-1;;;3658:227:1:o;16888:340:54:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;16981:5:54::1;-1:-1:-1::0;;;;;16981:17:54::1;;17002:1;16981:22:::0;16977:93:::1;;17053:5;17026:33;;-1:-1:-1::0;;;17026:33:54::1;;;;;;;;:::i;16977:93::-;17080:16;17099:24;:22;:24::i;:::-;17080:43;;17133:30;17157:5;17133:23;:30::i;:::-;17215:5;-1:-1:-1::0;;;;;17178:43:54::1;17205:8;-1:-1:-1::0;;;;;17178:43:54::1;;;;;;;;;;;16967:261;16888:340:::0;;:::o;6341:592:58:-;6402:24;6438:32;6473:28;:26;:28::i;:::-;6438:63;-1:-1:-1;6579:30:58;6612:27;6438:63;6612:25;:27::i;:::-;6579:60;;6649:28;6693:13;:20;-1:-1:-1;;;;;6680:34:58;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6649:65;;6770:9;6765:132;6789:13;:20;6785:1;:24;6765:132;;;6848:1;:20;;:38;6869:13;6883:1;6869:16;;;;;;;;:::i;:::-;;;;;;;6848:38;;;;;;;;;;;6830:56;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:12;6843:1;6830:15;;;;;;;;:::i;:::-;;;;;;;;;;:56;6811:3;;6765:132;;;-1:-1:-1;6914:12:58;6341:592;-1:-1:-1;;;6341:592:58:o;15950:173:54:-;15999:7;16018:33;16054:29;:27;:29::i;:::-;16100:16;;;;15950:173;-1:-1:-1;;15950:173:54:o;2893:222:1:-;2964:7;2983:40;3026:36;:34;:36::i;:::-;3079:14;:20;;;;;;;;;;2983:79;;-1:-1:-1;3079:29:1;;:27;:29::i;5662:138:0:-;5737:18;5750:4;5737:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5767:26:::1;5779:4;5785:7;5767:11;:26::i;19056:202:54:-:0;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;19137:13:54::1;19153:19;:17;:19::i;:::-;19137:35;;19182:22;19201:2;19182:18;:22::i;:::-;19219:32;::::0;19248:2;;19241:5;;19219:32:::1;::::0;;;::::1;19127:131;19056:202:::0;;:::o;11737:199::-;11870:7;3395:21:9;:19;:21::i;:::-;2316:19:8::1;:17;:19::i;:::-;11896:33:54::2;11913:5;11920:8;11896:16;:33::i;:::-;11889:40;;3437:20:9::0;:18;:20::i;3443:202:0:-;3528:4;-1:-1:-1;;;;;;3551:47:0;;-1:-1:-1;;;3551:47:0;;:87;;-1:-1:-1;;;;;;;;;;1134:40:10;;;3602:36:0;1035:146:10;6469:186:54;6608:31;;6469:186::o;4148:103:0:-;4214:30;4225:4;966:10:7;4214::0;:30::i;15499:213:54:-;15580:33;15616:29;:27;:29::i;:::-;15655:50;;-1:-1:-1;;;;;;15655:50:54;-1:-1:-1;;;;;15655:50:54;;;;;;;;;;;-1:-1:-1;15499:213:54:o;3357:601:58:-;3441:19;3490:11;3473:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;3463:40;;;;;;3441:62;;3514:32;3549:28;:26;:28::i;:::-;3514:63;-1:-1:-1;3638:10:58;3651:35;3514:63;3674:11;3651:22;:35::i;:::-;3638:48;;3702:5;3697:81;;3755:11;3730:37;;-1:-1:-1;;;3730:37:58;;;;;;;;:::i;3697:81::-;3788:33;;;;:20;;;:33;;;;;:47;3824:11;3788:33;:47;:::i;:::-;;3881:11;3845:1;:20;;3866:11;3845:33;;;;;;:::i;:::-;;;;;;;;;;;;;:47;;;;3908:43;3926:11;3939;3908:43;;;;;;;:::i;:::-;;;;;;;;3431:527;;;3357:601;:::o;2787:177:0:-;2920:28;;2787:177::o;3987:348:1:-;4073:4;4089:40;4132:36;:34;:36::i;:::-;4089:79;;4178:12;4193:31;4210:4;4216:7;4193:16;:31::i;:::-;4178:46;;4238:7;4234:71;;;4261:14;:20;;;;;;;;;;:33;;4286:7;4261:24;:33::i;:::-;;4321:7;3987:348;-1:-1:-1;;;;3987:348:1:o;1473:183:58:-;1610:30;;1473:183::o;6431:138:45:-;6511:4;6534:28;6544:3;6556:5;6534:9;:28::i;4438:353:1:-;4525:4;4541:40;4584:36;:34;:36::i;:::-;4541:79;;4630:12;4645:32;4663:4;4669:7;4645:17;:32::i;:::-;4630:47;;4691:7;4687:74;;;4714:14;:20;;;;;;;;;;:36;;4742:7;4714:27;:36::i;3674:178:8:-;2563:16;:14;:16::i;:::-;3732:25:::1;3760:21;:19;:21::i;:::-;3791:17:::0;;-1:-1:-1;;3791:17:8::1;::::0;;;-1:-1:-1;3823:22:8::1;966:10:7::0;3832:12:8::1;3823:22;;;;;;:::i;:::-;;;;;;;;3722:130;3674:178::o:0;4603:312:3:-;4683:4;-1:-1:-1;;;;;4692:6:3;4675:23;;;:120;;;4789:6;-1:-1:-1;;;;;4753:42:3;:32;-1:-1:-1;;;;;;;;;;;1519:53:22;-1:-1:-1;;;;;1519:53:22;;1441:138;4753:32:3;-1:-1:-1;;;;;4753:42:3;;;4675:120;4658:251;;;4869:29;;-1:-1:-1;;;4869:29:3;;;;;;;;;;;4658:251;4603:312::o;11061:98:54:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;6057:538:3:-;6174:17;-1:-1:-1;;;;;6156:50:3;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6156:52:3;;;;;;;;-1:-1:-1;;6156:52:3;;;;;;;;;;;;:::i;:::-;;;6152:437;;6560:17;6518:60;;-1:-1:-1;;;6518:60:3;;;;;;;;:::i;6152:437::-;-1:-1:-1;;;;;;;;;;;6250:40:3;;6246:120;;6317:34;;-1:-1:-1;;;6317:34:3;;;;;160:25:61;;;133:18;;6317:34:3;14:177:61;6246:120:3;6379:54;6409:17;6428:4;6379:29;:54::i;5032:213::-;5106:4;-1:-1:-1;;;;;5115:6:3;5098:23;;5094:145;;5199:29;;-1:-1:-1;;;5199:29:3;;;;;;;;;;;1147:162:8;1270:23;;1147:162::o;4174:586:58:-;4260:19;4309:11;4292:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;4282:40;;;;;;4260:62;;4333:32;4368:28;:26;:28::i;:::-;4333:63;-1:-1:-1;4460:12:58;4475:38;4333:63;4501:11;4475:25;:38::i;:::-;4460:53;;4529:7;4524:68;;4559:22;;-1:-1:-1;;;4559:22:58;;;;;;;;;;;4524:68;4609:33;;;;:20;;;:33;;;;;4602:40;;;:::i;:::-;4659:1;:20;;4680:11;4659:33;;;;;;:::i;:::-;;;;;;;;;;;;;4652:40;;;4708:45;4728:11;4741;4708:45;;;;;;;:::i;18317:190:54:-;18389:33;18425:29;:27;:29::i;:::-;18464:18;;:36;;-1:-1:-1;;;;;;18464:36:54;-1:-1:-1;;;;;18464:36:54;;;;;;;;;;;-1:-1:-1;18317:190:54:o;7776:273:45:-;7839:16;7867:22;7892:19;7900:3;7892:7;:19::i;3366:176:8:-;2316:19;:17;:19::i;:::-;3425:25:::1;3453:21;:19;:21::i;:::-;3484:16:::0;;-1:-1:-1;;3484:16:8::1;3496:4;3484:16;::::0;;3425:49;-1:-1:-1;3515:20:8::1;3522:12;966:10:7::0;;887:96;1250:207:1;1403:38;;1250:207::o;9547:156:45:-;9621:7;9671:22;9675:3;9687:5;9671:3;:22::i;8737:170:2:-;8870:21;;8737:170::o;1836:97:8:-;6931:20:2;:18;:20::i;:::-;1899:27:8::1;:25;:27::i;3231:65:0:-:0;6931:20:2;:18;:20::i;17234:172:54:-;17301:33;17337:29;:27;:29::i;:::-;17376:15;;:23;;-1:-1:-1;;;;;;17376:23:54;-1:-1:-1;;;;;17376:23:54;;;;;;;;;;;-1:-1:-1;17234:172:54:o;9090:115:45:-;9153:7;9179:19;9187:3;4556:18;;4474:107;19264:162:54;19322:33;19358:29;:27;:29::i;:::-;19397:17;;:22;;;;-1:-1:-1;19264:162:54:o;3470:384:9:-;3519:32;3554:28;:26;:28::i;:::-;3670:9;;3519:63;;-1:-1:-1;;;3670:20:9;3666:88;;3713:30;;-1:-1:-1;;;3713:30:9;;;;;;;;;;;3666:88;1991:1;3828:19;;3470:384::o;2905:128:8:-;2970:8;:6;:8::i;:::-;2966:61;;;3001:15;;-1:-1:-1;;;3001:15:8;;;;;;;;;;;12015:1571:54;12091:7;-1:-1:-1;;;;;12132:19:54;;12128:85;;12196:5;12174:28;;-1:-1:-1;;;12174:28:54;;;;;;;;:::i;12128:85::-;12223:21;12247:18;:16;:18::i;:::-;12223:42;;12325:13;12313:9;:25;12309:111;;;12361:48;;-1:-1:-1;;;12361:48:54;;;;;11640:25:61;;;12399:9:54;11681:18:61;;;11674:34;11613:18;;12361:48:54;11466:248:61;12309:111:54;12430:35;12468:26;:24;:26::i;:::-;12430:64;;12508:27;-1:-1:-1;;;;;12508:39:54;;12551:1;12508:44;12504:141;;12606:27;12575:59;;-1:-1:-1;;;12575:59:54;;;;;;;;:::i;12504:141::-;12655:20;12678:24;:22;:24::i;:::-;12655:47;;12716:12;-1:-1:-1;;;;;12716:24:54;;12744:1;12716:29;12712:107;;12795:12;12768:40;;-1:-1:-1;;;12768:40:54;;;;;;;;:::i;12712:107::-;12898:27;12945;12928:49;;;;;:::i;:::-;-1:-1:-1;;;;;11948:32:61;;;11930:51;;12017:2;12012;11997:18;;11990:30;;;-1:-1:-1;12036:18:61;;;12029:29;12090:2;12075:18;12928:49:54;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13024:107:54;;-1:-1:-1;;;13024:107:54;;13079:4;13024:107;;;12401:34:61;-1:-1:-1;;;;;12471:15:61;;;12451:18;;;12444:43;12503:18;;;12496:34;;;12566:15;;;12546:18;;;12539:43;12619:15;;;12598:19;;;12591:44;12898:79:54;;-1:-1:-1;13024:46:54;;;;;;12335:19:61;;13024:107:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13228:57:54;;;;;;;;;13257:4;13228:57;;13272:10;13228:57;;;;13185:101;;-1:-1:-1;13211:14:54;;-1:-1:-1;13185:17:54;:101::i;:::-;13329:51;-1:-1:-1;;;;;;;;;;;13364:14:54;13329:10;:51::i;:::-;-1:-1:-1;13437:44:54;-1:-1:-1;;;;;13437:33:54;;13471:9;13437:33;:44::i;:::-;13497:41;;-1:-1:-1;;;;;13497:41:54;;;;;;;;13564:14;12015:1571;-1:-1:-1;;;;;;12015:1571:54:o;3860:283:9:-;3908:32;3943:28;:26;:28::i;:::-;1949:1;4113:23;;-1:-1:-1;3860:283:9:o;4381:197:0:-;4469:22;4477:4;4483:7;4469;:22::i;:::-;4464:108;;4514:47;;-1:-1:-1;;;4514:47:0;;-1:-1:-1;;;;;12838:32:61;;4514:47:0;;;12820:51:61;12887:18;;;12880:34;;;12793:18;;4514:47:0;12646:274:61;5930:123:45;6000:4;6023:23;6028:3;6040:5;6023:4;:23::i;7270:387:0:-;7347:4;7363:30;7396:26;:24;:26::i;:::-;7363:59;;7437:22;7445:4;7451:7;7437;:22::i;:::-;7432:219;;7475:8;:14;;;;;;;;;;;-1:-1:-1;;;;;7475:31:0;;;;;;;;;:38;;-1:-1:-1;;7475:38:0;7509:4;7475:38;;;7559:12;966:10:7;;887:96;7559:12:0;-1:-1:-1;;;;;7532:40:0;7550:7;-1:-1:-1;;;;;7532:40:0;7544:4;7532:40;;;;;;;;;;7593:4;7586:11;;;;;7432:219;7635:5;7628:12;;;;;8289:150:45;8359:4;8382:50;8387:3;-1:-1:-1;;;;;8407:23:45;;8382:4;:50::i;4264:129::-;4337:4;4360:21;;;:14;;;;;:21;;;;;;:26;;;4264:129::o;7892:388:0:-;7970:4;7986:30;8019:26;:24;:26::i;:::-;7986:59;;8059:22;8067:4;8073:7;8059;:22::i;:::-;8055:219;;;8131:5;8097:14;;;;;;;;;;;-1:-1:-1;;;;;8097:31:0;;;;;;;;;;:39;;-1:-1:-1;;8097:39:0;;;8155:40;966:10:7;;8097:14:0;;8155:40;;8131:5;8155:40;8216:4;8209:11;;;;;8607:156:45;8680:4;8703:53;8711:3;-1:-1:-1;;;;;8731:23:45;;8703:7;:53::i;3105:126:8:-;3168:8;:6;:8::i;:::-;3163:62;;3199:15;;-1:-1:-1;;;3199:15:8;;;;;;;;;;;2264:344:22;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:22;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;2454:148::-;2573:18;:16;:18::i;6221:129:45:-;6294:4;6317:26;6325:3;6337:5;6317:7;:26::i;5581:109::-;5637:16;5672:3;:11;;5665:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5581:109;;;:::o;4923:118::-;4990:7;5016:3;:11;;5028:5;5016:18;;;;;;;;:::i;:::-;;;;;;;;;5009:25;;4923:118;;;;:::o;7084:141:2:-;7151:17;:15;:17::i;:::-;7146:73;;7191:17;;-1:-1:-1;;;7191:17:2;;;;;;;;;;;1939:156:8;6931:20:2;:18;:20::i;:::-;2012:25:8::1;2040:21;:19;:21::i;:::-;2071:17:::0;;-1:-1:-1;;2071:17:8::1;::::0;;-1:-1:-1;1939:156:8:o;2395:183:9:-;2532:30;;2395:183::o;13592:204:54:-;13682:33;13718:29;:27;:29::i;:::-;-1:-1:-1;;;;;13757:25:54;;;;;;;:16;;;;:25;;;;;;;;:32;;;;;;;;;;;;;;-1:-1:-1;;;;;;13757:32:54;;;;;;;-1:-1:-1;;;;;;13757:32:54;;;;;;;;;;;-1:-1:-1;13592:204:54:o;1290:349:34:-;1399:6;1375:21;:30;1371:125;;;1428:57;;-1:-1:-1;;;1428:57:34;;1455:21;1428:57;;;11640:25:61;11681:18;;;11674:34;;;11613:18;;1428:57:34;11466:248:61;1371:125:34;1507:12;1525:9;-1:-1:-1;;;;;1525:14:34;1547:6;1525:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1506:52;;;1573:7;1568:65;;1603:19;;-1:-1:-1;;;1603:19:34;;;;;;;;;;;2241:406:45;2304:4;2325:21;2335:3;2340:5;2325:9;:21::i;:::-;2320:321;;-1:-1:-1;2362:23:45;;;;;;;;:11;:23;;;;;;;;;;;;;2544:18;;2520:21;;;:14;;;:21;;;;;;:42;;;;2576:11;;2320:321;-1:-1:-1;2625:5:45;2618:12;;2815:1368;2881:4;3010:21;;;:14;;;:21;;;;;;3046:13;;3042:1135;;3413:18;3434:12;3445:1;3434:8;:12;:::i;:::-;3480:18;;3413:33;;-1:-1:-1;3460:17:45;;3480:22;;3501:1;;3480:22;:::i;:::-;3460:42;;3535:9;3521:10;:23;3517:378;;3564:17;3584:3;:11;;3596:9;3584:22;;;;;;;;:::i;:::-;;;;;;;;;3564:42;;3731:9;3705:3;:11;;3717:10;3705:23;;;;;;;;:::i;:::-;;;;;;;;;;;;:35;;;;3844:25;;;:14;;;:25;;;;;:36;;;3517:378;3973:17;;:3;;:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;4076:3;:14;;:21;4091:5;4076:21;;;;;;;;;;;4069:28;;;4119:4;4112:11;;;;;;;1671:281:22;1748:17;-1:-1:-1;;;;;1748:29:22;;1781:1;1748:34;1744:119;;1834:17;1805:47;;-1:-1:-1;;;1805:47:22;;;;;;;;:::i;1744:119::-;-1:-1:-1;;;;;;;;;;;1872:73:22;;-1:-1:-1;;;;;;1872:73:22;-1:-1:-1;;;;;1872:73:22;;;;;;;;;;1671:281::o;3900:253:34:-;3983:12;4008;4022:23;4049:6;-1:-1:-1;;;;;4049:19:34;4069:4;4049:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4007:67;;;;4091:55;4118:6;4126:7;4135:10;4091:26;:55::i;:::-;4084:62;3900:253;-1:-1:-1;;;;;3900:253:34:o;6113:122:22:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:22;;;;;;;;;;;8487:120:2;8537:4;8560:26;:24;:26::i;:::-;:40;-1:-1:-1;;;8560:40:2;;;;;;-1:-1:-1;8487:120:2:o;4421:582:34:-;4565:12;4594:7;4589:408;;4617:19;4625:10;4617:7;:19::i;:::-;4589:408;;;4841:17;;:22;:49;;;;-1:-1:-1;;;;;;4867:18:34;;;:23;4841:49;4837:119;;;4934:6;4917:24;;-1:-1:-1;;;4917:24:34;;;;;;;;:::i;4837:119::-;-1:-1:-1;4976:10:34;4421:582;-1:-1:-1;;4421:582:34:o;5543:487::-;5674:17;;:21;5670:354;;5871:10;5865:17;5927:15;5914:10;5910:2;5906:19;5899:44;5670:354;5994:19;;-1:-1:-1;;;5994:19:34;;;;;;;;;;;-1:-1:-1;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;196:286:61:-;254:6;307:2;295:9;286:7;282:23;278:32;275:52;;;323:1;320;313:12;275:52;349:23;;-1:-1:-1;;;;;;401:32:61;;391:43;;381:71;;448:1;445;438:12;679:203;-1:-1:-1;;;;;843:32:61;;;;825:51;;813:2;798:18;;679:203::o;887:173::-;955:20;;-1:-1:-1;;;;;1004:31:61;;994:42;;984:70;;1050:1;1047;1040:12;984:70;887:173;;;:::o;1065:186::-;1124:6;1177:2;1165:9;1156:7;1152:23;1148:32;1145:52;;;1193:1;1190;1183:12;1145:52;1216:29;1235:9;1216:29;:::i;1256:127::-;1317:10;1312:3;1308:20;1305:1;1298:31;1348:4;1345:1;1338:15;1372:4;1369:1;1362:15;1388:632;1453:5;-1:-1:-1;;;;;1513:14:61;;;1510:40;;;1530:18;;:::i;:::-;1605:2;1599:9;1573:2;1659:15;;-1:-1:-1;;1655:24:61;;;1681:2;1651:33;1647:42;1635:55;;;1705:18;;;1725:22;;;1702:46;1699:72;;;1751:18;;:::i;:::-;1791:10;1787:2;1780:22;1820:6;1811:15;;1850:6;1842;1835:22;1890:3;1881:6;1876:3;1872:16;1869:25;1866:45;;;1907:1;1904;1897:12;1866:45;1957:6;1952:3;1945:4;1937:6;1933:17;1920:44;2012:1;2005:4;1996:6;1988;1984:19;1980:30;1973:41;;;;1388:632;;;;;:::o;2025:451::-;2094:6;2147:2;2135:9;2126:7;2122:23;2118:32;2115:52;;;2163:1;2160;2153:12;2115:52;2190:23;;-1:-1:-1;;;;;2225:30:61;;2222:50;;;2268:1;2265;2258:12;2222:50;2291:22;;2344:4;2336:13;;2332:27;-1:-1:-1;2322:55:61;;2373:1;2370;2363:12;2322:55;2396:74;2462:7;2457:2;2444:16;2439:2;2435;2431:11;2396:74;:::i;2481:180::-;2540:6;2593:2;2581:9;2572:7;2568:23;2564:32;2561:52;;;2609:1;2606;2599:12;2561:52;-1:-1:-1;2632:23:61;;2481:180;-1:-1:-1;2481:180:61:o;2851:254::-;2919:6;2927;2980:2;2968:9;2959:7;2955:23;2951:32;2948:52;;;2996:1;2993;2986:12;2948:52;3032:9;3019:23;3009:33;;3061:38;3095:2;3084:9;3080:18;3061:38;:::i;:::-;3051:48;;2851:254;;;;;:::o;3292:524::-;3369:6;3377;3430:2;3418:9;3409:7;3405:23;3401:32;3398:52;;;3446:1;3443;3436:12;3398:52;3469:29;3488:9;3469:29;:::i;:::-;3459:39;-1:-1:-1;3549:2:61;3534:18;;3521:32;-1:-1:-1;;;;;3565:30:61;;3562:50;;;3608:1;3605;3598:12;3562:50;3631:22;;3684:4;3676:13;;3672:27;-1:-1:-1;3662:55:61;;3713:1;3710;3703:12;3662:55;3736:74;3802:7;3797:2;3784:16;3779:2;3775;3771:11;3736:74;:::i;:::-;3726:84;;;3292:524;;;;;:::o;3821:250::-;3906:1;3916:113;3930:6;3927:1;3924:13;3916:113;;;4006:11;;;4000:18;3987:11;;;3980:39;3952:2;3945:10;3916:113;;;-1:-1:-1;;4063:1:61;4045:16;;4038:27;3821:250::o;4076:271::-;4118:3;4156:5;4150:12;4183:6;4178:3;4171:19;4199:76;4268:6;4261:4;4256:3;4252:14;4245:4;4238:5;4234:16;4199:76;:::i;:::-;4329:2;4308:15;-1:-1:-1;;4304:29:61;4295:39;;;;4336:4;4291:50;;4076:271;-1:-1:-1;;4076:271:61:o;4352:220::-;4501:2;4490:9;4483:21;4464:4;4521:45;4562:2;4551:9;4547:18;4539:6;4521:45;:::i;4577:632::-;4748:2;4800:21;;;4870:13;;4773:18;;;4892:22;;;4719:4;;4748:2;4971:15;;;;4945:2;4930:18;;;4719:4;5014:169;5028:6;5025:1;5022:13;5014:169;;;5089:13;;5077:26;;5158:15;;;;5123:12;;;;5050:1;5043:9;5014:169;;;-1:-1:-1;5200:3:61;;4577:632;-1:-1:-1;;;;;;4577:632:61:o;5214:248::-;5282:6;5290;5343:2;5331:9;5322:7;5318:23;5314:32;5311:52;;;5359:1;5356;5349:12;5311:52;-1:-1:-1;;5382:23:61;;;5452:2;5437:18;;;5424:32;;-1:-1:-1;5214:248:61:o;5467:553::-;5571:6;5579;5587;5595;5603;5611;5664:3;5652:9;5643:7;5639:23;5635:33;5632:53;;;5681:1;5678;5671:12;5632:53;5704:29;5723:9;5704:29;:::i;:::-;5694:39;;5752:38;5786:2;5775:9;5771:18;5752:38;:::i;:::-;5742:48;;5809:38;5843:2;5832:9;5828:18;5809:38;:::i;:::-;5799:48;;5866:38;5900:2;5889:9;5885:18;5866:38;:::i;:::-;5856:48;;5923:39;5957:3;5946:9;5942:19;5923:39;:::i;:::-;5913:49;;6009:3;5998:9;5994:19;5981:33;5971:43;;5467:553;;;;;;;;:::o;6025:658::-;6196:2;6248:21;;;6318:13;;6221:18;;;6340:22;;;6167:4;;6196:2;6419:15;;;;6393:2;6378:18;;;6167:4;6462:195;6476:6;6473:1;6470:13;6462:195;;;6541:13;;-1:-1:-1;;;;;6537:39:61;6525:52;;6632:15;;;;6597:12;;;;6573:1;6491:9;6462:195;;6688:803;6850:4;6879:2;6919;6908:9;6904:18;6949:2;6938:9;6931:21;6972:6;7007;7001:13;7038:6;7030;7023:22;7076:2;7065:9;7061:18;7054:25;;7138:2;7128:6;7125:1;7121:14;7110:9;7106:30;7102:39;7088:53;;7176:2;7168:6;7164:15;7197:1;7207:255;7221:6;7218:1;7215:13;7207:255;;;7314:2;7310:7;7298:9;7290:6;7286:22;7282:36;7277:3;7270:49;7342:40;7375:6;7366;7360:13;7342:40;:::i;:::-;7332:50;-1:-1:-1;7440:12:61;;;;7405:15;;;;7243:1;7236:9;7207:255;;;-1:-1:-1;7479:6:61;;6688:803;-1:-1:-1;;;;;;;6688:803:61:o;7496:260::-;7564:6;7572;7625:2;7613:9;7604:7;7600:23;7596:32;7593:52;;;7641:1;7638;7631:12;7593:52;7664:29;7683:9;7664:29;:::i;:::-;7654:39;;7712:38;7746:2;7735:9;7731:18;7712:38;:::i;7761:289::-;7892:3;7930:6;7924:13;7946:66;8005:6;8000:3;7993:4;7985:6;7981:17;7946:66;:::i;:::-;8028:16;;;;;7761:289;-1:-1:-1;;7761:289:61:o;8055:380::-;8134:1;8130:12;;;;8177;;;8198:61;;8252:4;8244:6;8240:17;8230:27;;8198:61;8305:2;8297:6;8294:14;8274:18;8271:38;8268:161;;8351:10;8346:3;8342:20;8339:1;8332:31;8386:4;8383:1;8376:15;8414:4;8411:1;8404:15;8268:161;;8055:380;;;:::o;8654:127::-;8715:10;8710:3;8706:20;8703:1;8696:31;8746:4;8743:1;8736:15;8770:4;8767:1;8760:15;8912:543;9014:2;9009:3;9006:11;9003:446;;;9050:1;9074:5;9071:1;9064:16;9118:4;9115:1;9105:18;9188:2;9176:10;9172:19;9169:1;9165:27;9159:4;9155:38;9224:4;9212:10;9209:20;9206:47;;;-1:-1:-1;9247:4:61;9206:47;9302:2;9297:3;9293:12;9290:1;9286:20;9280:4;9276:31;9266:41;;9357:82;9375:2;9368:5;9365:13;9357:82;;;9420:17;;;9401:1;9390:13;9357:82;;;9361:3;;;8912:543;;;:::o;9631:1345::-;9751:10;;-1:-1:-1;;;;;9773:30:61;;9770:56;;;9806:18;;:::i;:::-;9835:97;9925:6;9885:38;9917:4;9911:11;9885:38;:::i;:::-;9879:4;9835:97;:::i;:::-;9987:4;;10044:2;10033:14;;10061:1;10056:663;;;;10763:1;10780:6;10777:89;;;-1:-1:-1;10832:19:61;;;10826:26;10777:89;-1:-1:-1;;9588:1:61;9584:11;;;9580:24;9576:29;9566:40;9612:1;9608:11;;;9563:57;10879:81;;10026:944;;10056:663;8859:1;8852:14;;;8896:4;8883:18;;-1:-1:-1;;10092:20:61;;;10210:236;10224:7;10221:1;10218:14;10210:236;;;10313:19;;;10307:26;10292:42;;10405:27;;;;10373:1;10361:14;;;;10240:19;;10210:236;;;10214:3;10474:6;10465:7;10462:19;10459:201;;;10535:19;;;10529:26;-1:-1:-1;;10618:1:61;10614:14;;;10630:3;10610:24;10606:37;10602:42;10587:58;10572:74;;10459:201;-1:-1:-1;;;;;10706:1:61;10690:14;;;10686:22;10673:36;;-1:-1:-1;9631:1345:61:o;10981:291::-;11158:2;11147:9;11140:21;11121:4;11178:45;11219:2;11208:9;11204:18;11196:6;11178:45;:::i;:::-;11170:53;;11259:6;11254:2;11243:9;11239:18;11232:34;10981:291;;;;;:::o;11277:184::-;11347:6;11400:2;11388:9;11379:7;11375:23;11371:32;11368:52;;;11416:1;11413;11406:12;11368:52;-1:-1:-1;11439:16:61;;11277:184;-1:-1:-1;11277:184:61:o;13135:225::-;13202:9;;;13223:11;;;13220:134;;;13276:10;13271:3;13267:20;13264:1;13257:31;13311:4;13308:1;13301:15;13339:4;13336:1;13329:15;13365:127;13426:10;13421:3;13417:20;13414:1;13407:31;13457:4;13454:1;13447:15;13481:4;13478:1;13471:15" + }, + "methodIdentifiers": { + "CMACCOUNT_ROLE()": "7fa34657", + "DEFAULT_ADMIN_ROLE()": "a217fddf", + "DEVELOPER_WALLET_ADMIN_ROLE()": "40df8d84", + "FEE_ADMIN_ROLE()": "4cba593a", + "PAUSER_ROLE()": "e63ab1e9", + "PREFUND_ADMIN_ROLE()": "01601d2f", + "SERVICE_REGISTRY_ADMIN_ROLE()": "92cf833f", + "UPGRADER_ROLE()": "f72c0d8b", + "UPGRADE_INTERFACE_VERSION()": "ad3cb1cc", + "VERSIONER_ROLE()": "b289819c", + "createCMAccount(address,address)": "fd2fbd52", + "getAccountImplementation()": "9d825bc5", + "getAllRegisteredServiceHashes()": "8127f465", + "getAllRegisteredServiceNames()": "c2a1db78", + "getBookingTokenAddress()": "4f3f4639", + "getCMAccountCreator(address)": "2cec1a06", + "getDeveloperFeeBp()": "3c555938", + "getDeveloperWallet()": "0470d3ac", + "getPrefundAmount()": "c39409e1", + "getRegisteredServiceHashByName(string)": "352af39a", + "getRegisteredServiceNameByHash(bytes32)": "5a81a626", + "getRoleAdmin(bytes32)": "248a9ca3", + "getRoleMember(bytes32,uint256)": "9010d07c", + "getRoleMemberCount(bytes32)": "ca15c873", + "getRoleMembers(bytes32)": "a3246ad3", + "grantRole(bytes32,address)": "2f2ff15d", + "hasRole(bytes32,address)": "91d14854", + "initialize(address,address,address,address,address,uint256)": "95b6ef0c", + "isCMAccount(address)": "12b357b5", + "pause()": "8456cb59", + "paused()": "5c975abb", + "proxiableUUID()": "52d1902d", + "registerService(string)": "0d6115d0", + "renounceRole(bytes32,address)": "36568abe", + "revokeRole(bytes32,address)": "d547741f", + "setAccountImplementation(address)": "09766da2", + "setBookingTokenAddress(address)": "c17e30bf", + "setDeveloperFeeBp(uint256)": "f85b4a9c", + "setDeveloperWallet(address)": "6cd56878", + "setPrefundAmount(uint256)": "1c2b3afc", + "supportsInterface(bytes4)": "01ffc9a7", + "unpause()": "3f4ba83a", + "unregisterService(string)": "5e818619", + "upgradeToAndCall(address,bytes)": "4f1ef286" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"CMAccountInvalidAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"CMAccountInvalidImplementation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expected\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sended\",\"type\":\"uint256\"}],\"name\":\"IncorrectPrefundAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bookingToken\",\"type\":\"address\"}],\"name\":\"InvalidBookingTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"developerWallet\",\"type\":\"address\"}],\"name\":\"InvalidDeveloperWallet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"name\":\"ServiceAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ServiceNotRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldBookingToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newBookingToken\",\"type\":\"address\"}],\"name\":\"BookingTokenAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"CMAccountCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldImplementation\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"CMAccountImplementationUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldDeveloperFeeBp\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newDeveloperFeeBp\",\"type\":\"uint256\"}],\"name\":\"DeveloperFeeBpUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldDeveloperWallet\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newDeveloperWallet\",\"type\":\"address\"}],\"name\":\"DeveloperWalletUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"ServiceRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"ServiceUnregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"CMACCOUNT_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEVELOPER_WALLET_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FEE_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PAUSER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PREFUND_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SERVICE_REGISTRY_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERSIONER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"upgrader\",\"type\":\"address\"}],\"name\":\"createCMAccount\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAccountImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllRegisteredServiceHashes\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"services\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllRegisteredServiceNames\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"services\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBookingTokenAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getCMAccountCreator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDeveloperFeeBp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"developerFeeBp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDeveloperWallet\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"developerWallet\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPrefundAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"name\":\"getRegisteredServiceHashByName\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"getRegisteredServiceNameByHash\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMembers\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"defaultAdmin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pauser\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"upgrader\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"versioner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"developerWallet\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"developerFeeBp\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCMAccount\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"name\":\"registerService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"setAccountImplementation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"setBookingTokenAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"bp\",\"type\":\"uint256\"}],\"name\":\"setDeveloperFeeBp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"developerWallet\",\"type\":\"address\"}],\"name\":\"setDeveloperWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPrefundAmount\",\"type\":\"uint256\"}],\"name\":\"setPrefundAmount\",\"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\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"name\":\"unregisterService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"custom:security-contact\":\"https://r.xyz/program/camino-network\",\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"CMAccountInvalidAdmin(address)\":[{\"params\":{\"admin\":\"The admin address\"}}],\"CMAccountInvalidImplementation(address)\":[{\"params\":{\"implementation\":\"The implementation address of the CMAccount\"}}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"IncorrectPrefundAmount(uint256,uint256)\":[{\"params\":{\"expected\":\"The expected pre fund amount\"}}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"InvalidBookingTokenAddress(address)\":[{\"params\":{\"bookingToken\":\"The booking token address\"}}],\"InvalidDeveloperWallet(address)\":[{\"params\":{\"developerWallet\":\"The developer wallet address\"}}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"BookingTokenAddressUpdated(address,address)\":{\"params\":{\"newBookingToken\":\"The new booking token address\",\"oldBookingToken\":\"The old booking token address\"}},\"CMAccountCreated(address)\":{\"params\":{\"account\":\"The address of the new CMAccount\"}},\"CMAccountImplementationUpdated(address,address)\":{\"params\":{\"newImplementation\":\"The new implementation address\",\"oldImplementation\":\"The old implementation address\"}},\"DeveloperFeeBpUpdated(uint256,uint256)\":{\"params\":{\"newDeveloperFeeBp\":\"The new developer fee basis points\",\"oldDeveloperFeeBp\":\"The old developer fee basis points\"}},\"DeveloperWalletUpdated(address,address)\":{\"params\":{\"newDeveloperWallet\":\"The new developer wallet address\",\"oldDeveloperWallet\":\"The old developer wallet address\"}},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\"},\"createCMAccount(address,address)\":{\"details\":\"Emits a {CMAccountCreated} event.\"},\"getAllRegisteredServiceHashes()\":{\"returns\":{\"services\":\"All registered service hashes\"}},\"getAllRegisteredServiceNames()\":{\"returns\":{\"services\":\"All registered service names\"}},\"getCMAccountCreator(address)\":{\"params\":{\"account\":\"The account address\"}},\"getRegisteredServiceHashByName(string)\":{\"params\":{\"serviceName\":\"Name of the service\"}},\"getRegisteredServiceNameByHash(bytes32)\":{\"params\":{\"serviceHash\":\"Hash of the service\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"getRoleMembers(bytes32)\":{\"details\":\"Return all accounts that have `role` WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that this function has an unbounded cost, and using it as part of a state-changing function may render the function uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"isCMAccount(address)\":{\"params\":{\"account\":\"The account address to check\"}},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"registerService(string)\":{\"params\":{\"serviceName\":\"Name of the service\"}},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setAccountImplementation(address)\":{\"params\":{\"newImplementation\":\"The new implementation address\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"unregisterService(string)\":{\"params\":{\"serviceName\":\"Name of the service\"}},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"title\":\"Camino Messenger Account Manager\",\"version\":1},\"userdoc\":{\"errors\":{\"CMAccountInvalidAdmin(address)\":[{\"notice\":\"The admin address is invalid.\"}],\"CMAccountInvalidImplementation(address)\":[{\"notice\":\"The implementation of the CMAccount is invalid.\"}],\"IncorrectPrefundAmount(uint256,uint256)\":[{\"notice\":\"Incorrect pre fund amount.\"}],\"InvalidBookingTokenAddress(address)\":[{\"notice\":\"Invalid booking token address.\"}],\"InvalidDeveloperWallet(address)\":[{\"notice\":\"Invalid developer address.\"}]},\"events\":{\"BookingTokenAddressUpdated(address,address)\":{\"notice\":\"Booking token address updated event.\"},\"CMAccountCreated(address)\":{\"notice\":\"CM Account created event.\"},\"CMAccountImplementationUpdated(address,address)\":{\"notice\":\"CM Account implementation address updated event.\"},\"DeveloperFeeBpUpdated(uint256,uint256)\":{\"notice\":\"Developer fee basis points updated event.\"},\"DeveloperWalletUpdated(address,address)\":{\"notice\":\"Developer wallet address updated event.\"}},\"kind\":\"user\",\"methods\":{\"CMACCOUNT_ROLE()\":{\"notice\":\"This role is granted to the created CM Accounts. It is used to keep an enumerable list of CM Accounts.\"},\"DEVELOPER_WALLET_ADMIN_ROLE()\":{\"notice\":\"Developer wallet admin role can set the developer wallet address which is used to receive the developer fee.\"},\"FEE_ADMIN_ROLE()\":{\"notice\":\"Fee admin role can set the developer fee basis points which used for calculating the developer fee that is cut from the cheque payments.\"},\"PAUSER_ROLE()\":{\"notice\":\"Pauser role can pause the contract. Currently this only affects the creation of CM Accounts. When paused, account creation is stopped.\"},\"PREFUND_ADMIN_ROLE()\":{\"notice\":\"Prefund admin role can set the mandatory prefund amount for {CMAccount} contracts.\"},\"SERVICE_REGISTRY_ADMIN_ROLE()\":{\"notice\":\"Service registry admin role can add and remove services to the service registry mapping. Implemented by {ServiceRegistry} contract.\"},\"UPGRADER_ROLE()\":{\"notice\":\"Upgrader role can upgrade the contract to a new implementation.\"},\"VERSIONER_ROLE()\":{\"notice\":\"Versioner role can set new {CMAccount} implementation address. When a new implementation address is set, it is used for the new {CMAccount} creations. The old {CMAccount} contracts are not affected by this. Owners of those should do the upgrade manually by calling the `upgradeToAndCall(address)` function on the account.\"},\"createCMAccount(address,address)\":{\"notice\":\"Creates CMAccount by deploying a ERC1967Proxy with the CMAccount implementation from the manager. Because this function is deploying a contract, it reverts if the caller is not KYC or KYB verified. (For EOAs only) Caller must send the pre-fund amount with the transaction.\"},\"getAccountImplementation()\":{\"notice\":\"Returns the CMAccount implementation address.\"},\"getAllRegisteredServiceHashes()\":{\"notice\":\"Returns all registered service **hashes**.\"},\"getAllRegisteredServiceNames()\":{\"notice\":\"Returns all registered service **names**.\"},\"getBookingTokenAddress()\":{\"notice\":\"Returns the booking token address.\"},\"getCMAccountCreator(address)\":{\"notice\":\"Returns the given account's creator.\"},\"getDeveloperFeeBp()\":{\"notice\":\"Returns developer fee in basis points.\"},\"getDeveloperWallet()\":{\"notice\":\"Returns developer wallet address.\"},\"getPrefundAmount()\":{\"notice\":\"Returns the prefund amount.\"},\"getRegisteredServiceHashByName(string)\":{\"notice\":\"Returns the hash of a service by its name.\"},\"getRegisteredServiceNameByHash(bytes32)\":{\"notice\":\"Returns the name of a service by its hash.\"},\"isCMAccount(address)\":{\"notice\":\"Check if an address is CMAccount created by the manager.\"},\"pause()\":{\"notice\":\"Pauses the CMAccountManager contract. Currently this only affects the creation of CMAccount. When paused, account creation is stopped.\"},\"registerService(string)\":{\"notice\":\"Registers a given service name. CM Accounts can only register services if they are also registered in the service registry on the manager contract.\"},\"setAccountImplementation(address)\":{\"notice\":\"Set a new CMAccount implementation address.\"},\"setBookingTokenAddress(address)\":{\"notice\":\"Sets booking token address.\"},\"setDeveloperFeeBp(uint256)\":{\"notice\":\"Sets developer fee in basis points. A basis point (bp) is one hundredth of 1 percentage point. 1 bp = 0.01%, 1/10,000\\u2060, or 0.0001. 10 bp = 0.1%, 1/1,000\\u2060, or 0.001. 100 bp = 1%, \\u20601/100\\u2060, or 0.01.\"},\"setDeveloperWallet(address)\":{\"notice\":\"Sets developer wallet address.\"},\"setPrefundAmount(uint256)\":{\"notice\":\"Sets the prefund amount.\"},\"unpause()\":{\"notice\":\"Unpauses the CMAccountManager contract.\"},\"unregisterService(string)\":{\"notice\":\"Unregisters a given service name. CM Accounts will not be able to register the service anymore.\"}},\"notice\":\"This contract manages the creation of the Camino Messenger accounts by deploying {ERC1967Proxy} proxies that point to the{CMAccount} implementation address. Create CM Account: Users who want to create an account should call `createCMAccount(address admin, address upgrader)` function with addresses of the accounts admin and upgrader roles and also send the pre fund amount, which is currently set as 100 CAMs. When the manager contract is paused, account creation is stopped. Developer Fee: This contracts also keeps the info about the developer wallet and fee basis points. Which are used during the cheque cash in to pay for the developer fee. Service Registry: {CMAccountManager} also acts as a registry for the services that {CMAccount} contracts add as a supported or wanted service. Registry works by hashing (keccak256) the service name (string) and creating a mapping as keccak256(serviceName) => serviceName. And provides functions that {CMAccount} function uses to register services. The {CMAccount} only keeps the hashes (byte32) of the registered services.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/manager/CMAccountManager.sol\":\"CMAccountManager\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"@openzeppelin/contracts-upgradeable/access/extensions/AccessControlEnumerableUpgradeable.sol\":{\"keccak256\":\"0xaec38804089a16494f7d45ebbbeab78fe05e5dc4bc2eae1d2af458fe999fb43c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04796408e2c4a1051afb23319e9505edb595a3d9c663ff5d6fcfb8e185ab1d93\",\"dweb:/ipfs/Qma8ZTi4kGyqg45SyNibbJSqMF7broiQnJPHhEGLcZyF9U\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xf72d3b11f41fccbbdcacd121f994daab8267ccfceb1fb4f247e4ba274c169d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e46ee40ddc9e2009176ce5d76aa2c046fd68f2ed52d02d77db191365b7c5b2e\",\"dweb:/ipfs/QmZnxgPmCCHosdvbh4J65uTaFYeGtZGzQ1sXRdeh1y68Zr\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol\":{\"keccak256\":\"0x92915b7f7f642c6be3f65bfd1522feb5d5b6ef25f755f4dbb51df32c868f2f97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85ad36d5cc7e190e1ee6c94b24659bc3a31396c4c36b6ffa6a509e10661f8007\",\"dweb:/ipfs/QmPFyc4zMh2zo6YWZt25gjm3YdR2hg6wGETaWw256fMmJJ\"]},\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.sol\":{\"keccak256\":\"0xca774fbe0568762efdc1a7cba31f09549c7fa96dbe97410f4843fa2f0bc000a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0187ffdbf3d61b6d86cba4fcd9826e53d876987d620533ee84c681bdaf0f3ba3\",\"dweb:/ipfs/QmVJDqdJv6uzHY7ifncfv2QJep8XTzS3bGb4s5Exhuv86m\"]},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0x0a8a5b994d4c4da9f61d128945cc8c9e60dcbc72bf532f72ae42a48ea90eed9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e63ae15b6b1079b9d3c73913424d4278139f9e9c9658316675b9c48d5883a50d\",\"dweb:/ipfs/QmWLxBYfp8j1YjNMabWgv75ELTaK2eEYEEGx7qsJbxVZZq\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c\",\"dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR\"]},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"contracts/account/ICMAccount.sol\":{\"keccak256\":\"0xafd07c8ff1ada61a29518c8f1cde952e93eb56154ba787a38fbf6f49d4187d91\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b8126900ad90ee8da111f0c775fcd7fdf54e16e7bf3a1ffbaf317f62852f47b9\",\"dweb:/ipfs/QmPsC5nSgo8c6tjSZ5yTRc84WaBw1jwLgQLbT5pP1k4jSk\"]},\"contracts/manager/CMAccountManager.sol\":{\"keccak256\":\"0x64e611b927007d9748e5e23ead82c2a56cbb8195b24e59025b2a097a5e3b91d7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://31d40022c77db3f0a68f4f07881b1e2f8b93f6e0add1e5c9b8f268fbe729840c\",\"dweb:/ipfs/QmTH61TnrLPgyNDKHcL29ctiFq5MCmwipuxDXBj7Mq3kpT\"]},\"contracts/partner/ServiceRegistry.sol\":{\"keccak256\":\"0xa17180671d286fe317321ca5c45f5a44a7c731ce1ad75b223a9fa23a0359cb2d\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f6028d7acbcbfaa71a8c5194f5271807091290a93b254487851930b0ca168ef8\",\"dweb:/ipfs/QmWriZasiVacHGHBSYyo7T2aCrj74tbiNoiVegTc9MSRB7\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "contracts/manager/ICMAccountManager.sol": { + "ICMAccountManager": { + "abi": [ + { + "inputs": [], + "name": "getAccountImplementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getDeveloperFeeBp", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getDeveloperWallet", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "getRegisteredServiceHashByName", + "outputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "getRegisteredServiceNameByHash", + "outputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isCMAccount", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "getAccountImplementation()": "9d825bc5", + "getDeveloperFeeBp()": "3c555938", + "getDeveloperWallet()": "0470d3ac", + "getRegisteredServiceHashByName(string)": "352af39a", + "getRegisteredServiceNameByHash(bytes32)": "5a81a626", + "isCMAccount(address)": "12b357b5" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getAccountImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDeveloperFeeBp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDeveloperWallet\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"name\":\"getRegisteredServiceHashByName\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"getRegisteredServiceNameByHash\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCMAccount\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/manager/ICMAccountManager.sol\":\"ICMAccountManager\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"contracts/manager/ICMAccountManager.sol\":{\"keccak256\":\"0xdadbd8d3ed62ac91b0efa7b8fd77ee39a5f14c5b3994e6bd57c552cde2793f10\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ecc2f4dba4846b275cef716b74e856f75cee43d2ed7368889d7db0c697d6ceec\",\"dweb:/ipfs/QmPhSQboUgm3dG7rs2CLpqwkssujy8HMKRtG9CDxf9vWuE\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "contracts/manager/test/CMAccountManagerTest.sol": { + "CMAccountManagerTest": { + "abi": [ + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + } + ], + "name": "AddressEmptyCode", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "admin", + "type": "address" + } + ], + "name": "CMAccountInvalidAdmin", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "CMAccountInvalidImplementation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "ERC1967InvalidImplementation", + "type": "error" + }, + { + "inputs": [], + "name": "ERC1967NonPayable", + "type": "error" + }, + { + "inputs": [], + "name": "EnforcedPause", + "type": "error" + }, + { + "inputs": [], + "name": "ExpectedPause", + "type": "error" + }, + { + "inputs": [], + "name": "FailedCall", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "sended", + "type": "uint256" + } + ], + "name": "IncorrectPrefundAmount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "bookingToken", + "type": "address" + } + ], + "name": "InvalidBookingTokenAddress", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "developerWallet", + "type": "address" + } + ], + "name": "InvalidDeveloperWallet", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "inputs": [], + "name": "ReentrancyGuardReentrantCall", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "ServiceAlreadyRegistered", + "type": "error" + }, + { + "inputs": [], + "name": "ServiceNotRegistered", + "type": "error" + }, + { + "inputs": [], + "name": "UUPSUnauthorizedCallContext", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "slot", + "type": "bytes32" + } + ], + "name": "UUPSUnsupportedProxiableUUID", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldBookingToken", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newBookingToken", + "type": "address" + } + ], + "name": "BookingTokenAddressUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "CMAccountCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldImplementation", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "CMAccountImplementationUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "oldDeveloperFeeBp", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "newDeveloperFeeBp", + "type": "uint256" + } + ], + "name": "DeveloperFeeBpUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldDeveloperWallet", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newDeveloperWallet", + "type": "address" + } + ], + "name": "DeveloperWalletUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Paused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceRegistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceUnregistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "Unpaused", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "inputs": [], + "name": "CMACCOUNT_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DEVELOPER_WALLET_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "FEE_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PAUSER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PREFUND_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "SERVICE_REGISTRY_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UPGRADER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UPGRADE_INTERFACE_VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "VERSIONER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "admin", + "type": "address" + }, + { + "internalType": "address", + "name": "upgrader", + "type": "address" + } + ], + "name": "createCMAccount", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "getAccountImplementation", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getAllRegisteredServiceHashes", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "services", + "type": "bytes32[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getAllRegisteredServiceNames", + "outputs": [ + { + "internalType": "string[]", + "name": "services", + "type": "string[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getBookingTokenAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getCMAccountCreator", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getDeveloperFeeBp", + "outputs": [ + { + "internalType": "uint256", + "name": "developerFeeBp", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getDeveloperWallet", + "outputs": [ + { + "internalType": "address", + "name": "developerWallet", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPrefundAmount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "getRegisteredServiceHashByName", + "outputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "getRegisteredServiceNameByHash", + "outputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getRoleMember", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMemberCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleMembers", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getVersion", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "defaultAdmin", + "type": "address" + }, + { + "internalType": "address", + "name": "pauser", + "type": "address" + }, + { + "internalType": "address", + "name": "upgrader", + "type": "address" + }, + { + "internalType": "address", + "name": "versioner", + "type": "address" + }, + { + "internalType": "address", + "name": "developerWallet", + "type": "address" + }, + { + "internalType": "uint256", + "name": "developerFeeBp", + "type": "uint256" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isCMAccount", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "proxiableUUID", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "registerService", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "callerConfirmation", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "setAccountImplementation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "setBookingTokenAddress", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "bp", + "type": "uint256" + } + ], + "name": "setDeveloperFeeBp", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "developerWallet", + "type": "address" + } + ], + "name": "setDeveloperWallet", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "newPrefundAmount", + "type": "uint256" + } + ], + "name": "setPrefundAmount", + "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": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "unregisterService", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": { + "@_16219": { + "entryPoint": null, + "id": 16219, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_disableInitializers_808": { + "entryPoint": 38, + "id": 808, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_getInitializableStorage_839": { + "entryPoint": null, + "id": 839, + "parameterSlots": 0, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + } + }, + "generatedSources": [ + { + "ast": { + "nativeSrc": "0:216:61", + "nodeType": "YulBlock", + "src": "0:216:61", + "statements": [ + { + "nativeSrc": "6:3:61", + "nodeType": "YulBlock", + "src": "6:3:61", + "statements": [] + }, + { + "body": { + "nativeSrc": "113:101:61", + "nodeType": "YulBlock", + "src": "113:101:61", + "statements": [ + { + "nativeSrc": "123:26:61", + "nodeType": "YulAssignment", + "src": "123:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "135:9:61", + "nodeType": "YulIdentifier", + "src": "135:9:61" + }, + { + "kind": "number", + "nativeSrc": "146:2:61", + "nodeType": "YulLiteral", + "src": "146:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "131:3:61", + "nodeType": "YulIdentifier", + "src": "131:3:61" + }, + "nativeSrc": "131:18:61", + "nodeType": "YulFunctionCall", + "src": "131:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "123:4:61", + "nodeType": "YulIdentifier", + "src": "123:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "165:9:61", + "nodeType": "YulIdentifier", + "src": "165:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "180:6:61", + "nodeType": "YulIdentifier", + "src": "180:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "196:2:61", + "nodeType": "YulLiteral", + "src": "196:2:61", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "200:1:61", + "nodeType": "YulLiteral", + "src": "200:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "192:3:61", + "nodeType": "YulIdentifier", + "src": "192:3:61" + }, + "nativeSrc": "192:10:61", + "nodeType": "YulFunctionCall", + "src": "192:10:61" + }, + { + "kind": "number", + "nativeSrc": "204:1:61", + "nodeType": "YulLiteral", + "src": "204:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "188:3:61", + "nodeType": "YulIdentifier", + "src": "188:3:61" + }, + "nativeSrc": "188:18:61", + "nodeType": "YulFunctionCall", + "src": "188:18:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "176:3:61", + "nodeType": "YulIdentifier", + "src": "176:3:61" + }, + "nativeSrc": "176:31:61", + "nodeType": "YulFunctionCall", + "src": "176:31:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "158:6:61", + "nodeType": "YulIdentifier", + "src": "158:6:61" + }, + "nativeSrc": "158:50:61", + "nodeType": "YulFunctionCall", + "src": "158:50:61" + }, + "nativeSrc": "158:50:61", + "nodeType": "YulExpressionStatement", + "src": "158:50:61" + } + ] + }, + "name": "abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed", + "nativeSrc": "14:200:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "82:9:61", + "nodeType": "YulTypedName", + "src": "82:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "93:6:61", + "nodeType": "YulTypedName", + "src": "93:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "104:4:61", + "nodeType": "YulTypedName", + "src": "104:4:61", + "type": "" + } + ], + "src": "14:200:61" + } + ] + }, + "contents": "{\n { }\n function abi_encode_tuple_t_uint64__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(64, 1), 1)))\n }\n}", + "id": 61, + "language": "Yul", + "name": "#utility.yul" + } + ], + "linkReferences": {}, + "object": "60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161306062000104600039600081816116620152818161168c01526117e701526130606000f3fe608060405260043610620002305760003560e01c806301601d2f146200023557806301ffc9a7146200026d5780630470d3ac14620002a357806309766da214620002ca5780630d6115d014620002f15780630d8e6e2c146200031657806312b357b514620003525780631c2b3afc1462000377578063248a9ca3146200039c5780632cec1a0614620003c15780632f2ff15d14620003e6578063352af39a146200040b57806336568abe14620004305780633c55593814620004555780633f4ba83a146200046d57806340df8d8414620004855780634cba593a14620004aa5780634f1ef28614620004cf5780634f3f463914620004e657806352d1902d14620004fe5780635a81a62614620005165780635c975abb146200053b5780635e81861914620005535780636cd5687814620005785780637fa34657146200059d5780638127f46514620005c25780638456cb5914620005e95780639010d07c146200060157806391d14854146200062657806392cf833f146200064b57806395b6ef0c14620006705780639d825bc51462000695578063a217fddf14620006ad578063a3246ad314620006c4578063ad3cb1cc14620006f8578063b289819c146200072b578063c17e30bf1462000750578063c2a1db781462000775578063c39409e1146200079c578063ca15c87314620007b4578063d547741f14620007d9578063e63ab1e914620007fe578063f72c0d8b1462000823578063f85b4a9c1462000848578063fd2fbd52146200086d575b600080fd5b3480156200024257600080fd5b506200025a60008051602062002f0b83398151915281565b6040519081526020015b60405180910390f35b3480156200027a57600080fd5b50620002926200028c366004620024c5565b62000884565b604051901515815260200162000264565b348015620002b057600080fd5b50620002bb620008b2565b604051620002649190620024f1565b348015620002d757600080fd5b50620002ef620002e936600462002522565b620008d2565b005b348015620002fe57600080fd5b50620002ef62000310366004620025d2565b62000984565b3480156200032357600080fd5b5060408051808201909152600781526654455354494e4760c81b60208201525b60405162000264919062002673565b3480156200035f57600080fd5b50620002926200037136600462002522565b620009ae565b3480156200038457600080fd5b50620002ef6200039636600462002688565b620009e0565b348015620003a957600080fd5b506200025a620003bb36600462002688565b62000a12565b348015620003ce57600080fd5b50620002bb620003e036600462002522565b62000a34565b348015620003f357600080fd5b50620002ef62000405366004620026a2565b62000a6c565b3480156200041857600080fd5b506200025a6200042a366004620025d2565b62000a94565b3480156200043d57600080fd5b50620002ef6200044f366004620026a2565b62000b23565b3480156200046257600080fd5b506200025a62000b5e565b3480156200047a57600080fd5b50620002ef62000b75565b3480156200049257600080fd5b506200025a60008051602062002feb83398151915281565b348015620004b757600080fd5b506200025a60008051602062002f4b83398151915281565b620002ef620004e0366004620026d1565b62000b9d565b348015620004f357600080fd5b50620002bb62000bbe565b3480156200050b57600080fd5b506200025a62000bde565b3480156200052357600080fd5b50620003436200053536600462002688565b62000bfe565b3480156200054857600080fd5b506200029262000ce1565b3480156200056057600080fd5b50620002ef62000572366004620025d2565b62000cf8565b3480156200058557600080fd5b50620002ef6200059736600462002522565b62000d1e565b348015620005aa57600080fd5b506200025a6000805160206200300b83398151915281565b348015620005cf57600080fd5b50620005da62000dc3565b60405162000264919062002739565b348015620005f657600080fd5b50620002ef62000de4565b3480156200060e57600080fd5b50620002bb620006203660046200277f565b62000e09565b3480156200063357600080fd5b506200029262000645366004620026a2565b62000e3b565b3480156200065857600080fd5b506200025a60008051602062002f2b83398151915281565b3480156200067d57600080fd5b50620002ef6200068f366004620027a2565b62000e73565b348015620006a257600080fd5b50620002bb62001031565b348015620006ba57600080fd5b506200025a600081565b348015620006d157600080fd5b50620006e9620006e336600462002688565b6200104e565b6040516200026491906200281a565b3480156200070557600080fd5b5062000343604051806040016040528060058152602001640352e302e360dc1b81525081565b3480156200073857600080fd5b506200025a60008051602062002f6b83398151915281565b3480156200075d57600080fd5b50620002ef6200076f36600462002522565b6200107f565b3480156200078257600080fd5b506200078d62001128565b6040516200026491906200285d565b348015620007a957600080fd5b506200025a6200129d565b348015620007c157600080fd5b506200025a620007d336600462002688565b620012b4565b348015620007e657600080fd5b50620002ef620007f8366004620026a2565b620012dd565b3480156200080b57600080fd5b506200025a60008051602062002fcb83398151915281565b3480156200083057600080fd5b506200025a60008051602062002f8b83398151915281565b3480156200085557600080fd5b50620002ef6200086736600462002688565b620012ff565b620002bb6200087e366004620028c5565b62001365565b60006001600160e01b03198216635a05180f60e01b1480620008ac5750620008ac8262001393565b92915050565b600080620008bf620013ca565b600201546001600160a01b031692915050565b60008051602062002f6b833981519152620008ed81620013ee565b816001600160a01b03163b6000036200092657816040516337766f4360e11b81526004016200091d9190620024f1565b60405180910390fd5b60006200093262001031565b90506200093f83620013fa565b826001600160a01b0316816001600160a01b03167fecd599290ada9c149ae0fb600bc6ada3c103a716eadb877b5341b7d298b62d9360405160405180910390a3505050565b60008051602062002f2b8339815191526200099f81620013ee565b620009aa8262001428565b5050565b600080620009bb620013ca565b6001600160a01b03909316600090815260059093016020525050604090205460ff1690565b60008051602062002f0b833981519152620009fb81620013ee565b600062000a07620013ca565b600101929092555050565b60008062000a1f6200151b565b60009384526020525050604090206001015490565b60008062000a41620013ca565b6001600160a01b03938416600090815260059091016020526040902054610100900490921692915050565b62000a778262000a12565b62000a8281620013ee565b62000a8e83836200153f565b50505050565b60008062000aa162001588565b905062000ada8360405160200162000aba9190620028f4565b60408051601f1981840301815291905280516020909101208290620015ac565b62000af85760405163162e926760e11b815260040160405180910390fd5b806003018360405162000b0c9190620028f4565b908152602001604051809103902054915050919050565b6001600160a01b038116331462000b4d5760405163334bd91960e11b815260040160405180910390fd5b62000b598282620015ba565b505050565b60008062000b6b620013ca565b6003015492915050565b60008051602062002fcb83398151915262000b9081620013ee565b62000b9a620015fa565b50565b62000ba762001657565b62000bb28262001702565b620009aa82826200171d565b60008062000bcb620013ca565b600401546001600160a01b031692915050565b600062000bea620017dc565b5060008051602062002fab83398151915290565b6060600062000c0c62001588565b905062000c1a8184620015ac565b62000c385760405163162e926760e11b815260040160405180910390fd5b60008381526002820160205260409020805462000c559062002912565b80601f016020809104026020016040519081016040528092919081815260200182805462000c839062002912565b801562000cd45780601f1062000ca85761010080835404028352916020019162000cd4565b820191906000526020600020905b81548152906001019060200180831162000cb657829003601f168201915b5050505050915050919050565b60008062000cee62001826565b5460ff1692915050565b60008051602062002f2b83398151915262000d1381620013ee565b620009aa826200184a565b60008051602062002feb83398151915262000d3981620013ee565b6001600160a01b03821662000d65578160405163220b4f1160e11b81526004016200091d9190620024f1565b600062000d71620008b2565b905062000d7e8362001928565b826001600160a01b0316816001600160a01b03167f88bf70d4f3c446213b5064d7cfe95ec0ed196748f014c19a833117bac32468fd60405160405180910390a3505050565b6060600062000dd162001588565b905062000dde8162001959565b91505090565b60008051602062002fcb83398151915262000dff81620013ee565b62000b9a62001968565b60008062000e16620019b4565b600085815260208290526040902090915062000e339084620019d8565b949350505050565b60008062000e486200151b565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b600062000e7f620019e6565b805490915060ff600160401b82041615906001600160401b031660008115801562000ea75750825b90506000826001600160401b0316600114801562000ec45750303b155b90508115801562000ed3575080155b1562000ef25760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b0319166001178555831562000f1c57845460ff60401b1916600160401b1785555b62000f2662001a0a565b62000f3062001a1e565b62000f3a62001a1e565b62000f4760008c6200153f565b5062000f6360008051602062002fcb8339815191528b6200153f565b5062000f7f60008051602062002f8b8339815191528a6200153f565b5062000f9b60008051602062002f6b833981519152896200153f565b50600062000fa8620013ca565b6002810180546001600160a01b0319166001600160a01b038b161790556003810188905568056bc75e2d631000006001909101555083156200102457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050565b6000806200103e620013ca565b546001600160a01b031692915050565b606060006200105c620019b4565b6000848152602082905260409020909150620010789062001959565b9392505050565b60008051602062002f6b8339815191526200109a81620013ee565b816001600160a01b03163b600003620010ca578160405163c9c10a6160e01b81526004016200091d9190620024f1565b6000620010d662000bbe565b9050620010e38362001a28565b826001600160a01b0316816001600160a01b03167f8752daf55fa0ccd919c149bbc809abaad4433f02ba7aa93ac6d5acfd2f8dc22c60405160405180910390a3505050565b606060006200113662001588565b90506000620011458262001959565b9050600081516001600160401b0381111562001165576200116562002540565b6040519080825280602002602001820160405280156200119a57816020015b6060815260200190600190039081620011845790505b50905060005b82518110156200129557836002016000848381518110620011c557620011c56200294e565b602002602001015181526020019081526020016000208054620011e89062002912565b80601f0160208091040260200160405190810160405280929190818152602001828054620012169062002912565b8015620012675780601f106200123b5761010080835404028352916020019162001267565b820191906000526020600020905b8154815290600101906020018083116200124957829003601f168201915b50505050508282815181106200128157620012816200294e565b6020908102919091010152600101620011a0565b509392505050565b600080620012aa620013ca565b6001015492915050565b600080620012c1620019b4565b6000848152602082905260409020909150620010789062001a59565b620012e88262000a12565b620012f381620013ee565b62000a8e8383620015ba565b60008051602062002f4b8339815191526200131a81620013ee565b60006200132662000b5e565b9050620013338362001a64565b604051839082907fc1fec27bbb8c533fedd3d449016c429341bfc0df21a9600e6162605e08f1c78f90600090a3505050565b60006200137162001a7a565b6200137b62001ab3565b62001387838362001adc565b9050620008ac62001d1c565b60006001600160e01b03198216637965db0b60e01b1480620008ac57506301ffc9a760e01b6001600160e01b0319831614620008ac565b7f2b421af391835920c41e77b6810f6e715f5b713c17bc590f55de6a7d3912e80090565b62000b9a813362001d2f565b600062001406620013ca565b80546001600160a01b0319166001600160a01b03939093169290921790915550565b6000816040516020016200143d9190620028f4565b60405160208183030381529060405280519060200120905060006200146162001588565b9050600062001471828462001d6c565b905080620014965783604051633dad0df560e11b81526004016200091d919062002673565b60008381526002830160205260409020620014b28582620029b8565b50828260030185604051620014c89190620028f4565b9081526020016040518091039020819055507fbad43a69707ac20dd539f3163b927e83baef6e967f2c95432129b1ded416645884846040516200150d92919062002a84565b60405180910390a150505050565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b6000806200154c620019b4565b905060006200155c858562001d7a565b9050801562000e335760008581526020839052604090206200157f908562001e23565b50949350505050565b7f563e037355fff0507705f481e4b362e4c3996a3b57d07307deabfca3d816860090565b600062001078838362001e3a565b600080620015c7620019b4565b90506000620015d7858562001e52565b9050801562000e335760008581526020839052604090206200157f908562001ed0565b6200160462001ee7565b60006200161062001826565b805460ff1916815590507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516200164c9190620024f1565b60405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480620016e157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316620016d560008051602062002fab833981519152546001600160a01b031690565b6001600160a01b031614155b15620017005760405163703e46dd60e11b815260040160405180910390fd5b565b60008051602062002f8b833981519152620009aa81620013ee565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156200177a575060408051601f3d908101601f19168201909252620017779181019062002aa8565b60015b6200179c5781604051634c9c8ce360e01b81526004016200091d9190620024f1565b60008051602062002fab8339815191528114620017d057604051632a87526960e21b8152600481018290526024016200091d565b62000b59838362001f0f565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614620017005760405163703e46dd60e11b815260040160405180910390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330090565b6000816040516020016200185f9190620028f4565b60405160208183030381529060405280519060200120905060006200188362001588565b9050600062001893828462001f6c565b905080620018b45760405163162e926760e11b815260040160405180910390fd5b60008381526002830160205260408120620018cf916200245d565b8160030184604051620018e39190620028f4565b9081526020016040518091039020600090557f57158eaa7e642cefd761327d5cd6c147ddaad706ec257f90f4d8b59b3d365eb784846040516200150d92919062002a84565b600062001934620013ca565b60020180546001600160a01b0319166001600160a01b03939093169290921790915550565b60606000620010788362001f7a565b6200197262001ab3565b60006200197e62001826565b805460ff1916600117815590507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586200163d3390565b7fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200090565b600062001078838362001fd8565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b62001a1462002005565b620017006200202d565b6200170062002005565b600062001a34620013ca565b60040180546001600160a01b0319166001600160a01b03939093169290921790915550565b6000620008ac825490565b600062001a70620013ca565b6003019190915550565b600062001a866200204e565b80549091506001190162001aad57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b62001abd62000ce1565b15620017005760405163d93c066560e01b815260040160405180910390fd5b60006001600160a01b03831662001b0a578260405163715397cd60e11b81526004016200091d9190620024f1565b600062001b166200129d565b90508034101562001b44576040516353f01c6360e11b8152600481018290523460248201526044016200091d565b600062001b5062001031565b9050806001600160a01b03163b60000362001b8257806040516337766f4360e11b81526004016200091d9190620024f1565b600062001b8e62000bbe565b9050806001600160a01b03163b60000362001bc0578060405163c9c10a6160e01b81526004016200091d9190620024f1565b60008260405162001bd1906200249c565b6001600160a01b039091168152604060208201819052600090820152606001604051809103906000f08015801562001c0d573d6000803e3d6000fd5b506040516333e1a22360e01b81523060048201526001600160a01b0384811660248301526044820187905289811660648301528881166084830152919250908216906333e1a2239060a401600060405180830381600087803b15801562001c7357600080fd5b505af115801562001c88573d6000803e3d6000fd5b5050604080518082019091526001815233602082015262001cad925083915062002072565b62001cc86000805160206200300b833981519152826200153f565b5062001cde6001600160a01b03821634620020d5565b6040516001600160a01b038216907f22de16ef21e3a33810fbcaf0e737ab9c9e2854fa565d8535041456c789afcd9390600090a29695505050505050565b600062001d286200204e565b6001905550565b62001d3b828262000e3b565b620009aa5760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016200091d565b600062001078838362002178565b60008062001d876200151b565b905062001d95848462000e3b565b62001e18576000848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905562001dcd3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050620008ac565b6000915050620008ac565b600062001078836001600160a01b03841662002178565b60009081526001919091016020526040902054151590565b60008062001e5f6200151b565b905062001e6d848462000e3b565b1562001e18576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050620008ac565b600062001078836001600160a01b038416620021c7565b62001ef162000ce1565b6200170057604051638dfc202b60e01b815260040160405180910390fd5b62001f1a82620022c0565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511562001f625762000b59828262002320565b620009aa6200239c565b6000620010788383620021c7565b60608160000180548060200260200160405190810160405280929190818152602001828054801562001fcc57602002820191906000526020600020905b81548152602001906001019080831162001fb7575b50505050509050919050565b600082600001828154811062001ff25762001ff26200294e565b9060005260206000200154905092915050565b6200200f620023bc565b6200170057604051631afcd79f60e31b815260040160405180910390fd5b6200203762002005565b60006200204362001826565b805460ff1916905550565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b60006200207e620013ca565b6001600160a01b03938416600090815260059091016020908152604090912083518154929094015190941661010002610100600160a81b0319931515939093166001600160a81b0319909116179190911790915550565b80471015620021015760405163cf47918160e01b8152476004820152602481018290526044016200091d565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811462002150576040519150601f19603f3d011682016040523d82523d6000602084013e62002155565b606091505b505090508062000b595760405163d6bda27560e01b815260040160405180910390fd5b600062002186838362001e3a565b620021be57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620008ac565b506000620008ac565b6000818152600183016020526040812054801562001e18576000620021ee60018362002ac2565b8554909150600090620022049060019062002ac2565b9050808214620022705760008660000182815481106200222857620022286200294e565b90600052602060002001549050808760000184815481106200224e576200224e6200294e565b6000918252602080832090910192909255918252600188019052604090208390555b855486908062002284576200228462002ae4565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050620008ac565b806001600160a01b03163b600003620022f05780604051634c9c8ce360e01b81526004016200091d9190620024f1565b60008051602062002fab83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516200233f9190620028f4565b600060405180830381855af49150503d80600081146200237c576040519150601f19603f3d011682016040523d82523d6000602084013e62002381565b606091505b509150915062002393858383620023d8565b95945050505050565b3415620017005760405163b398979f60e01b815260040160405180910390fd5b6000620023c8620019e6565b54600160401b900460ff16919050565b606082620023f157620023eb8262002433565b62001078565b81511580156200240957506001600160a01b0384163b155b156200242c5783604051639996b31560e01b81526004016200091d9190620024f1565b5092915050565b805115620024445780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b5080546200246b9062002912565b6000825580601f106200247c575050565b601f01602090049060005260206000209081019062000b9a9190620024aa565b6104108062002afb83390190565b5b80821115620024c15760008155600101620024ab565b5090565b600060208284031215620024d857600080fd5b81356001600160e01b0319811681146200107857600080fd5b6001600160a01b0391909116815260200190565b80356001600160a01b03811681146200251d57600080fd5b919050565b6000602082840312156200253557600080fd5b620010788262002505565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b038084111562002573576200257362002540565b604051601f8501601f19908116603f011681019082821181831017156200259e576200259e62002540565b81604052809350858152868686011115620025b857600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215620025e557600080fd5b81356001600160401b03811115620025fc57600080fd5b8201601f810184136200260e57600080fd5b62000e338482356020840162002556565b60005b838110156200263c57818101518382015260200162002622565b50506000910152565b600081518084526200265f8160208601602086016200261f565b601f01601f19169290920160200192915050565b60208152600062001078602083018462002645565b6000602082840312156200269b57600080fd5b5035919050565b60008060408385031215620026b657600080fd5b82359150620026c86020840162002505565b90509250929050565b60008060408385031215620026e557600080fd5b620026f08362002505565b915060208301356001600160401b038111156200270c57600080fd5b8301601f810185136200271e57600080fd5b6200272f8582356020840162002556565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b81811015620027735783518352928401929184019160010162002755565b50909695505050505050565b600080604083850312156200279357600080fd5b50508035926020909101359150565b60008060008060008060c08789031215620027bc57600080fd5b620027c78762002505565b9550620027d76020880162002505565b9450620027e76040880162002505565b9350620027f76060880162002505565b9250620028076080880162002505565b915060a087013590509295509295509295565b6020808252825182820181905260009190848201906040850190845b81811015620027735783516001600160a01b03168352928401929184019160010162002836565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015620028b857603f19888603018452620028a585835162002645565b9450928501929085019060010162002886565b5092979650505050505050565b60008060408385031215620028d957600080fd5b620028e48362002505565b9150620026c86020840162002505565b60008251620029088184602087016200261f565b9190910192915050565b600181811c908216806200292757607f821691505b6020821081036200294857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b601f82111562000b59576000816000526020600020601f850160051c810160208610156200298f5750805b601f850160051c820191505b81811015620029b0578281556001016200299b565b505050505050565b81516001600160401b03811115620029d457620029d462002540565b620029ec81620029e5845462002912565b8462002964565b602080601f83116001811462002a24576000841562002a0b5750858301515b600019600386901b1c1916600185901b178555620029b0565b600085815260208120601f198616915b8281101562002a555788860151825594840194600190910190840162002a34565b508582101562002a745787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60408152600062002a99604083018562002645565b90508260208301529392505050565b60006020828403121562002abb57600080fd5b5051919050565b81810381811115620008ac57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fdfe60806040526040516104103803806104108339810160408190526100229161025a565b61002c8282610033565b5050610358565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610086576100818282610109565b505050565b61008e610180565b5050565b806001600160a01b03163b6000036100c85780604051634c9c8ce360e01b81526004016100bf9190610328565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610126919061033c565b600060405180830381855af49150503d8060008114610161576040519150601f19603f3d011682016040523d82523d6000602084013e610166565b606091505b5090925090506101778583836101a1565b95945050505050565b341561019f5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b6576101b1826101f7565b6101f0565b81511580156101cd57506001600160a01b0384163b155b156101ed5783604051639996b31560e01b81526004016100bf9190610328565b50805b9392505050565b8051156102075780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b83811015610251578181015183820152602001610239565b50506000910152565b6000806040838503121561026d57600080fd5b82516001600160a01b038116811461028457600080fd5b60208401519092506001600160401b03808211156102a157600080fd5b818501915085601f8301126102b557600080fd5b8151818111156102c7576102c7610220565b604051601f8201601f19908116603f011681019083821181831017156102ef576102ef610220565b8160405282815288602084870101111561030857600080fd5b610319836020830160208801610236565b80955050505050509250929050565b6001600160a01b0391909116815260200190565b6000825161034e818460208701610236565b9190910192915050565b60aa806103666000396000f3fe6080604052600a600c565b005b60186014601a565b6051565b565b6000604c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015606f573d6000f35b3d6000fdfea26469706673582212205010fbd336314ff514e3c3a5ed98aed1c9c96a5210a9df6dc914e2a04bbe772564736f6c6343000818003330f3325e23b502dce693b147d37de928d14dd5ab09bbc928fb79867329ac5b83dccfb718b018e1b06f849958baf67b0b252302f06a69871f72c5127ee92f659d349eec46d2c564a125684d1934a6120a70cc341d3a26d362e358a775e07dec176a42249708403f5ed28bf492facd11e85bc1054e6c27c155ed468f6ff4f7ecd0189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a819590c814c6d279357359f817d25adb06a7b9f6e493592b7d3b8bb268adb6764f22871c78b70c8896c7119179fc4e9b6f4cf323f8db6eadb7d79007d1e00c3fa2646970667358221220f29ed9781c8ed513c4495c03dc9e565674abad73abc8496eeb94a0f6105dc0a964736f6c63430008180033", + "opcodes": "PUSH1 0xA0 PUSH1 0x40 MSTORE ADDRESS PUSH1 0x80 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x20 PUSH3 0x26 JUMP JUMPDEST PUSH3 0xDA JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 DUP1 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH1 0xFF AND ISZERO PUSH3 0x77 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 AND EQ PUSH3 0xD7 JUMPI DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH2 0x3060 PUSH3 0x104 PUSH1 0x0 CODECOPY PUSH1 0x0 DUP2 DUP2 PUSH2 0x1662 ADD MSTORE DUP2 DUP2 PUSH2 0x168C ADD MSTORE PUSH2 0x17E7 ADD MSTORE PUSH2 0x3060 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH3 0x230 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1601D2F EQ PUSH3 0x235 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH3 0x26D JUMPI DUP1 PUSH4 0x470D3AC EQ PUSH3 0x2A3 JUMPI DUP1 PUSH4 0x9766DA2 EQ PUSH3 0x2CA JUMPI DUP1 PUSH4 0xD6115D0 EQ PUSH3 0x2F1 JUMPI DUP1 PUSH4 0xD8E6E2C EQ PUSH3 0x316 JUMPI DUP1 PUSH4 0x12B357B5 EQ PUSH3 0x352 JUMPI DUP1 PUSH4 0x1C2B3AFC EQ PUSH3 0x377 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH3 0x39C JUMPI DUP1 PUSH4 0x2CEC1A06 EQ PUSH3 0x3C1 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH3 0x3E6 JUMPI DUP1 PUSH4 0x352AF39A EQ PUSH3 0x40B JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH3 0x430 JUMPI DUP1 PUSH4 0x3C555938 EQ PUSH3 0x455 JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH3 0x46D JUMPI DUP1 PUSH4 0x40DF8D84 EQ PUSH3 0x485 JUMPI DUP1 PUSH4 0x4CBA593A EQ PUSH3 0x4AA JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH3 0x4CF JUMPI DUP1 PUSH4 0x4F3F4639 EQ PUSH3 0x4E6 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH3 0x4FE JUMPI DUP1 PUSH4 0x5A81A626 EQ PUSH3 0x516 JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH3 0x53B JUMPI DUP1 PUSH4 0x5E818619 EQ PUSH3 0x553 JUMPI DUP1 PUSH4 0x6CD56878 EQ PUSH3 0x578 JUMPI DUP1 PUSH4 0x7FA34657 EQ PUSH3 0x59D JUMPI DUP1 PUSH4 0x8127F465 EQ PUSH3 0x5C2 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH3 0x5E9 JUMPI DUP1 PUSH4 0x9010D07C EQ PUSH3 0x601 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH3 0x626 JUMPI DUP1 PUSH4 0x92CF833F EQ PUSH3 0x64B JUMPI DUP1 PUSH4 0x95B6EF0C EQ PUSH3 0x670 JUMPI DUP1 PUSH4 0x9D825BC5 EQ PUSH3 0x695 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH3 0x6AD JUMPI DUP1 PUSH4 0xA3246AD3 EQ PUSH3 0x6C4 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH3 0x6F8 JUMPI DUP1 PUSH4 0xB289819C EQ PUSH3 0x72B JUMPI DUP1 PUSH4 0xC17E30BF EQ PUSH3 0x750 JUMPI DUP1 PUSH4 0xC2A1DB78 EQ PUSH3 0x775 JUMPI DUP1 PUSH4 0xC39409E1 EQ PUSH3 0x79C JUMPI DUP1 PUSH4 0xCA15C873 EQ PUSH3 0x7B4 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH3 0x7D9 JUMPI DUP1 PUSH4 0xE63AB1E9 EQ PUSH3 0x7FE JUMPI DUP1 PUSH4 0xF72C0D8B EQ PUSH3 0x823 JUMPI DUP1 PUSH4 0xF85B4A9C EQ PUSH3 0x848 JUMPI DUP1 PUSH4 0xFD2FBD52 EQ PUSH3 0x86D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x242 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x25A PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F0B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x27A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x292 PUSH3 0x28C CALLDATASIZE PUSH1 0x4 PUSH3 0x24C5 JUMP JUMPDEST PUSH3 0x884 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x264 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x2B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2BB PUSH3 0x8B2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x264 SWAP2 SWAP1 PUSH3 0x24F1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x2D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2EF PUSH3 0x2E9 CALLDATASIZE PUSH1 0x4 PUSH3 0x2522 JUMP JUMPDEST PUSH3 0x8D2 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x2FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2EF PUSH3 0x310 CALLDATASIZE PUSH1 0x4 PUSH3 0x25D2 JUMP JUMPDEST PUSH3 0x984 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x323 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x7 DUP2 MSTORE PUSH7 0x54455354494E47 PUSH1 0xC8 SHL PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x264 SWAP2 SWAP1 PUSH3 0x2673 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x35F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x292 PUSH3 0x371 CALLDATASIZE PUSH1 0x4 PUSH3 0x2522 JUMP JUMPDEST PUSH3 0x9AE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x384 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2EF PUSH3 0x396 CALLDATASIZE PUSH1 0x4 PUSH3 0x2688 JUMP JUMPDEST PUSH3 0x9E0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x3A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x25A PUSH3 0x3BB CALLDATASIZE PUSH1 0x4 PUSH3 0x2688 JUMP JUMPDEST PUSH3 0xA12 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x3CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2BB PUSH3 0x3E0 CALLDATASIZE PUSH1 0x4 PUSH3 0x2522 JUMP JUMPDEST PUSH3 0xA34 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x3F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2EF PUSH3 0x405 CALLDATASIZE PUSH1 0x4 PUSH3 0x26A2 JUMP JUMPDEST PUSH3 0xA6C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x418 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x25A PUSH3 0x42A CALLDATASIZE PUSH1 0x4 PUSH3 0x25D2 JUMP JUMPDEST PUSH3 0xA94 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x43D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2EF PUSH3 0x44F CALLDATASIZE PUSH1 0x4 PUSH3 0x26A2 JUMP JUMPDEST PUSH3 0xB23 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x462 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x25A PUSH3 0xB5E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x47A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2EF PUSH3 0xB75 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x492 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x25A PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2FEB DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x4B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x25A PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F4B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST PUSH3 0x2EF PUSH3 0x4E0 CALLDATASIZE PUSH1 0x4 PUSH3 0x26D1 JUMP JUMPDEST PUSH3 0xB9D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x4F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2BB PUSH3 0xBBE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x50B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x25A PUSH3 0xBDE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x523 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x343 PUSH3 0x535 CALLDATASIZE PUSH1 0x4 PUSH3 0x2688 JUMP JUMPDEST PUSH3 0xBFE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x548 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x292 PUSH3 0xCE1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x560 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2EF PUSH3 0x572 CALLDATASIZE PUSH1 0x4 PUSH3 0x25D2 JUMP JUMPDEST PUSH3 0xCF8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x585 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2EF PUSH3 0x597 CALLDATASIZE PUSH1 0x4 PUSH3 0x2522 JUMP JUMPDEST PUSH3 0xD1E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x5AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x25A PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x300B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x5CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x5DA PUSH3 0xDC3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x264 SWAP2 SWAP1 PUSH3 0x2739 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x5F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2EF PUSH3 0xDE4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x60E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2BB PUSH3 0x620 CALLDATASIZE PUSH1 0x4 PUSH3 0x277F JUMP JUMPDEST PUSH3 0xE09 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x633 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x292 PUSH3 0x645 CALLDATASIZE PUSH1 0x4 PUSH3 0x26A2 JUMP JUMPDEST PUSH3 0xE3B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x658 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x25A PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F2B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x67D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2EF PUSH3 0x68F CALLDATASIZE PUSH1 0x4 PUSH3 0x27A2 JUMP JUMPDEST PUSH3 0xE73 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x6A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2BB PUSH3 0x1031 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x6BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x25A PUSH1 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x6D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x6E9 PUSH3 0x6E3 CALLDATASIZE PUSH1 0x4 PUSH3 0x2688 JUMP JUMPDEST PUSH3 0x104E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x264 SWAP2 SWAP1 PUSH3 0x281A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x705 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x343 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x352E302E3 PUSH1 0xDC SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x738 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x25A PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F6B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x75D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2EF PUSH3 0x76F CALLDATASIZE PUSH1 0x4 PUSH3 0x2522 JUMP JUMPDEST PUSH3 0x107F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x782 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x78D PUSH3 0x1128 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x264 SWAP2 SWAP1 PUSH3 0x285D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x7A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x25A PUSH3 0x129D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x7C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x25A PUSH3 0x7D3 CALLDATASIZE PUSH1 0x4 PUSH3 0x2688 JUMP JUMPDEST PUSH3 0x12B4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x7E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2EF PUSH3 0x7F8 CALLDATASIZE PUSH1 0x4 PUSH3 0x26A2 JUMP JUMPDEST PUSH3 0x12DD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x80B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x25A PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2FCB DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x830 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x25A PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F8B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x855 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2EF PUSH3 0x867 CALLDATASIZE PUSH1 0x4 PUSH3 0x2688 JUMP JUMPDEST PUSH3 0x12FF JUMP JUMPDEST PUSH3 0x2BB PUSH3 0x87E CALLDATASIZE PUSH1 0x4 PUSH3 0x28C5 JUMP JUMPDEST PUSH3 0x1365 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5A05180F PUSH1 0xE0 SHL EQ DUP1 PUSH3 0x8AC JUMPI POP PUSH3 0x8AC DUP3 PUSH3 0x1393 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x8BF PUSH3 0x13CA JUMP JUMPDEST PUSH1 0x2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F6B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x8ED DUP2 PUSH3 0x13EE JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH3 0x926 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x37766F43 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x91D SWAP2 SWAP1 PUSH3 0x24F1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x932 PUSH3 0x1031 JUMP JUMPDEST SWAP1 POP PUSH3 0x93F DUP4 PUSH3 0x13FA JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xECD599290ADA9C149AE0FB600BC6ADA3C103A716EADB877B5341B7D298B62D93 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F2B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x99F DUP2 PUSH3 0x13EE JUMP JUMPDEST PUSH3 0x9AA DUP3 PUSH3 0x1428 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x9BB PUSH3 0x13CA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 SWAP1 SWAP4 ADD PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F0B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x9FB DUP2 PUSH3 0x13EE JUMP JUMPDEST PUSH1 0x0 PUSH3 0xA07 PUSH3 0x13CA JUMP JUMPDEST PUSH1 0x1 ADD SWAP3 SWAP1 SWAP3 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xA1F PUSH3 0x151B JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xA41 PUSH3 0x13CA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x100 SWAP1 DIV SWAP1 SWAP3 AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0xA77 DUP3 PUSH3 0xA12 JUMP JUMPDEST PUSH3 0xA82 DUP2 PUSH3 0x13EE JUMP JUMPDEST PUSH3 0xA8E DUP4 DUP4 PUSH3 0x153F JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xAA1 PUSH3 0x1588 JUMP JUMPDEST SWAP1 POP PUSH3 0xADA DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0xABA SWAP2 SWAP1 PUSH3 0x28F4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 DUP3 SWAP1 PUSH3 0x15AC JUMP JUMPDEST PUSH3 0xAF8 JUMPI PUSH1 0x40 MLOAD PUSH4 0x162E9267 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x3 ADD DUP4 PUSH1 0x40 MLOAD PUSH3 0xB0C SWAP2 SWAP1 PUSH3 0x28F4 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SLOAD SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH3 0xB4D JUMPI PUSH1 0x40 MLOAD PUSH4 0x334BD919 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0xB59 DUP3 DUP3 PUSH3 0x15BA JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xB6B PUSH3 0x13CA JUMP JUMPDEST PUSH1 0x3 ADD SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2FCB DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0xB90 DUP2 PUSH3 0x13EE JUMP JUMPDEST PUSH3 0xB9A PUSH3 0x15FA JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0xBA7 PUSH3 0x1657 JUMP JUMPDEST PUSH3 0xBB2 DUP3 PUSH3 0x1702 JUMP JUMPDEST PUSH3 0x9AA DUP3 DUP3 PUSH3 0x171D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xBCB PUSH3 0x13CA JUMP JUMPDEST PUSH1 0x4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0xBEA PUSH3 0x17DC JUMP JUMPDEST POP PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2FAB DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH3 0xC0C PUSH3 0x1588 JUMP JUMPDEST SWAP1 POP PUSH3 0xC1A DUP2 DUP5 PUSH3 0x15AC JUMP JUMPDEST PUSH3 0xC38 JUMPI PUSH1 0x40 MLOAD PUSH4 0x162E9267 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH3 0xC55 SWAP1 PUSH3 0x2912 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH3 0xC83 SWAP1 PUSH3 0x2912 JUMP JUMPDEST DUP1 ISZERO PUSH3 0xCD4 JUMPI DUP1 PUSH1 0x1F LT PUSH3 0xCA8 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH3 0xCD4 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH3 0xCB6 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xCEE PUSH3 0x1826 JUMP JUMPDEST SLOAD PUSH1 0xFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F2B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0xD13 DUP2 PUSH3 0x13EE JUMP JUMPDEST PUSH3 0x9AA DUP3 PUSH3 0x184A JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2FEB DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0xD39 DUP2 PUSH3 0x13EE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0xD65 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x220B4F11 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x91D SWAP2 SWAP1 PUSH3 0x24F1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0xD71 PUSH3 0x8B2 JUMP JUMPDEST SWAP1 POP PUSH3 0xD7E DUP4 PUSH3 0x1928 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x88BF70D4F3C446213B5064D7CFE95EC0ED196748F014C19A833117BAC32468FD PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH3 0xDD1 PUSH3 0x1588 JUMP JUMPDEST SWAP1 POP PUSH3 0xDDE DUP2 PUSH3 0x1959 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2FCB DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0xDFF DUP2 PUSH3 0x13EE JUMP JUMPDEST PUSH3 0xB9A PUSH3 0x1968 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xE16 PUSH3 0x19B4 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH3 0xE33 SWAP1 DUP5 PUSH3 0x19D8 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xE48 PUSH3 0x151B JUMP JUMPDEST PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP7 MSTORE SWAP4 SWAP1 MSTORE POP POP SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0xE7F PUSH3 0x19E6 JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV AND ISZERO SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x0 DUP2 ISZERO DUP1 ISZERO PUSH3 0xEA7 JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH3 0xEC4 JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH3 0xED3 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH3 0xEF2 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT AND PUSH1 0x1 OR DUP6 SSTORE DUP4 ISZERO PUSH3 0xF1C JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR DUP6 SSTORE JUMPDEST PUSH3 0xF26 PUSH3 0x1A0A JUMP JUMPDEST PUSH3 0xF30 PUSH3 0x1A1E JUMP JUMPDEST PUSH3 0xF3A PUSH3 0x1A1E JUMP JUMPDEST PUSH3 0xF47 PUSH1 0x0 DUP13 PUSH3 0x153F JUMP JUMPDEST POP PUSH3 0xF63 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2FCB DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP12 PUSH3 0x153F JUMP JUMPDEST POP PUSH3 0xF7F PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F8B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP11 PUSH3 0x153F JUMP JUMPDEST POP PUSH3 0xF9B PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F6B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP10 PUSH3 0x153F JUMP JUMPDEST POP PUSH1 0x0 PUSH3 0xFA8 PUSH3 0x13CA JUMP JUMPDEST PUSH1 0x2 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND OR SWAP1 SSTORE PUSH1 0x3 DUP2 ADD DUP9 SWAP1 SSTORE PUSH9 0x56BC75E2D63100000 PUSH1 0x1 SWAP1 SWAP2 ADD SSTORE POP DUP4 ISZERO PUSH3 0x1024 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND DUP6 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x103E PUSH3 0x13CA JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH3 0x105C PUSH3 0x19B4 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH3 0x1078 SWAP1 PUSH3 0x1959 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F6B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x109A DUP2 PUSH3 0x13EE JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH3 0x10CA JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0xC9C10A61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x91D SWAP2 SWAP1 PUSH3 0x24F1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x10D6 PUSH3 0xBBE JUMP JUMPDEST SWAP1 POP PUSH3 0x10E3 DUP4 PUSH3 0x1A28 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8752DAF55FA0CCD919C149BBC809ABAAD4433F02BA7AA93AC6D5ACFD2F8DC22C PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH3 0x1136 PUSH3 0x1588 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0x1145 DUP3 PUSH3 0x1959 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x1165 JUMPI PUSH3 0x1165 PUSH3 0x2540 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x119A JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH3 0x1184 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH3 0x1295 JUMPI DUP4 PUSH1 0x2 ADD PUSH1 0x0 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH3 0x11C5 JUMPI PUSH3 0x11C5 PUSH3 0x294E JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH3 0x11E8 SWAP1 PUSH3 0x2912 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH3 0x1216 SWAP1 PUSH3 0x2912 JUMP JUMPDEST DUP1 ISZERO PUSH3 0x1267 JUMPI DUP1 PUSH1 0x1F LT PUSH3 0x123B JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH3 0x1267 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH3 0x1249 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x1281 JUMPI PUSH3 0x1281 PUSH3 0x294E JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH3 0x11A0 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x12AA PUSH3 0x13CA JUMP JUMPDEST PUSH1 0x1 ADD SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x12C1 PUSH3 0x19B4 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH3 0x1078 SWAP1 PUSH3 0x1A59 JUMP JUMPDEST PUSH3 0x12E8 DUP3 PUSH3 0xA12 JUMP JUMPDEST PUSH3 0x12F3 DUP2 PUSH3 0x13EE JUMP JUMPDEST PUSH3 0xA8E DUP4 DUP4 PUSH3 0x15BA JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F4B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x131A DUP2 PUSH3 0x13EE JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1326 PUSH3 0xB5E JUMP JUMPDEST SWAP1 POP PUSH3 0x1333 DUP4 PUSH3 0x1A64 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 SWAP1 DUP3 SWAP1 PUSH32 0xC1FEC27BBB8C533FEDD3D449016C429341BFC0DF21A9600E6162605E08F1C78F SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1371 PUSH3 0x1A7A JUMP JUMPDEST PUSH3 0x137B PUSH3 0x1AB3 JUMP JUMPDEST PUSH3 0x1387 DUP4 DUP4 PUSH3 0x1ADC JUMP JUMPDEST SWAP1 POP PUSH3 0x8AC PUSH3 0x1D1C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x7965DB0B PUSH1 0xE0 SHL EQ DUP1 PUSH3 0x8AC JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH3 0x8AC JUMP JUMPDEST PUSH32 0x2B421AF391835920C41E77B6810F6E715F5B713C17BC590F55DE6A7D3912E800 SWAP1 JUMP JUMPDEST PUSH3 0xB9A DUP2 CALLER PUSH3 0x1D2F JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1406 PUSH3 0x13CA JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x143D SWAP2 SWAP1 PUSH3 0x28F4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH3 0x1461 PUSH3 0x1588 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0x1471 DUP3 DUP5 PUSH3 0x1D6C JUMP JUMPDEST SWAP1 POP DUP1 PUSH3 0x1496 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x3DAD0DF5 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x91D SWAP2 SWAP1 PUSH3 0x2673 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH3 0x14B2 DUP6 DUP3 PUSH3 0x29B8 JUMP JUMPDEST POP DUP3 DUP3 PUSH1 0x3 ADD DUP6 PUSH1 0x40 MLOAD PUSH3 0x14C8 SWAP2 SWAP1 PUSH3 0x28F4 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH32 0xBAD43A69707AC20DD539F3163B927E83BAEF6E967F2C95432129B1DED4166458 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH3 0x150D SWAP3 SWAP2 SWAP1 PUSH3 0x2A84 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x154C PUSH3 0x19B4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0x155C DUP6 DUP6 PUSH3 0x1D7A JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH3 0xE33 JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH3 0x157F SWAP1 DUP6 PUSH3 0x1E23 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x563E037355FFF0507705F481E4B362E4C3996A3B57D07307DEABFCA3D8168600 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1078 DUP4 DUP4 PUSH3 0x1E3A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x15C7 PUSH3 0x19B4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0x15D7 DUP6 DUP6 PUSH3 0x1E52 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH3 0xE33 JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH3 0x157F SWAP1 DUP6 PUSH3 0x1ED0 JUMP JUMPDEST PUSH3 0x1604 PUSH3 0x1EE7 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1610 PUSH3 0x1826 JUMP JUMPDEST DUP1 SLOAD PUSH1 0xFF NOT AND DUP2 SSTORE SWAP1 POP PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA CALLER JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x164C SWAP2 SWAP1 PUSH3 0x24F1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH3 0x16E1 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x16D5 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2FAB DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH3 0x1700 JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F8B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x9AA DUP2 PUSH3 0x13EE JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH3 0x177A JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH3 0x1777 SWAP2 DUP2 ADD SWAP1 PUSH3 0x2AA8 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH3 0x179C JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x91D SWAP2 SWAP1 PUSH3 0x24F1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2FAB DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 EQ PUSH3 0x17D0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH3 0x91D JUMP JUMPDEST PUSH3 0xB59 DUP4 DUP4 PUSH3 0x1F0F JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH3 0x1700 JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0xCD5ED15C6E187E77E9AEE88184C21F4F2182AB5827CB3B7E07FBEDCD63F03300 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x185F SWAP2 SWAP1 PUSH3 0x28F4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH3 0x1883 PUSH3 0x1588 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0x1893 DUP3 DUP5 PUSH3 0x1F6C JUMP JUMPDEST SWAP1 POP DUP1 PUSH3 0x18B4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x162E9267 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH3 0x18CF SWAP2 PUSH3 0x245D JUMP JUMPDEST DUP2 PUSH1 0x3 ADD DUP5 PUSH1 0x40 MLOAD PUSH3 0x18E3 SWAP2 SWAP1 PUSH3 0x28F4 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH32 0x57158EAA7E642CEFD761327D5CD6C147DDAAD706EC257F90F4D8B59B3D365EB7 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH3 0x150D SWAP3 SWAP2 SWAP1 PUSH3 0x2A84 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1934 PUSH3 0x13CA JUMP JUMPDEST PUSH1 0x2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH3 0x1078 DUP4 PUSH3 0x1F7A JUMP JUMPDEST PUSH3 0x1972 PUSH3 0x1AB3 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x197E PUSH3 0x1826 JUMP JUMPDEST DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR DUP2 SSTORE SWAP1 POP PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH3 0x163D CALLER SWAP1 JUMP JUMPDEST PUSH32 0xC1F6FE24621CE81EC5827CAF0253CADB74709B061630E6B55E82371705932000 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1078 DUP4 DUP4 PUSH3 0x1FD8 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH3 0x1A14 PUSH3 0x2005 JUMP JUMPDEST PUSH3 0x1700 PUSH3 0x202D JUMP JUMPDEST PUSH3 0x1700 PUSH3 0x2005 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1A34 PUSH3 0x13CA JUMP JUMPDEST PUSH1 0x4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x8AC DUP3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1A70 PUSH3 0x13CA JUMP JUMPDEST PUSH1 0x3 ADD SWAP2 SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1A86 PUSH3 0x204E JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 NOT ADD PUSH3 0x1AAD JUMPI PUSH1 0x40 MLOAD PUSH4 0x3EE5AEB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 SWAP1 SSTORE JUMP JUMPDEST PUSH3 0x1ABD PUSH3 0xCE1 JUMP JUMPDEST ISZERO PUSH3 0x1700 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD93C0665 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH3 0x1B0A JUMPI DUP3 PUSH1 0x40 MLOAD PUSH4 0x715397CD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x91D SWAP2 SWAP1 PUSH3 0x24F1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1B16 PUSH3 0x129D JUMP JUMPDEST SWAP1 POP DUP1 CALLVALUE LT ISZERO PUSH3 0x1B44 JUMPI PUSH1 0x40 MLOAD PUSH4 0x53F01C63 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE CALLVALUE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH3 0x91D JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1B50 PUSH3 0x1031 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH3 0x1B82 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x37766F43 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x91D SWAP2 SWAP1 PUSH3 0x24F1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1B8E PUSH3 0xBBE JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH3 0x1BC0 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0xC9C10A61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x91D SWAP2 SWAP1 PUSH3 0x24F1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x40 MLOAD PUSH3 0x1BD1 SWAP1 PUSH3 0x249C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x1C0D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x33E1A223 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP8 SWAP1 MSTORE DUP10 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE DUP9 DUP2 AND PUSH1 0x84 DUP4 ADD MSTORE SWAP2 SWAP3 POP SWAP1 DUP3 AND SWAP1 PUSH4 0x33E1A223 SWAP1 PUSH1 0xA4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x1C73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x1C88 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE CALLER PUSH1 0x20 DUP3 ADD MSTORE PUSH3 0x1CAD SWAP3 POP DUP4 SWAP2 POP PUSH3 0x2072 JUMP JUMPDEST PUSH3 0x1CC8 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x300B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH3 0x153F JUMP JUMPDEST POP PUSH3 0x1CDE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND CALLVALUE PUSH3 0x20D5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0x22DE16EF21E3A33810FBCAF0E737AB9C9E2854FA565D8535041456C789AFCD93 SWAP1 PUSH1 0x0 SWAP1 LOG2 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1D28 PUSH3 0x204E JUMP JUMPDEST PUSH1 0x1 SWAP1 SSTORE POP JUMP JUMPDEST PUSH3 0x1D3B DUP3 DUP3 PUSH3 0xE3B JUMP JUMPDEST PUSH3 0x9AA JUMPI PUSH1 0x40 MLOAD PUSH4 0xE2517D3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH3 0x91D JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1078 DUP4 DUP4 PUSH3 0x2178 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x1D87 PUSH3 0x151B JUMP JUMPDEST SWAP1 POP PUSH3 0x1D95 DUP5 DUP5 PUSH3 0xE3B JUMP JUMPDEST PUSH3 0x1E18 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH3 0x1DCD CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH3 0x8AC JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH3 0x8AC JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1078 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH3 0x2178 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x1E5F PUSH3 0x151B JUMP JUMPDEST SWAP1 POP PUSH3 0x1E6D DUP5 DUP5 PUSH3 0xE3B JUMP JUMPDEST ISZERO PUSH3 0x1E18 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP8 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH3 0x8AC JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1078 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH3 0x21C7 JUMP JUMPDEST PUSH3 0x1EF1 PUSH3 0xCE1 JUMP JUMPDEST PUSH3 0x1700 JUMPI PUSH1 0x40 MLOAD PUSH4 0x8DFC202B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x1F1A DUP3 PUSH3 0x22C0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH3 0x1F62 JUMPI PUSH3 0xB59 DUP3 DUP3 PUSH3 0x2320 JUMP JUMPDEST PUSH3 0x9AA PUSH3 0x239C JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1078 DUP4 DUP4 PUSH3 0x21C7 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x0 ADD DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH3 0x1FCC JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH3 0x1FB7 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH3 0x1FF2 JUMPI PUSH3 0x1FF2 PUSH3 0x294E JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x200F PUSH3 0x23BC JUMP JUMPDEST PUSH3 0x1700 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1AFCD79F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x2037 PUSH3 0x2005 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x2043 PUSH3 0x1826 JUMP JUMPDEST DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE POP JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x207E PUSH3 0x13CA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 SWAP1 SWAP2 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP4 MLOAD DUP2 SLOAD SWAP3 SWAP1 SWAP5 ADD MLOAD SWAP1 SWAP5 AND PUSH2 0x100 MUL PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT SWAP4 ISZERO ISZERO SWAP4 SWAP1 SWAP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT SWAP1 SWAP2 AND OR SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH3 0x2101 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCF479181 PUSH1 0xE0 SHL DUP2 MSTORE SELFBALANCE PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 ADD PUSH3 0x91D JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x2150 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x2155 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH3 0xB59 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x2186 DUP4 DUP4 PUSH3 0x1E3A JUMP JUMPDEST PUSH3 0x21BE JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP5 SWAP1 SSTORE DUP5 SLOAD DUP5 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH3 0x8AC JUMP JUMPDEST POP PUSH1 0x0 PUSH3 0x8AC JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH3 0x1E18 JUMPI PUSH1 0x0 PUSH3 0x21EE PUSH1 0x1 DUP4 PUSH3 0x2AC2 JUMP JUMPDEST DUP6 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH3 0x2204 SWAP1 PUSH1 0x1 SWAP1 PUSH3 0x2AC2 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 EQ PUSH3 0x2270 JUMPI PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH3 0x2228 JUMPI PUSH3 0x2228 PUSH3 0x294E JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP8 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH3 0x224E JUMPI PUSH3 0x224E PUSH3 0x294E JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 DUP3 MSTORE PUSH1 0x1 DUP9 ADD SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP4 SWAP1 SSTORE JUMPDEST DUP6 SLOAD DUP7 SWAP1 DUP1 PUSH3 0x2284 JUMPI PUSH3 0x2284 PUSH3 0x2AE4 JUMP JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH1 0x1 SWAP4 POP POP POP POP PUSH3 0x8AC JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH3 0x22F0 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x91D SWAP2 SWAP1 PUSH3 0x24F1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2FAB DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH3 0x233F SWAP2 SWAP1 PUSH3 0x28F4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x237C JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x2381 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH3 0x2393 DUP6 DUP4 DUP4 PUSH3 0x23D8 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH3 0x1700 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x23C8 PUSH3 0x19E6 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH3 0x23F1 JUMPI PUSH3 0x23EB DUP3 PUSH3 0x2433 JUMP JUMPDEST PUSH3 0x1078 JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH3 0x2409 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH3 0x242C JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x91D SWAP2 SWAP1 PUSH3 0x24F1 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH3 0x2444 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP1 SLOAD PUSH3 0x246B SWAP1 PUSH3 0x2912 JUMP JUMPDEST PUSH1 0x0 DUP3 SSTORE DUP1 PUSH1 0x1F LT PUSH3 0x247C JUMPI POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH3 0xB9A SWAP2 SWAP1 PUSH3 0x24AA JUMP JUMPDEST PUSH2 0x410 DUP1 PUSH3 0x2AFB DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x24C1 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x24AB JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x24D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH3 0x1078 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x251D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x2535 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x1078 DUP3 PUSH3 0x2505 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP5 GT ISZERO PUSH3 0x2573 JUMPI PUSH3 0x2573 PUSH3 0x2540 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP6 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x259E JUMPI PUSH3 0x259E PUSH3 0x2540 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP1 SWAP4 POP DUP6 DUP2 MSTORE DUP7 DUP7 DUP7 ADD GT ISZERO PUSH3 0x25B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 DUP6 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP8 DUP4 ADD ADD MSTORE POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x25E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x25FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH3 0x260E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xE33 DUP5 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH3 0x2556 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x263C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x2622 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH3 0x265F DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH3 0x261F JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH3 0x1078 PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x2645 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x269B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x26B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH3 0x26C8 PUSH1 0x20 DUP5 ADD PUSH3 0x2505 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x26E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x26F0 DUP4 PUSH3 0x2505 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x270C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH3 0x271E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x272F DUP6 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH3 0x2556 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x2773 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x2755 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x2793 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH3 0x27BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x27C7 DUP8 PUSH3 0x2505 JUMP JUMPDEST SWAP6 POP PUSH3 0x27D7 PUSH1 0x20 DUP9 ADD PUSH3 0x2505 JUMP JUMPDEST SWAP5 POP PUSH3 0x27E7 PUSH1 0x40 DUP9 ADD PUSH3 0x2505 JUMP JUMPDEST SWAP4 POP PUSH3 0x27F7 PUSH1 0x60 DUP9 ADD PUSH3 0x2505 JUMP JUMPDEST SWAP3 POP PUSH3 0x2807 PUSH1 0x80 DUP9 ADD PUSH3 0x2505 JUMP JUMPDEST SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x2773 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x2836 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD PUSH1 0x20 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP3 POP PUSH1 0x20 DUP8 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x28B8 JUMPI PUSH1 0x3F NOT DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH3 0x28A5 DUP6 DUP4 MLOAD PUSH3 0x2645 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH3 0x2886 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x28D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x28E4 DUP4 PUSH3 0x2505 JUMP JUMPDEST SWAP2 POP PUSH3 0x26C8 PUSH1 0x20 DUP5 ADD PUSH3 0x2505 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH3 0x2908 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH3 0x261F JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x2927 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x2948 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0xB59 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH3 0x298F JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x29B0 JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x299B JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x29D4 JUMPI PUSH3 0x29D4 PUSH3 0x2540 JUMP JUMPDEST PUSH3 0x29EC DUP2 PUSH3 0x29E5 DUP5 SLOAD PUSH3 0x2912 JUMP JUMPDEST DUP5 PUSH3 0x2964 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x2A24 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH3 0x2A0B JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH3 0x29B0 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x2A55 JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH3 0x2A34 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH3 0x2A74 JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH3 0x2A99 PUSH1 0x40 DUP4 ADD DUP6 PUSH3 0x2645 JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x2ABB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH3 0x8AC JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x410 CODESIZE SUB DUP1 PUSH2 0x410 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x25A JUMP JUMPDEST PUSH2 0x2C DUP3 DUP3 PUSH2 0x33 JUMP JUMPDEST POP POP PUSH2 0x358 JUMP JUMPDEST PUSH2 0x3C DUP3 PUSH2 0x92 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x86 JUMPI PUSH2 0x81 DUP3 DUP3 PUSH2 0x109 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x8E PUSH2 0x180 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH2 0xC8 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF SWAP2 SWAP1 PUSH2 0x328 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x126 SWAP2 SWAP1 PUSH2 0x33C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x161 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x166 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x177 DUP6 DUP4 DUP4 PUSH2 0x1A1 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x19F JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x1B6 JUMPI PUSH2 0x1B1 DUP3 PUSH2 0x1F7 JUMP JUMPDEST PUSH2 0x1F0 JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x1CD JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x1ED JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF SWAP2 SWAP1 PUSH2 0x328 JUMP JUMPDEST POP DUP1 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x207 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x251 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x239 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x26D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x284 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x2A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x2C7 JUMPI PUSH2 0x2C7 PUSH2 0x220 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x2EF JUMPI PUSH2 0x2EF PUSH2 0x220 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x308 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x319 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x236 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x34E DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x236 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xAA DUP1 PUSH2 0x366 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0xA PUSH1 0xC JUMP JUMPDEST STOP JUMPDEST PUSH1 0x18 PUSH1 0x14 PUSH1 0x1A JUMP JUMPDEST PUSH1 0x51 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4C PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH1 0x6F JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 POP LT 0xFB 0xD3 CALLDATASIZE BALANCE 0x4F CREATE2 EQ 0xE3 0xC3 0xA5 0xED SWAP9 0xAE 0xD1 0xC9 0xC9 PUSH11 0x5210A9DF6DC914E2A04BBE PUSH24 0x2564736F6C6343000818003330F3325E23B502DCE693B147 0xD3 PUSH30 0xE928D14DD5AB09BBC928FB79867329AC5B83DCCFB718B018E1B06F849958 0xBA 0xF6 PUSH28 0xB252302F06A69871F72C5127EE92F659D349EEC46D2C564A125684D NOT CALLVALUE 0xA6 SLT EXP PUSH17 0xCC341D3A26D362E358A775E07DEC176A42 0x24 SWAP8 ADDMOD BLOCKHASH EXTCODEHASH MCOPY 0xD2 DUP12 DELEGATECALL SWAP3 STATICCALL 0xCD GT 0xE8 JUMPDEST 0xC1 SDIV 0x4E PUSH13 0x27C155ED468F6FF4F7ECD0189A 0xB7 0xA9 0x24 0x4D CREATE DUP5 DUP2 0x22 ISZERO NUMBER ISZERO 0xAF PUSH18 0xFE140F3DB0FE014031783B0946B8C9D2E336 ADDMOD SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC65D7A28E3265B37A647492 SWAP16 CALLER PUSH6 0x21B332C1681B SWAP4 EXTCODEHASH PUSH13 0xB9F3376673440D862A819590C8 EQ 0xC6 0xD2 PUSH26 0x357359F817D25ADB06A7B9F6E493592B7D3B8BB268ADB6764F22 DUP8 SHR PUSH25 0xB70C8896C7119179FC4E9B6F4CF323F8DB6EADB7D79007D1E0 0xC EXTCODEHASH LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLCODE SWAP15 0xD9 PUSH25 0x1C8ED513C4495C03DC9E565674ABAD73ABC8496EEB94A0F610 TSTORE 0xC0 0xA9 PUSH5 0x736F6C6343 STOP ADDMOD XOR STOP CALLER ", + "sourceMap": "235:319:56:-:0;;;1171:4:3;1128:48;;235:319:56;;;;;;;;;-1:-1:-1;9555:22:54;:20;:22::i;:::-;235:319:56;;7711:422:2;8870:21;7900:15;;;;;;;7896:76;;;7938:23;;-1:-1:-1;;;7938:23:2;;;;;;;;;;;7896:76;7985:14;;-1:-1:-1;;;;;7985:14:2;;;:34;7981:146;;8035:33;;-1:-1:-1;;;;;;8035:33:2;-1:-1:-1;;;;;8035:33:2;;;;;8087:29;;158:50:61;;;8087:29:2;;146:2:61;131:18;8087:29:2;;;;;;;7981:146;7760:373;7711:422::o;14:200:61:-;235:319:56;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@CMACCOUNT_ROLE_16111": { + "entryPoint": null, + "id": 16111, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@DEFAULT_ADMIN_ROLE_28": { + "entryPoint": null, + "id": 28, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@DEVELOPER_WALLET_ADMIN_ROLE_16093": { + "entryPoint": null, + "id": 16093, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@FEE_ADMIN_ROLE_16087": { + "entryPoint": null, + "id": 16087, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@PAUSER_ROLE_16069": { + "entryPoint": null, + "id": 16069, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@PREFUND_ADMIN_ROLE_16099": { + "entryPoint": null, + "id": 16099, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@SERVICE_REGISTRY_ADMIN_ROLE_16105": { + "entryPoint": null, + "id": 16105, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@UPGRADER_ROLE_16075": { + "entryPoint": null, + "id": 16075, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@UPGRADE_INTERFACE_VERSION_864": { + "entryPoint": null, + "id": 864, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@VERSIONER_ROLE_16081": { + "entryPoint": null, + "id": 16081, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@__AccessControl_init_63": { + "entryPoint": 6686, + "id": 63, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@__Pausable_init_2854": { + "entryPoint": 6666, + "id": 2854, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@__Pausable_init_unchained_2872": { + "entryPoint": 8237, + "id": 2872, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@__UUPSUpgradeable_init_894": { + "entryPoint": null, + "id": 894, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_add_9957": { + "entryPoint": 8568, + "id": 9957, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_at_10091": { + "entryPoint": 8152, + "id": 10091, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_authorizeUpgrade_16323": { + "entryPoint": 5890, + "id": 16323, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_checkInitializing_762": { + "entryPoint": 8197, + "id": 762, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_checkNonPayable_3873": { + "entryPoint": 9116, + "id": 3873, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_checkNotDelegated_970": { + "entryPoint": 6108, + "id": 970, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_checkProxy_954": { + "entryPoint": 5719, + "id": 954, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_checkRole_129": { + "entryPoint": 5102, + "id": 129, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_checkRole_150": { + "entryPoint": 7471, + "id": 150, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_contains_10060": { + "entryPoint": 7738, + "id": 10060, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_createCMAccount_16483": { + "entryPoint": 6876, + "id": 16483, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_getAccessControlEnumerableStorage_401": { + "entryPoint": 6580, + "id": 401, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getAccessControlStorage_46": { + "entryPoint": 5403, + "id": 46, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getCMAccountManagerStorage_16151": { + "entryPoint": 5066, + "id": 16151, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getInitializableStorage_839": { + "entryPoint": 6630, + "id": 839, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getPausableStorage_2828": { + "entryPoint": 6182, + "id": 2828, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getReentrancyGuardStorage_3006": { + "entryPoint": 8270, + "id": 3006, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_getServiceRegistryStorage_17873": { + "entryPoint": 5512, + "id": 17873, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_grantRole_315": { + "entryPoint": 7546, + "id": 315, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_grantRole_545": { + "entryPoint": 5439, + "id": 545, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_isInitializing_830": { + "entryPoint": 9148, + "id": 830, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_length_10074": { + "entryPoint": null, + "id": 10074, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@_msgSender_2784": { + "entryPoint": null, + "id": 2784, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_nonReentrantAfter_3088": { + "entryPoint": 7452, + "id": 3088, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_nonReentrantBefore_3072": { + "entryPoint": 6778, + "id": 3072, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_pause_2953": { + "entryPoint": 6504, + "id": 2953, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_registerServiceName_17962": { + "entryPoint": 5160, + "id": 17962, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_remove_10041": { + "entryPoint": 8647, + "id": 10041, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_requireNotPaused_2916": { + "entryPoint": 6835, + "id": 2916, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_requirePaused_2929": { + "entryPoint": 7911, + "id": 2929, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_revert_5480": { + "entryPoint": 9267, + "id": 5480, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_revokeRole_361": { + "entryPoint": 7762, + "id": 361, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_revokeRole_585": { + "entryPoint": 5562, + "id": 585, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@_setAccountImplementation_16617": { + "entryPoint": 5114, + "id": 16617, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_setBookingTokenAddress_16724": { + "entryPoint": 6696, + "id": 16724, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_setCMAccountInfo_16506": { + "entryPoint": 8306, + "id": 16506, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_setDeveloperFeeBp_16852": { + "entryPoint": 6756, + "id": 16852, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_setDeveloperWallet_16794": { + "entryPoint": 6440, + "id": 16794, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_setImplementation_3653": { + "entryPoint": 8896, + "id": 3653, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_unpause_2977": { + "entryPoint": 5626, + "id": 2977, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_unregisterServiceName_18016": { + "entryPoint": 6218, + "id": 18016, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@_upgradeToAndCallUUPS_1021": { + "entryPoint": 5917, + "id": 1021, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_values_10105": { + "entryPoint": 8058, + "id": 10105, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@add_10127": { + "entryPoint": 7532, + "id": 10127, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@add_10257": { + "entryPoint": 7715, + "id": 10257, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@at_10353": { + "entryPoint": 6616, + "id": 10353, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@contains_10163": { + "entryPoint": 5548, + "id": 10163, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@createCMAccount_16343": { + "entryPoint": 4965, + "id": 16343, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@functionDelegateCall_5398": { + "entryPoint": 8992, + "id": 5398, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@getAccountImplementation_16564": { + "entryPoint": 4145, + "id": 16564, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getAddressSlot_5620": { + "entryPoint": null, + "id": 5620, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getAllRegisteredServiceHashes_18102": { + "entryPoint": 3523, + "id": 18102, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getAllRegisteredServiceNames_18164": { + "entryPoint": 4392, + "id": 18164, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getBookingTokenAddress_16671": { + "entryPoint": 3006, + "id": 16671, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getCMAccountCreator_16527": { + "entryPoint": 2612, + "id": 16527, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getDeveloperFeeBp_16810": { + "entryPoint": 2910, + "id": 16810, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getDeveloperWallet_16740": { + "entryPoint": 2226, + "id": 16740, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getImplementation_3626": { + "entryPoint": null, + "id": 3626, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getPrefundAmount_16633": { + "entryPoint": 4765, + "id": 16633, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@getRegisteredServiceHashByName_18083": { + "entryPoint": 2708, + "id": 18083, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getRegisteredServiceNameByHash_18047": { + "entryPoint": 3070, + "id": 18047, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getRoleAdmin_171": { + "entryPoint": 2578, + "id": 171, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getRoleMemberCount_482": { + "entryPoint": 4788, + "id": 482, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getRoleMember_460": { + "entryPoint": 3593, + "id": 460, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@getRoleMembers_505": { + "entryPoint": 4174, + "id": 505, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@getVersion_16934": { + "entryPoint": null, + "id": 16934, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@grantRole_190": { + "entryPoint": 2668, + "id": 190, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@hasRole_116": { + "entryPoint": 3643, + "id": 116, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@initialize_16290": { + "entryPoint": 3699, + "id": 16290, + "parameterSlots": 6, + "returnSlots": 0 + }, + "@isCMAccount_16548": { + "entryPoint": 2478, + "id": 16548, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@length_10326": { + "entryPoint": 6745, + "id": 10326, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@pause_16301": { + "entryPoint": 3556, + "id": 16301, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@paused_2904": { + "entryPoint": 3297, + "id": 2904, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@proxiableUUID_912": { + "entryPoint": 3038, + "id": 912, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@registerService_16866": { + "entryPoint": 2436, + "id": 16866, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@remove_10145": { + "entryPoint": 8044, + "id": 10145, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@remove_10284": { + "entryPoint": 7888, + "id": 10284, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@renounceRole_232": { + "entryPoint": 2851, + "id": 232, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@revokeRole_209": { + "entryPoint": 4829, + "id": 209, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@sendValue_5279": { + "entryPoint": 8405, + "id": 5279, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@setAccountImplementation_16599": { + "entryPoint": 2258, + "id": 16599, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@setBookingTokenAddress_16706": { + "entryPoint": 4223, + "id": 16706, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@setDeveloperFeeBp_16834": { + "entryPoint": 4863, + "id": 16834, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@setDeveloperWallet_16776": { + "entryPoint": 3358, + "id": 16776, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@setPrefundAmount_16655": { + "entryPoint": 2528, + "id": 16655, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@supportsInterface_3146": { + "entryPoint": null, + "id": 3146, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@supportsInterface_435": { + "entryPoint": 2180, + "id": 435, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@supportsInterface_91": { + "entryPoint": 5011, + "id": 91, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@unpause_16312": { + "entryPoint": 2933, + "id": 16312, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@unregisterService_16880": { + "entryPoint": 3320, + "id": 16880, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@upgradeToAndCall_3689": { + "entryPoint": 7951, + "id": 3689, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@upgradeToAndCall_932": { + "entryPoint": 2973, + "id": 932, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@values_10226": { + "entryPoint": 6489, + "id": 10226, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@values_10383": { + "entryPoint": null, + "id": 10383, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@verifyCallResultFromTarget_5438": { + "entryPoint": 9176, + "id": 5438, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_decode_address": { + "entryPoint": 9477, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_decode_available_length_string": { + "entryPoint": 9558, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address": { + "entryPoint": 9506, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_address": { + "entryPoint": 10437, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_addresst_addresst_addresst_addresst_addresst_uint256": { + "entryPoint": 10146, + "id": null, + "parameterSlots": 2, + "returnSlots": 6 + }, + "abi_decode_tuple_t_addresst_bytes_memory_ptr": { + "entryPoint": 9937, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_bytes32": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32_fromMemory": { + "entryPoint": 10920, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_bytes32t_address": { + "entryPoint": 9890, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_bytes32t_uint256": { + "entryPoint": 10111, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_bytes4": { + "entryPoint": 9413, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_string_memory_ptr": { + "entryPoint": 9682, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256": { + "entryPoint": 9864, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_string": { + "entryPoint": 9797, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": 10484, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": 9457, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_address_t_uint256_t_address_t_address__to_t_address_t_address_t_uint256_t_address_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 6, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_bytes_memory_ptr__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 10266, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 10041, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_array$_t_string_memory_ptr_$dyn_memory_ptr__to_t_array$_t_string_memory_ptr_$dyn_memory_ptr__fromStack_reversed": { + "entryPoint": 10333, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": 9843, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_string_memory_ptr_t_bytes32__to_t_string_memory_ptr_t_bytes32__fromStack_reversed": { + "entryPoint": 10884, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "array_dataslot_string_storage": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "checked_sub_t_uint256": { + "entryPoint": 10946, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "clean_up_bytearray_end_slots_string_storage": { + "entryPoint": 10596, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage": { + "entryPoint": 10680, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "copy_memory_to_memory_with_cleanup": { + "entryPoint": 9759, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "extract_byte_array_length": { + "entryPoint": 10514, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "extract_used_part_and_set_length_of_short_byte_array": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "panic_error_0x31": { + "entryPoint": 10980, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x32": { + "entryPoint": 10574, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x41": { + "entryPoint": 9536, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nativeSrc": "0:13786:61", + "nodeType": "YulBlock", + "src": "0:13786:61", + "statements": [ + { + "nativeSrc": "6:3:61", + "nodeType": "YulBlock", + "src": "6:3:61", + "statements": [] + }, + { + "body": { + "nativeSrc": "115:76:61", + "nodeType": "YulBlock", + "src": "115:76:61", + "statements": [ + { + "nativeSrc": "125:26:61", + "nodeType": "YulAssignment", + "src": "125:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "137:9:61", + "nodeType": "YulIdentifier", + "src": "137:9:61" + }, + { + "kind": "number", + "nativeSrc": "148:2:61", + "nodeType": "YulLiteral", + "src": "148:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "133:3:61", + "nodeType": "YulIdentifier", + "src": "133:3:61" + }, + "nativeSrc": "133:18:61", + "nodeType": "YulFunctionCall", + "src": "133:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "125:4:61", + "nodeType": "YulIdentifier", + "src": "125:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "167:9:61", + "nodeType": "YulIdentifier", + "src": "167:9:61" + }, + { + "name": "value0", + "nativeSrc": "178:6:61", + "nodeType": "YulIdentifier", + "src": "178:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "160:6:61", + "nodeType": "YulIdentifier", + "src": "160:6:61" + }, + "nativeSrc": "160:25:61", + "nodeType": "YulFunctionCall", + "src": "160:25:61" + }, + "nativeSrc": "160:25:61", + "nodeType": "YulExpressionStatement", + "src": "160:25:61" + } + ] + }, + "name": "abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed", + "nativeSrc": "14:177:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "84:9:61", + "nodeType": "YulTypedName", + "src": "84:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "95:6:61", + "nodeType": "YulTypedName", + "src": "95:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "106:4:61", + "nodeType": "YulTypedName", + "src": "106:4:61", + "type": "" + } + ], + "src": "14:177:61" + }, + { + "body": { + "nativeSrc": "265:217:61", + "nodeType": "YulBlock", + "src": "265:217:61", + "statements": [ + { + "body": { + "nativeSrc": "311:16:61", + "nodeType": "YulBlock", + "src": "311:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "320:1:61", + "nodeType": "YulLiteral", + "src": "320:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "323:1:61", + "nodeType": "YulLiteral", + "src": "323:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "313:6:61", + "nodeType": "YulIdentifier", + "src": "313:6:61" + }, + "nativeSrc": "313:12:61", + "nodeType": "YulFunctionCall", + "src": "313:12:61" + }, + "nativeSrc": "313:12:61", + "nodeType": "YulExpressionStatement", + "src": "313:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "286:7:61", + "nodeType": "YulIdentifier", + "src": "286:7:61" + }, + { + "name": "headStart", + "nativeSrc": "295:9:61", + "nodeType": "YulIdentifier", + "src": "295:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "282:3:61", + "nodeType": "YulIdentifier", + "src": "282:3:61" + }, + "nativeSrc": "282:23:61", + "nodeType": "YulFunctionCall", + "src": "282:23:61" + }, + { + "kind": "number", + "nativeSrc": "307:2:61", + "nodeType": "YulLiteral", + "src": "307:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "278:3:61", + "nodeType": "YulIdentifier", + "src": "278:3:61" + }, + "nativeSrc": "278:32:61", + "nodeType": "YulFunctionCall", + "src": "278:32:61" + }, + "nativeSrc": "275:52:61", + "nodeType": "YulIf", + "src": "275:52:61" + }, + { + "nativeSrc": "336:36:61", + "nodeType": "YulVariableDeclaration", + "src": "336:36:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "362:9:61", + "nodeType": "YulIdentifier", + "src": "362:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "349:12:61", + "nodeType": "YulIdentifier", + "src": "349:12:61" + }, + "nativeSrc": "349:23:61", + "nodeType": "YulFunctionCall", + "src": "349:23:61" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "340:5:61", + "nodeType": "YulTypedName", + "src": "340:5:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "436:16:61", + "nodeType": "YulBlock", + "src": "436:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "445:1:61", + "nodeType": "YulLiteral", + "src": "445:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "448:1:61", + "nodeType": "YulLiteral", + "src": "448:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "438:6:61", + "nodeType": "YulIdentifier", + "src": "438:6:61" + }, + "nativeSrc": "438:12:61", + "nodeType": "YulFunctionCall", + "src": "438:12:61" + }, + "nativeSrc": "438:12:61", + "nodeType": "YulExpressionStatement", + "src": "438:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "394:5:61", + "nodeType": "YulIdentifier", + "src": "394:5:61" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "405:5:61", + "nodeType": "YulIdentifier", + "src": "405:5:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "416:3:61", + "nodeType": "YulLiteral", + "src": "416:3:61", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "421:10:61", + "nodeType": "YulLiteral", + "src": "421:10:61", + "type": "", + "value": "0xffffffff" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "412:3:61", + "nodeType": "YulIdentifier", + "src": "412:3:61" + }, + "nativeSrc": "412:20:61", + "nodeType": "YulFunctionCall", + "src": "412:20:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "401:3:61", + "nodeType": "YulIdentifier", + "src": "401:3:61" + }, + "nativeSrc": "401:32:61", + "nodeType": "YulFunctionCall", + "src": "401:32:61" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "391:2:61", + "nodeType": "YulIdentifier", + "src": "391:2:61" + }, + "nativeSrc": "391:43:61", + "nodeType": "YulFunctionCall", + "src": "391:43:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "384:6:61", + "nodeType": "YulIdentifier", + "src": "384:6:61" + }, + "nativeSrc": "384:51:61", + "nodeType": "YulFunctionCall", + "src": "384:51:61" + }, + "nativeSrc": "381:71:61", + "nodeType": "YulIf", + "src": "381:71:61" + }, + { + "nativeSrc": "461:15:61", + "nodeType": "YulAssignment", + "src": "461:15:61", + "value": { + "name": "value", + "nativeSrc": "471:5:61", + "nodeType": "YulIdentifier", + "src": "471:5:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "461:6:61", + "nodeType": "YulIdentifier", + "src": "461:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes4", + "nativeSrc": "196:286:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "231:9:61", + "nodeType": "YulTypedName", + "src": "231:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "242:7:61", + "nodeType": "YulTypedName", + "src": "242:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "254:6:61", + "nodeType": "YulTypedName", + "src": "254:6:61", + "type": "" + } + ], + "src": "196:286:61" + }, + { + "body": { + "nativeSrc": "582:92:61", + "nodeType": "YulBlock", + "src": "582:92:61", + "statements": [ + { + "nativeSrc": "592:26:61", + "nodeType": "YulAssignment", + "src": "592:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "604:9:61", + "nodeType": "YulIdentifier", + "src": "604:9:61" + }, + { + "kind": "number", + "nativeSrc": "615:2:61", + "nodeType": "YulLiteral", + "src": "615:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "600:3:61", + "nodeType": "YulIdentifier", + "src": "600:3:61" + }, + "nativeSrc": "600:18:61", + "nodeType": "YulFunctionCall", + "src": "600:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "592:4:61", + "nodeType": "YulIdentifier", + "src": "592:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "634:9:61", + "nodeType": "YulIdentifier", + "src": "634:9:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "659:6:61", + "nodeType": "YulIdentifier", + "src": "659:6:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "652:6:61", + "nodeType": "YulIdentifier", + "src": "652:6:61" + }, + "nativeSrc": "652:14:61", + "nodeType": "YulFunctionCall", + "src": "652:14:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "645:6:61", + "nodeType": "YulIdentifier", + "src": "645:6:61" + }, + "nativeSrc": "645:22:61", + "nodeType": "YulFunctionCall", + "src": "645:22:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "627:6:61", + "nodeType": "YulIdentifier", + "src": "627:6:61" + }, + "nativeSrc": "627:41:61", + "nodeType": "YulFunctionCall", + "src": "627:41:61" + }, + "nativeSrc": "627:41:61", + "nodeType": "YulExpressionStatement", + "src": "627:41:61" + } + ] + }, + "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", + "nativeSrc": "487:187:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "551:9:61", + "nodeType": "YulTypedName", + "src": "551:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "562:6:61", + "nodeType": "YulTypedName", + "src": "562:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "573:4:61", + "nodeType": "YulTypedName", + "src": "573:4:61", + "type": "" + } + ], + "src": "487:187:61" + }, + { + "body": { + "nativeSrc": "780:102:61", + "nodeType": "YulBlock", + "src": "780:102:61", + "statements": [ + { + "nativeSrc": "790:26:61", + "nodeType": "YulAssignment", + "src": "790:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "802:9:61", + "nodeType": "YulIdentifier", + "src": "802:9:61" + }, + { + "kind": "number", + "nativeSrc": "813:2:61", + "nodeType": "YulLiteral", + "src": "813:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "798:3:61", + "nodeType": "YulIdentifier", + "src": "798:3:61" + }, + "nativeSrc": "798:18:61", + "nodeType": "YulFunctionCall", + "src": "798:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "790:4:61", + "nodeType": "YulIdentifier", + "src": "790:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "832:9:61", + "nodeType": "YulIdentifier", + "src": "832:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "847:6:61", + "nodeType": "YulIdentifier", + "src": "847:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "863:3:61", + "nodeType": "YulLiteral", + "src": "863:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "868:1:61", + "nodeType": "YulLiteral", + "src": "868:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "859:3:61", + "nodeType": "YulIdentifier", + "src": "859:3:61" + }, + "nativeSrc": "859:11:61", + "nodeType": "YulFunctionCall", + "src": "859:11:61" + }, + { + "kind": "number", + "nativeSrc": "872:1:61", + "nodeType": "YulLiteral", + "src": "872:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "855:3:61", + "nodeType": "YulIdentifier", + "src": "855:3:61" + }, + "nativeSrc": "855:19:61", + "nodeType": "YulFunctionCall", + "src": "855:19:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "843:3:61", + "nodeType": "YulIdentifier", + "src": "843:3:61" + }, + "nativeSrc": "843:32:61", + "nodeType": "YulFunctionCall", + "src": "843:32:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "825:6:61", + "nodeType": "YulIdentifier", + "src": "825:6:61" + }, + "nativeSrc": "825:51:61", + "nodeType": "YulFunctionCall", + "src": "825:51:61" + }, + "nativeSrc": "825:51:61", + "nodeType": "YulExpressionStatement", + "src": "825:51:61" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nativeSrc": "679:203:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "749:9:61", + "nodeType": "YulTypedName", + "src": "749:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "760:6:61", + "nodeType": "YulTypedName", + "src": "760:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "771:4:61", + "nodeType": "YulTypedName", + "src": "771:4:61", + "type": "" + } + ], + "src": "679:203:61" + }, + { + "body": { + "nativeSrc": "936:124:61", + "nodeType": "YulBlock", + "src": "936:124:61", + "statements": [ + { + "nativeSrc": "946:29:61", + "nodeType": "YulAssignment", + "src": "946:29:61", + "value": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "968:6:61", + "nodeType": "YulIdentifier", + "src": "968:6:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "955:12:61", + "nodeType": "YulIdentifier", + "src": "955:12:61" + }, + "nativeSrc": "955:20:61", + "nodeType": "YulFunctionCall", + "src": "955:20:61" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "946:5:61", + "nodeType": "YulIdentifier", + "src": "946:5:61" + } + ] + }, + { + "body": { + "nativeSrc": "1038:16:61", + "nodeType": "YulBlock", + "src": "1038:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1047:1:61", + "nodeType": "YulLiteral", + "src": "1047:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1050:1:61", + "nodeType": "YulLiteral", + "src": "1050:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1040:6:61", + "nodeType": "YulIdentifier", + "src": "1040:6:61" + }, + "nativeSrc": "1040:12:61", + "nodeType": "YulFunctionCall", + "src": "1040:12:61" + }, + "nativeSrc": "1040:12:61", + "nodeType": "YulExpressionStatement", + "src": "1040:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "997:5:61", + "nodeType": "YulIdentifier", + "src": "997:5:61" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "1008:5:61", + "nodeType": "YulIdentifier", + "src": "1008:5:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1023:3:61", + "nodeType": "YulLiteral", + "src": "1023:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "1028:1:61", + "nodeType": "YulLiteral", + "src": "1028:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "1019:3:61", + "nodeType": "YulIdentifier", + "src": "1019:3:61" + }, + "nativeSrc": "1019:11:61", + "nodeType": "YulFunctionCall", + "src": "1019:11:61" + }, + { + "kind": "number", + "nativeSrc": "1032:1:61", + "nodeType": "YulLiteral", + "src": "1032:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "1015:3:61", + "nodeType": "YulIdentifier", + "src": "1015:3:61" + }, + "nativeSrc": "1015:19:61", + "nodeType": "YulFunctionCall", + "src": "1015:19:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1004:3:61", + "nodeType": "YulIdentifier", + "src": "1004:3:61" + }, + "nativeSrc": "1004:31:61", + "nodeType": "YulFunctionCall", + "src": "1004:31:61" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "994:2:61", + "nodeType": "YulIdentifier", + "src": "994:2:61" + }, + "nativeSrc": "994:42:61", + "nodeType": "YulFunctionCall", + "src": "994:42:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "987:6:61", + "nodeType": "YulIdentifier", + "src": "987:6:61" + }, + "nativeSrc": "987:50:61", + "nodeType": "YulFunctionCall", + "src": "987:50:61" + }, + "nativeSrc": "984:70:61", + "nodeType": "YulIf", + "src": "984:70:61" + } + ] + }, + "name": "abi_decode_address", + "nativeSrc": "887:173:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nativeSrc": "915:6:61", + "nodeType": "YulTypedName", + "src": "915:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nativeSrc": "926:5:61", + "nodeType": "YulTypedName", + "src": "926:5:61", + "type": "" + } + ], + "src": "887:173:61" + }, + { + "body": { + "nativeSrc": "1135:116:61", + "nodeType": "YulBlock", + "src": "1135:116:61", + "statements": [ + { + "body": { + "nativeSrc": "1181:16:61", + "nodeType": "YulBlock", + "src": "1181:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1190:1:61", + "nodeType": "YulLiteral", + "src": "1190:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1193:1:61", + "nodeType": "YulLiteral", + "src": "1193:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1183:6:61", + "nodeType": "YulIdentifier", + "src": "1183:6:61" + }, + "nativeSrc": "1183:12:61", + "nodeType": "YulFunctionCall", + "src": "1183:12:61" + }, + "nativeSrc": "1183:12:61", + "nodeType": "YulExpressionStatement", + "src": "1183:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "1156:7:61", + "nodeType": "YulIdentifier", + "src": "1156:7:61" + }, + { + "name": "headStart", + "nativeSrc": "1165:9:61", + "nodeType": "YulIdentifier", + "src": "1165:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "1152:3:61", + "nodeType": "YulIdentifier", + "src": "1152:3:61" + }, + "nativeSrc": "1152:23:61", + "nodeType": "YulFunctionCall", + "src": "1152:23:61" + }, + { + "kind": "number", + "nativeSrc": "1177:2:61", + "nodeType": "YulLiteral", + "src": "1177:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "1148:3:61", + "nodeType": "YulIdentifier", + "src": "1148:3:61" + }, + "nativeSrc": "1148:32:61", + "nodeType": "YulFunctionCall", + "src": "1148:32:61" + }, + "nativeSrc": "1145:52:61", + "nodeType": "YulIf", + "src": "1145:52:61" + }, + { + "nativeSrc": "1206:39:61", + "nodeType": "YulAssignment", + "src": "1206:39:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1235:9:61", + "nodeType": "YulIdentifier", + "src": "1235:9:61" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "1216:18:61", + "nodeType": "YulIdentifier", + "src": "1216:18:61" + }, + "nativeSrc": "1216:29:61", + "nodeType": "YulFunctionCall", + "src": "1216:29:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "1206:6:61", + "nodeType": "YulIdentifier", + "src": "1206:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nativeSrc": "1065:186:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "1101:9:61", + "nodeType": "YulTypedName", + "src": "1101:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "1112:7:61", + "nodeType": "YulTypedName", + "src": "1112:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "1124:6:61", + "nodeType": "YulTypedName", + "src": "1124:6:61", + "type": "" + } + ], + "src": "1065:186:61" + }, + { + "body": { + "nativeSrc": "1288:95:61", + "nodeType": "YulBlock", + "src": "1288:95:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1305:1:61", + "nodeType": "YulLiteral", + "src": "1305:1:61", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1312:3:61", + "nodeType": "YulLiteral", + "src": "1312:3:61", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "1317:10:61", + "nodeType": "YulLiteral", + "src": "1317:10:61", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "1308:3:61", + "nodeType": "YulIdentifier", + "src": "1308:3:61" + }, + "nativeSrc": "1308:20:61", + "nodeType": "YulFunctionCall", + "src": "1308:20:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1298:6:61", + "nodeType": "YulIdentifier", + "src": "1298:6:61" + }, + "nativeSrc": "1298:31:61", + "nodeType": "YulFunctionCall", + "src": "1298:31:61" + }, + "nativeSrc": "1298:31:61", + "nodeType": "YulExpressionStatement", + "src": "1298:31:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1345:1:61", + "nodeType": "YulLiteral", + "src": "1345:1:61", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "1348:4:61", + "nodeType": "YulLiteral", + "src": "1348:4:61", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1338:6:61", + "nodeType": "YulIdentifier", + "src": "1338:6:61" + }, + "nativeSrc": "1338:15:61", + "nodeType": "YulFunctionCall", + "src": "1338:15:61" + }, + "nativeSrc": "1338:15:61", + "nodeType": "YulExpressionStatement", + "src": "1338:15:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1369:1:61", + "nodeType": "YulLiteral", + "src": "1369:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1372:4:61", + "nodeType": "YulLiteral", + "src": "1372:4:61", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1362:6:61", + "nodeType": "YulIdentifier", + "src": "1362:6:61" + }, + "nativeSrc": "1362:15:61", + "nodeType": "YulFunctionCall", + "src": "1362:15:61" + }, + "nativeSrc": "1362:15:61", + "nodeType": "YulExpressionStatement", + "src": "1362:15:61" + } + ] + }, + "name": "panic_error_0x41", + "nativeSrc": "1256:127:61", + "nodeType": "YulFunctionDefinition", + "src": "1256:127:61" + }, + { + "body": { + "nativeSrc": "1463:557:61", + "nodeType": "YulBlock", + "src": "1463:557:61", + "statements": [ + { + "nativeSrc": "1473:28:61", + "nodeType": "YulVariableDeclaration", + "src": "1473:28:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1491:2:61", + "nodeType": "YulLiteral", + "src": "1491:2:61", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "1495:1:61", + "nodeType": "YulLiteral", + "src": "1495:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "1487:3:61", + "nodeType": "YulIdentifier", + "src": "1487:3:61" + }, + "nativeSrc": "1487:10:61", + "nodeType": "YulFunctionCall", + "src": "1487:10:61" + }, + { + "kind": "number", + "nativeSrc": "1499:1:61", + "nodeType": "YulLiteral", + "src": "1499:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "1483:3:61", + "nodeType": "YulIdentifier", + "src": "1483:3:61" + }, + "nativeSrc": "1483:18:61", + "nodeType": "YulFunctionCall", + "src": "1483:18:61" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "1477:2:61", + "nodeType": "YulTypedName", + "src": "1477:2:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "1528:22:61", + "nodeType": "YulBlock", + "src": "1528:22:61", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "1530:16:61", + "nodeType": "YulIdentifier", + "src": "1530:16:61" + }, + "nativeSrc": "1530:18:61", + "nodeType": "YulFunctionCall", + "src": "1530:18:61" + }, + "nativeSrc": "1530:18:61", + "nodeType": "YulExpressionStatement", + "src": "1530:18:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nativeSrc": "1516:6:61", + "nodeType": "YulIdentifier", + "src": "1516:6:61" + }, + { + "name": "_1", + "nativeSrc": "1524:2:61", + "nodeType": "YulIdentifier", + "src": "1524:2:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "1513:2:61", + "nodeType": "YulIdentifier", + "src": "1513:2:61" + }, + "nativeSrc": "1513:14:61", + "nodeType": "YulFunctionCall", + "src": "1513:14:61" + }, + "nativeSrc": "1510:40:61", + "nodeType": "YulIf", + "src": "1510:40:61" + }, + { + "nativeSrc": "1559:17:61", + "nodeType": "YulVariableDeclaration", + "src": "1559:17:61", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1573:2:61", + "nodeType": "YulLiteral", + "src": "1573:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "1569:3:61", + "nodeType": "YulIdentifier", + "src": "1569:3:61" + }, + "nativeSrc": "1569:7:61", + "nodeType": "YulFunctionCall", + "src": "1569:7:61" + }, + "variables": [ + { + "name": "_2", + "nativeSrc": "1563:2:61", + "nodeType": "YulTypedName", + "src": "1563:2:61", + "type": "" + } + ] + }, + { + "nativeSrc": "1585:23:61", + "nodeType": "YulVariableDeclaration", + "src": "1585:23:61", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1605:2:61", + "nodeType": "YulLiteral", + "src": "1605:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "1599:5:61", + "nodeType": "YulIdentifier", + "src": "1599:5:61" + }, + "nativeSrc": "1599:9:61", + "nodeType": "YulFunctionCall", + "src": "1599:9:61" + }, + "variables": [ + { + "name": "memPtr", + "nativeSrc": "1589:6:61", + "nodeType": "YulTypedName", + "src": "1589:6:61", + "type": "" + } + ] + }, + { + "nativeSrc": "1617:73:61", + "nodeType": "YulVariableDeclaration", + "src": "1617:73:61", + "value": { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "1639:6:61", + "nodeType": "YulIdentifier", + "src": "1639:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nativeSrc": "1663:6:61", + "nodeType": "YulIdentifier", + "src": "1663:6:61" + }, + { + "kind": "number", + "nativeSrc": "1671:2:61", + "nodeType": "YulLiteral", + "src": "1671:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1659:3:61", + "nodeType": "YulIdentifier", + "src": "1659:3:61" + }, + "nativeSrc": "1659:15:61", + "nodeType": "YulFunctionCall", + "src": "1659:15:61" + }, + { + "name": "_2", + "nativeSrc": "1676:2:61", + "nodeType": "YulIdentifier", + "src": "1676:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1655:3:61", + "nodeType": "YulIdentifier", + "src": "1655:3:61" + }, + "nativeSrc": "1655:24:61", + "nodeType": "YulFunctionCall", + "src": "1655:24:61" + }, + { + "kind": "number", + "nativeSrc": "1681:2:61", + "nodeType": "YulLiteral", + "src": "1681:2:61", + "type": "", + "value": "63" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1651:3:61", + "nodeType": "YulIdentifier", + "src": "1651:3:61" + }, + "nativeSrc": "1651:33:61", + "nodeType": "YulFunctionCall", + "src": "1651:33:61" + }, + { + "name": "_2", + "nativeSrc": "1686:2:61", + "nodeType": "YulIdentifier", + "src": "1686:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1647:3:61", + "nodeType": "YulIdentifier", + "src": "1647:3:61" + }, + "nativeSrc": "1647:42:61", + "nodeType": "YulFunctionCall", + "src": "1647:42:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1635:3:61", + "nodeType": "YulIdentifier", + "src": "1635:3:61" + }, + "nativeSrc": "1635:55:61", + "nodeType": "YulFunctionCall", + "src": "1635:55:61" + }, + "variables": [ + { + "name": "newFreePtr", + "nativeSrc": "1621:10:61", + "nodeType": "YulTypedName", + "src": "1621:10:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "1749:22:61", + "nodeType": "YulBlock", + "src": "1749:22:61", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "1751:16:61", + "nodeType": "YulIdentifier", + "src": "1751:16:61" + }, + "nativeSrc": "1751:18:61", + "nodeType": "YulFunctionCall", + "src": "1751:18:61" + }, + "nativeSrc": "1751:18:61", + "nodeType": "YulExpressionStatement", + "src": "1751:18:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "newFreePtr", + "nativeSrc": "1708:10:61", + "nodeType": "YulIdentifier", + "src": "1708:10:61" + }, + { + "name": "_1", + "nativeSrc": "1720:2:61", + "nodeType": "YulIdentifier", + "src": "1720:2:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "1705:2:61", + "nodeType": "YulIdentifier", + "src": "1705:2:61" + }, + "nativeSrc": "1705:18:61", + "nodeType": "YulFunctionCall", + "src": "1705:18:61" + }, + { + "arguments": [ + { + "name": "newFreePtr", + "nativeSrc": "1728:10:61", + "nodeType": "YulIdentifier", + "src": "1728:10:61" + }, + { + "name": "memPtr", + "nativeSrc": "1740:6:61", + "nodeType": "YulIdentifier", + "src": "1740:6:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "1725:2:61", + "nodeType": "YulIdentifier", + "src": "1725:2:61" + }, + "nativeSrc": "1725:22:61", + "nodeType": "YulFunctionCall", + "src": "1725:22:61" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "1702:2:61", + "nodeType": "YulIdentifier", + "src": "1702:2:61" + }, + "nativeSrc": "1702:46:61", + "nodeType": "YulFunctionCall", + "src": "1702:46:61" + }, + "nativeSrc": "1699:72:61", + "nodeType": "YulIf", + "src": "1699:72:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1787:2:61", + "nodeType": "YulLiteral", + "src": "1787:2:61", + "type": "", + "value": "64" + }, + { + "name": "newFreePtr", + "nativeSrc": "1791:10:61", + "nodeType": "YulIdentifier", + "src": "1791:10:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1780:6:61", + "nodeType": "YulIdentifier", + "src": "1780:6:61" + }, + "nativeSrc": "1780:22:61", + "nodeType": "YulFunctionCall", + "src": "1780:22:61" + }, + "nativeSrc": "1780:22:61", + "nodeType": "YulExpressionStatement", + "src": "1780:22:61" + }, + { + "nativeSrc": "1811:15:61", + "nodeType": "YulAssignment", + "src": "1811:15:61", + "value": { + "name": "memPtr", + "nativeSrc": "1820:6:61", + "nodeType": "YulIdentifier", + "src": "1820:6:61" + }, + "variableNames": [ + { + "name": "array", + "nativeSrc": "1811:5:61", + "nodeType": "YulIdentifier", + "src": "1811:5:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "1842:6:61", + "nodeType": "YulIdentifier", + "src": "1842:6:61" + }, + { + "name": "length", + "nativeSrc": "1850:6:61", + "nodeType": "YulIdentifier", + "src": "1850:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1835:6:61", + "nodeType": "YulIdentifier", + "src": "1835:6:61" + }, + "nativeSrc": "1835:22:61", + "nodeType": "YulFunctionCall", + "src": "1835:22:61" + }, + "nativeSrc": "1835:22:61", + "nodeType": "YulExpressionStatement", + "src": "1835:22:61" + }, + { + "body": { + "nativeSrc": "1895:16:61", + "nodeType": "YulBlock", + "src": "1895:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1904:1:61", + "nodeType": "YulLiteral", + "src": "1904:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1907:1:61", + "nodeType": "YulLiteral", + "src": "1907:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1897:6:61", + "nodeType": "YulIdentifier", + "src": "1897:6:61" + }, + "nativeSrc": "1897:12:61", + "nodeType": "YulFunctionCall", + "src": "1897:12:61" + }, + "nativeSrc": "1897:12:61", + "nodeType": "YulExpressionStatement", + "src": "1897:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "1876:3:61", + "nodeType": "YulIdentifier", + "src": "1876:3:61" + }, + { + "name": "length", + "nativeSrc": "1881:6:61", + "nodeType": "YulIdentifier", + "src": "1881:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1872:3:61", + "nodeType": "YulIdentifier", + "src": "1872:3:61" + }, + "nativeSrc": "1872:16:61", + "nodeType": "YulFunctionCall", + "src": "1872:16:61" + }, + { + "name": "end", + "nativeSrc": "1890:3:61", + "nodeType": "YulIdentifier", + "src": "1890:3:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "1869:2:61", + "nodeType": "YulIdentifier", + "src": "1869:2:61" + }, + "nativeSrc": "1869:25:61", + "nodeType": "YulFunctionCall", + "src": "1869:25:61" + }, + "nativeSrc": "1866:45:61", + "nodeType": "YulIf", + "src": "1866:45:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "1937:6:61", + "nodeType": "YulIdentifier", + "src": "1937:6:61" + }, + { + "kind": "number", + "nativeSrc": "1945:4:61", + "nodeType": "YulLiteral", + "src": "1945:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1933:3:61", + "nodeType": "YulIdentifier", + "src": "1933:3:61" + }, + "nativeSrc": "1933:17:61", + "nodeType": "YulFunctionCall", + "src": "1933:17:61" + }, + { + "name": "src", + "nativeSrc": "1952:3:61", + "nodeType": "YulIdentifier", + "src": "1952:3:61" + }, + { + "name": "length", + "nativeSrc": "1957:6:61", + "nodeType": "YulIdentifier", + "src": "1957:6:61" + } + ], + "functionName": { + "name": "calldatacopy", + "nativeSrc": "1920:12:61", + "nodeType": "YulIdentifier", + "src": "1920:12:61" + }, + "nativeSrc": "1920:44:61", + "nodeType": "YulFunctionCall", + "src": "1920:44:61" + }, + "nativeSrc": "1920:44:61", + "nodeType": "YulExpressionStatement", + "src": "1920:44:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "1988:6:61", + "nodeType": "YulIdentifier", + "src": "1988:6:61" + }, + { + "name": "length", + "nativeSrc": "1996:6:61", + "nodeType": "YulIdentifier", + "src": "1996:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1984:3:61", + "nodeType": "YulIdentifier", + "src": "1984:3:61" + }, + "nativeSrc": "1984:19:61", + "nodeType": "YulFunctionCall", + "src": "1984:19:61" + }, + { + "kind": "number", + "nativeSrc": "2005:4:61", + "nodeType": "YulLiteral", + "src": "2005:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1980:3:61", + "nodeType": "YulIdentifier", + "src": "1980:3:61" + }, + "nativeSrc": "1980:30:61", + "nodeType": "YulFunctionCall", + "src": "1980:30:61" + }, + { + "kind": "number", + "nativeSrc": "2012:1:61", + "nodeType": "YulLiteral", + "src": "2012:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1973:6:61", + "nodeType": "YulIdentifier", + "src": "1973:6:61" + }, + "nativeSrc": "1973:41:61", + "nodeType": "YulFunctionCall", + "src": "1973:41:61" + }, + "nativeSrc": "1973:41:61", + "nodeType": "YulExpressionStatement", + "src": "1973:41:61" + } + ] + }, + "name": "abi_decode_available_length_string", + "nativeSrc": "1388:632:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nativeSrc": "1432:3:61", + "nodeType": "YulTypedName", + "src": "1432:3:61", + "type": "" + }, + { + "name": "length", + "nativeSrc": "1437:6:61", + "nodeType": "YulTypedName", + "src": "1437:6:61", + "type": "" + }, + { + "name": "end", + "nativeSrc": "1445:3:61", + "nodeType": "YulTypedName", + "src": "1445:3:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "array", + "nativeSrc": "1453:5:61", + "nodeType": "YulTypedName", + "src": "1453:5:61", + "type": "" + } + ], + "src": "1388:632:61" + }, + { + "body": { + "nativeSrc": "2105:371:61", + "nodeType": "YulBlock", + "src": "2105:371:61", + "statements": [ + { + "body": { + "nativeSrc": "2151:16:61", + "nodeType": "YulBlock", + "src": "2151:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2160:1:61", + "nodeType": "YulLiteral", + "src": "2160:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2163:1:61", + "nodeType": "YulLiteral", + "src": "2163:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2153:6:61", + "nodeType": "YulIdentifier", + "src": "2153:6:61" + }, + "nativeSrc": "2153:12:61", + "nodeType": "YulFunctionCall", + "src": "2153:12:61" + }, + "nativeSrc": "2153:12:61", + "nodeType": "YulExpressionStatement", + "src": "2153:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "2126:7:61", + "nodeType": "YulIdentifier", + "src": "2126:7:61" + }, + { + "name": "headStart", + "nativeSrc": "2135:9:61", + "nodeType": "YulIdentifier", + "src": "2135:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "2122:3:61", + "nodeType": "YulIdentifier", + "src": "2122:3:61" + }, + "nativeSrc": "2122:23:61", + "nodeType": "YulFunctionCall", + "src": "2122:23:61" + }, + { + "kind": "number", + "nativeSrc": "2147:2:61", + "nodeType": "YulLiteral", + "src": "2147:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "2118:3:61", + "nodeType": "YulIdentifier", + "src": "2118:3:61" + }, + "nativeSrc": "2118:32:61", + "nodeType": "YulFunctionCall", + "src": "2118:32:61" + }, + "nativeSrc": "2115:52:61", + "nodeType": "YulIf", + "src": "2115:52:61" + }, + { + "nativeSrc": "2176:37:61", + "nodeType": "YulVariableDeclaration", + "src": "2176:37:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2203:9:61", + "nodeType": "YulIdentifier", + "src": "2203:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "2190:12:61", + "nodeType": "YulIdentifier", + "src": "2190:12:61" + }, + "nativeSrc": "2190:23:61", + "nodeType": "YulFunctionCall", + "src": "2190:23:61" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "2180:6:61", + "nodeType": "YulTypedName", + "src": "2180:6:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "2256:16:61", + "nodeType": "YulBlock", + "src": "2256:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2265:1:61", + "nodeType": "YulLiteral", + "src": "2265:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2268:1:61", + "nodeType": "YulLiteral", + "src": "2268:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2258:6:61", + "nodeType": "YulIdentifier", + "src": "2258:6:61" + }, + "nativeSrc": "2258:12:61", + "nodeType": "YulFunctionCall", + "src": "2258:12:61" + }, + "nativeSrc": "2258:12:61", + "nodeType": "YulExpressionStatement", + "src": "2258:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "2228:6:61", + "nodeType": "YulIdentifier", + "src": "2228:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2244:2:61", + "nodeType": "YulLiteral", + "src": "2244:2:61", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "2248:1:61", + "nodeType": "YulLiteral", + "src": "2248:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "2240:3:61", + "nodeType": "YulIdentifier", + "src": "2240:3:61" + }, + "nativeSrc": "2240:10:61", + "nodeType": "YulFunctionCall", + "src": "2240:10:61" + }, + { + "kind": "number", + "nativeSrc": "2252:1:61", + "nodeType": "YulLiteral", + "src": "2252:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "2236:3:61", + "nodeType": "YulIdentifier", + "src": "2236:3:61" + }, + "nativeSrc": "2236:18:61", + "nodeType": "YulFunctionCall", + "src": "2236:18:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "2225:2:61", + "nodeType": "YulIdentifier", + "src": "2225:2:61" + }, + "nativeSrc": "2225:30:61", + "nodeType": "YulFunctionCall", + "src": "2225:30:61" + }, + "nativeSrc": "2222:50:61", + "nodeType": "YulIf", + "src": "2222:50:61" + }, + { + "nativeSrc": "2281:32:61", + "nodeType": "YulVariableDeclaration", + "src": "2281:32:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2295:9:61", + "nodeType": "YulIdentifier", + "src": "2295:9:61" + }, + { + "name": "offset", + "nativeSrc": "2306:6:61", + "nodeType": "YulIdentifier", + "src": "2306:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2291:3:61", + "nodeType": "YulIdentifier", + "src": "2291:3:61" + }, + "nativeSrc": "2291:22:61", + "nodeType": "YulFunctionCall", + "src": "2291:22:61" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "2285:2:61", + "nodeType": "YulTypedName", + "src": "2285:2:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "2361:16:61", + "nodeType": "YulBlock", + "src": "2361:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2370:1:61", + "nodeType": "YulLiteral", + "src": "2370:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2373:1:61", + "nodeType": "YulLiteral", + "src": "2373:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2363:6:61", + "nodeType": "YulIdentifier", + "src": "2363:6:61" + }, + "nativeSrc": "2363:12:61", + "nodeType": "YulFunctionCall", + "src": "2363:12:61" + }, + "nativeSrc": "2363:12:61", + "nodeType": "YulExpressionStatement", + "src": "2363:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nativeSrc": "2340:2:61", + "nodeType": "YulIdentifier", + "src": "2340:2:61" + }, + { + "kind": "number", + "nativeSrc": "2344:4:61", + "nodeType": "YulLiteral", + "src": "2344:4:61", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2336:3:61", + "nodeType": "YulIdentifier", + "src": "2336:3:61" + }, + "nativeSrc": "2336:13:61", + "nodeType": "YulFunctionCall", + "src": "2336:13:61" + }, + { + "name": "dataEnd", + "nativeSrc": "2351:7:61", + "nodeType": "YulIdentifier", + "src": "2351:7:61" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "2332:3:61", + "nodeType": "YulIdentifier", + "src": "2332:3:61" + }, + "nativeSrc": "2332:27:61", + "nodeType": "YulFunctionCall", + "src": "2332:27:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "2325:6:61", + "nodeType": "YulIdentifier", + "src": "2325:6:61" + }, + "nativeSrc": "2325:35:61", + "nodeType": "YulFunctionCall", + "src": "2325:35:61" + }, + "nativeSrc": "2322:55:61", + "nodeType": "YulIf", + "src": "2322:55:61" + }, + { + "nativeSrc": "2386:84:61", + "nodeType": "YulAssignment", + "src": "2386:84:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nativeSrc": "2435:2:61", + "nodeType": "YulIdentifier", + "src": "2435:2:61" + }, + { + "kind": "number", + "nativeSrc": "2439:2:61", + "nodeType": "YulLiteral", + "src": "2439:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2431:3:61", + "nodeType": "YulIdentifier", + "src": "2431:3:61" + }, + "nativeSrc": "2431:11:61", + "nodeType": "YulFunctionCall", + "src": "2431:11:61" + }, + { + "arguments": [ + { + "name": "_1", + "nativeSrc": "2457:2:61", + "nodeType": "YulIdentifier", + "src": "2457:2:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "2444:12:61", + "nodeType": "YulIdentifier", + "src": "2444:12:61" + }, + "nativeSrc": "2444:16:61", + "nodeType": "YulFunctionCall", + "src": "2444:16:61" + }, + { + "name": "dataEnd", + "nativeSrc": "2462:7:61", + "nodeType": "YulIdentifier", + "src": "2462:7:61" + } + ], + "functionName": { + "name": "abi_decode_available_length_string", + "nativeSrc": "2396:34:61", + "nodeType": "YulIdentifier", + "src": "2396:34:61" + }, + "nativeSrc": "2396:74:61", + "nodeType": "YulFunctionCall", + "src": "2396:74:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "2386:6:61", + "nodeType": "YulIdentifier", + "src": "2386:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_string_memory_ptr", + "nativeSrc": "2025:451:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "2071:9:61", + "nodeType": "YulTypedName", + "src": "2071:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "2082:7:61", + "nodeType": "YulTypedName", + "src": "2082:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "2094:6:61", + "nodeType": "YulTypedName", + "src": "2094:6:61", + "type": "" + } + ], + "src": "2025:451:61" + }, + { + "body": { + "nativeSrc": "2547:184:61", + "nodeType": "YulBlock", + "src": "2547:184:61", + "statements": [ + { + "nativeSrc": "2557:10:61", + "nodeType": "YulVariableDeclaration", + "src": "2557:10:61", + "value": { + "kind": "number", + "nativeSrc": "2566:1:61", + "nodeType": "YulLiteral", + "src": "2566:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "2561:1:61", + "nodeType": "YulTypedName", + "src": "2561:1:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "2626:63:61", + "nodeType": "YulBlock", + "src": "2626:63:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nativeSrc": "2651:3:61", + "nodeType": "YulIdentifier", + "src": "2651:3:61" + }, + { + "name": "i", + "nativeSrc": "2656:1:61", + "nodeType": "YulIdentifier", + "src": "2656:1:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2647:3:61", + "nodeType": "YulIdentifier", + "src": "2647:3:61" + }, + "nativeSrc": "2647:11:61", + "nodeType": "YulFunctionCall", + "src": "2647:11:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "2670:3:61", + "nodeType": "YulIdentifier", + "src": "2670:3:61" + }, + { + "name": "i", + "nativeSrc": "2675:1:61", + "nodeType": "YulIdentifier", + "src": "2675:1:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2666:3:61", + "nodeType": "YulIdentifier", + "src": "2666:3:61" + }, + "nativeSrc": "2666:11:61", + "nodeType": "YulFunctionCall", + "src": "2666:11:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2660:5:61", + "nodeType": "YulIdentifier", + "src": "2660:5:61" + }, + "nativeSrc": "2660:18:61", + "nodeType": "YulFunctionCall", + "src": "2660:18:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2640:6:61", + "nodeType": "YulIdentifier", + "src": "2640:6:61" + }, + "nativeSrc": "2640:39:61", + "nodeType": "YulFunctionCall", + "src": "2640:39:61" + }, + "nativeSrc": "2640:39:61", + "nodeType": "YulExpressionStatement", + "src": "2640:39:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "2587:1:61", + "nodeType": "YulIdentifier", + "src": "2587:1:61" + }, + { + "name": "length", + "nativeSrc": "2590:6:61", + "nodeType": "YulIdentifier", + "src": "2590:6:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "2584:2:61", + "nodeType": "YulIdentifier", + "src": "2584:2:61" + }, + "nativeSrc": "2584:13:61", + "nodeType": "YulFunctionCall", + "src": "2584:13:61" + }, + "nativeSrc": "2576:113:61", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "2598:19:61", + "nodeType": "YulBlock", + "src": "2598:19:61", + "statements": [ + { + "nativeSrc": "2600:15:61", + "nodeType": "YulAssignment", + "src": "2600:15:61", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "2609:1:61", + "nodeType": "YulIdentifier", + "src": "2609:1:61" + }, + { + "kind": "number", + "nativeSrc": "2612:2:61", + "nodeType": "YulLiteral", + "src": "2612:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2605:3:61", + "nodeType": "YulIdentifier", + "src": "2605:3:61" + }, + "nativeSrc": "2605:10:61", + "nodeType": "YulFunctionCall", + "src": "2605:10:61" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "2600:1:61", + "nodeType": "YulIdentifier", + "src": "2600:1:61" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "2580:3:61", + "nodeType": "YulBlock", + "src": "2580:3:61", + "statements": [] + }, + "src": "2576:113:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "dst", + "nativeSrc": "2709:3:61", + "nodeType": "YulIdentifier", + "src": "2709:3:61" + }, + { + "name": "length", + "nativeSrc": "2714:6:61", + "nodeType": "YulIdentifier", + "src": "2714:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2705:3:61", + "nodeType": "YulIdentifier", + "src": "2705:3:61" + }, + "nativeSrc": "2705:16:61", + "nodeType": "YulFunctionCall", + "src": "2705:16:61" + }, + { + "kind": "number", + "nativeSrc": "2723:1:61", + "nodeType": "YulLiteral", + "src": "2723:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2698:6:61", + "nodeType": "YulIdentifier", + "src": "2698:6:61" + }, + "nativeSrc": "2698:27:61", + "nodeType": "YulFunctionCall", + "src": "2698:27:61" + }, + "nativeSrc": "2698:27:61", + "nodeType": "YulExpressionStatement", + "src": "2698:27:61" + } + ] + }, + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "2481:250:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "src", + "nativeSrc": "2525:3:61", + "nodeType": "YulTypedName", + "src": "2525:3:61", + "type": "" + }, + { + "name": "dst", + "nativeSrc": "2530:3:61", + "nodeType": "YulTypedName", + "src": "2530:3:61", + "type": "" + }, + { + "name": "length", + "nativeSrc": "2535:6:61", + "nodeType": "YulTypedName", + "src": "2535:6:61", + "type": "" + } + ], + "src": "2481:250:61" + }, + { + "body": { + "nativeSrc": "2786:221:61", + "nodeType": "YulBlock", + "src": "2786:221:61", + "statements": [ + { + "nativeSrc": "2796:26:61", + "nodeType": "YulVariableDeclaration", + "src": "2796:26:61", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "2816:5:61", + "nodeType": "YulIdentifier", + "src": "2816:5:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2810:5:61", + "nodeType": "YulIdentifier", + "src": "2810:5:61" + }, + "nativeSrc": "2810:12:61", + "nodeType": "YulFunctionCall", + "src": "2810:12:61" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "2800:6:61", + "nodeType": "YulTypedName", + "src": "2800:6:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "2838:3:61", + "nodeType": "YulIdentifier", + "src": "2838:3:61" + }, + { + "name": "length", + "nativeSrc": "2843:6:61", + "nodeType": "YulIdentifier", + "src": "2843:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2831:6:61", + "nodeType": "YulIdentifier", + "src": "2831:6:61" + }, + "nativeSrc": "2831:19:61", + "nodeType": "YulFunctionCall", + "src": "2831:19:61" + }, + "nativeSrc": "2831:19:61", + "nodeType": "YulExpressionStatement", + "src": "2831:19:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "2898:5:61", + "nodeType": "YulIdentifier", + "src": "2898:5:61" + }, + { + "kind": "number", + "nativeSrc": "2905:4:61", + "nodeType": "YulLiteral", + "src": "2905:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2894:3:61", + "nodeType": "YulIdentifier", + "src": "2894:3:61" + }, + "nativeSrc": "2894:16:61", + "nodeType": "YulFunctionCall", + "src": "2894:16:61" + }, + { + "arguments": [ + { + "name": "pos", + "nativeSrc": "2916:3:61", + "nodeType": "YulIdentifier", + "src": "2916:3:61" + }, + { + "kind": "number", + "nativeSrc": "2921:4:61", + "nodeType": "YulLiteral", + "src": "2921:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2912:3:61", + "nodeType": "YulIdentifier", + "src": "2912:3:61" + }, + "nativeSrc": "2912:14:61", + "nodeType": "YulFunctionCall", + "src": "2912:14:61" + }, + { + "name": "length", + "nativeSrc": "2928:6:61", + "nodeType": "YulIdentifier", + "src": "2928:6:61" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "2859:34:61", + "nodeType": "YulIdentifier", + "src": "2859:34:61" + }, + "nativeSrc": "2859:76:61", + "nodeType": "YulFunctionCall", + "src": "2859:76:61" + }, + "nativeSrc": "2859:76:61", + "nodeType": "YulExpressionStatement", + "src": "2859:76:61" + }, + { + "nativeSrc": "2944:57:61", + "nodeType": "YulAssignment", + "src": "2944:57:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "pos", + "nativeSrc": "2959:3:61", + "nodeType": "YulIdentifier", + "src": "2959:3:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nativeSrc": "2972:6:61", + "nodeType": "YulIdentifier", + "src": "2972:6:61" + }, + { + "kind": "number", + "nativeSrc": "2980:2:61", + "nodeType": "YulLiteral", + "src": "2980:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2968:3:61", + "nodeType": "YulIdentifier", + "src": "2968:3:61" + }, + "nativeSrc": "2968:15:61", + "nodeType": "YulFunctionCall", + "src": "2968:15:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2989:2:61", + "nodeType": "YulLiteral", + "src": "2989:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "2985:3:61", + "nodeType": "YulIdentifier", + "src": "2985:3:61" + }, + "nativeSrc": "2985:7:61", + "nodeType": "YulFunctionCall", + "src": "2985:7:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "2964:3:61", + "nodeType": "YulIdentifier", + "src": "2964:3:61" + }, + "nativeSrc": "2964:29:61", + "nodeType": "YulFunctionCall", + "src": "2964:29:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2955:3:61", + "nodeType": "YulIdentifier", + "src": "2955:3:61" + }, + "nativeSrc": "2955:39:61", + "nodeType": "YulFunctionCall", + "src": "2955:39:61" + }, + { + "kind": "number", + "nativeSrc": "2996:4:61", + "nodeType": "YulLiteral", + "src": "2996:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2951:3:61", + "nodeType": "YulIdentifier", + "src": "2951:3:61" + }, + "nativeSrc": "2951:50:61", + "nodeType": "YulFunctionCall", + "src": "2951:50:61" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "2944:3:61", + "nodeType": "YulIdentifier", + "src": "2944:3:61" + } + ] + } + ] + }, + "name": "abi_encode_string", + "nativeSrc": "2736:271:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "2763:5:61", + "nodeType": "YulTypedName", + "src": "2763:5:61", + "type": "" + }, + { + "name": "pos", + "nativeSrc": "2770:3:61", + "nodeType": "YulTypedName", + "src": "2770:3:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "2778:3:61", + "nodeType": "YulTypedName", + "src": "2778:3:61", + "type": "" + } + ], + "src": "2736:271:61" + }, + { + "body": { + "nativeSrc": "3133:99:61", + "nodeType": "YulBlock", + "src": "3133:99:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3150:9:61", + "nodeType": "YulIdentifier", + "src": "3150:9:61" + }, + { + "kind": "number", + "nativeSrc": "3161:2:61", + "nodeType": "YulLiteral", + "src": "3161:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3143:6:61", + "nodeType": "YulIdentifier", + "src": "3143:6:61" + }, + "nativeSrc": "3143:21:61", + "nodeType": "YulFunctionCall", + "src": "3143:21:61" + }, + "nativeSrc": "3143:21:61", + "nodeType": "YulExpressionStatement", + "src": "3143:21:61" + }, + { + "nativeSrc": "3173:53:61", + "nodeType": "YulAssignment", + "src": "3173:53:61", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "3199:6:61", + "nodeType": "YulIdentifier", + "src": "3199:6:61" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3211:9:61", + "nodeType": "YulIdentifier", + "src": "3211:9:61" + }, + { + "kind": "number", + "nativeSrc": "3222:2:61", + "nodeType": "YulLiteral", + "src": "3222:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3207:3:61", + "nodeType": "YulIdentifier", + "src": "3207:3:61" + }, + "nativeSrc": "3207:18:61", + "nodeType": "YulFunctionCall", + "src": "3207:18:61" + } + ], + "functionName": { + "name": "abi_encode_string", + "nativeSrc": "3181:17:61", + "nodeType": "YulIdentifier", + "src": "3181:17:61" + }, + "nativeSrc": "3181:45:61", + "nodeType": "YulFunctionCall", + "src": "3181:45:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "3173:4:61", + "nodeType": "YulIdentifier", + "src": "3173:4:61" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed", + "nativeSrc": "3012:220:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "3102:9:61", + "nodeType": "YulTypedName", + "src": "3102:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "3113:6:61", + "nodeType": "YulTypedName", + "src": "3113:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "3124:4:61", + "nodeType": "YulTypedName", + "src": "3124:4:61", + "type": "" + } + ], + "src": "3012:220:61" + }, + { + "body": { + "nativeSrc": "3307:110:61", + "nodeType": "YulBlock", + "src": "3307:110:61", + "statements": [ + { + "body": { + "nativeSrc": "3353:16:61", + "nodeType": "YulBlock", + "src": "3353:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3362:1:61", + "nodeType": "YulLiteral", + "src": "3362:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "3365:1:61", + "nodeType": "YulLiteral", + "src": "3365:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "3355:6:61", + "nodeType": "YulIdentifier", + "src": "3355:6:61" + }, + "nativeSrc": "3355:12:61", + "nodeType": "YulFunctionCall", + "src": "3355:12:61" + }, + "nativeSrc": "3355:12:61", + "nodeType": "YulExpressionStatement", + "src": "3355:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "3328:7:61", + "nodeType": "YulIdentifier", + "src": "3328:7:61" + }, + { + "name": "headStart", + "nativeSrc": "3337:9:61", + "nodeType": "YulIdentifier", + "src": "3337:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "3324:3:61", + "nodeType": "YulIdentifier", + "src": "3324:3:61" + }, + "nativeSrc": "3324:23:61", + "nodeType": "YulFunctionCall", + "src": "3324:23:61" + }, + { + "kind": "number", + "nativeSrc": "3349:2:61", + "nodeType": "YulLiteral", + "src": "3349:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "3320:3:61", + "nodeType": "YulIdentifier", + "src": "3320:3:61" + }, + "nativeSrc": "3320:32:61", + "nodeType": "YulFunctionCall", + "src": "3320:32:61" + }, + "nativeSrc": "3317:52:61", + "nodeType": "YulIf", + "src": "3317:52:61" + }, + { + "nativeSrc": "3378:33:61", + "nodeType": "YulAssignment", + "src": "3378:33:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3401:9:61", + "nodeType": "YulIdentifier", + "src": "3401:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "3388:12:61", + "nodeType": "YulIdentifier", + "src": "3388:12:61" + }, + "nativeSrc": "3388:23:61", + "nodeType": "YulFunctionCall", + "src": "3388:23:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "3378:6:61", + "nodeType": "YulIdentifier", + "src": "3378:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256", + "nativeSrc": "3237:180:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "3273:9:61", + "nodeType": "YulTypedName", + "src": "3273:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "3284:7:61", + "nodeType": "YulTypedName", + "src": "3284:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "3296:6:61", + "nodeType": "YulTypedName", + "src": "3296:6:61", + "type": "" + } + ], + "src": "3237:180:61" + }, + { + "body": { + "nativeSrc": "3492:110:61", + "nodeType": "YulBlock", + "src": "3492:110:61", + "statements": [ + { + "body": { + "nativeSrc": "3538:16:61", + "nodeType": "YulBlock", + "src": "3538:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3547:1:61", + "nodeType": "YulLiteral", + "src": "3547:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "3550:1:61", + "nodeType": "YulLiteral", + "src": "3550:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "3540:6:61", + "nodeType": "YulIdentifier", + "src": "3540:6:61" + }, + "nativeSrc": "3540:12:61", + "nodeType": "YulFunctionCall", + "src": "3540:12:61" + }, + "nativeSrc": "3540:12:61", + "nodeType": "YulExpressionStatement", + "src": "3540:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "3513:7:61", + "nodeType": "YulIdentifier", + "src": "3513:7:61" + }, + { + "name": "headStart", + "nativeSrc": "3522:9:61", + "nodeType": "YulIdentifier", + "src": "3522:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "3509:3:61", + "nodeType": "YulIdentifier", + "src": "3509:3:61" + }, + "nativeSrc": "3509:23:61", + "nodeType": "YulFunctionCall", + "src": "3509:23:61" + }, + { + "kind": "number", + "nativeSrc": "3534:2:61", + "nodeType": "YulLiteral", + "src": "3534:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "3505:3:61", + "nodeType": "YulIdentifier", + "src": "3505:3:61" + }, + "nativeSrc": "3505:32:61", + "nodeType": "YulFunctionCall", + "src": "3505:32:61" + }, + "nativeSrc": "3502:52:61", + "nodeType": "YulIf", + "src": "3502:52:61" + }, + { + "nativeSrc": "3563:33:61", + "nodeType": "YulAssignment", + "src": "3563:33:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3586:9:61", + "nodeType": "YulIdentifier", + "src": "3586:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "3573:12:61", + "nodeType": "YulIdentifier", + "src": "3573:12:61" + }, + "nativeSrc": "3573:23:61", + "nodeType": "YulFunctionCall", + "src": "3573:23:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "3563:6:61", + "nodeType": "YulIdentifier", + "src": "3563:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32", + "nativeSrc": "3422:180:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "3458:9:61", + "nodeType": "YulTypedName", + "src": "3458:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "3469:7:61", + "nodeType": "YulTypedName", + "src": "3469:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "3481:6:61", + "nodeType": "YulTypedName", + "src": "3481:6:61", + "type": "" + } + ], + "src": "3422:180:61" + }, + { + "body": { + "nativeSrc": "3694:167:61", + "nodeType": "YulBlock", + "src": "3694:167:61", + "statements": [ + { + "body": { + "nativeSrc": "3740:16:61", + "nodeType": "YulBlock", + "src": "3740:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3749:1:61", + "nodeType": "YulLiteral", + "src": "3749:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "3752:1:61", + "nodeType": "YulLiteral", + "src": "3752:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "3742:6:61", + "nodeType": "YulIdentifier", + "src": "3742:6:61" + }, + "nativeSrc": "3742:12:61", + "nodeType": "YulFunctionCall", + "src": "3742:12:61" + }, + "nativeSrc": "3742:12:61", + "nodeType": "YulExpressionStatement", + "src": "3742:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "3715:7:61", + "nodeType": "YulIdentifier", + "src": "3715:7:61" + }, + { + "name": "headStart", + "nativeSrc": "3724:9:61", + "nodeType": "YulIdentifier", + "src": "3724:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "3711:3:61", + "nodeType": "YulIdentifier", + "src": "3711:3:61" + }, + "nativeSrc": "3711:23:61", + "nodeType": "YulFunctionCall", + "src": "3711:23:61" + }, + { + "kind": "number", + "nativeSrc": "3736:2:61", + "nodeType": "YulLiteral", + "src": "3736:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "3707:3:61", + "nodeType": "YulIdentifier", + "src": "3707:3:61" + }, + "nativeSrc": "3707:32:61", + "nodeType": "YulFunctionCall", + "src": "3707:32:61" + }, + "nativeSrc": "3704:52:61", + "nodeType": "YulIf", + "src": "3704:52:61" + }, + { + "nativeSrc": "3765:33:61", + "nodeType": "YulAssignment", + "src": "3765:33:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3788:9:61", + "nodeType": "YulIdentifier", + "src": "3788:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "3775:12:61", + "nodeType": "YulIdentifier", + "src": "3775:12:61" + }, + "nativeSrc": "3775:23:61", + "nodeType": "YulFunctionCall", + "src": "3775:23:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "3765:6:61", + "nodeType": "YulIdentifier", + "src": "3765:6:61" + } + ] + }, + { + "nativeSrc": "3807:48:61", + "nodeType": "YulAssignment", + "src": "3807:48:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3840:9:61", + "nodeType": "YulIdentifier", + "src": "3840:9:61" + }, + { + "kind": "number", + "nativeSrc": "3851:2:61", + "nodeType": "YulLiteral", + "src": "3851:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3836:3:61", + "nodeType": "YulIdentifier", + "src": "3836:3:61" + }, + "nativeSrc": "3836:18:61", + "nodeType": "YulFunctionCall", + "src": "3836:18:61" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "3817:18:61", + "nodeType": "YulIdentifier", + "src": "3817:18:61" + }, + "nativeSrc": "3817:38:61", + "nodeType": "YulFunctionCall", + "src": "3817:38:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "3807:6:61", + "nodeType": "YulIdentifier", + "src": "3807:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_address", + "nativeSrc": "3607:254:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "3652:9:61", + "nodeType": "YulTypedName", + "src": "3652:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "3663:7:61", + "nodeType": "YulTypedName", + "src": "3663:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "3675:6:61", + "nodeType": "YulTypedName", + "src": "3675:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "3683:6:61", + "nodeType": "YulTypedName", + "src": "3683:6:61", + "type": "" + } + ], + "src": "3607:254:61" + }, + { + "body": { + "nativeSrc": "3967:76:61", + "nodeType": "YulBlock", + "src": "3967:76:61", + "statements": [ + { + "nativeSrc": "3977:26:61", + "nodeType": "YulAssignment", + "src": "3977:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3989:9:61", + "nodeType": "YulIdentifier", + "src": "3989:9:61" + }, + { + "kind": "number", + "nativeSrc": "4000:2:61", + "nodeType": "YulLiteral", + "src": "4000:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3985:3:61", + "nodeType": "YulIdentifier", + "src": "3985:3:61" + }, + "nativeSrc": "3985:18:61", + "nodeType": "YulFunctionCall", + "src": "3985:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "3977:4:61", + "nodeType": "YulIdentifier", + "src": "3977:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4019:9:61", + "nodeType": "YulIdentifier", + "src": "4019:9:61" + }, + { + "name": "value0", + "nativeSrc": "4030:6:61", + "nodeType": "YulIdentifier", + "src": "4030:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4012:6:61", + "nodeType": "YulIdentifier", + "src": "4012:6:61" + }, + "nativeSrc": "4012:25:61", + "nodeType": "YulFunctionCall", + "src": "4012:25:61" + }, + "nativeSrc": "4012:25:61", + "nodeType": "YulExpressionStatement", + "src": "4012:25:61" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nativeSrc": "3866:177:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "3936:9:61", + "nodeType": "YulTypedName", + "src": "3936:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "3947:6:61", + "nodeType": "YulTypedName", + "src": "3947:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "3958:4:61", + "nodeType": "YulTypedName", + "src": "3958:4:61", + "type": "" + } + ], + "src": "3866:177:61" + }, + { + "body": { + "nativeSrc": "4144:428:61", + "nodeType": "YulBlock", + "src": "4144:428:61", + "statements": [ + { + "body": { + "nativeSrc": "4190:16:61", + "nodeType": "YulBlock", + "src": "4190:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4199:1:61", + "nodeType": "YulLiteral", + "src": "4199:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "4202:1:61", + "nodeType": "YulLiteral", + "src": "4202:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "4192:6:61", + "nodeType": "YulIdentifier", + "src": "4192:6:61" + }, + "nativeSrc": "4192:12:61", + "nodeType": "YulFunctionCall", + "src": "4192:12:61" + }, + "nativeSrc": "4192:12:61", + "nodeType": "YulExpressionStatement", + "src": "4192:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "4165:7:61", + "nodeType": "YulIdentifier", + "src": "4165:7:61" + }, + { + "name": "headStart", + "nativeSrc": "4174:9:61", + "nodeType": "YulIdentifier", + "src": "4174:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "4161:3:61", + "nodeType": "YulIdentifier", + "src": "4161:3:61" + }, + "nativeSrc": "4161:23:61", + "nodeType": "YulFunctionCall", + "src": "4161:23:61" + }, + { + "kind": "number", + "nativeSrc": "4186:2:61", + "nodeType": "YulLiteral", + "src": "4186:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "4157:3:61", + "nodeType": "YulIdentifier", + "src": "4157:3:61" + }, + "nativeSrc": "4157:32:61", + "nodeType": "YulFunctionCall", + "src": "4157:32:61" + }, + "nativeSrc": "4154:52:61", + "nodeType": "YulIf", + "src": "4154:52:61" + }, + { + "nativeSrc": "4215:39:61", + "nodeType": "YulAssignment", + "src": "4215:39:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4244:9:61", + "nodeType": "YulIdentifier", + "src": "4244:9:61" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "4225:18:61", + "nodeType": "YulIdentifier", + "src": "4225:18:61" + }, + "nativeSrc": "4225:29:61", + "nodeType": "YulFunctionCall", + "src": "4225:29:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "4215:6:61", + "nodeType": "YulIdentifier", + "src": "4215:6:61" + } + ] + }, + { + "nativeSrc": "4263:46:61", + "nodeType": "YulVariableDeclaration", + "src": "4263:46:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4294:9:61", + "nodeType": "YulIdentifier", + "src": "4294:9:61" + }, + { + "kind": "number", + "nativeSrc": "4305:2:61", + "nodeType": "YulLiteral", + "src": "4305:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4290:3:61", + "nodeType": "YulIdentifier", + "src": "4290:3:61" + }, + "nativeSrc": "4290:18:61", + "nodeType": "YulFunctionCall", + "src": "4290:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "4277:12:61", + "nodeType": "YulIdentifier", + "src": "4277:12:61" + }, + "nativeSrc": "4277:32:61", + "nodeType": "YulFunctionCall", + "src": "4277:32:61" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "4267:6:61", + "nodeType": "YulTypedName", + "src": "4267:6:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "4352:16:61", + "nodeType": "YulBlock", + "src": "4352:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4361:1:61", + "nodeType": "YulLiteral", + "src": "4361:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "4364:1:61", + "nodeType": "YulLiteral", + "src": "4364:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "4354:6:61", + "nodeType": "YulIdentifier", + "src": "4354:6:61" + }, + "nativeSrc": "4354:12:61", + "nodeType": "YulFunctionCall", + "src": "4354:12:61" + }, + "nativeSrc": "4354:12:61", + "nodeType": "YulExpressionStatement", + "src": "4354:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "4324:6:61", + "nodeType": "YulIdentifier", + "src": "4324:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4340:2:61", + "nodeType": "YulLiteral", + "src": "4340:2:61", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "4344:1:61", + "nodeType": "YulLiteral", + "src": "4344:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "4336:3:61", + "nodeType": "YulIdentifier", + "src": "4336:3:61" + }, + "nativeSrc": "4336:10:61", + "nodeType": "YulFunctionCall", + "src": "4336:10:61" + }, + { + "kind": "number", + "nativeSrc": "4348:1:61", + "nodeType": "YulLiteral", + "src": "4348:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "4332:3:61", + "nodeType": "YulIdentifier", + "src": "4332:3:61" + }, + "nativeSrc": "4332:18:61", + "nodeType": "YulFunctionCall", + "src": "4332:18:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "4321:2:61", + "nodeType": "YulIdentifier", + "src": "4321:2:61" + }, + "nativeSrc": "4321:30:61", + "nodeType": "YulFunctionCall", + "src": "4321:30:61" + }, + "nativeSrc": "4318:50:61", + "nodeType": "YulIf", + "src": "4318:50:61" + }, + { + "nativeSrc": "4377:32:61", + "nodeType": "YulVariableDeclaration", + "src": "4377:32:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4391:9:61", + "nodeType": "YulIdentifier", + "src": "4391:9:61" + }, + { + "name": "offset", + "nativeSrc": "4402:6:61", + "nodeType": "YulIdentifier", + "src": "4402:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4387:3:61", + "nodeType": "YulIdentifier", + "src": "4387:3:61" + }, + "nativeSrc": "4387:22:61", + "nodeType": "YulFunctionCall", + "src": "4387:22:61" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "4381:2:61", + "nodeType": "YulTypedName", + "src": "4381:2:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "4457:16:61", + "nodeType": "YulBlock", + "src": "4457:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4466:1:61", + "nodeType": "YulLiteral", + "src": "4466:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "4469:1:61", + "nodeType": "YulLiteral", + "src": "4469:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "4459:6:61", + "nodeType": "YulIdentifier", + "src": "4459:6:61" + }, + "nativeSrc": "4459:12:61", + "nodeType": "YulFunctionCall", + "src": "4459:12:61" + }, + "nativeSrc": "4459:12:61", + "nodeType": "YulExpressionStatement", + "src": "4459:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nativeSrc": "4436:2:61", + "nodeType": "YulIdentifier", + "src": "4436:2:61" + }, + { + "kind": "number", + "nativeSrc": "4440:4:61", + "nodeType": "YulLiteral", + "src": "4440:4:61", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4432:3:61", + "nodeType": "YulIdentifier", + "src": "4432:3:61" + }, + "nativeSrc": "4432:13:61", + "nodeType": "YulFunctionCall", + "src": "4432:13:61" + }, + { + "name": "dataEnd", + "nativeSrc": "4447:7:61", + "nodeType": "YulIdentifier", + "src": "4447:7:61" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "4428:3:61", + "nodeType": "YulIdentifier", + "src": "4428:3:61" + }, + "nativeSrc": "4428:27:61", + "nodeType": "YulFunctionCall", + "src": "4428:27:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "4421:6:61", + "nodeType": "YulIdentifier", + "src": "4421:6:61" + }, + "nativeSrc": "4421:35:61", + "nodeType": "YulFunctionCall", + "src": "4421:35:61" + }, + "nativeSrc": "4418:55:61", + "nodeType": "YulIf", + "src": "4418:55:61" + }, + { + "nativeSrc": "4482:84:61", + "nodeType": "YulAssignment", + "src": "4482:84:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "_1", + "nativeSrc": "4531:2:61", + "nodeType": "YulIdentifier", + "src": "4531:2:61" + }, + { + "kind": "number", + "nativeSrc": "4535:2:61", + "nodeType": "YulLiteral", + "src": "4535:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4527:3:61", + "nodeType": "YulIdentifier", + "src": "4527:3:61" + }, + "nativeSrc": "4527:11:61", + "nodeType": "YulFunctionCall", + "src": "4527:11:61" + }, + { + "arguments": [ + { + "name": "_1", + "nativeSrc": "4553:2:61", + "nodeType": "YulIdentifier", + "src": "4553:2:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "4540:12:61", + "nodeType": "YulIdentifier", + "src": "4540:12:61" + }, + "nativeSrc": "4540:16:61", + "nodeType": "YulFunctionCall", + "src": "4540:16:61" + }, + { + "name": "dataEnd", + "nativeSrc": "4558:7:61", + "nodeType": "YulIdentifier", + "src": "4558:7:61" + } + ], + "functionName": { + "name": "abi_decode_available_length_string", + "nativeSrc": "4492:34:61", + "nodeType": "YulIdentifier", + "src": "4492:34:61" + }, + "nativeSrc": "4492:74:61", + "nodeType": "YulFunctionCall", + "src": "4492:74:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "4482:6:61", + "nodeType": "YulIdentifier", + "src": "4482:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_bytes_memory_ptr", + "nativeSrc": "4048:524:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "4102:9:61", + "nodeType": "YulTypedName", + "src": "4102:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "4113:7:61", + "nodeType": "YulTypedName", + "src": "4113:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "4125:6:61", + "nodeType": "YulTypedName", + "src": "4125:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "4133:6:61", + "nodeType": "YulTypedName", + "src": "4133:6:61", + "type": "" + } + ], + "src": "4048:524:61" + }, + { + "body": { + "nativeSrc": "4728:481:61", + "nodeType": "YulBlock", + "src": "4728:481:61", + "statements": [ + { + "nativeSrc": "4738:12:61", + "nodeType": "YulVariableDeclaration", + "src": "4738:12:61", + "value": { + "kind": "number", + "nativeSrc": "4748:2:61", + "nodeType": "YulLiteral", + "src": "4748:2:61", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "4742:2:61", + "nodeType": "YulTypedName", + "src": "4742:2:61", + "type": "" + } + ] + }, + { + "nativeSrc": "4759:32:61", + "nodeType": "YulVariableDeclaration", + "src": "4759:32:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4777:9:61", + "nodeType": "YulIdentifier", + "src": "4777:9:61" + }, + { + "kind": "number", + "nativeSrc": "4788:2:61", + "nodeType": "YulLiteral", + "src": "4788:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4773:3:61", + "nodeType": "YulIdentifier", + "src": "4773:3:61" + }, + "nativeSrc": "4773:18:61", + "nodeType": "YulFunctionCall", + "src": "4773:18:61" + }, + "variables": [ + { + "name": "tail_1", + "nativeSrc": "4763:6:61", + "nodeType": "YulTypedName", + "src": "4763:6:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4807:9:61", + "nodeType": "YulIdentifier", + "src": "4807:9:61" + }, + { + "kind": "number", + "nativeSrc": "4818:2:61", + "nodeType": "YulLiteral", + "src": "4818:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4800:6:61", + "nodeType": "YulIdentifier", + "src": "4800:6:61" + }, + "nativeSrc": "4800:21:61", + "nodeType": "YulFunctionCall", + "src": "4800:21:61" + }, + "nativeSrc": "4800:21:61", + "nodeType": "YulExpressionStatement", + "src": "4800:21:61" + }, + { + "nativeSrc": "4830:17:61", + "nodeType": "YulVariableDeclaration", + "src": "4830:17:61", + "value": { + "name": "tail_1", + "nativeSrc": "4841:6:61", + "nodeType": "YulIdentifier", + "src": "4841:6:61" + }, + "variables": [ + { + "name": "pos", + "nativeSrc": "4834:3:61", + "nodeType": "YulTypedName", + "src": "4834:3:61", + "type": "" + } + ] + }, + { + "nativeSrc": "4856:27:61", + "nodeType": "YulVariableDeclaration", + "src": "4856:27:61", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "4876:6:61", + "nodeType": "YulIdentifier", + "src": "4876:6:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "4870:5:61", + "nodeType": "YulIdentifier", + "src": "4870:5:61" + }, + "nativeSrc": "4870:13:61", + "nodeType": "YulFunctionCall", + "src": "4870:13:61" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "4860:6:61", + "nodeType": "YulTypedName", + "src": "4860:6:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "tail_1", + "nativeSrc": "4899:6:61", + "nodeType": "YulIdentifier", + "src": "4899:6:61" + }, + { + "name": "length", + "nativeSrc": "4907:6:61", + "nodeType": "YulIdentifier", + "src": "4907:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4892:6:61", + "nodeType": "YulIdentifier", + "src": "4892:6:61" + }, + "nativeSrc": "4892:22:61", + "nodeType": "YulFunctionCall", + "src": "4892:22:61" + }, + "nativeSrc": "4892:22:61", + "nodeType": "YulExpressionStatement", + "src": "4892:22:61" + }, + { + "nativeSrc": "4923:25:61", + "nodeType": "YulAssignment", + "src": "4923:25:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4934:9:61", + "nodeType": "YulIdentifier", + "src": "4934:9:61" + }, + { + "kind": "number", + "nativeSrc": "4945:2:61", + "nodeType": "YulLiteral", + "src": "4945:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4930:3:61", + "nodeType": "YulIdentifier", + "src": "4930:3:61" + }, + "nativeSrc": "4930:18:61", + "nodeType": "YulFunctionCall", + "src": "4930:18:61" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "4923:3:61", + "nodeType": "YulIdentifier", + "src": "4923:3:61" + } + ] + }, + { + "nativeSrc": "4957:29:61", + "nodeType": "YulVariableDeclaration", + "src": "4957:29:61", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "4975:6:61", + "nodeType": "YulIdentifier", + "src": "4975:6:61" + }, + { + "kind": "number", + "nativeSrc": "4983:2:61", + "nodeType": "YulLiteral", + "src": "4983:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4971:3:61", + "nodeType": "YulIdentifier", + "src": "4971:3:61" + }, + "nativeSrc": "4971:15:61", + "nodeType": "YulFunctionCall", + "src": "4971:15:61" + }, + "variables": [ + { + "name": "srcPtr", + "nativeSrc": "4961:6:61", + "nodeType": "YulTypedName", + "src": "4961:6:61", + "type": "" + } + ] + }, + { + "nativeSrc": "4995:10:61", + "nodeType": "YulVariableDeclaration", + "src": "4995:10:61", + "value": { + "kind": "number", + "nativeSrc": "5004:1:61", + "nodeType": "YulLiteral", + "src": "5004:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "4999:1:61", + "nodeType": "YulTypedName", + "src": "4999:1:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "5063:120:61", + "nodeType": "YulBlock", + "src": "5063:120:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "5084:3:61", + "nodeType": "YulIdentifier", + "src": "5084:3:61" + }, + { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "5095:6:61", + "nodeType": "YulIdentifier", + "src": "5095:6:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "5089:5:61", + "nodeType": "YulIdentifier", + "src": "5089:5:61" + }, + "nativeSrc": "5089:13:61", + "nodeType": "YulFunctionCall", + "src": "5089:13:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5077:6:61", + "nodeType": "YulIdentifier", + "src": "5077:6:61" + }, + "nativeSrc": "5077:26:61", + "nodeType": "YulFunctionCall", + "src": "5077:26:61" + }, + "nativeSrc": "5077:26:61", + "nodeType": "YulExpressionStatement", + "src": "5077:26:61" + }, + { + "nativeSrc": "5116:19:61", + "nodeType": "YulAssignment", + "src": "5116:19:61", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "5127:3:61", + "nodeType": "YulIdentifier", + "src": "5127:3:61" + }, + { + "name": "_1", + "nativeSrc": "5132:2:61", + "nodeType": "YulIdentifier", + "src": "5132:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5123:3:61", + "nodeType": "YulIdentifier", + "src": "5123:3:61" + }, + "nativeSrc": "5123:12:61", + "nodeType": "YulFunctionCall", + "src": "5123:12:61" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "5116:3:61", + "nodeType": "YulIdentifier", + "src": "5116:3:61" + } + ] + }, + { + "nativeSrc": "5148:25:61", + "nodeType": "YulAssignment", + "src": "5148:25:61", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "5162:6:61", + "nodeType": "YulIdentifier", + "src": "5162:6:61" + }, + { + "name": "_1", + "nativeSrc": "5170:2:61", + "nodeType": "YulIdentifier", + "src": "5170:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5158:3:61", + "nodeType": "YulIdentifier", + "src": "5158:3:61" + }, + "nativeSrc": "5158:15:61", + "nodeType": "YulFunctionCall", + "src": "5158:15:61" + }, + "variableNames": [ + { + "name": "srcPtr", + "nativeSrc": "5148:6:61", + "nodeType": "YulIdentifier", + "src": "5148:6:61" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "5025:1:61", + "nodeType": "YulIdentifier", + "src": "5025:1:61" + }, + { + "name": "length", + "nativeSrc": "5028:6:61", + "nodeType": "YulIdentifier", + "src": "5028:6:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "5022:2:61", + "nodeType": "YulIdentifier", + "src": "5022:2:61" + }, + "nativeSrc": "5022:13:61", + "nodeType": "YulFunctionCall", + "src": "5022:13:61" + }, + "nativeSrc": "5014:169:61", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "5036:18:61", + "nodeType": "YulBlock", + "src": "5036:18:61", + "statements": [ + { + "nativeSrc": "5038:14:61", + "nodeType": "YulAssignment", + "src": "5038:14:61", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "5047:1:61", + "nodeType": "YulIdentifier", + "src": "5047:1:61" + }, + { + "kind": "number", + "nativeSrc": "5050:1:61", + "nodeType": "YulLiteral", + "src": "5050:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5043:3:61", + "nodeType": "YulIdentifier", + "src": "5043:3:61" + }, + "nativeSrc": "5043:9:61", + "nodeType": "YulFunctionCall", + "src": "5043:9:61" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "5038:1:61", + "nodeType": "YulIdentifier", + "src": "5038:1:61" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "5018:3:61", + "nodeType": "YulBlock", + "src": "5018:3:61", + "statements": [] + }, + "src": "5014:169:61" + }, + { + "nativeSrc": "5192:11:61", + "nodeType": "YulAssignment", + "src": "5192:11:61", + "value": { + "name": "pos", + "nativeSrc": "5200:3:61", + "nodeType": "YulIdentifier", + "src": "5200:3:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "5192:4:61", + "nodeType": "YulIdentifier", + "src": "5192:4:61" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed", + "nativeSrc": "4577:632:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "4697:9:61", + "nodeType": "YulTypedName", + "src": "4697:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "4708:6:61", + "nodeType": "YulTypedName", + "src": "4708:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "4719:4:61", + "nodeType": "YulTypedName", + "src": "4719:4:61", + "type": "" + } + ], + "src": "4577:632:61" + }, + { + "body": { + "nativeSrc": "5301:161:61", + "nodeType": "YulBlock", + "src": "5301:161:61", + "statements": [ + { + "body": { + "nativeSrc": "5347:16:61", + "nodeType": "YulBlock", + "src": "5347:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5356:1:61", + "nodeType": "YulLiteral", + "src": "5356:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "5359:1:61", + "nodeType": "YulLiteral", + "src": "5359:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "5349:6:61", + "nodeType": "YulIdentifier", + "src": "5349:6:61" + }, + "nativeSrc": "5349:12:61", + "nodeType": "YulFunctionCall", + "src": "5349:12:61" + }, + "nativeSrc": "5349:12:61", + "nodeType": "YulExpressionStatement", + "src": "5349:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "5322:7:61", + "nodeType": "YulIdentifier", + "src": "5322:7:61" + }, + { + "name": "headStart", + "nativeSrc": "5331:9:61", + "nodeType": "YulIdentifier", + "src": "5331:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "5318:3:61", + "nodeType": "YulIdentifier", + "src": "5318:3:61" + }, + "nativeSrc": "5318:23:61", + "nodeType": "YulFunctionCall", + "src": "5318:23:61" + }, + { + "kind": "number", + "nativeSrc": "5343:2:61", + "nodeType": "YulLiteral", + "src": "5343:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "5314:3:61", + "nodeType": "YulIdentifier", + "src": "5314:3:61" + }, + "nativeSrc": "5314:32:61", + "nodeType": "YulFunctionCall", + "src": "5314:32:61" + }, + "nativeSrc": "5311:52:61", + "nodeType": "YulIf", + "src": "5311:52:61" + }, + { + "nativeSrc": "5372:33:61", + "nodeType": "YulAssignment", + "src": "5372:33:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5395:9:61", + "nodeType": "YulIdentifier", + "src": "5395:9:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "5382:12:61", + "nodeType": "YulIdentifier", + "src": "5382:12:61" + }, + "nativeSrc": "5382:23:61", + "nodeType": "YulFunctionCall", + "src": "5382:23:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "5372:6:61", + "nodeType": "YulIdentifier", + "src": "5372:6:61" + } + ] + }, + { + "nativeSrc": "5414:42:61", + "nodeType": "YulAssignment", + "src": "5414:42:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5441:9:61", + "nodeType": "YulIdentifier", + "src": "5441:9:61" + }, + { + "kind": "number", + "nativeSrc": "5452:2:61", + "nodeType": "YulLiteral", + "src": "5452:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5437:3:61", + "nodeType": "YulIdentifier", + "src": "5437:3:61" + }, + "nativeSrc": "5437:18:61", + "nodeType": "YulFunctionCall", + "src": "5437:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "5424:12:61", + "nodeType": "YulIdentifier", + "src": "5424:12:61" + }, + "nativeSrc": "5424:32:61", + "nodeType": "YulFunctionCall", + "src": "5424:32:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "5414:6:61", + "nodeType": "YulIdentifier", + "src": "5414:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32t_uint256", + "nativeSrc": "5214:248:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "5259:9:61", + "nodeType": "YulTypedName", + "src": "5259:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "5270:7:61", + "nodeType": "YulTypedName", + "src": "5270:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "5282:6:61", + "nodeType": "YulTypedName", + "src": "5282:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "5290:6:61", + "nodeType": "YulTypedName", + "src": "5290:6:61", + "type": "" + } + ], + "src": "5214:248:61" + }, + { + "body": { + "nativeSrc": "5622:398:61", + "nodeType": "YulBlock", + "src": "5622:398:61", + "statements": [ + { + "body": { + "nativeSrc": "5669:16:61", + "nodeType": "YulBlock", + "src": "5669:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5678:1:61", + "nodeType": "YulLiteral", + "src": "5678:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "5681:1:61", + "nodeType": "YulLiteral", + "src": "5681:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "5671:6:61", + "nodeType": "YulIdentifier", + "src": "5671:6:61" + }, + "nativeSrc": "5671:12:61", + "nodeType": "YulFunctionCall", + "src": "5671:12:61" + }, + "nativeSrc": "5671:12:61", + "nodeType": "YulExpressionStatement", + "src": "5671:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "5643:7:61", + "nodeType": "YulIdentifier", + "src": "5643:7:61" + }, + { + "name": "headStart", + "nativeSrc": "5652:9:61", + "nodeType": "YulIdentifier", + "src": "5652:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "5639:3:61", + "nodeType": "YulIdentifier", + "src": "5639:3:61" + }, + "nativeSrc": "5639:23:61", + "nodeType": "YulFunctionCall", + "src": "5639:23:61" + }, + { + "kind": "number", + "nativeSrc": "5664:3:61", + "nodeType": "YulLiteral", + "src": "5664:3:61", + "type": "", + "value": "192" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "5635:3:61", + "nodeType": "YulIdentifier", + "src": "5635:3:61" + }, + "nativeSrc": "5635:33:61", + "nodeType": "YulFunctionCall", + "src": "5635:33:61" + }, + "nativeSrc": "5632:53:61", + "nodeType": "YulIf", + "src": "5632:53:61" + }, + { + "nativeSrc": "5694:39:61", + "nodeType": "YulAssignment", + "src": "5694:39:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5723:9:61", + "nodeType": "YulIdentifier", + "src": "5723:9:61" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "5704:18:61", + "nodeType": "YulIdentifier", + "src": "5704:18:61" + }, + "nativeSrc": "5704:29:61", + "nodeType": "YulFunctionCall", + "src": "5704:29:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "5694:6:61", + "nodeType": "YulIdentifier", + "src": "5694:6:61" + } + ] + }, + { + "nativeSrc": "5742:48:61", + "nodeType": "YulAssignment", + "src": "5742:48:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5775:9:61", + "nodeType": "YulIdentifier", + "src": "5775:9:61" + }, + { + "kind": "number", + "nativeSrc": "5786:2:61", + "nodeType": "YulLiteral", + "src": "5786:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5771:3:61", + "nodeType": "YulIdentifier", + "src": "5771:3:61" + }, + "nativeSrc": "5771:18:61", + "nodeType": "YulFunctionCall", + "src": "5771:18:61" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "5752:18:61", + "nodeType": "YulIdentifier", + "src": "5752:18:61" + }, + "nativeSrc": "5752:38:61", + "nodeType": "YulFunctionCall", + "src": "5752:38:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "5742:6:61", + "nodeType": "YulIdentifier", + "src": "5742:6:61" + } + ] + }, + { + "nativeSrc": "5799:48:61", + "nodeType": "YulAssignment", + "src": "5799:48:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5832:9:61", + "nodeType": "YulIdentifier", + "src": "5832:9:61" + }, + { + "kind": "number", + "nativeSrc": "5843:2:61", + "nodeType": "YulLiteral", + "src": "5843:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5828:3:61", + "nodeType": "YulIdentifier", + "src": "5828:3:61" + }, + "nativeSrc": "5828:18:61", + "nodeType": "YulFunctionCall", + "src": "5828:18:61" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "5809:18:61", + "nodeType": "YulIdentifier", + "src": "5809:18:61" + }, + "nativeSrc": "5809:38:61", + "nodeType": "YulFunctionCall", + "src": "5809:38:61" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "5799:6:61", + "nodeType": "YulIdentifier", + "src": "5799:6:61" + } + ] + }, + { + "nativeSrc": "5856:48:61", + "nodeType": "YulAssignment", + "src": "5856:48:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5889:9:61", + "nodeType": "YulIdentifier", + "src": "5889:9:61" + }, + { + "kind": "number", + "nativeSrc": "5900:2:61", + "nodeType": "YulLiteral", + "src": "5900:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5885:3:61", + "nodeType": "YulIdentifier", + "src": "5885:3:61" + }, + "nativeSrc": "5885:18:61", + "nodeType": "YulFunctionCall", + "src": "5885:18:61" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "5866:18:61", + "nodeType": "YulIdentifier", + "src": "5866:18:61" + }, + "nativeSrc": "5866:38:61", + "nodeType": "YulFunctionCall", + "src": "5866:38:61" + }, + "variableNames": [ + { + "name": "value3", + "nativeSrc": "5856:6:61", + "nodeType": "YulIdentifier", + "src": "5856:6:61" + } + ] + }, + { + "nativeSrc": "5913:49:61", + "nodeType": "YulAssignment", + "src": "5913:49:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5946:9:61", + "nodeType": "YulIdentifier", + "src": "5946:9:61" + }, + { + "kind": "number", + "nativeSrc": "5957:3:61", + "nodeType": "YulLiteral", + "src": "5957:3:61", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5942:3:61", + "nodeType": "YulIdentifier", + "src": "5942:3:61" + }, + "nativeSrc": "5942:19:61", + "nodeType": "YulFunctionCall", + "src": "5942:19:61" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "5923:18:61", + "nodeType": "YulIdentifier", + "src": "5923:18:61" + }, + "nativeSrc": "5923:39:61", + "nodeType": "YulFunctionCall", + "src": "5923:39:61" + }, + "variableNames": [ + { + "name": "value4", + "nativeSrc": "5913:6:61", + "nodeType": "YulIdentifier", + "src": "5913:6:61" + } + ] + }, + { + "nativeSrc": "5971:43:61", + "nodeType": "YulAssignment", + "src": "5971:43:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5998:9:61", + "nodeType": "YulIdentifier", + "src": "5998:9:61" + }, + { + "kind": "number", + "nativeSrc": "6009:3:61", + "nodeType": "YulLiteral", + "src": "6009:3:61", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5994:3:61", + "nodeType": "YulIdentifier", + "src": "5994:3:61" + }, + "nativeSrc": "5994:19:61", + "nodeType": "YulFunctionCall", + "src": "5994:19:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "5981:12:61", + "nodeType": "YulIdentifier", + "src": "5981:12:61" + }, + "nativeSrc": "5981:33:61", + "nodeType": "YulFunctionCall", + "src": "5981:33:61" + }, + "variableNames": [ + { + "name": "value5", + "nativeSrc": "5971:6:61", + "nodeType": "YulIdentifier", + "src": "5971:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_addresst_addresst_addresst_uint256", + "nativeSrc": "5467:553:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "5548:9:61", + "nodeType": "YulTypedName", + "src": "5548:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "5559:7:61", + "nodeType": "YulTypedName", + "src": "5559:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "5571:6:61", + "nodeType": "YulTypedName", + "src": "5571:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "5579:6:61", + "nodeType": "YulTypedName", + "src": "5579:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "5587:6:61", + "nodeType": "YulTypedName", + "src": "5587:6:61", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "5595:6:61", + "nodeType": "YulTypedName", + "src": "5595:6:61", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "5603:6:61", + "nodeType": "YulTypedName", + "src": "5603:6:61", + "type": "" + }, + { + "name": "value5", + "nativeSrc": "5611:6:61", + "nodeType": "YulTypedName", + "src": "5611:6:61", + "type": "" + } + ], + "src": "5467:553:61" + }, + { + "body": { + "nativeSrc": "6176:507:61", + "nodeType": "YulBlock", + "src": "6176:507:61", + "statements": [ + { + "nativeSrc": "6186:12:61", + "nodeType": "YulVariableDeclaration", + "src": "6186:12:61", + "value": { + "kind": "number", + "nativeSrc": "6196:2:61", + "nodeType": "YulLiteral", + "src": "6196:2:61", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "6190:2:61", + "nodeType": "YulTypedName", + "src": "6190:2:61", + "type": "" + } + ] + }, + { + "nativeSrc": "6207:32:61", + "nodeType": "YulVariableDeclaration", + "src": "6207:32:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6225:9:61", + "nodeType": "YulIdentifier", + "src": "6225:9:61" + }, + { + "kind": "number", + "nativeSrc": "6236:2:61", + "nodeType": "YulLiteral", + "src": "6236:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6221:3:61", + "nodeType": "YulIdentifier", + "src": "6221:3:61" + }, + "nativeSrc": "6221:18:61", + "nodeType": "YulFunctionCall", + "src": "6221:18:61" + }, + "variables": [ + { + "name": "tail_1", + "nativeSrc": "6211:6:61", + "nodeType": "YulTypedName", + "src": "6211:6:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6255:9:61", + "nodeType": "YulIdentifier", + "src": "6255:9:61" + }, + { + "kind": "number", + "nativeSrc": "6266:2:61", + "nodeType": "YulLiteral", + "src": "6266:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6248:6:61", + "nodeType": "YulIdentifier", + "src": "6248:6:61" + }, + "nativeSrc": "6248:21:61", + "nodeType": "YulFunctionCall", + "src": "6248:21:61" + }, + "nativeSrc": "6248:21:61", + "nodeType": "YulExpressionStatement", + "src": "6248:21:61" + }, + { + "nativeSrc": "6278:17:61", + "nodeType": "YulVariableDeclaration", + "src": "6278:17:61", + "value": { + "name": "tail_1", + "nativeSrc": "6289:6:61", + "nodeType": "YulIdentifier", + "src": "6289:6:61" + }, + "variables": [ + { + "name": "pos", + "nativeSrc": "6282:3:61", + "nodeType": "YulTypedName", + "src": "6282:3:61", + "type": "" + } + ] + }, + { + "nativeSrc": "6304:27:61", + "nodeType": "YulVariableDeclaration", + "src": "6304:27:61", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "6324:6:61", + "nodeType": "YulIdentifier", + "src": "6324:6:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "6318:5:61", + "nodeType": "YulIdentifier", + "src": "6318:5:61" + }, + "nativeSrc": "6318:13:61", + "nodeType": "YulFunctionCall", + "src": "6318:13:61" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "6308:6:61", + "nodeType": "YulTypedName", + "src": "6308:6:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "tail_1", + "nativeSrc": "6347:6:61", + "nodeType": "YulIdentifier", + "src": "6347:6:61" + }, + { + "name": "length", + "nativeSrc": "6355:6:61", + "nodeType": "YulIdentifier", + "src": "6355:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6340:6:61", + "nodeType": "YulIdentifier", + "src": "6340:6:61" + }, + "nativeSrc": "6340:22:61", + "nodeType": "YulFunctionCall", + "src": "6340:22:61" + }, + "nativeSrc": "6340:22:61", + "nodeType": "YulExpressionStatement", + "src": "6340:22:61" + }, + { + "nativeSrc": "6371:25:61", + "nodeType": "YulAssignment", + "src": "6371:25:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6382:9:61", + "nodeType": "YulIdentifier", + "src": "6382:9:61" + }, + { + "kind": "number", + "nativeSrc": "6393:2:61", + "nodeType": "YulLiteral", + "src": "6393:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6378:3:61", + "nodeType": "YulIdentifier", + "src": "6378:3:61" + }, + "nativeSrc": "6378:18:61", + "nodeType": "YulFunctionCall", + "src": "6378:18:61" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "6371:3:61", + "nodeType": "YulIdentifier", + "src": "6371:3:61" + } + ] + }, + { + "nativeSrc": "6405:29:61", + "nodeType": "YulVariableDeclaration", + "src": "6405:29:61", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "6423:6:61", + "nodeType": "YulIdentifier", + "src": "6423:6:61" + }, + { + "kind": "number", + "nativeSrc": "6431:2:61", + "nodeType": "YulLiteral", + "src": "6431:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6419:3:61", + "nodeType": "YulIdentifier", + "src": "6419:3:61" + }, + "nativeSrc": "6419:15:61", + "nodeType": "YulFunctionCall", + "src": "6419:15:61" + }, + "variables": [ + { + "name": "srcPtr", + "nativeSrc": "6409:6:61", + "nodeType": "YulTypedName", + "src": "6409:6:61", + "type": "" + } + ] + }, + { + "nativeSrc": "6443:10:61", + "nodeType": "YulVariableDeclaration", + "src": "6443:10:61", + "value": { + "kind": "number", + "nativeSrc": "6452:1:61", + "nodeType": "YulLiteral", + "src": "6452:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "6447:1:61", + "nodeType": "YulTypedName", + "src": "6447:1:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "6511:146:61", + "nodeType": "YulBlock", + "src": "6511:146:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "6532:3:61", + "nodeType": "YulIdentifier", + "src": "6532:3:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "6547:6:61", + "nodeType": "YulIdentifier", + "src": "6547:6:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "6541:5:61", + "nodeType": "YulIdentifier", + "src": "6541:5:61" + }, + "nativeSrc": "6541:13:61", + "nodeType": "YulFunctionCall", + "src": "6541:13:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6564:3:61", + "nodeType": "YulLiteral", + "src": "6564:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "6569:1:61", + "nodeType": "YulLiteral", + "src": "6569:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "6560:3:61", + "nodeType": "YulIdentifier", + "src": "6560:3:61" + }, + "nativeSrc": "6560:11:61", + "nodeType": "YulFunctionCall", + "src": "6560:11:61" + }, + { + "kind": "number", + "nativeSrc": "6573:1:61", + "nodeType": "YulLiteral", + "src": "6573:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "6556:3:61", + "nodeType": "YulIdentifier", + "src": "6556:3:61" + }, + "nativeSrc": "6556:19:61", + "nodeType": "YulFunctionCall", + "src": "6556:19:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "6537:3:61", + "nodeType": "YulIdentifier", + "src": "6537:3:61" + }, + "nativeSrc": "6537:39:61", + "nodeType": "YulFunctionCall", + "src": "6537:39:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6525:6:61", + "nodeType": "YulIdentifier", + "src": "6525:6:61" + }, + "nativeSrc": "6525:52:61", + "nodeType": "YulFunctionCall", + "src": "6525:52:61" + }, + "nativeSrc": "6525:52:61", + "nodeType": "YulExpressionStatement", + "src": "6525:52:61" + }, + { + "nativeSrc": "6590:19:61", + "nodeType": "YulAssignment", + "src": "6590:19:61", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "6601:3:61", + "nodeType": "YulIdentifier", + "src": "6601:3:61" + }, + { + "name": "_1", + "nativeSrc": "6606:2:61", + "nodeType": "YulIdentifier", + "src": "6606:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6597:3:61", + "nodeType": "YulIdentifier", + "src": "6597:3:61" + }, + "nativeSrc": "6597:12:61", + "nodeType": "YulFunctionCall", + "src": "6597:12:61" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "6590:3:61", + "nodeType": "YulIdentifier", + "src": "6590:3:61" + } + ] + }, + { + "nativeSrc": "6622:25:61", + "nodeType": "YulAssignment", + "src": "6622:25:61", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "6636:6:61", + "nodeType": "YulIdentifier", + "src": "6636:6:61" + }, + { + "name": "_1", + "nativeSrc": "6644:2:61", + "nodeType": "YulIdentifier", + "src": "6644:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6632:3:61", + "nodeType": "YulIdentifier", + "src": "6632:3:61" + }, + "nativeSrc": "6632:15:61", + "nodeType": "YulFunctionCall", + "src": "6632:15:61" + }, + "variableNames": [ + { + "name": "srcPtr", + "nativeSrc": "6622:6:61", + "nodeType": "YulIdentifier", + "src": "6622:6:61" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "6473:1:61", + "nodeType": "YulIdentifier", + "src": "6473:1:61" + }, + { + "name": "length", + "nativeSrc": "6476:6:61", + "nodeType": "YulIdentifier", + "src": "6476:6:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "6470:2:61", + "nodeType": "YulIdentifier", + "src": "6470:2:61" + }, + "nativeSrc": "6470:13:61", + "nodeType": "YulFunctionCall", + "src": "6470:13:61" + }, + "nativeSrc": "6462:195:61", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "6484:18:61", + "nodeType": "YulBlock", + "src": "6484:18:61", + "statements": [ + { + "nativeSrc": "6486:14:61", + "nodeType": "YulAssignment", + "src": "6486:14:61", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "6495:1:61", + "nodeType": "YulIdentifier", + "src": "6495:1:61" + }, + { + "kind": "number", + "nativeSrc": "6498:1:61", + "nodeType": "YulLiteral", + "src": "6498:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6491:3:61", + "nodeType": "YulIdentifier", + "src": "6491:3:61" + }, + "nativeSrc": "6491:9:61", + "nodeType": "YulFunctionCall", + "src": "6491:9:61" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "6486:1:61", + "nodeType": "YulIdentifier", + "src": "6486:1:61" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "6466:3:61", + "nodeType": "YulBlock", + "src": "6466:3:61", + "statements": [] + }, + "src": "6462:195:61" + }, + { + "nativeSrc": "6666:11:61", + "nodeType": "YulAssignment", + "src": "6666:11:61", + "value": { + "name": "pos", + "nativeSrc": "6674:3:61", + "nodeType": "YulIdentifier", + "src": "6674:3:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "6666:4:61", + "nodeType": "YulIdentifier", + "src": "6666:4:61" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed", + "nativeSrc": "6025:658:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "6145:9:61", + "nodeType": "YulTypedName", + "src": "6145:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "6156:6:61", + "nodeType": "YulTypedName", + "src": "6156:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "6167:4:61", + "nodeType": "YulTypedName", + "src": "6167:4:61", + "type": "" + } + ], + "src": "6025:658:61" + }, + { + "body": { + "nativeSrc": "6859:632:61", + "nodeType": "YulBlock", + "src": "6859:632:61", + "statements": [ + { + "nativeSrc": "6869:12:61", + "nodeType": "YulVariableDeclaration", + "src": "6869:12:61", + "value": { + "kind": "number", + "nativeSrc": "6879:2:61", + "nodeType": "YulLiteral", + "src": "6879:2:61", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "6873:2:61", + "nodeType": "YulTypedName", + "src": "6873:2:61", + "type": "" + } + ] + }, + { + "nativeSrc": "6890:32:61", + "nodeType": "YulVariableDeclaration", + "src": "6890:32:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6908:9:61", + "nodeType": "YulIdentifier", + "src": "6908:9:61" + }, + { + "kind": "number", + "nativeSrc": "6919:2:61", + "nodeType": "YulLiteral", + "src": "6919:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6904:3:61", + "nodeType": "YulIdentifier", + "src": "6904:3:61" + }, + "nativeSrc": "6904:18:61", + "nodeType": "YulFunctionCall", + "src": "6904:18:61" + }, + "variables": [ + { + "name": "tail_1", + "nativeSrc": "6894:6:61", + "nodeType": "YulTypedName", + "src": "6894:6:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6938:9:61", + "nodeType": "YulIdentifier", + "src": "6938:9:61" + }, + { + "kind": "number", + "nativeSrc": "6949:2:61", + "nodeType": "YulLiteral", + "src": "6949:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6931:6:61", + "nodeType": "YulIdentifier", + "src": "6931:6:61" + }, + "nativeSrc": "6931:21:61", + "nodeType": "YulFunctionCall", + "src": "6931:21:61" + }, + "nativeSrc": "6931:21:61", + "nodeType": "YulExpressionStatement", + "src": "6931:21:61" + }, + { + "nativeSrc": "6961:17:61", + "nodeType": "YulVariableDeclaration", + "src": "6961:17:61", + "value": { + "name": "tail_1", + "nativeSrc": "6972:6:61", + "nodeType": "YulIdentifier", + "src": "6972:6:61" + }, + "variables": [ + { + "name": "pos", + "nativeSrc": "6965:3:61", + "nodeType": "YulTypedName", + "src": "6965:3:61", + "type": "" + } + ] + }, + { + "nativeSrc": "6987:27:61", + "nodeType": "YulVariableDeclaration", + "src": "6987:27:61", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "7007:6:61", + "nodeType": "YulIdentifier", + "src": "7007:6:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "7001:5:61", + "nodeType": "YulIdentifier", + "src": "7001:5:61" + }, + "nativeSrc": "7001:13:61", + "nodeType": "YulFunctionCall", + "src": "7001:13:61" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "6991:6:61", + "nodeType": "YulTypedName", + "src": "6991:6:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "tail_1", + "nativeSrc": "7030:6:61", + "nodeType": "YulIdentifier", + "src": "7030:6:61" + }, + { + "name": "length", + "nativeSrc": "7038:6:61", + "nodeType": "YulIdentifier", + "src": "7038:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7023:6:61", + "nodeType": "YulIdentifier", + "src": "7023:6:61" + }, + "nativeSrc": "7023:22:61", + "nodeType": "YulFunctionCall", + "src": "7023:22:61" + }, + "nativeSrc": "7023:22:61", + "nodeType": "YulExpressionStatement", + "src": "7023:22:61" + }, + { + "nativeSrc": "7054:25:61", + "nodeType": "YulAssignment", + "src": "7054:25:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7065:9:61", + "nodeType": "YulIdentifier", + "src": "7065:9:61" + }, + { + "kind": "number", + "nativeSrc": "7076:2:61", + "nodeType": "YulLiteral", + "src": "7076:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7061:3:61", + "nodeType": "YulIdentifier", + "src": "7061:3:61" + }, + "nativeSrc": "7061:18:61", + "nodeType": "YulFunctionCall", + "src": "7061:18:61" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "7054:3:61", + "nodeType": "YulIdentifier", + "src": "7054:3:61" + } + ] + }, + { + "nativeSrc": "7088:53:61", + "nodeType": "YulVariableDeclaration", + "src": "7088:53:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7110:9:61", + "nodeType": "YulIdentifier", + "src": "7110:9:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7125:1:61", + "nodeType": "YulLiteral", + "src": "7125:1:61", + "type": "", + "value": "5" + }, + { + "name": "length", + "nativeSrc": "7128:6:61", + "nodeType": "YulIdentifier", + "src": "7128:6:61" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "7121:3:61", + "nodeType": "YulIdentifier", + "src": "7121:3:61" + }, + "nativeSrc": "7121:14:61", + "nodeType": "YulFunctionCall", + "src": "7121:14:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7106:3:61", + "nodeType": "YulIdentifier", + "src": "7106:3:61" + }, + "nativeSrc": "7106:30:61", + "nodeType": "YulFunctionCall", + "src": "7106:30:61" + }, + { + "kind": "number", + "nativeSrc": "7138:2:61", + "nodeType": "YulLiteral", + "src": "7138:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7102:3:61", + "nodeType": "YulIdentifier", + "src": "7102:3:61" + }, + "nativeSrc": "7102:39:61", + "nodeType": "YulFunctionCall", + "src": "7102:39:61" + }, + "variables": [ + { + "name": "tail_2", + "nativeSrc": "7092:6:61", + "nodeType": "YulTypedName", + "src": "7092:6:61", + "type": "" + } + ] + }, + { + "nativeSrc": "7150:29:61", + "nodeType": "YulVariableDeclaration", + "src": "7150:29:61", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "7168:6:61", + "nodeType": "YulIdentifier", + "src": "7168:6:61" + }, + { + "kind": "number", + "nativeSrc": "7176:2:61", + "nodeType": "YulLiteral", + "src": "7176:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7164:3:61", + "nodeType": "YulIdentifier", + "src": "7164:3:61" + }, + "nativeSrc": "7164:15:61", + "nodeType": "YulFunctionCall", + "src": "7164:15:61" + }, + "variables": [ + { + "name": "srcPtr", + "nativeSrc": "7154:6:61", + "nodeType": "YulTypedName", + "src": "7154:6:61", + "type": "" + } + ] + }, + { + "nativeSrc": "7188:10:61", + "nodeType": "YulVariableDeclaration", + "src": "7188:10:61", + "value": { + "kind": "number", + "nativeSrc": "7197:1:61", + "nodeType": "YulLiteral", + "src": "7197:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "7192:1:61", + "nodeType": "YulTypedName", + "src": "7192:1:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "7256:206:61", + "nodeType": "YulBlock", + "src": "7256:206:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "7277:3:61", + "nodeType": "YulIdentifier", + "src": "7277:3:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "tail_2", + "nativeSrc": "7290:6:61", + "nodeType": "YulIdentifier", + "src": "7290:6:61" + }, + { + "name": "headStart", + "nativeSrc": "7298:9:61", + "nodeType": "YulIdentifier", + "src": "7298:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "7286:3:61", + "nodeType": "YulIdentifier", + "src": "7286:3:61" + }, + "nativeSrc": "7286:22:61", + "nodeType": "YulFunctionCall", + "src": "7286:22:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7314:2:61", + "nodeType": "YulLiteral", + "src": "7314:2:61", + "type": "", + "value": "63" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "7310:3:61", + "nodeType": "YulIdentifier", + "src": "7310:3:61" + }, + "nativeSrc": "7310:7:61", + "nodeType": "YulFunctionCall", + "src": "7310:7:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7282:3:61", + "nodeType": "YulIdentifier", + "src": "7282:3:61" + }, + "nativeSrc": "7282:36:61", + "nodeType": "YulFunctionCall", + "src": "7282:36:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "7270:6:61", + "nodeType": "YulIdentifier", + "src": "7270:6:61" + }, + "nativeSrc": "7270:49:61", + "nodeType": "YulFunctionCall", + "src": "7270:49:61" + }, + "nativeSrc": "7270:49:61", + "nodeType": "YulExpressionStatement", + "src": "7270:49:61" + }, + { + "nativeSrc": "7332:50:61", + "nodeType": "YulAssignment", + "src": "7332:50:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "7366:6:61", + "nodeType": "YulIdentifier", + "src": "7366:6:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "7360:5:61", + "nodeType": "YulIdentifier", + "src": "7360:5:61" + }, + "nativeSrc": "7360:13:61", + "nodeType": "YulFunctionCall", + "src": "7360:13:61" + }, + { + "name": "tail_2", + "nativeSrc": "7375:6:61", + "nodeType": "YulIdentifier", + "src": "7375:6:61" + } + ], + "functionName": { + "name": "abi_encode_string", + "nativeSrc": "7342:17:61", + "nodeType": "YulIdentifier", + "src": "7342:17:61" + }, + "nativeSrc": "7342:40:61", + "nodeType": "YulFunctionCall", + "src": "7342:40:61" + }, + "variableNames": [ + { + "name": "tail_2", + "nativeSrc": "7332:6:61", + "nodeType": "YulIdentifier", + "src": "7332:6:61" + } + ] + }, + { + "nativeSrc": "7395:25:61", + "nodeType": "YulAssignment", + "src": "7395:25:61", + "value": { + "arguments": [ + { + "name": "srcPtr", + "nativeSrc": "7409:6:61", + "nodeType": "YulIdentifier", + "src": "7409:6:61" + }, + { + "name": "_1", + "nativeSrc": "7417:2:61", + "nodeType": "YulIdentifier", + "src": "7417:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7405:3:61", + "nodeType": "YulIdentifier", + "src": "7405:3:61" + }, + "nativeSrc": "7405:15:61", + "nodeType": "YulFunctionCall", + "src": "7405:15:61" + }, + "variableNames": [ + { + "name": "srcPtr", + "nativeSrc": "7395:6:61", + "nodeType": "YulIdentifier", + "src": "7395:6:61" + } + ] + }, + { + "nativeSrc": "7433:19:61", + "nodeType": "YulAssignment", + "src": "7433:19:61", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "7444:3:61", + "nodeType": "YulIdentifier", + "src": "7444:3:61" + }, + { + "name": "_1", + "nativeSrc": "7449:2:61", + "nodeType": "YulIdentifier", + "src": "7449:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7440:3:61", + "nodeType": "YulIdentifier", + "src": "7440:3:61" + }, + "nativeSrc": "7440:12:61", + "nodeType": "YulFunctionCall", + "src": "7440:12:61" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "7433:3:61", + "nodeType": "YulIdentifier", + "src": "7433:3:61" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "7218:1:61", + "nodeType": "YulIdentifier", + "src": "7218:1:61" + }, + { + "name": "length", + "nativeSrc": "7221:6:61", + "nodeType": "YulIdentifier", + "src": "7221:6:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "7215:2:61", + "nodeType": "YulIdentifier", + "src": "7215:2:61" + }, + "nativeSrc": "7215:13:61", + "nodeType": "YulFunctionCall", + "src": "7215:13:61" + }, + "nativeSrc": "7207:255:61", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "7229:18:61", + "nodeType": "YulBlock", + "src": "7229:18:61", + "statements": [ + { + "nativeSrc": "7231:14:61", + "nodeType": "YulAssignment", + "src": "7231:14:61", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "7240:1:61", + "nodeType": "YulIdentifier", + "src": "7240:1:61" + }, + { + "kind": "number", + "nativeSrc": "7243:1:61", + "nodeType": "YulLiteral", + "src": "7243:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7236:3:61", + "nodeType": "YulIdentifier", + "src": "7236:3:61" + }, + "nativeSrc": "7236:9:61", + "nodeType": "YulFunctionCall", + "src": "7236:9:61" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "7231:1:61", + "nodeType": "YulIdentifier", + "src": "7231:1:61" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "7211:3:61", + "nodeType": "YulBlock", + "src": "7211:3:61", + "statements": [] + }, + "src": "7207:255:61" + }, + { + "nativeSrc": "7471:14:61", + "nodeType": "YulAssignment", + "src": "7471:14:61", + "value": { + "name": "tail_2", + "nativeSrc": "7479:6:61", + "nodeType": "YulIdentifier", + "src": "7479:6:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "7471:4:61", + "nodeType": "YulIdentifier", + "src": "7471:4:61" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_array$_t_string_memory_ptr_$dyn_memory_ptr__to_t_array$_t_string_memory_ptr_$dyn_memory_ptr__fromStack_reversed", + "nativeSrc": "6688:803:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "6828:9:61", + "nodeType": "YulTypedName", + "src": "6828:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "6839:6:61", + "nodeType": "YulTypedName", + "src": "6839:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "6850:4:61", + "nodeType": "YulTypedName", + "src": "6850:4:61", + "type": "" + } + ], + "src": "6688:803:61" + }, + { + "body": { + "nativeSrc": "7583:173:61", + "nodeType": "YulBlock", + "src": "7583:173:61", + "statements": [ + { + "body": { + "nativeSrc": "7629:16:61", + "nodeType": "YulBlock", + "src": "7629:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "7638:1:61", + "nodeType": "YulLiteral", + "src": "7638:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "7641:1:61", + "nodeType": "YulLiteral", + "src": "7641:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "7631:6:61", + "nodeType": "YulIdentifier", + "src": "7631:6:61" + }, + "nativeSrc": "7631:12:61", + "nodeType": "YulFunctionCall", + "src": "7631:12:61" + }, + "nativeSrc": "7631:12:61", + "nodeType": "YulExpressionStatement", + "src": "7631:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "7604:7:61", + "nodeType": "YulIdentifier", + "src": "7604:7:61" + }, + { + "name": "headStart", + "nativeSrc": "7613:9:61", + "nodeType": "YulIdentifier", + "src": "7613:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "7600:3:61", + "nodeType": "YulIdentifier", + "src": "7600:3:61" + }, + "nativeSrc": "7600:23:61", + "nodeType": "YulFunctionCall", + "src": "7600:23:61" + }, + { + "kind": "number", + "nativeSrc": "7625:2:61", + "nodeType": "YulLiteral", + "src": "7625:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "7596:3:61", + "nodeType": "YulIdentifier", + "src": "7596:3:61" + }, + "nativeSrc": "7596:32:61", + "nodeType": "YulFunctionCall", + "src": "7596:32:61" + }, + "nativeSrc": "7593:52:61", + "nodeType": "YulIf", + "src": "7593:52:61" + }, + { + "nativeSrc": "7654:39:61", + "nodeType": "YulAssignment", + "src": "7654:39:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7683:9:61", + "nodeType": "YulIdentifier", + "src": "7683:9:61" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "7664:18:61", + "nodeType": "YulIdentifier", + "src": "7664:18:61" + }, + "nativeSrc": "7664:29:61", + "nodeType": "YulFunctionCall", + "src": "7664:29:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "7654:6:61", + "nodeType": "YulIdentifier", + "src": "7654:6:61" + } + ] + }, + { + "nativeSrc": "7702:48:61", + "nodeType": "YulAssignment", + "src": "7702:48:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7735:9:61", + "nodeType": "YulIdentifier", + "src": "7735:9:61" + }, + { + "kind": "number", + "nativeSrc": "7746:2:61", + "nodeType": "YulLiteral", + "src": "7746:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7731:3:61", + "nodeType": "YulIdentifier", + "src": "7731:3:61" + }, + "nativeSrc": "7731:18:61", + "nodeType": "YulFunctionCall", + "src": "7731:18:61" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "7712:18:61", + "nodeType": "YulIdentifier", + "src": "7712:18:61" + }, + "nativeSrc": "7712:38:61", + "nodeType": "YulFunctionCall", + "src": "7712:38:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "7702:6:61", + "nodeType": "YulIdentifier", + "src": "7702:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_address", + "nativeSrc": "7496:260:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "7541:9:61", + "nodeType": "YulTypedName", + "src": "7541:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "7552:7:61", + "nodeType": "YulTypedName", + "src": "7552:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "7564:6:61", + "nodeType": "YulTypedName", + "src": "7564:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "7572:6:61", + "nodeType": "YulTypedName", + "src": "7572:6:61", + "type": "" + } + ], + "src": "7496:260:61" + }, + { + "body": { + "nativeSrc": "7900:150:61", + "nodeType": "YulBlock", + "src": "7900:150:61", + "statements": [ + { + "nativeSrc": "7910:27:61", + "nodeType": "YulVariableDeclaration", + "src": "7910:27:61", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "7930:6:61", + "nodeType": "YulIdentifier", + "src": "7930:6:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "7924:5:61", + "nodeType": "YulIdentifier", + "src": "7924:5:61" + }, + "nativeSrc": "7924:13:61", + "nodeType": "YulFunctionCall", + "src": "7924:13:61" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "7914:6:61", + "nodeType": "YulTypedName", + "src": "7914:6:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "7985:6:61", + "nodeType": "YulIdentifier", + "src": "7985:6:61" + }, + { + "kind": "number", + "nativeSrc": "7993:4:61", + "nodeType": "YulLiteral", + "src": "7993:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7981:3:61", + "nodeType": "YulIdentifier", + "src": "7981:3:61" + }, + "nativeSrc": "7981:17:61", + "nodeType": "YulFunctionCall", + "src": "7981:17:61" + }, + { + "name": "pos", + "nativeSrc": "8000:3:61", + "nodeType": "YulIdentifier", + "src": "8000:3:61" + }, + { + "name": "length", + "nativeSrc": "8005:6:61", + "nodeType": "YulIdentifier", + "src": "8005:6:61" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "7946:34:61", + "nodeType": "YulIdentifier", + "src": "7946:34:61" + }, + "nativeSrc": "7946:66:61", + "nodeType": "YulFunctionCall", + "src": "7946:66:61" + }, + "nativeSrc": "7946:66:61", + "nodeType": "YulExpressionStatement", + "src": "7946:66:61" + }, + { + "nativeSrc": "8021:23:61", + "nodeType": "YulAssignment", + "src": "8021:23:61", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "8032:3:61", + "nodeType": "YulIdentifier", + "src": "8032:3:61" + }, + { + "name": "length", + "nativeSrc": "8037:6:61", + "nodeType": "YulIdentifier", + "src": "8037:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8028:3:61", + "nodeType": "YulIdentifier", + "src": "8028:3:61" + }, + "nativeSrc": "8028:16:61", + "nodeType": "YulFunctionCall", + "src": "8028:16:61" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "8021:3:61", + "nodeType": "YulIdentifier", + "src": "8021:3:61" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nativeSrc": "7761:289:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "7876:3:61", + "nodeType": "YulTypedName", + "src": "7876:3:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "7881:6:61", + "nodeType": "YulTypedName", + "src": "7881:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "7892:3:61", + "nodeType": "YulTypedName", + "src": "7892:3:61", + "type": "" + } + ], + "src": "7761:289:61" + }, + { + "body": { + "nativeSrc": "8110:325:61", + "nodeType": "YulBlock", + "src": "8110:325:61", + "statements": [ + { + "nativeSrc": "8120:22:61", + "nodeType": "YulAssignment", + "src": "8120:22:61", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8134:1:61", + "nodeType": "YulLiteral", + "src": "8134:1:61", + "type": "", + "value": "1" + }, + { + "name": "data", + "nativeSrc": "8137:4:61", + "nodeType": "YulIdentifier", + "src": "8137:4:61" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "8130:3:61", + "nodeType": "YulIdentifier", + "src": "8130:3:61" + }, + "nativeSrc": "8130:12:61", + "nodeType": "YulFunctionCall", + "src": "8130:12:61" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "8120:6:61", + "nodeType": "YulIdentifier", + "src": "8120:6:61" + } + ] + }, + { + "nativeSrc": "8151:38:61", + "nodeType": "YulVariableDeclaration", + "src": "8151:38:61", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "8181:4:61", + "nodeType": "YulIdentifier", + "src": "8181:4:61" + }, + { + "kind": "number", + "nativeSrc": "8187:1:61", + "nodeType": "YulLiteral", + "src": "8187:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "8177:3:61", + "nodeType": "YulIdentifier", + "src": "8177:3:61" + }, + "nativeSrc": "8177:12:61", + "nodeType": "YulFunctionCall", + "src": "8177:12:61" + }, + "variables": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "8155:18:61", + "nodeType": "YulTypedName", + "src": "8155:18:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "8228:31:61", + "nodeType": "YulBlock", + "src": "8228:31:61", + "statements": [ + { + "nativeSrc": "8230:27:61", + "nodeType": "YulAssignment", + "src": "8230:27:61", + "value": { + "arguments": [ + { + "name": "length", + "nativeSrc": "8244:6:61", + "nodeType": "YulIdentifier", + "src": "8244:6:61" + }, + { + "kind": "number", + "nativeSrc": "8252:4:61", + "nodeType": "YulLiteral", + "src": "8252:4:61", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "8240:3:61", + "nodeType": "YulIdentifier", + "src": "8240:3:61" + }, + "nativeSrc": "8240:17:61", + "nodeType": "YulFunctionCall", + "src": "8240:17:61" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "8230:6:61", + "nodeType": "YulIdentifier", + "src": "8230:6:61" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "8208:18:61", + "nodeType": "YulIdentifier", + "src": "8208:18:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "8201:6:61", + "nodeType": "YulIdentifier", + "src": "8201:6:61" + }, + "nativeSrc": "8201:26:61", + "nodeType": "YulFunctionCall", + "src": "8201:26:61" + }, + "nativeSrc": "8198:61:61", + "nodeType": "YulIf", + "src": "8198:61:61" + }, + { + "body": { + "nativeSrc": "8318:111:61", + "nodeType": "YulBlock", + "src": "8318:111:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8339:1:61", + "nodeType": "YulLiteral", + "src": "8339:1:61", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8346:3:61", + "nodeType": "YulLiteral", + "src": "8346:3:61", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "8351:10:61", + "nodeType": "YulLiteral", + "src": "8351:10:61", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "8342:3:61", + "nodeType": "YulIdentifier", + "src": "8342:3:61" + }, + "nativeSrc": "8342:20:61", + "nodeType": "YulFunctionCall", + "src": "8342:20:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8332:6:61", + "nodeType": "YulIdentifier", + "src": "8332:6:61" + }, + "nativeSrc": "8332:31:61", + "nodeType": "YulFunctionCall", + "src": "8332:31:61" + }, + "nativeSrc": "8332:31:61", + "nodeType": "YulExpressionStatement", + "src": "8332:31:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8383:1:61", + "nodeType": "YulLiteral", + "src": "8383:1:61", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "8386:4:61", + "nodeType": "YulLiteral", + "src": "8386:4:61", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8376:6:61", + "nodeType": "YulIdentifier", + "src": "8376:6:61" + }, + "nativeSrc": "8376:15:61", + "nodeType": "YulFunctionCall", + "src": "8376:15:61" + }, + "nativeSrc": "8376:15:61", + "nodeType": "YulExpressionStatement", + "src": "8376:15:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8411:1:61", + "nodeType": "YulLiteral", + "src": "8411:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "8414:4:61", + "nodeType": "YulLiteral", + "src": "8414:4:61", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "8404:6:61", + "nodeType": "YulIdentifier", + "src": "8404:6:61" + }, + "nativeSrc": "8404:15:61", + "nodeType": "YulFunctionCall", + "src": "8404:15:61" + }, + "nativeSrc": "8404:15:61", + "nodeType": "YulExpressionStatement", + "src": "8404:15:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "8274:18:61", + "nodeType": "YulIdentifier", + "src": "8274:18:61" + }, + { + "arguments": [ + { + "name": "length", + "nativeSrc": "8297:6:61", + "nodeType": "YulIdentifier", + "src": "8297:6:61" + }, + { + "kind": "number", + "nativeSrc": "8305:2:61", + "nodeType": "YulLiteral", + "src": "8305:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "8294:2:61", + "nodeType": "YulIdentifier", + "src": "8294:2:61" + }, + "nativeSrc": "8294:14:61", + "nodeType": "YulFunctionCall", + "src": "8294:14:61" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "8271:2:61", + "nodeType": "YulIdentifier", + "src": "8271:2:61" + }, + "nativeSrc": "8271:38:61", + "nodeType": "YulFunctionCall", + "src": "8271:38:61" + }, + "nativeSrc": "8268:161:61", + "nodeType": "YulIf", + "src": "8268:161:61" + } + ] + }, + "name": "extract_byte_array_length", + "nativeSrc": "8055:380:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nativeSrc": "8090:4:61", + "nodeType": "YulTypedName", + "src": "8090:4:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nativeSrc": "8099:6:61", + "nodeType": "YulTypedName", + "src": "8099:6:61", + "type": "" + } + ], + "src": "8055:380:61" + }, + { + "body": { + "nativeSrc": "8548:101:61", + "nodeType": "YulBlock", + "src": "8548:101:61", + "statements": [ + { + "nativeSrc": "8558:26:61", + "nodeType": "YulAssignment", + "src": "8558:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8570:9:61", + "nodeType": "YulIdentifier", + "src": "8570:9:61" + }, + { + "kind": "number", + "nativeSrc": "8581:2:61", + "nodeType": "YulLiteral", + "src": "8581:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8566:3:61", + "nodeType": "YulIdentifier", + "src": "8566:3:61" + }, + "nativeSrc": "8566:18:61", + "nodeType": "YulFunctionCall", + "src": "8566:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "8558:4:61", + "nodeType": "YulIdentifier", + "src": "8558:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8600:9:61", + "nodeType": "YulIdentifier", + "src": "8600:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "8615:6:61", + "nodeType": "YulIdentifier", + "src": "8615:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8631:2:61", + "nodeType": "YulLiteral", + "src": "8631:2:61", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "8635:1:61", + "nodeType": "YulLiteral", + "src": "8635:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "8627:3:61", + "nodeType": "YulIdentifier", + "src": "8627:3:61" + }, + "nativeSrc": "8627:10:61", + "nodeType": "YulFunctionCall", + "src": "8627:10:61" + }, + { + "kind": "number", + "nativeSrc": "8639:1:61", + "nodeType": "YulLiteral", + "src": "8639:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "8623:3:61", + "nodeType": "YulIdentifier", + "src": "8623:3:61" + }, + "nativeSrc": "8623:18:61", + "nodeType": "YulFunctionCall", + "src": "8623:18:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "8611:3:61", + "nodeType": "YulIdentifier", + "src": "8611:3:61" + }, + "nativeSrc": "8611:31:61", + "nodeType": "YulFunctionCall", + "src": "8611:31:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8593:6:61", + "nodeType": "YulIdentifier", + "src": "8593:6:61" + }, + "nativeSrc": "8593:50:61", + "nodeType": "YulFunctionCall", + "src": "8593:50:61" + }, + "nativeSrc": "8593:50:61", + "nodeType": "YulExpressionStatement", + "src": "8593:50:61" + } + ] + }, + "name": "abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed", + "nativeSrc": "8440:209:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "8517:9:61", + "nodeType": "YulTypedName", + "src": "8517:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "8528:6:61", + "nodeType": "YulTypedName", + "src": "8528:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "8539:4:61", + "nodeType": "YulTypedName", + "src": "8539:4:61", + "type": "" + } + ], + "src": "8440:209:61" + }, + { + "body": { + "nativeSrc": "8686:95:61", + "nodeType": "YulBlock", + "src": "8686:95:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8703:1:61", + "nodeType": "YulLiteral", + "src": "8703:1:61", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8710:3:61", + "nodeType": "YulLiteral", + "src": "8710:3:61", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "8715:10:61", + "nodeType": "YulLiteral", + "src": "8715:10:61", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "8706:3:61", + "nodeType": "YulIdentifier", + "src": "8706:3:61" + }, + "nativeSrc": "8706:20:61", + "nodeType": "YulFunctionCall", + "src": "8706:20:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8696:6:61", + "nodeType": "YulIdentifier", + "src": "8696:6:61" + }, + "nativeSrc": "8696:31:61", + "nodeType": "YulFunctionCall", + "src": "8696:31:61" + }, + "nativeSrc": "8696:31:61", + "nodeType": "YulExpressionStatement", + "src": "8696:31:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8743:1:61", + "nodeType": "YulLiteral", + "src": "8743:1:61", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "8746:4:61", + "nodeType": "YulLiteral", + "src": "8746:4:61", + "type": "", + "value": "0x32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8736:6:61", + "nodeType": "YulIdentifier", + "src": "8736:6:61" + }, + "nativeSrc": "8736:15:61", + "nodeType": "YulFunctionCall", + "src": "8736:15:61" + }, + "nativeSrc": "8736:15:61", + "nodeType": "YulExpressionStatement", + "src": "8736:15:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8767:1:61", + "nodeType": "YulLiteral", + "src": "8767:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "8770:4:61", + "nodeType": "YulLiteral", + "src": "8770:4:61", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "8760:6:61", + "nodeType": "YulIdentifier", + "src": "8760:6:61" + }, + "nativeSrc": "8760:15:61", + "nodeType": "YulFunctionCall", + "src": "8760:15:61" + }, + "nativeSrc": "8760:15:61", + "nodeType": "YulExpressionStatement", + "src": "8760:15:61" + } + ] + }, + "name": "panic_error_0x32", + "nativeSrc": "8654:127:61", + "nodeType": "YulFunctionDefinition", + "src": "8654:127:61" + }, + { + "body": { + "nativeSrc": "8842:65:61", + "nodeType": "YulBlock", + "src": "8842:65:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8859:1:61", + "nodeType": "YulLiteral", + "src": "8859:1:61", + "type": "", + "value": "0" + }, + { + "name": "ptr", + "nativeSrc": "8862:3:61", + "nodeType": "YulIdentifier", + "src": "8862:3:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "8852:6:61", + "nodeType": "YulIdentifier", + "src": "8852:6:61" + }, + "nativeSrc": "8852:14:61", + "nodeType": "YulFunctionCall", + "src": "8852:14:61" + }, + "nativeSrc": "8852:14:61", + "nodeType": "YulExpressionStatement", + "src": "8852:14:61" + }, + { + "nativeSrc": "8875:26:61", + "nodeType": "YulAssignment", + "src": "8875:26:61", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8893:1:61", + "nodeType": "YulLiteral", + "src": "8893:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "8896:4:61", + "nodeType": "YulLiteral", + "src": "8896:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "8883:9:61", + "nodeType": "YulIdentifier", + "src": "8883:9:61" + }, + "nativeSrc": "8883:18:61", + "nodeType": "YulFunctionCall", + "src": "8883:18:61" + }, + "variableNames": [ + { + "name": "data", + "nativeSrc": "8875:4:61", + "nodeType": "YulIdentifier", + "src": "8875:4:61" + } + ] + } + ] + }, + "name": "array_dataslot_string_storage", + "nativeSrc": "8786:121:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "ptr", + "nativeSrc": "8825:3:61", + "nodeType": "YulTypedName", + "src": "8825:3:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "data", + "nativeSrc": "8833:4:61", + "nodeType": "YulTypedName", + "src": "8833:4:61", + "type": "" + } + ], + "src": "8786:121:61" + }, + { + "body": { + "nativeSrc": "8993:462:61", + "nodeType": "YulBlock", + "src": "8993:462:61", + "statements": [ + { + "body": { + "nativeSrc": "9026:423:61", + "nodeType": "YulBlock", + "src": "9026:423:61", + "statements": [ + { + "nativeSrc": "9040:11:61", + "nodeType": "YulVariableDeclaration", + "src": "9040:11:61", + "value": { + "kind": "number", + "nativeSrc": "9050:1:61", + "nodeType": "YulLiteral", + "src": "9050:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "9044:2:61", + "nodeType": "YulTypedName", + "src": "9044:2:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9071:1:61", + "nodeType": "YulLiteral", + "src": "9071:1:61", + "type": "", + "value": "0" + }, + { + "name": "array", + "nativeSrc": "9074:5:61", + "nodeType": "YulIdentifier", + "src": "9074:5:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9064:6:61", + "nodeType": "YulIdentifier", + "src": "9064:6:61" + }, + "nativeSrc": "9064:16:61", + "nodeType": "YulFunctionCall", + "src": "9064:16:61" + }, + "nativeSrc": "9064:16:61", + "nodeType": "YulExpressionStatement", + "src": "9064:16:61" + }, + { + "nativeSrc": "9093:30:61", + "nodeType": "YulVariableDeclaration", + "src": "9093:30:61", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9115:1:61", + "nodeType": "YulLiteral", + "src": "9115:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "9118:4:61", + "nodeType": "YulLiteral", + "src": "9118:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "9105:9:61", + "nodeType": "YulIdentifier", + "src": "9105:9:61" + }, + "nativeSrc": "9105:18:61", + "nodeType": "YulFunctionCall", + "src": "9105:18:61" + }, + "variables": [ + { + "name": "data", + "nativeSrc": "9097:4:61", + "nodeType": "YulTypedName", + "src": "9097:4:61", + "type": "" + } + ] + }, + { + "nativeSrc": "9136:57:61", + "nodeType": "YulVariableDeclaration", + "src": "9136:57:61", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "9159:4:61", + "nodeType": "YulIdentifier", + "src": "9159:4:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9169:1:61", + "nodeType": "YulLiteral", + "src": "9169:1:61", + "type": "", + "value": "5" + }, + { + "arguments": [ + { + "name": "startIndex", + "nativeSrc": "9176:10:61", + "nodeType": "YulIdentifier", + "src": "9176:10:61" + }, + { + "kind": "number", + "nativeSrc": "9188:2:61", + "nodeType": "YulLiteral", + "src": "9188:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9172:3:61", + "nodeType": "YulIdentifier", + "src": "9172:3:61" + }, + "nativeSrc": "9172:19:61", + "nodeType": "YulFunctionCall", + "src": "9172:19:61" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "9165:3:61", + "nodeType": "YulIdentifier", + "src": "9165:3:61" + }, + "nativeSrc": "9165:27:61", + "nodeType": "YulFunctionCall", + "src": "9165:27:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9155:3:61", + "nodeType": "YulIdentifier", + "src": "9155:3:61" + }, + "nativeSrc": "9155:38:61", + "nodeType": "YulFunctionCall", + "src": "9155:38:61" + }, + "variables": [ + { + "name": "deleteStart", + "nativeSrc": "9140:11:61", + "nodeType": "YulTypedName", + "src": "9140:11:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "9230:23:61", + "nodeType": "YulBlock", + "src": "9230:23:61", + "statements": [ + { + "nativeSrc": "9232:19:61", + "nodeType": "YulAssignment", + "src": "9232:19:61", + "value": { + "name": "data", + "nativeSrc": "9247:4:61", + "nodeType": "YulIdentifier", + "src": "9247:4:61" + }, + "variableNames": [ + { + "name": "deleteStart", + "nativeSrc": "9232:11:61", + "nodeType": "YulIdentifier", + "src": "9232:11:61" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "startIndex", + "nativeSrc": "9212:10:61", + "nodeType": "YulIdentifier", + "src": "9212:10:61" + }, + { + "kind": "number", + "nativeSrc": "9224:4:61", + "nodeType": "YulLiteral", + "src": "9224:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "9209:2:61", + "nodeType": "YulIdentifier", + "src": "9209:2:61" + }, + "nativeSrc": "9209:20:61", + "nodeType": "YulFunctionCall", + "src": "9209:20:61" + }, + "nativeSrc": "9206:47:61", + "nodeType": "YulIf", + "src": "9206:47:61" + }, + { + "nativeSrc": "9266:41:61", + "nodeType": "YulVariableDeclaration", + "src": "9266:41:61", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "9280:4:61", + "nodeType": "YulIdentifier", + "src": "9280:4:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9290:1:61", + "nodeType": "YulLiteral", + "src": "9290:1:61", + "type": "", + "value": "5" + }, + { + "arguments": [ + { + "name": "len", + "nativeSrc": "9297:3:61", + "nodeType": "YulIdentifier", + "src": "9297:3:61" + }, + { + "kind": "number", + "nativeSrc": "9302:2:61", + "nodeType": "YulLiteral", + "src": "9302:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9293:3:61", + "nodeType": "YulIdentifier", + "src": "9293:3:61" + }, + "nativeSrc": "9293:12:61", + "nodeType": "YulFunctionCall", + "src": "9293:12:61" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "9286:3:61", + "nodeType": "YulIdentifier", + "src": "9286:3:61" + }, + "nativeSrc": "9286:20:61", + "nodeType": "YulFunctionCall", + "src": "9286:20:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9276:3:61", + "nodeType": "YulIdentifier", + "src": "9276:3:61" + }, + "nativeSrc": "9276:31:61", + "nodeType": "YulFunctionCall", + "src": "9276:31:61" + }, + "variables": [ + { + "name": "_2", + "nativeSrc": "9270:2:61", + "nodeType": "YulTypedName", + "src": "9270:2:61", + "type": "" + } + ] + }, + { + "nativeSrc": "9320:24:61", + "nodeType": "YulVariableDeclaration", + "src": "9320:24:61", + "value": { + "name": "deleteStart", + "nativeSrc": "9333:11:61", + "nodeType": "YulIdentifier", + "src": "9333:11:61" + }, + "variables": [ + { + "name": "start", + "nativeSrc": "9324:5:61", + "nodeType": "YulTypedName", + "src": "9324:5:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "9418:21:61", + "nodeType": "YulBlock", + "src": "9418:21:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "start", + "nativeSrc": "9427:5:61", + "nodeType": "YulIdentifier", + "src": "9427:5:61" + }, + { + "name": "_1", + "nativeSrc": "9434:2:61", + "nodeType": "YulIdentifier", + "src": "9434:2:61" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "9420:6:61", + "nodeType": "YulIdentifier", + "src": "9420:6:61" + }, + "nativeSrc": "9420:17:61", + "nodeType": "YulFunctionCall", + "src": "9420:17:61" + }, + "nativeSrc": "9420:17:61", + "nodeType": "YulExpressionStatement", + "src": "9420:17:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "start", + "nativeSrc": "9368:5:61", + "nodeType": "YulIdentifier", + "src": "9368:5:61" + }, + { + "name": "_2", + "nativeSrc": "9375:2:61", + "nodeType": "YulIdentifier", + "src": "9375:2:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "9365:2:61", + "nodeType": "YulIdentifier", + "src": "9365:2:61" + }, + "nativeSrc": "9365:13:61", + "nodeType": "YulFunctionCall", + "src": "9365:13:61" + }, + "nativeSrc": "9357:82:61", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "9379:26:61", + "nodeType": "YulBlock", + "src": "9379:26:61", + "statements": [ + { + "nativeSrc": "9381:22:61", + "nodeType": "YulAssignment", + "src": "9381:22:61", + "value": { + "arguments": [ + { + "name": "start", + "nativeSrc": "9394:5:61", + "nodeType": "YulIdentifier", + "src": "9394:5:61" + }, + { + "kind": "number", + "nativeSrc": "9401:1:61", + "nodeType": "YulLiteral", + "src": "9401:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9390:3:61", + "nodeType": "YulIdentifier", + "src": "9390:3:61" + }, + "nativeSrc": "9390:13:61", + "nodeType": "YulFunctionCall", + "src": "9390:13:61" + }, + "variableNames": [ + { + "name": "start", + "nativeSrc": "9381:5:61", + "nodeType": "YulIdentifier", + "src": "9381:5:61" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "9361:3:61", + "nodeType": "YulBlock", + "src": "9361:3:61", + "statements": [] + }, + "src": "9357:82:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "len", + "nativeSrc": "9009:3:61", + "nodeType": "YulIdentifier", + "src": "9009:3:61" + }, + { + "kind": "number", + "nativeSrc": "9014:2:61", + "nodeType": "YulLiteral", + "src": "9014:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "9006:2:61", + "nodeType": "YulIdentifier", + "src": "9006:2:61" + }, + "nativeSrc": "9006:11:61", + "nodeType": "YulFunctionCall", + "src": "9006:11:61" + }, + "nativeSrc": "9003:446:61", + "nodeType": "YulIf", + "src": "9003:446:61" + } + ] + }, + "name": "clean_up_bytearray_end_slots_string_storage", + "nativeSrc": "8912:543:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "array", + "nativeSrc": "8965:5:61", + "nodeType": "YulTypedName", + "src": "8965:5:61", + "type": "" + }, + { + "name": "len", + "nativeSrc": "8972:3:61", + "nodeType": "YulTypedName", + "src": "8972:3:61", + "type": "" + }, + { + "name": "startIndex", + "nativeSrc": "8977:10:61", + "nodeType": "YulTypedName", + "src": "8977:10:61", + "type": "" + } + ], + "src": "8912:543:61" + }, + { + "body": { + "nativeSrc": "9545:81:61", + "nodeType": "YulBlock", + "src": "9545:81:61", + "statements": [ + { + "nativeSrc": "9555:65:61", + "nodeType": "YulAssignment", + "src": "9555:65:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "data", + "nativeSrc": "9570:4:61", + "nodeType": "YulIdentifier", + "src": "9570:4:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9588:1:61", + "nodeType": "YulLiteral", + "src": "9588:1:61", + "type": "", + "value": "3" + }, + { + "name": "len", + "nativeSrc": "9591:3:61", + "nodeType": "YulIdentifier", + "src": "9591:3:61" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "9584:3:61", + "nodeType": "YulIdentifier", + "src": "9584:3:61" + }, + "nativeSrc": "9584:11:61", + "nodeType": "YulFunctionCall", + "src": "9584:11:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9601:1:61", + "nodeType": "YulLiteral", + "src": "9601:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "9597:3:61", + "nodeType": "YulIdentifier", + "src": "9597:3:61" + }, + "nativeSrc": "9597:6:61", + "nodeType": "YulFunctionCall", + "src": "9597:6:61" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "9580:3:61", + "nodeType": "YulIdentifier", + "src": "9580:3:61" + }, + "nativeSrc": "9580:24:61", + "nodeType": "YulFunctionCall", + "src": "9580:24:61" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "9576:3:61", + "nodeType": "YulIdentifier", + "src": "9576:3:61" + }, + "nativeSrc": "9576:29:61", + "nodeType": "YulFunctionCall", + "src": "9576:29:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "9566:3:61", + "nodeType": "YulIdentifier", + "src": "9566:3:61" + }, + "nativeSrc": "9566:40:61", + "nodeType": "YulFunctionCall", + "src": "9566:40:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9612:1:61", + "nodeType": "YulLiteral", + "src": "9612:1:61", + "type": "", + "value": "1" + }, + { + "name": "len", + "nativeSrc": "9615:3:61", + "nodeType": "YulIdentifier", + "src": "9615:3:61" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "9608:3:61", + "nodeType": "YulIdentifier", + "src": "9608:3:61" + }, + "nativeSrc": "9608:11:61", + "nodeType": "YulFunctionCall", + "src": "9608:11:61" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "9563:2:61", + "nodeType": "YulIdentifier", + "src": "9563:2:61" + }, + "nativeSrc": "9563:57:61", + "nodeType": "YulFunctionCall", + "src": "9563:57:61" + }, + "variableNames": [ + { + "name": "used", + "nativeSrc": "9555:4:61", + "nodeType": "YulIdentifier", + "src": "9555:4:61" + } + ] + } + ] + }, + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nativeSrc": "9460:166:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nativeSrc": "9522:4:61", + "nodeType": "YulTypedName", + "src": "9522:4:61", + "type": "" + }, + { + "name": "len", + "nativeSrc": "9528:3:61", + "nodeType": "YulTypedName", + "src": "9528:3:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "used", + "nativeSrc": "9536:4:61", + "nodeType": "YulTypedName", + "src": "9536:4:61", + "type": "" + } + ], + "src": "9460:166:61" + }, + { + "body": { + "nativeSrc": "9727:1249:61", + "nodeType": "YulBlock", + "src": "9727:1249:61", + "statements": [ + { + "nativeSrc": "9737:24:61", + "nodeType": "YulVariableDeclaration", + "src": "9737:24:61", + "value": { + "arguments": [ + { + "name": "src", + "nativeSrc": "9757:3:61", + "nodeType": "YulIdentifier", + "src": "9757:3:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "9751:5:61", + "nodeType": "YulIdentifier", + "src": "9751:5:61" + }, + "nativeSrc": "9751:10:61", + "nodeType": "YulFunctionCall", + "src": "9751:10:61" + }, + "variables": [ + { + "name": "newLen", + "nativeSrc": "9741:6:61", + "nodeType": "YulTypedName", + "src": "9741:6:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "9804:22:61", + "nodeType": "YulBlock", + "src": "9804:22:61", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "9806:16:61", + "nodeType": "YulIdentifier", + "src": "9806:16:61" + }, + "nativeSrc": "9806:18:61", + "nodeType": "YulFunctionCall", + "src": "9806:18:61" + }, + "nativeSrc": "9806:18:61", + "nodeType": "YulExpressionStatement", + "src": "9806:18:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "9776:6:61", + "nodeType": "YulIdentifier", + "src": "9776:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "9792:2:61", + "nodeType": "YulLiteral", + "src": "9792:2:61", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "9796:1:61", + "nodeType": "YulLiteral", + "src": "9796:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "9788:3:61", + "nodeType": "YulIdentifier", + "src": "9788:3:61" + }, + "nativeSrc": "9788:10:61", + "nodeType": "YulFunctionCall", + "src": "9788:10:61" + }, + { + "kind": "number", + "nativeSrc": "9800:1:61", + "nodeType": "YulLiteral", + "src": "9800:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "9784:3:61", + "nodeType": "YulIdentifier", + "src": "9784:3:61" + }, + "nativeSrc": "9784:18:61", + "nodeType": "YulFunctionCall", + "src": "9784:18:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "9773:2:61", + "nodeType": "YulIdentifier", + "src": "9773:2:61" + }, + "nativeSrc": "9773:30:61", + "nodeType": "YulFunctionCall", + "src": "9773:30:61" + }, + "nativeSrc": "9770:56:61", + "nodeType": "YulIf", + "src": "9770:56:61" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "9879:4:61", + "nodeType": "YulIdentifier", + "src": "9879:4:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "slot", + "nativeSrc": "9917:4:61", + "nodeType": "YulIdentifier", + "src": "9917:4:61" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "9911:5:61", + "nodeType": "YulIdentifier", + "src": "9911:5:61" + }, + "nativeSrc": "9911:11:61", + "nodeType": "YulFunctionCall", + "src": "9911:11:61" + } + ], + "functionName": { + "name": "extract_byte_array_length", + "nativeSrc": "9885:25:61", + "nodeType": "YulIdentifier", + "src": "9885:25:61" + }, + "nativeSrc": "9885:38:61", + "nodeType": "YulFunctionCall", + "src": "9885:38:61" + }, + { + "name": "newLen", + "nativeSrc": "9925:6:61", + "nodeType": "YulIdentifier", + "src": "9925:6:61" + } + ], + "functionName": { + "name": "clean_up_bytearray_end_slots_string_storage", + "nativeSrc": "9835:43:61", + "nodeType": "YulIdentifier", + "src": "9835:43:61" + }, + "nativeSrc": "9835:97:61", + "nodeType": "YulFunctionCall", + "src": "9835:97:61" + }, + "nativeSrc": "9835:97:61", + "nodeType": "YulExpressionStatement", + "src": "9835:97:61" + }, + { + "nativeSrc": "9941:18:61", + "nodeType": "YulVariableDeclaration", + "src": "9941:18:61", + "value": { + "kind": "number", + "nativeSrc": "9958:1:61", + "nodeType": "YulLiteral", + "src": "9958:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "srcOffset", + "nativeSrc": "9945:9:61", + "nodeType": "YulTypedName", + "src": "9945:9:61", + "type": "" + } + ] + }, + { + "nativeSrc": "9968:23:61", + "nodeType": "YulVariableDeclaration", + "src": "9968:23:61", + "value": { + "kind": "number", + "nativeSrc": "9987:4:61", + "nodeType": "YulLiteral", + "src": "9987:4:61", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "srcOffset_1", + "nativeSrc": "9972:11:61", + "nodeType": "YulTypedName", + "src": "9972:11:61", + "type": "" + } + ] + }, + { + "nativeSrc": "10000:17:61", + "nodeType": "YulAssignment", + "src": "10000:17:61", + "value": { + "kind": "number", + "nativeSrc": "10013:4:61", + "nodeType": "YulLiteral", + "src": "10013:4:61", + "type": "", + "value": "0x20" + }, + "variableNames": [ + { + "name": "srcOffset", + "nativeSrc": "10000:9:61", + "nodeType": "YulIdentifier", + "src": "10000:9:61" + } + ] + }, + { + "cases": [ + { + "body": { + "nativeSrc": "10063:656:61", + "nodeType": "YulBlock", + "src": "10063:656:61", + "statements": [ + { + "nativeSrc": "10077:35:61", + "nodeType": "YulVariableDeclaration", + "src": "10077:35:61", + "value": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "10096:6:61", + "nodeType": "YulIdentifier", + "src": "10096:6:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10108:2:61", + "nodeType": "YulLiteral", + "src": "10108:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "10104:3:61", + "nodeType": "YulIdentifier", + "src": "10104:3:61" + }, + "nativeSrc": "10104:7:61", + "nodeType": "YulFunctionCall", + "src": "10104:7:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "10092:3:61", + "nodeType": "YulIdentifier", + "src": "10092:3:61" + }, + "nativeSrc": "10092:20:61", + "nodeType": "YulFunctionCall", + "src": "10092:20:61" + }, + "variables": [ + { + "name": "loopEnd", + "nativeSrc": "10081:7:61", + "nodeType": "YulTypedName", + "src": "10081:7:61", + "type": "" + } + ] + }, + { + "nativeSrc": "10125:49:61", + "nodeType": "YulVariableDeclaration", + "src": "10125:49:61", + "value": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "10169:4:61", + "nodeType": "YulIdentifier", + "src": "10169:4:61" + } + ], + "functionName": { + "name": "array_dataslot_string_storage", + "nativeSrc": "10139:29:61", + "nodeType": "YulIdentifier", + "src": "10139:29:61" + }, + "nativeSrc": "10139:35:61", + "nodeType": "YulFunctionCall", + "src": "10139:35:61" + }, + "variables": [ + { + "name": "dstPtr", + "nativeSrc": "10129:6:61", + "nodeType": "YulTypedName", + "src": "10129:6:61", + "type": "" + } + ] + }, + { + "nativeSrc": "10187:10:61", + "nodeType": "YulVariableDeclaration", + "src": "10187:10:61", + "value": { + "kind": "number", + "nativeSrc": "10196:1:61", + "nodeType": "YulLiteral", + "src": "10196:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "10191:1:61", + "nodeType": "YulTypedName", + "src": "10191:1:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "10274:172:61", + "nodeType": "YulBlock", + "src": "10274:172:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "10299:6:61", + "nodeType": "YulIdentifier", + "src": "10299:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "10317:3:61", + "nodeType": "YulIdentifier", + "src": "10317:3:61" + }, + { + "name": "srcOffset", + "nativeSrc": "10322:9:61", + "nodeType": "YulIdentifier", + "src": "10322:9:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10313:3:61", + "nodeType": "YulIdentifier", + "src": "10313:3:61" + }, + "nativeSrc": "10313:19:61", + "nodeType": "YulFunctionCall", + "src": "10313:19:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "10307:5:61", + "nodeType": "YulIdentifier", + "src": "10307:5:61" + }, + "nativeSrc": "10307:26:61", + "nodeType": "YulFunctionCall", + "src": "10307:26:61" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "10292:6:61", + "nodeType": "YulIdentifier", + "src": "10292:6:61" + }, + "nativeSrc": "10292:42:61", + "nodeType": "YulFunctionCall", + "src": "10292:42:61" + }, + "nativeSrc": "10292:42:61", + "nodeType": "YulExpressionStatement", + "src": "10292:42:61" + }, + { + "nativeSrc": "10351:24:61", + "nodeType": "YulAssignment", + "src": "10351:24:61", + "value": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "10365:6:61", + "nodeType": "YulIdentifier", + "src": "10365:6:61" + }, + { + "kind": "number", + "nativeSrc": "10373:1:61", + "nodeType": "YulLiteral", + "src": "10373:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10361:3:61", + "nodeType": "YulIdentifier", + "src": "10361:3:61" + }, + "nativeSrc": "10361:14:61", + "nodeType": "YulFunctionCall", + "src": "10361:14:61" + }, + "variableNames": [ + { + "name": "dstPtr", + "nativeSrc": "10351:6:61", + "nodeType": "YulIdentifier", + "src": "10351:6:61" + } + ] + }, + { + "nativeSrc": "10392:40:61", + "nodeType": "YulAssignment", + "src": "10392:40:61", + "value": { + "arguments": [ + { + "name": "srcOffset", + "nativeSrc": "10409:9:61", + "nodeType": "YulIdentifier", + "src": "10409:9:61" + }, + { + "name": "srcOffset_1", + "nativeSrc": "10420:11:61", + "nodeType": "YulIdentifier", + "src": "10420:11:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10405:3:61", + "nodeType": "YulIdentifier", + "src": "10405:3:61" + }, + "nativeSrc": "10405:27:61", + "nodeType": "YulFunctionCall", + "src": "10405:27:61" + }, + "variableNames": [ + { + "name": "srcOffset", + "nativeSrc": "10392:9:61", + "nodeType": "YulIdentifier", + "src": "10392:9:61" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "10221:1:61", + "nodeType": "YulIdentifier", + "src": "10221:1:61" + }, + { + "name": "loopEnd", + "nativeSrc": "10224:7:61", + "nodeType": "YulIdentifier", + "src": "10224:7:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "10218:2:61", + "nodeType": "YulIdentifier", + "src": "10218:2:61" + }, + "nativeSrc": "10218:14:61", + "nodeType": "YulFunctionCall", + "src": "10218:14:61" + }, + "nativeSrc": "10210:236:61", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "10233:28:61", + "nodeType": "YulBlock", + "src": "10233:28:61", + "statements": [ + { + "nativeSrc": "10235:24:61", + "nodeType": "YulAssignment", + "src": "10235:24:61", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "10244:1:61", + "nodeType": "YulIdentifier", + "src": "10244:1:61" + }, + { + "name": "srcOffset_1", + "nativeSrc": "10247:11:61", + "nodeType": "YulIdentifier", + "src": "10247:11:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10240:3:61", + "nodeType": "YulIdentifier", + "src": "10240:3:61" + }, + "nativeSrc": "10240:19:61", + "nodeType": "YulFunctionCall", + "src": "10240:19:61" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "10235:1:61", + "nodeType": "YulIdentifier", + "src": "10235:1:61" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "10214:3:61", + "nodeType": "YulBlock", + "src": "10214:3:61", + "statements": [] + }, + "src": "10210:236:61" + }, + { + "body": { + "nativeSrc": "10494:166:61", + "nodeType": "YulBlock", + "src": "10494:166:61", + "statements": [ + { + "nativeSrc": "10512:43:61", + "nodeType": "YulVariableDeclaration", + "src": "10512:43:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "10539:3:61", + "nodeType": "YulIdentifier", + "src": "10539:3:61" + }, + { + "name": "srcOffset", + "nativeSrc": "10544:9:61", + "nodeType": "YulIdentifier", + "src": "10544:9:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10535:3:61", + "nodeType": "YulIdentifier", + "src": "10535:3:61" + }, + "nativeSrc": "10535:19:61", + "nodeType": "YulFunctionCall", + "src": "10535:19:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "10529:5:61", + "nodeType": "YulIdentifier", + "src": "10529:5:61" + }, + "nativeSrc": "10529:26:61", + "nodeType": "YulFunctionCall", + "src": "10529:26:61" + }, + "variables": [ + { + "name": "lastValue", + "nativeSrc": "10516:9:61", + "nodeType": "YulTypedName", + "src": "10516:9:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "10579:6:61", + "nodeType": "YulIdentifier", + "src": "10579:6:61" + }, + { + "arguments": [ + { + "name": "lastValue", + "nativeSrc": "10591:9:61", + "nodeType": "YulIdentifier", + "src": "10591:9:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10618:1:61", + "nodeType": "YulLiteral", + "src": "10618:1:61", + "type": "", + "value": "3" + }, + { + "name": "newLen", + "nativeSrc": "10621:6:61", + "nodeType": "YulIdentifier", + "src": "10621:6:61" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "10614:3:61", + "nodeType": "YulIdentifier", + "src": "10614:3:61" + }, + "nativeSrc": "10614:14:61", + "nodeType": "YulFunctionCall", + "src": "10614:14:61" + }, + { + "kind": "number", + "nativeSrc": "10630:3:61", + "nodeType": "YulLiteral", + "src": "10630:3:61", + "type": "", + "value": "248" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "10610:3:61", + "nodeType": "YulIdentifier", + "src": "10610:3:61" + }, + "nativeSrc": "10610:24:61", + "nodeType": "YulFunctionCall", + "src": "10610:24:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10640:1:61", + "nodeType": "YulLiteral", + "src": "10640:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "10636:3:61", + "nodeType": "YulIdentifier", + "src": "10636:3:61" + }, + "nativeSrc": "10636:6:61", + "nodeType": "YulFunctionCall", + "src": "10636:6:61" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "10606:3:61", + "nodeType": "YulIdentifier", + "src": "10606:3:61" + }, + "nativeSrc": "10606:37:61", + "nodeType": "YulFunctionCall", + "src": "10606:37:61" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "10602:3:61", + "nodeType": "YulIdentifier", + "src": "10602:3:61" + }, + "nativeSrc": "10602:42:61", + "nodeType": "YulFunctionCall", + "src": "10602:42:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "10587:3:61", + "nodeType": "YulIdentifier", + "src": "10587:3:61" + }, + "nativeSrc": "10587:58:61", + "nodeType": "YulFunctionCall", + "src": "10587:58:61" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "10572:6:61", + "nodeType": "YulIdentifier", + "src": "10572:6:61" + }, + "nativeSrc": "10572:74:61", + "nodeType": "YulFunctionCall", + "src": "10572:74:61" + }, + "nativeSrc": "10572:74:61", + "nodeType": "YulExpressionStatement", + "src": "10572:74:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "loopEnd", + "nativeSrc": "10465:7:61", + "nodeType": "YulIdentifier", + "src": "10465:7:61" + }, + { + "name": "newLen", + "nativeSrc": "10474:6:61", + "nodeType": "YulIdentifier", + "src": "10474:6:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "10462:2:61", + "nodeType": "YulIdentifier", + "src": "10462:2:61" + }, + "nativeSrc": "10462:19:61", + "nodeType": "YulFunctionCall", + "src": "10462:19:61" + }, + "nativeSrc": "10459:201:61", + "nodeType": "YulIf", + "src": "10459:201:61" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "10680:4:61", + "nodeType": "YulIdentifier", + "src": "10680:4:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10694:1:61", + "nodeType": "YulLiteral", + "src": "10694:1:61", + "type": "", + "value": "1" + }, + { + "name": "newLen", + "nativeSrc": "10697:6:61", + "nodeType": "YulIdentifier", + "src": "10697:6:61" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "10690:3:61", + "nodeType": "YulIdentifier", + "src": "10690:3:61" + }, + "nativeSrc": "10690:14:61", + "nodeType": "YulFunctionCall", + "src": "10690:14:61" + }, + { + "kind": "number", + "nativeSrc": "10706:1:61", + "nodeType": "YulLiteral", + "src": "10706:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10686:3:61", + "nodeType": "YulIdentifier", + "src": "10686:3:61" + }, + "nativeSrc": "10686:22:61", + "nodeType": "YulFunctionCall", + "src": "10686:22:61" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "10673:6:61", + "nodeType": "YulIdentifier", + "src": "10673:6:61" + }, + "nativeSrc": "10673:36:61", + "nodeType": "YulFunctionCall", + "src": "10673:36:61" + }, + "nativeSrc": "10673:36:61", + "nodeType": "YulExpressionStatement", + "src": "10673:36:61" + } + ] + }, + "nativeSrc": "10056:663:61", + "nodeType": "YulCase", + "src": "10056:663:61", + "value": { + "kind": "number", + "nativeSrc": "10061:1:61", + "nodeType": "YulLiteral", + "src": "10061:1:61", + "type": "", + "value": "1" + } + }, + { + "body": { + "nativeSrc": "10736:234:61", + "nodeType": "YulBlock", + "src": "10736:234:61", + "statements": [ + { + "nativeSrc": "10750:14:61", + "nodeType": "YulVariableDeclaration", + "src": "10750:14:61", + "value": { + "kind": "number", + "nativeSrc": "10763:1:61", + "nodeType": "YulLiteral", + "src": "10763:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "10754:5:61", + "nodeType": "YulTypedName", + "src": "10754:5:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "10799:67:61", + "nodeType": "YulBlock", + "src": "10799:67:61", + "statements": [ + { + "nativeSrc": "10817:35:61", + "nodeType": "YulAssignment", + "src": "10817:35:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "10836:3:61", + "nodeType": "YulIdentifier", + "src": "10836:3:61" + }, + { + "name": "srcOffset", + "nativeSrc": "10841:9:61", + "nodeType": "YulIdentifier", + "src": "10841:9:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10832:3:61", + "nodeType": "YulIdentifier", + "src": "10832:3:61" + }, + "nativeSrc": "10832:19:61", + "nodeType": "YulFunctionCall", + "src": "10832:19:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "10826:5:61", + "nodeType": "YulIdentifier", + "src": "10826:5:61" + }, + "nativeSrc": "10826:26:61", + "nodeType": "YulFunctionCall", + "src": "10826:26:61" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "10817:5:61", + "nodeType": "YulIdentifier", + "src": "10817:5:61" + } + ] + } + ] + }, + "condition": { + "name": "newLen", + "nativeSrc": "10780:6:61", + "nodeType": "YulIdentifier", + "src": "10780:6:61" + }, + "nativeSrc": "10777:89:61", + "nodeType": "YulIf", + "src": "10777:89:61" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "10886:4:61", + "nodeType": "YulIdentifier", + "src": "10886:4:61" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "10945:5:61", + "nodeType": "YulIdentifier", + "src": "10945:5:61" + }, + { + "name": "newLen", + "nativeSrc": "10952:6:61", + "nodeType": "YulIdentifier", + "src": "10952:6:61" + } + ], + "functionName": { + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nativeSrc": "10892:52:61", + "nodeType": "YulIdentifier", + "src": "10892:52:61" + }, + "nativeSrc": "10892:67:61", + "nodeType": "YulFunctionCall", + "src": "10892:67:61" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "10879:6:61", + "nodeType": "YulIdentifier", + "src": "10879:6:61" + }, + "nativeSrc": "10879:81:61", + "nodeType": "YulFunctionCall", + "src": "10879:81:61" + }, + "nativeSrc": "10879:81:61", + "nodeType": "YulExpressionStatement", + "src": "10879:81:61" + } + ] + }, + "nativeSrc": "10728:242:61", + "nodeType": "YulCase", + "src": "10728:242:61", + "value": "default" + } + ], + "expression": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "10036:6:61", + "nodeType": "YulIdentifier", + "src": "10036:6:61" + }, + { + "kind": "number", + "nativeSrc": "10044:2:61", + "nodeType": "YulLiteral", + "src": "10044:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "10033:2:61", + "nodeType": "YulIdentifier", + "src": "10033:2:61" + }, + "nativeSrc": "10033:14:61", + "nodeType": "YulFunctionCall", + "src": "10033:14:61" + }, + "nativeSrc": "10026:944:61", + "nodeType": "YulSwitch", + "src": "10026:944:61" + } + ] + }, + "name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage", + "nativeSrc": "9631:1345:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "slot", + "nativeSrc": "9712:4:61", + "nodeType": "YulTypedName", + "src": "9712:4:61", + "type": "" + }, + { + "name": "src", + "nativeSrc": "9718:3:61", + "nodeType": "YulTypedName", + "src": "9718:3:61", + "type": "" + } + ], + "src": "9631:1345:61" + }, + { + "body": { + "nativeSrc": "11130:142:61", + "nodeType": "YulBlock", + "src": "11130:142:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11147:9:61", + "nodeType": "YulIdentifier", + "src": "11147:9:61" + }, + { + "kind": "number", + "nativeSrc": "11158:2:61", + "nodeType": "YulLiteral", + "src": "11158:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11140:6:61", + "nodeType": "YulIdentifier", + "src": "11140:6:61" + }, + "nativeSrc": "11140:21:61", + "nodeType": "YulFunctionCall", + "src": "11140:21:61" + }, + "nativeSrc": "11140:21:61", + "nodeType": "YulExpressionStatement", + "src": "11140:21:61" + }, + { + "nativeSrc": "11170:53:61", + "nodeType": "YulAssignment", + "src": "11170:53:61", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "11196:6:61", + "nodeType": "YulIdentifier", + "src": "11196:6:61" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11208:9:61", + "nodeType": "YulIdentifier", + "src": "11208:9:61" + }, + { + "kind": "number", + "nativeSrc": "11219:2:61", + "nodeType": "YulLiteral", + "src": "11219:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11204:3:61", + "nodeType": "YulIdentifier", + "src": "11204:3:61" + }, + "nativeSrc": "11204:18:61", + "nodeType": "YulFunctionCall", + "src": "11204:18:61" + } + ], + "functionName": { + "name": "abi_encode_string", + "nativeSrc": "11178:17:61", + "nodeType": "YulIdentifier", + "src": "11178:17:61" + }, + "nativeSrc": "11178:45:61", + "nodeType": "YulFunctionCall", + "src": "11178:45:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "11170:4:61", + "nodeType": "YulIdentifier", + "src": "11170:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11243:9:61", + "nodeType": "YulIdentifier", + "src": "11243:9:61" + }, + { + "kind": "number", + "nativeSrc": "11254:2:61", + "nodeType": "YulLiteral", + "src": "11254:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11239:3:61", + "nodeType": "YulIdentifier", + "src": "11239:3:61" + }, + "nativeSrc": "11239:18:61", + "nodeType": "YulFunctionCall", + "src": "11239:18:61" + }, + { + "name": "value1", + "nativeSrc": "11259:6:61", + "nodeType": "YulIdentifier", + "src": "11259:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11232:6:61", + "nodeType": "YulIdentifier", + "src": "11232:6:61" + }, + "nativeSrc": "11232:34:61", + "nodeType": "YulFunctionCall", + "src": "11232:34:61" + }, + "nativeSrc": "11232:34:61", + "nodeType": "YulExpressionStatement", + "src": "11232:34:61" + } + ] + }, + "name": "abi_encode_tuple_t_string_memory_ptr_t_bytes32__to_t_string_memory_ptr_t_bytes32__fromStack_reversed", + "nativeSrc": "10981:291:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "11091:9:61", + "nodeType": "YulTypedName", + "src": "11091:9:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "11102:6:61", + "nodeType": "YulTypedName", + "src": "11102:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "11110:6:61", + "nodeType": "YulTypedName", + "src": "11110:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "11121:4:61", + "nodeType": "YulTypedName", + "src": "11121:4:61", + "type": "" + } + ], + "src": "10981:291:61" + }, + { + "body": { + "nativeSrc": "11358:103:61", + "nodeType": "YulBlock", + "src": "11358:103:61", + "statements": [ + { + "body": { + "nativeSrc": "11404:16:61", + "nodeType": "YulBlock", + "src": "11404:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "11413:1:61", + "nodeType": "YulLiteral", + "src": "11413:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "11416:1:61", + "nodeType": "YulLiteral", + "src": "11416:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "11406:6:61", + "nodeType": "YulIdentifier", + "src": "11406:6:61" + }, + "nativeSrc": "11406:12:61", + "nodeType": "YulFunctionCall", + "src": "11406:12:61" + }, + "nativeSrc": "11406:12:61", + "nodeType": "YulExpressionStatement", + "src": "11406:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "11379:7:61", + "nodeType": "YulIdentifier", + "src": "11379:7:61" + }, + { + "name": "headStart", + "nativeSrc": "11388:9:61", + "nodeType": "YulIdentifier", + "src": "11388:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "11375:3:61", + "nodeType": "YulIdentifier", + "src": "11375:3:61" + }, + "nativeSrc": "11375:23:61", + "nodeType": "YulFunctionCall", + "src": "11375:23:61" + }, + { + "kind": "number", + "nativeSrc": "11400:2:61", + "nodeType": "YulLiteral", + "src": "11400:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "11371:3:61", + "nodeType": "YulIdentifier", + "src": "11371:3:61" + }, + "nativeSrc": "11371:32:61", + "nodeType": "YulFunctionCall", + "src": "11371:32:61" + }, + "nativeSrc": "11368:52:61", + "nodeType": "YulIf", + "src": "11368:52:61" + }, + { + "nativeSrc": "11429:26:61", + "nodeType": "YulAssignment", + "src": "11429:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11445:9:61", + "nodeType": "YulIdentifier", + "src": "11445:9:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "11439:5:61", + "nodeType": "YulIdentifier", + "src": "11439:5:61" + }, + "nativeSrc": "11439:16:61", + "nodeType": "YulFunctionCall", + "src": "11439:16:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "11429:6:61", + "nodeType": "YulIdentifier", + "src": "11429:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bytes32_fromMemory", + "nativeSrc": "11277:184:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "11324:9:61", + "nodeType": "YulTypedName", + "src": "11324:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "11335:7:61", + "nodeType": "YulTypedName", + "src": "11335:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "11347:6:61", + "nodeType": "YulTypedName", + "src": "11347:6:61", + "type": "" + } + ], + "src": "11277:184:61" + }, + { + "body": { + "nativeSrc": "11595:119:61", + "nodeType": "YulBlock", + "src": "11595:119:61", + "statements": [ + { + "nativeSrc": "11605:26:61", + "nodeType": "YulAssignment", + "src": "11605:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11617:9:61", + "nodeType": "YulIdentifier", + "src": "11617:9:61" + }, + { + "kind": "number", + "nativeSrc": "11628:2:61", + "nodeType": "YulLiteral", + "src": "11628:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11613:3:61", + "nodeType": "YulIdentifier", + "src": "11613:3:61" + }, + "nativeSrc": "11613:18:61", + "nodeType": "YulFunctionCall", + "src": "11613:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "11605:4:61", + "nodeType": "YulIdentifier", + "src": "11605:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11647:9:61", + "nodeType": "YulIdentifier", + "src": "11647:9:61" + }, + { + "name": "value0", + "nativeSrc": "11658:6:61", + "nodeType": "YulIdentifier", + "src": "11658:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11640:6:61", + "nodeType": "YulIdentifier", + "src": "11640:6:61" + }, + "nativeSrc": "11640:25:61", + "nodeType": "YulFunctionCall", + "src": "11640:25:61" + }, + "nativeSrc": "11640:25:61", + "nodeType": "YulExpressionStatement", + "src": "11640:25:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11685:9:61", + "nodeType": "YulIdentifier", + "src": "11685:9:61" + }, + { + "kind": "number", + "nativeSrc": "11696:2:61", + "nodeType": "YulLiteral", + "src": "11696:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11681:3:61", + "nodeType": "YulIdentifier", + "src": "11681:3:61" + }, + "nativeSrc": "11681:18:61", + "nodeType": "YulFunctionCall", + "src": "11681:18:61" + }, + { + "name": "value1", + "nativeSrc": "11701:6:61", + "nodeType": "YulIdentifier", + "src": "11701:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11674:6:61", + "nodeType": "YulIdentifier", + "src": "11674:6:61" + }, + "nativeSrc": "11674:34:61", + "nodeType": "YulFunctionCall", + "src": "11674:34:61" + }, + "nativeSrc": "11674:34:61", + "nodeType": "YulExpressionStatement", + "src": "11674:34:61" + } + ] + }, + "name": "abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed", + "nativeSrc": "11466:248:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "11556:9:61", + "nodeType": "YulTypedName", + "src": "11556:9:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "11567:6:61", + "nodeType": "YulTypedName", + "src": "11567:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "11575:6:61", + "nodeType": "YulTypedName", + "src": "11575:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "11586:4:61", + "nodeType": "YulTypedName", + "src": "11586:4:61", + "type": "" + } + ], + "src": "11466:248:61" + }, + { + "body": { + "nativeSrc": "11920:179:61", + "nodeType": "YulBlock", + "src": "11920:179:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11937:9:61", + "nodeType": "YulIdentifier", + "src": "11937:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "11952:6:61", + "nodeType": "YulIdentifier", + "src": "11952:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "11968:3:61", + "nodeType": "YulLiteral", + "src": "11968:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "11973:1:61", + "nodeType": "YulLiteral", + "src": "11973:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "11964:3:61", + "nodeType": "YulIdentifier", + "src": "11964:3:61" + }, + "nativeSrc": "11964:11:61", + "nodeType": "YulFunctionCall", + "src": "11964:11:61" + }, + { + "kind": "number", + "nativeSrc": "11977:1:61", + "nodeType": "YulLiteral", + "src": "11977:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "11960:3:61", + "nodeType": "YulIdentifier", + "src": "11960:3:61" + }, + "nativeSrc": "11960:19:61", + "nodeType": "YulFunctionCall", + "src": "11960:19:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "11948:3:61", + "nodeType": "YulIdentifier", + "src": "11948:3:61" + }, + "nativeSrc": "11948:32:61", + "nodeType": "YulFunctionCall", + "src": "11948:32:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11930:6:61", + "nodeType": "YulIdentifier", + "src": "11930:6:61" + }, + "nativeSrc": "11930:51:61", + "nodeType": "YulFunctionCall", + "src": "11930:51:61" + }, + "nativeSrc": "11930:51:61", + "nodeType": "YulExpressionStatement", + "src": "11930:51:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12001:9:61", + "nodeType": "YulIdentifier", + "src": "12001:9:61" + }, + { + "kind": "number", + "nativeSrc": "12012:2:61", + "nodeType": "YulLiteral", + "src": "12012:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11997:3:61", + "nodeType": "YulIdentifier", + "src": "11997:3:61" + }, + "nativeSrc": "11997:18:61", + "nodeType": "YulFunctionCall", + "src": "11997:18:61" + }, + { + "kind": "number", + "nativeSrc": "12017:2:61", + "nodeType": "YulLiteral", + "src": "12017:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11990:6:61", + "nodeType": "YulIdentifier", + "src": "11990:6:61" + }, + "nativeSrc": "11990:30:61", + "nodeType": "YulFunctionCall", + "src": "11990:30:61" + }, + "nativeSrc": "11990:30:61", + "nodeType": "YulExpressionStatement", + "src": "11990:30:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12040:9:61", + "nodeType": "YulIdentifier", + "src": "12040:9:61" + }, + { + "kind": "number", + "nativeSrc": "12051:2:61", + "nodeType": "YulLiteral", + "src": "12051:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12036:3:61", + "nodeType": "YulIdentifier", + "src": "12036:3:61" + }, + "nativeSrc": "12036:18:61", + "nodeType": "YulFunctionCall", + "src": "12036:18:61" + }, + { + "kind": "number", + "nativeSrc": "12056:1:61", + "nodeType": "YulLiteral", + "src": "12056:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12029:6:61", + "nodeType": "YulIdentifier", + "src": "12029:6:61" + }, + "nativeSrc": "12029:29:61", + "nodeType": "YulFunctionCall", + "src": "12029:29:61" + }, + "nativeSrc": "12029:29:61", + "nodeType": "YulExpressionStatement", + "src": "12029:29:61" + }, + { + "nativeSrc": "12067:26:61", + "nodeType": "YulAssignment", + "src": "12067:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12079:9:61", + "nodeType": "YulIdentifier", + "src": "12079:9:61" + }, + { + "kind": "number", + "nativeSrc": "12090:2:61", + "nodeType": "YulLiteral", + "src": "12090:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12075:3:61", + "nodeType": "YulIdentifier", + "src": "12075:3:61" + }, + "nativeSrc": "12075:18:61", + "nodeType": "YulFunctionCall", + "src": "12075:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "12067:4:61", + "nodeType": "YulIdentifier", + "src": "12067:4:61" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_address_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_bytes_memory_ptr__fromStack_reversed", + "nativeSrc": "11719:380:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "11889:9:61", + "nodeType": "YulTypedName", + "src": "11889:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "11900:6:61", + "nodeType": "YulTypedName", + "src": "11900:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "11911:4:61", + "nodeType": "YulTypedName", + "src": "11911:4:61", + "type": "" + } + ], + "src": "11719:380:61" + }, + { + "body": { + "nativeSrc": "12317:324:61", + "nodeType": "YulBlock", + "src": "12317:324:61", + "statements": [ + { + "nativeSrc": "12327:27:61", + "nodeType": "YulAssignment", + "src": "12327:27:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12339:9:61", + "nodeType": "YulIdentifier", + "src": "12339:9:61" + }, + { + "kind": "number", + "nativeSrc": "12350:3:61", + "nodeType": "YulLiteral", + "src": "12350:3:61", + "type": "", + "value": "160" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12335:3:61", + "nodeType": "YulIdentifier", + "src": "12335:3:61" + }, + "nativeSrc": "12335:19:61", + "nodeType": "YulFunctionCall", + "src": "12335:19:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "12327:4:61", + "nodeType": "YulIdentifier", + "src": "12327:4:61" + } + ] + }, + { + "nativeSrc": "12363:29:61", + "nodeType": "YulVariableDeclaration", + "src": "12363:29:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12381:3:61", + "nodeType": "YulLiteral", + "src": "12381:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "12386:1:61", + "nodeType": "YulLiteral", + "src": "12386:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "12377:3:61", + "nodeType": "YulIdentifier", + "src": "12377:3:61" + }, + "nativeSrc": "12377:11:61", + "nodeType": "YulFunctionCall", + "src": "12377:11:61" + }, + { + "kind": "number", + "nativeSrc": "12390:1:61", + "nodeType": "YulLiteral", + "src": "12390:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "12373:3:61", + "nodeType": "YulIdentifier", + "src": "12373:3:61" + }, + "nativeSrc": "12373:19:61", + "nodeType": "YulFunctionCall", + "src": "12373:19:61" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "12367:2:61", + "nodeType": "YulTypedName", + "src": "12367:2:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12408:9:61", + "nodeType": "YulIdentifier", + "src": "12408:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "12423:6:61", + "nodeType": "YulIdentifier", + "src": "12423:6:61" + }, + { + "name": "_1", + "nativeSrc": "12431:2:61", + "nodeType": "YulIdentifier", + "src": "12431:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "12419:3:61", + "nodeType": "YulIdentifier", + "src": "12419:3:61" + }, + "nativeSrc": "12419:15:61", + "nodeType": "YulFunctionCall", + "src": "12419:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12401:6:61", + "nodeType": "YulIdentifier", + "src": "12401:6:61" + }, + "nativeSrc": "12401:34:61", + "nodeType": "YulFunctionCall", + "src": "12401:34:61" + }, + "nativeSrc": "12401:34:61", + "nodeType": "YulExpressionStatement", + "src": "12401:34:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12455:9:61", + "nodeType": "YulIdentifier", + "src": "12455:9:61" + }, + { + "kind": "number", + "nativeSrc": "12466:2:61", + "nodeType": "YulLiteral", + "src": "12466:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12451:3:61", + "nodeType": "YulIdentifier", + "src": "12451:3:61" + }, + "nativeSrc": "12451:18:61", + "nodeType": "YulFunctionCall", + "src": "12451:18:61" + }, + { + "arguments": [ + { + "name": "value1", + "nativeSrc": "12475:6:61", + "nodeType": "YulIdentifier", + "src": "12475:6:61" + }, + { + "name": "_1", + "nativeSrc": "12483:2:61", + "nodeType": "YulIdentifier", + "src": "12483:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "12471:3:61", + "nodeType": "YulIdentifier", + "src": "12471:3:61" + }, + "nativeSrc": "12471:15:61", + "nodeType": "YulFunctionCall", + "src": "12471:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12444:6:61", + "nodeType": "YulIdentifier", + "src": "12444:6:61" + }, + "nativeSrc": "12444:43:61", + "nodeType": "YulFunctionCall", + "src": "12444:43:61" + }, + "nativeSrc": "12444:43:61", + "nodeType": "YulExpressionStatement", + "src": "12444:43:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12507:9:61", + "nodeType": "YulIdentifier", + "src": "12507:9:61" + }, + { + "kind": "number", + "nativeSrc": "12518:2:61", + "nodeType": "YulLiteral", + "src": "12518:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12503:3:61", + "nodeType": "YulIdentifier", + "src": "12503:3:61" + }, + "nativeSrc": "12503:18:61", + "nodeType": "YulFunctionCall", + "src": "12503:18:61" + }, + { + "name": "value2", + "nativeSrc": "12523:6:61", + "nodeType": "YulIdentifier", + "src": "12523:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12496:6:61", + "nodeType": "YulIdentifier", + "src": "12496:6:61" + }, + "nativeSrc": "12496:34:61", + "nodeType": "YulFunctionCall", + "src": "12496:34:61" + }, + "nativeSrc": "12496:34:61", + "nodeType": "YulExpressionStatement", + "src": "12496:34:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12550:9:61", + "nodeType": "YulIdentifier", + "src": "12550:9:61" + }, + { + "kind": "number", + "nativeSrc": "12561:2:61", + "nodeType": "YulLiteral", + "src": "12561:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12546:3:61", + "nodeType": "YulIdentifier", + "src": "12546:3:61" + }, + "nativeSrc": "12546:18:61", + "nodeType": "YulFunctionCall", + "src": "12546:18:61" + }, + { + "arguments": [ + { + "name": "value3", + "nativeSrc": "12570:6:61", + "nodeType": "YulIdentifier", + "src": "12570:6:61" + }, + { + "name": "_1", + "nativeSrc": "12578:2:61", + "nodeType": "YulIdentifier", + "src": "12578:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "12566:3:61", + "nodeType": "YulIdentifier", + "src": "12566:3:61" + }, + "nativeSrc": "12566:15:61", + "nodeType": "YulFunctionCall", + "src": "12566:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12539:6:61", + "nodeType": "YulIdentifier", + "src": "12539:6:61" + }, + "nativeSrc": "12539:43:61", + "nodeType": "YulFunctionCall", + "src": "12539:43:61" + }, + "nativeSrc": "12539:43:61", + "nodeType": "YulExpressionStatement", + "src": "12539:43:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12602:9:61", + "nodeType": "YulIdentifier", + "src": "12602:9:61" + }, + { + "kind": "number", + "nativeSrc": "12613:3:61", + "nodeType": "YulLiteral", + "src": "12613:3:61", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12598:3:61", + "nodeType": "YulIdentifier", + "src": "12598:3:61" + }, + "nativeSrc": "12598:19:61", + "nodeType": "YulFunctionCall", + "src": "12598:19:61" + }, + { + "arguments": [ + { + "name": "value4", + "nativeSrc": "12623:6:61", + "nodeType": "YulIdentifier", + "src": "12623:6:61" + }, + { + "name": "_1", + "nativeSrc": "12631:2:61", + "nodeType": "YulIdentifier", + "src": "12631:2:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "12619:3:61", + "nodeType": "YulIdentifier", + "src": "12619:3:61" + }, + "nativeSrc": "12619:15:61", + "nodeType": "YulFunctionCall", + "src": "12619:15:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12591:6:61", + "nodeType": "YulIdentifier", + "src": "12591:6:61" + }, + "nativeSrc": "12591:44:61", + "nodeType": "YulFunctionCall", + "src": "12591:44:61" + }, + "nativeSrc": "12591:44:61", + "nodeType": "YulExpressionStatement", + "src": "12591:44:61" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_address_t_uint256_t_address_t_address__to_t_address_t_address_t_uint256_t_address_t_address__fromStack_reversed", + "nativeSrc": "12104:537:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "12254:9:61", + "nodeType": "YulTypedName", + "src": "12254:9:61", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "12265:6:61", + "nodeType": "YulTypedName", + "src": "12265:6:61", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "12273:6:61", + "nodeType": "YulTypedName", + "src": "12273:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "12281:6:61", + "nodeType": "YulTypedName", + "src": "12281:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "12289:6:61", + "nodeType": "YulTypedName", + "src": "12289:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "12297:6:61", + "nodeType": "YulTypedName", + "src": "12297:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "12308:4:61", + "nodeType": "YulTypedName", + "src": "12308:4:61", + "type": "" + } + ], + "src": "12104:537:61" + }, + { + "body": { + "nativeSrc": "12775:145:61", + "nodeType": "YulBlock", + "src": "12775:145:61", + "statements": [ + { + "nativeSrc": "12785:26:61", + "nodeType": "YulAssignment", + "src": "12785:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12797:9:61", + "nodeType": "YulIdentifier", + "src": "12797:9:61" + }, + { + "kind": "number", + "nativeSrc": "12808:2:61", + "nodeType": "YulLiteral", + "src": "12808:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12793:3:61", + "nodeType": "YulIdentifier", + "src": "12793:3:61" + }, + "nativeSrc": "12793:18:61", + "nodeType": "YulFunctionCall", + "src": "12793:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "12785:4:61", + "nodeType": "YulIdentifier", + "src": "12785:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12827:9:61", + "nodeType": "YulIdentifier", + "src": "12827:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "12842:6:61", + "nodeType": "YulIdentifier", + "src": "12842:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "12858:3:61", + "nodeType": "YulLiteral", + "src": "12858:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "12863:1:61", + "nodeType": "YulLiteral", + "src": "12863:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "12854:3:61", + "nodeType": "YulIdentifier", + "src": "12854:3:61" + }, + "nativeSrc": "12854:11:61", + "nodeType": "YulFunctionCall", + "src": "12854:11:61" + }, + { + "kind": "number", + "nativeSrc": "12867:1:61", + "nodeType": "YulLiteral", + "src": "12867:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "12850:3:61", + "nodeType": "YulIdentifier", + "src": "12850:3:61" + }, + "nativeSrc": "12850:19:61", + "nodeType": "YulFunctionCall", + "src": "12850:19:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "12838:3:61", + "nodeType": "YulIdentifier", + "src": "12838:3:61" + }, + "nativeSrc": "12838:32:61", + "nodeType": "YulFunctionCall", + "src": "12838:32:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12820:6:61", + "nodeType": "YulIdentifier", + "src": "12820:6:61" + }, + "nativeSrc": "12820:51:61", + "nodeType": "YulFunctionCall", + "src": "12820:51:61" + }, + "nativeSrc": "12820:51:61", + "nodeType": "YulExpressionStatement", + "src": "12820:51:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12891:9:61", + "nodeType": "YulIdentifier", + "src": "12891:9:61" + }, + { + "kind": "number", + "nativeSrc": "12902:2:61", + "nodeType": "YulLiteral", + "src": "12902:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12887:3:61", + "nodeType": "YulIdentifier", + "src": "12887:3:61" + }, + "nativeSrc": "12887:18:61", + "nodeType": "YulFunctionCall", + "src": "12887:18:61" + }, + { + "name": "value1", + "nativeSrc": "12907:6:61", + "nodeType": "YulIdentifier", + "src": "12907:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12880:6:61", + "nodeType": "YulIdentifier", + "src": "12880:6:61" + }, + "nativeSrc": "12880:34:61", + "nodeType": "YulFunctionCall", + "src": "12880:34:61" + }, + "nativeSrc": "12880:34:61", + "nodeType": "YulExpressionStatement", + "src": "12880:34:61" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed", + "nativeSrc": "12646:274:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "12736:9:61", + "nodeType": "YulTypedName", + "src": "12736:9:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "12747:6:61", + "nodeType": "YulTypedName", + "src": "12747:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "12755:6:61", + "nodeType": "YulTypedName", + "src": "12755:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "12766:4:61", + "nodeType": "YulTypedName", + "src": "12766:4:61", + "type": "" + } + ], + "src": "12646:274:61" + }, + { + "body": { + "nativeSrc": "13116:14:61", + "nodeType": "YulBlock", + "src": "13116:14:61", + "statements": [ + { + "nativeSrc": "13118:10:61", + "nodeType": "YulAssignment", + "src": "13118:10:61", + "value": { + "name": "pos", + "nativeSrc": "13125:3:61", + "nodeType": "YulIdentifier", + "src": "13125:3:61" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "13118:3:61", + "nodeType": "YulIdentifier", + "src": "13118:3:61" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nativeSrc": "12925:205:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "13100:3:61", + "nodeType": "YulTypedName", + "src": "13100:3:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "13108:3:61", + "nodeType": "YulTypedName", + "src": "13108:3:61", + "type": "" + } + ], + "src": "12925:205:61" + }, + { + "body": { + "nativeSrc": "13184:176:61", + "nodeType": "YulBlock", + "src": "13184:176:61", + "statements": [ + { + "nativeSrc": "13194:17:61", + "nodeType": "YulAssignment", + "src": "13194:17:61", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "13206:1:61", + "nodeType": "YulIdentifier", + "src": "13206:1:61" + }, + { + "name": "y", + "nativeSrc": "13209:1:61", + "nodeType": "YulIdentifier", + "src": "13209:1:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "13202:3:61", + "nodeType": "YulIdentifier", + "src": "13202:3:61" + }, + "nativeSrc": "13202:9:61", + "nodeType": "YulFunctionCall", + "src": "13202:9:61" + }, + "variableNames": [ + { + "name": "diff", + "nativeSrc": "13194:4:61", + "nodeType": "YulIdentifier", + "src": "13194:4:61" + } + ] + }, + { + "body": { + "nativeSrc": "13243:111:61", + "nodeType": "YulBlock", + "src": "13243:111:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13264:1:61", + "nodeType": "YulLiteral", + "src": "13264:1:61", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13271:3:61", + "nodeType": "YulLiteral", + "src": "13271:3:61", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "13276:10:61", + "nodeType": "YulLiteral", + "src": "13276:10:61", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "13267:3:61", + "nodeType": "YulIdentifier", + "src": "13267:3:61" + }, + "nativeSrc": "13267:20:61", + "nodeType": "YulFunctionCall", + "src": "13267:20:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13257:6:61", + "nodeType": "YulIdentifier", + "src": "13257:6:61" + }, + "nativeSrc": "13257:31:61", + "nodeType": "YulFunctionCall", + "src": "13257:31:61" + }, + "nativeSrc": "13257:31:61", + "nodeType": "YulExpressionStatement", + "src": "13257:31:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13308:1:61", + "nodeType": "YulLiteral", + "src": "13308:1:61", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "13311:4:61", + "nodeType": "YulLiteral", + "src": "13311:4:61", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13301:6:61", + "nodeType": "YulIdentifier", + "src": "13301:6:61" + }, + "nativeSrc": "13301:15:61", + "nodeType": "YulFunctionCall", + "src": "13301:15:61" + }, + "nativeSrc": "13301:15:61", + "nodeType": "YulExpressionStatement", + "src": "13301:15:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13336:1:61", + "nodeType": "YulLiteral", + "src": "13336:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "13339:4:61", + "nodeType": "YulLiteral", + "src": "13339:4:61", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "13329:6:61", + "nodeType": "YulIdentifier", + "src": "13329:6:61" + }, + "nativeSrc": "13329:15:61", + "nodeType": "YulFunctionCall", + "src": "13329:15:61" + }, + "nativeSrc": "13329:15:61", + "nodeType": "YulExpressionStatement", + "src": "13329:15:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "diff", + "nativeSrc": "13226:4:61", + "nodeType": "YulIdentifier", + "src": "13226:4:61" + }, + { + "name": "x", + "nativeSrc": "13232:1:61", + "nodeType": "YulIdentifier", + "src": "13232:1:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "13223:2:61", + "nodeType": "YulIdentifier", + "src": "13223:2:61" + }, + "nativeSrc": "13223:11:61", + "nodeType": "YulFunctionCall", + "src": "13223:11:61" + }, + "nativeSrc": "13220:134:61", + "nodeType": "YulIf", + "src": "13220:134:61" + } + ] + }, + "name": "checked_sub_t_uint256", + "nativeSrc": "13135:225:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nativeSrc": "13166:1:61", + "nodeType": "YulTypedName", + "src": "13166:1:61", + "type": "" + }, + { + "name": "y", + "nativeSrc": "13169:1:61", + "nodeType": "YulTypedName", + "src": "13169:1:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "diff", + "nativeSrc": "13175:4:61", + "nodeType": "YulTypedName", + "src": "13175:4:61", + "type": "" + } + ], + "src": "13135:225:61" + }, + { + "body": { + "nativeSrc": "13397:95:61", + "nodeType": "YulBlock", + "src": "13397:95:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13414:1:61", + "nodeType": "YulLiteral", + "src": "13414:1:61", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13421:3:61", + "nodeType": "YulLiteral", + "src": "13421:3:61", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "13426:10:61", + "nodeType": "YulLiteral", + "src": "13426:10:61", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "13417:3:61", + "nodeType": "YulIdentifier", + "src": "13417:3:61" + }, + "nativeSrc": "13417:20:61", + "nodeType": "YulFunctionCall", + "src": "13417:20:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13407:6:61", + "nodeType": "YulIdentifier", + "src": "13407:6:61" + }, + "nativeSrc": "13407:31:61", + "nodeType": "YulFunctionCall", + "src": "13407:31:61" + }, + "nativeSrc": "13407:31:61", + "nodeType": "YulExpressionStatement", + "src": "13407:31:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13454:1:61", + "nodeType": "YulLiteral", + "src": "13454:1:61", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "13457:4:61", + "nodeType": "YulLiteral", + "src": "13457:4:61", + "type": "", + "value": "0x31" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13447:6:61", + "nodeType": "YulIdentifier", + "src": "13447:6:61" + }, + "nativeSrc": "13447:15:61", + "nodeType": "YulFunctionCall", + "src": "13447:15:61" + }, + "nativeSrc": "13447:15:61", + "nodeType": "YulExpressionStatement", + "src": "13447:15:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "13478:1:61", + "nodeType": "YulLiteral", + "src": "13478:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "13481:4:61", + "nodeType": "YulLiteral", + "src": "13481:4:61", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "13471:6:61", + "nodeType": "YulIdentifier", + "src": "13471:6:61" + }, + "nativeSrc": "13471:15:61", + "nodeType": "YulFunctionCall", + "src": "13471:15:61" + }, + "nativeSrc": "13471:15:61", + "nodeType": "YulExpressionStatement", + "src": "13471:15:61" + } + ] + }, + "name": "panic_error_0x31", + "nativeSrc": "13365:127:61", + "nodeType": "YulFunctionDefinition", + "src": "13365:127:61" + }, + { + "body": { + "nativeSrc": "13634:150:61", + "nodeType": "YulBlock", + "src": "13634:150:61", + "statements": [ + { + "nativeSrc": "13644:27:61", + "nodeType": "YulVariableDeclaration", + "src": "13644:27:61", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "13664:6:61", + "nodeType": "YulIdentifier", + "src": "13664:6:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "13658:5:61", + "nodeType": "YulIdentifier", + "src": "13658:5:61" + }, + "nativeSrc": "13658:13:61", + "nodeType": "YulFunctionCall", + "src": "13658:13:61" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "13648:6:61", + "nodeType": "YulTypedName", + "src": "13648:6:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "13719:6:61", + "nodeType": "YulIdentifier", + "src": "13719:6:61" + }, + { + "kind": "number", + "nativeSrc": "13727:4:61", + "nodeType": "YulLiteral", + "src": "13727:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13715:3:61", + "nodeType": "YulIdentifier", + "src": "13715:3:61" + }, + "nativeSrc": "13715:17:61", + "nodeType": "YulFunctionCall", + "src": "13715:17:61" + }, + { + "name": "pos", + "nativeSrc": "13734:3:61", + "nodeType": "YulIdentifier", + "src": "13734:3:61" + }, + { + "name": "length", + "nativeSrc": "13739:6:61", + "nodeType": "YulIdentifier", + "src": "13739:6:61" + } + ], + "functionName": { + "name": "copy_memory_to_memory_with_cleanup", + "nativeSrc": "13680:34:61", + "nodeType": "YulIdentifier", + "src": "13680:34:61" + }, + "nativeSrc": "13680:66:61", + "nodeType": "YulFunctionCall", + "src": "13680:66:61" + }, + "nativeSrc": "13680:66:61", + "nodeType": "YulExpressionStatement", + "src": "13680:66:61" + }, + { + "nativeSrc": "13755:23:61", + "nodeType": "YulAssignment", + "src": "13755:23:61", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "13766:3:61", + "nodeType": "YulIdentifier", + "src": "13766:3:61" + }, + { + "name": "length", + "nativeSrc": "13771:6:61", + "nodeType": "YulIdentifier", + "src": "13771:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13762:3:61", + "nodeType": "YulIdentifier", + "src": "13762:3:61" + }, + "nativeSrc": "13762:16:61", + "nodeType": "YulFunctionCall", + "src": "13762:16:61" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "13755:3:61", + "nodeType": "YulIdentifier", + "src": "13755:3:61" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nativeSrc": "13497:287:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "13610:3:61", + "nodeType": "YulTypedName", + "src": "13610:3:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "13615:6:61", + "nodeType": "YulTypedName", + "src": "13615:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "13626:3:61", + "nodeType": "YulTypedName", + "src": "13626:3:61", + "type": "" + } + ], + "src": "13497:287:61" + } + ] + }, + "contents": "{\n { }\n function abi_encode_tuple_t_bytes32__to_t_bytes32__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_bytes4(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let value := calldataload(headStart)\n if iszero(eq(value, and(value, shl(224, 0xffffffff)))) { revert(0, 0) }\n value0 := value\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function abi_decode_available_length_string(src, length, end) -> array\n {\n let _1 := sub(shl(64, 1), 1)\n if gt(length, _1) { panic_error_0x41() }\n let _2 := not(31)\n let memPtr := mload(64)\n let newFreePtr := add(memPtr, and(add(and(add(length, 31), _2), 63), _2))\n if or(gt(newFreePtr, _1), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n mstore(64, newFreePtr)\n array := memPtr\n mstore(memPtr, length)\n if gt(add(src, length), end) { revert(0, 0) }\n calldatacopy(add(memPtr, 0x20), src, length)\n mstore(add(add(memPtr, length), 0x20), 0)\n }\n function abi_decode_tuple_t_string_memory_ptr(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n let offset := calldataload(headStart)\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n let _1 := add(headStart, offset)\n if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n value0 := abi_decode_available_length_string(add(_1, 32), calldataload(_1), dataEnd)\n }\n function copy_memory_to_memory_with_cleanup(src, dst, length)\n {\n let i := 0\n for { } lt(i, length) { i := add(i, 32) }\n {\n mstore(add(dst, i), mload(add(src, i)))\n }\n mstore(add(dst, length), 0)\n }\n function abi_encode_string(value, pos) -> end\n {\n let length := mload(value)\n mstore(pos, length)\n copy_memory_to_memory_with_cleanup(add(value, 0x20), add(pos, 0x20), length)\n end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, 32)\n tail := abi_encode_string(value0, add(headStart, 32))\n }\n function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := calldataload(headStart)\n }\n function abi_decode_tuple_t_bytes32t_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n let offset := calldataload(add(headStart, 32))\n if gt(offset, sub(shl(64, 1), 1)) { revert(0, 0) }\n let _1 := add(headStart, offset)\n if iszero(slt(add(_1, 0x1f), dataEnd)) { revert(0, 0) }\n value1 := abi_decode_available_length_string(add(_1, 32), calldataload(_1), dataEnd)\n }\n function abi_encode_tuple_t_array$_t_bytes32_$dyn_memory_ptr__to_t_array$_t_bytes32_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, 32)\n mstore(headStart, 32)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, 32)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, mload(srcPtr))\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_decode_tuple_t_bytes32t_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := calldataload(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_decode_tuple_t_addresst_addresst_addresst_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n {\n if slt(sub(dataEnd, headStart), 192) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := abi_decode_address(add(headStart, 64))\n value3 := abi_decode_address(add(headStart, 96))\n value4 := abi_decode_address(add(headStart, 128))\n value5 := calldataload(add(headStart, 160))\n }\n function abi_encode_tuple_t_array$_t_address_$dyn_memory_ptr__to_t_array$_t_address_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, 32)\n mstore(headStart, 32)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let srcPtr := add(value0, 32)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, and(mload(srcPtr), sub(shl(160, 1), 1)))\n pos := add(pos, _1)\n srcPtr := add(srcPtr, _1)\n }\n tail := pos\n }\n function abi_encode_tuple_t_array$_t_string_memory_ptr_$dyn_memory_ptr__to_t_array$_t_string_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n let tail_1 := add(headStart, 32)\n mstore(headStart, 32)\n let pos := tail_1\n let length := mload(value0)\n mstore(tail_1, length)\n pos := add(headStart, 64)\n let tail_2 := add(add(headStart, shl(5, length)), 64)\n let srcPtr := add(value0, 32)\n let i := 0\n for { } lt(i, length) { i := add(i, 1) }\n {\n mstore(pos, add(sub(tail_2, headStart), not(63)))\n tail_2 := abi_encode_string(mload(srcPtr), tail_2)\n srcPtr := add(srcPtr, _1)\n pos := add(pos, _1)\n }\n tail := tail_2\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function abi_encode_tuple_t_rational_1_by_1__to_t_uint64__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(64, 1), 1)))\n }\n function panic_error_0x32()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n function array_dataslot_string_storage(ptr) -> data\n {\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n }\n function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n {\n if gt(len, 31)\n {\n let _1 := 0\n mstore(0, array)\n let data := keccak256(0, 0x20)\n let deleteStart := add(data, shr(5, add(startIndex, 31)))\n if lt(startIndex, 0x20) { deleteStart := data }\n let _2 := add(data, shr(5, add(len, 31)))\n let start := deleteStart\n for { } lt(start, _2) { start := add(start, 1) }\n { sstore(start, _1) }\n }\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n {\n used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n {\n let newLen := mload(src)\n if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n let srcOffset := 0\n let srcOffset_1 := 0x20\n srcOffset := 0x20\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(31))\n let dstPtr := array_dataslot_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, srcOffset_1)\n }\n if lt(loopEnd, newLen)\n {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n }\n sstore(slot, add(shl(1, newLen), 1))\n }\n default {\n let value := 0\n if newLen\n {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n function abi_encode_tuple_t_string_memory_ptr_t_bytes32__to_t_string_memory_ptr_t_bytes32__fromStack_reversed(headStart, value1, value0) -> tail\n {\n mstore(headStart, 64)\n tail := abi_encode_string(value0, add(headStart, 64))\n mstore(add(headStart, 32), value1)\n }\n function abi_decode_tuple_t_bytes32_fromMemory(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := mload(headStart)\n }\n function abi_encode_tuple_t_uint256_t_uint256__to_t_uint256_t_uint256__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, value0)\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_t_address_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), 64)\n mstore(add(headStart, 64), 0)\n tail := add(headStart, 96)\n }\n function abi_encode_tuple_t_address_t_address_t_uint256_t_address_t_address__to_t_address_t_address_t_uint256_t_address_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n {\n tail := add(headStart, 160)\n let _1 := sub(shl(160, 1), 1)\n mstore(headStart, and(value0, _1))\n mstore(add(headStart, 32), and(value1, _1))\n mstore(add(headStart, 64), value2)\n mstore(add(headStart, 96), and(value3, _1))\n mstore(add(headStart, 128), and(value4, _1))\n }\n function abi_encode_tuple_t_address_t_bytes32__to_t_address_t_bytes32__fromStack_reversed(headStart, value1, value0) -> tail\n {\n tail := add(headStart, 64)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n }\n function abi_encode_tuple_packed_t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos) -> end\n { end := pos }\n function checked_sub_t_uint256(x, y) -> diff\n {\n diff := sub(x, y)\n if gt(diff, x)\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n }\n function panic_error_0x31()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x31)\n revert(0, 0x24)\n }\n function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n {\n let length := mload(value0)\n copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n end := add(pos, length)\n }\n}", + "id": 61, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": { + "860": [ + { + "length": 32, + "start": 5730 + }, + { + "length": 32, + "start": 5772 + }, + { + "length": 32, + "start": 6119 + } + ] + }, + "linkReferences": {}, + "object": "608060405260043610620002305760003560e01c806301601d2f146200023557806301ffc9a7146200026d5780630470d3ac14620002a357806309766da214620002ca5780630d6115d014620002f15780630d8e6e2c146200031657806312b357b514620003525780631c2b3afc1462000377578063248a9ca3146200039c5780632cec1a0614620003c15780632f2ff15d14620003e6578063352af39a146200040b57806336568abe14620004305780633c55593814620004555780633f4ba83a146200046d57806340df8d8414620004855780634cba593a14620004aa5780634f1ef28614620004cf5780634f3f463914620004e657806352d1902d14620004fe5780635a81a62614620005165780635c975abb146200053b5780635e81861914620005535780636cd5687814620005785780637fa34657146200059d5780638127f46514620005c25780638456cb5914620005e95780639010d07c146200060157806391d14854146200062657806392cf833f146200064b57806395b6ef0c14620006705780639d825bc51462000695578063a217fddf14620006ad578063a3246ad314620006c4578063ad3cb1cc14620006f8578063b289819c146200072b578063c17e30bf1462000750578063c2a1db781462000775578063c39409e1146200079c578063ca15c87314620007b4578063d547741f14620007d9578063e63ab1e914620007fe578063f72c0d8b1462000823578063f85b4a9c1462000848578063fd2fbd52146200086d575b600080fd5b3480156200024257600080fd5b506200025a60008051602062002f0b83398151915281565b6040519081526020015b60405180910390f35b3480156200027a57600080fd5b50620002926200028c366004620024c5565b62000884565b604051901515815260200162000264565b348015620002b057600080fd5b50620002bb620008b2565b604051620002649190620024f1565b348015620002d757600080fd5b50620002ef620002e936600462002522565b620008d2565b005b348015620002fe57600080fd5b50620002ef62000310366004620025d2565b62000984565b3480156200032357600080fd5b5060408051808201909152600781526654455354494e4760c81b60208201525b60405162000264919062002673565b3480156200035f57600080fd5b50620002926200037136600462002522565b620009ae565b3480156200038457600080fd5b50620002ef6200039636600462002688565b620009e0565b348015620003a957600080fd5b506200025a620003bb36600462002688565b62000a12565b348015620003ce57600080fd5b50620002bb620003e036600462002522565b62000a34565b348015620003f357600080fd5b50620002ef62000405366004620026a2565b62000a6c565b3480156200041857600080fd5b506200025a6200042a366004620025d2565b62000a94565b3480156200043d57600080fd5b50620002ef6200044f366004620026a2565b62000b23565b3480156200046257600080fd5b506200025a62000b5e565b3480156200047a57600080fd5b50620002ef62000b75565b3480156200049257600080fd5b506200025a60008051602062002feb83398151915281565b348015620004b757600080fd5b506200025a60008051602062002f4b83398151915281565b620002ef620004e0366004620026d1565b62000b9d565b348015620004f357600080fd5b50620002bb62000bbe565b3480156200050b57600080fd5b506200025a62000bde565b3480156200052357600080fd5b50620003436200053536600462002688565b62000bfe565b3480156200054857600080fd5b506200029262000ce1565b3480156200056057600080fd5b50620002ef62000572366004620025d2565b62000cf8565b3480156200058557600080fd5b50620002ef6200059736600462002522565b62000d1e565b348015620005aa57600080fd5b506200025a6000805160206200300b83398151915281565b348015620005cf57600080fd5b50620005da62000dc3565b60405162000264919062002739565b348015620005f657600080fd5b50620002ef62000de4565b3480156200060e57600080fd5b50620002bb620006203660046200277f565b62000e09565b3480156200063357600080fd5b506200029262000645366004620026a2565b62000e3b565b3480156200065857600080fd5b506200025a60008051602062002f2b83398151915281565b3480156200067d57600080fd5b50620002ef6200068f366004620027a2565b62000e73565b348015620006a257600080fd5b50620002bb62001031565b348015620006ba57600080fd5b506200025a600081565b348015620006d157600080fd5b50620006e9620006e336600462002688565b6200104e565b6040516200026491906200281a565b3480156200070557600080fd5b5062000343604051806040016040528060058152602001640352e302e360dc1b81525081565b3480156200073857600080fd5b506200025a60008051602062002f6b83398151915281565b3480156200075d57600080fd5b50620002ef6200076f36600462002522565b6200107f565b3480156200078257600080fd5b506200078d62001128565b6040516200026491906200285d565b348015620007a957600080fd5b506200025a6200129d565b348015620007c157600080fd5b506200025a620007d336600462002688565b620012b4565b348015620007e657600080fd5b50620002ef620007f8366004620026a2565b620012dd565b3480156200080b57600080fd5b506200025a60008051602062002fcb83398151915281565b3480156200083057600080fd5b506200025a60008051602062002f8b83398151915281565b3480156200085557600080fd5b50620002ef6200086736600462002688565b620012ff565b620002bb6200087e366004620028c5565b62001365565b60006001600160e01b03198216635a05180f60e01b1480620008ac5750620008ac8262001393565b92915050565b600080620008bf620013ca565b600201546001600160a01b031692915050565b60008051602062002f6b833981519152620008ed81620013ee565b816001600160a01b03163b6000036200092657816040516337766f4360e11b81526004016200091d9190620024f1565b60405180910390fd5b60006200093262001031565b90506200093f83620013fa565b826001600160a01b0316816001600160a01b03167fecd599290ada9c149ae0fb600bc6ada3c103a716eadb877b5341b7d298b62d9360405160405180910390a3505050565b60008051602062002f2b8339815191526200099f81620013ee565b620009aa8262001428565b5050565b600080620009bb620013ca565b6001600160a01b03909316600090815260059093016020525050604090205460ff1690565b60008051602062002f0b833981519152620009fb81620013ee565b600062000a07620013ca565b600101929092555050565b60008062000a1f6200151b565b60009384526020525050604090206001015490565b60008062000a41620013ca565b6001600160a01b03938416600090815260059091016020526040902054610100900490921692915050565b62000a778262000a12565b62000a8281620013ee565b62000a8e83836200153f565b50505050565b60008062000aa162001588565b905062000ada8360405160200162000aba9190620028f4565b60408051601f1981840301815291905280516020909101208290620015ac565b62000af85760405163162e926760e11b815260040160405180910390fd5b806003018360405162000b0c9190620028f4565b908152602001604051809103902054915050919050565b6001600160a01b038116331462000b4d5760405163334bd91960e11b815260040160405180910390fd5b62000b598282620015ba565b505050565b60008062000b6b620013ca565b6003015492915050565b60008051602062002fcb83398151915262000b9081620013ee565b62000b9a620015fa565b50565b62000ba762001657565b62000bb28262001702565b620009aa82826200171d565b60008062000bcb620013ca565b600401546001600160a01b031692915050565b600062000bea620017dc565b5060008051602062002fab83398151915290565b6060600062000c0c62001588565b905062000c1a8184620015ac565b62000c385760405163162e926760e11b815260040160405180910390fd5b60008381526002820160205260409020805462000c559062002912565b80601f016020809104026020016040519081016040528092919081815260200182805462000c839062002912565b801562000cd45780601f1062000ca85761010080835404028352916020019162000cd4565b820191906000526020600020905b81548152906001019060200180831162000cb657829003601f168201915b5050505050915050919050565b60008062000cee62001826565b5460ff1692915050565b60008051602062002f2b83398151915262000d1381620013ee565b620009aa826200184a565b60008051602062002feb83398151915262000d3981620013ee565b6001600160a01b03821662000d65578160405163220b4f1160e11b81526004016200091d9190620024f1565b600062000d71620008b2565b905062000d7e8362001928565b826001600160a01b0316816001600160a01b03167f88bf70d4f3c446213b5064d7cfe95ec0ed196748f014c19a833117bac32468fd60405160405180910390a3505050565b6060600062000dd162001588565b905062000dde8162001959565b91505090565b60008051602062002fcb83398151915262000dff81620013ee565b62000b9a62001968565b60008062000e16620019b4565b600085815260208290526040902090915062000e339084620019d8565b949350505050565b60008062000e486200151b565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b600062000e7f620019e6565b805490915060ff600160401b82041615906001600160401b031660008115801562000ea75750825b90506000826001600160401b0316600114801562000ec45750303b155b90508115801562000ed3575080155b1562000ef25760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b0319166001178555831562000f1c57845460ff60401b1916600160401b1785555b62000f2662001a0a565b62000f3062001a1e565b62000f3a62001a1e565b62000f4760008c6200153f565b5062000f6360008051602062002fcb8339815191528b6200153f565b5062000f7f60008051602062002f8b8339815191528a6200153f565b5062000f9b60008051602062002f6b833981519152896200153f565b50600062000fa8620013ca565b6002810180546001600160a01b0319166001600160a01b038b161790556003810188905568056bc75e2d631000006001909101555083156200102457845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050565b6000806200103e620013ca565b546001600160a01b031692915050565b606060006200105c620019b4565b6000848152602082905260409020909150620010789062001959565b9392505050565b60008051602062002f6b8339815191526200109a81620013ee565b816001600160a01b03163b600003620010ca578160405163c9c10a6160e01b81526004016200091d9190620024f1565b6000620010d662000bbe565b9050620010e38362001a28565b826001600160a01b0316816001600160a01b03167f8752daf55fa0ccd919c149bbc809abaad4433f02ba7aa93ac6d5acfd2f8dc22c60405160405180910390a3505050565b606060006200113662001588565b90506000620011458262001959565b9050600081516001600160401b0381111562001165576200116562002540565b6040519080825280602002602001820160405280156200119a57816020015b6060815260200190600190039081620011845790505b50905060005b82518110156200129557836002016000848381518110620011c557620011c56200294e565b602002602001015181526020019081526020016000208054620011e89062002912565b80601f0160208091040260200160405190810160405280929190818152602001828054620012169062002912565b8015620012675780601f106200123b5761010080835404028352916020019162001267565b820191906000526020600020905b8154815290600101906020018083116200124957829003601f168201915b50505050508282815181106200128157620012816200294e565b6020908102919091010152600101620011a0565b509392505050565b600080620012aa620013ca565b6001015492915050565b600080620012c1620019b4565b6000848152602082905260409020909150620010789062001a59565b620012e88262000a12565b620012f381620013ee565b62000a8e8383620015ba565b60008051602062002f4b8339815191526200131a81620013ee565b60006200132662000b5e565b9050620013338362001a64565b604051839082907fc1fec27bbb8c533fedd3d449016c429341bfc0df21a9600e6162605e08f1c78f90600090a3505050565b60006200137162001a7a565b6200137b62001ab3565b62001387838362001adc565b9050620008ac62001d1c565b60006001600160e01b03198216637965db0b60e01b1480620008ac57506301ffc9a760e01b6001600160e01b0319831614620008ac565b7f2b421af391835920c41e77b6810f6e715f5b713c17bc590f55de6a7d3912e80090565b62000b9a813362001d2f565b600062001406620013ca565b80546001600160a01b0319166001600160a01b03939093169290921790915550565b6000816040516020016200143d9190620028f4565b60405160208183030381529060405280519060200120905060006200146162001588565b9050600062001471828462001d6c565b905080620014965783604051633dad0df560e11b81526004016200091d919062002673565b60008381526002830160205260409020620014b28582620029b8565b50828260030185604051620014c89190620028f4565b9081526020016040518091039020819055507fbad43a69707ac20dd539f3163b927e83baef6e967f2c95432129b1ded416645884846040516200150d92919062002a84565b60405180910390a150505050565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b6000806200154c620019b4565b905060006200155c858562001d7a565b9050801562000e335760008581526020839052604090206200157f908562001e23565b50949350505050565b7f563e037355fff0507705f481e4b362e4c3996a3b57d07307deabfca3d816860090565b600062001078838362001e3a565b600080620015c7620019b4565b90506000620015d7858562001e52565b9050801562000e335760008581526020839052604090206200157f908562001ed0565b6200160462001ee7565b60006200161062001826565b805460ff1916815590507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516200164c9190620024f1565b60405180910390a150565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480620016e157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316620016d560008051602062002fab833981519152546001600160a01b031690565b6001600160a01b031614155b15620017005760405163703e46dd60e11b815260040160405180910390fd5b565b60008051602062002f8b833981519152620009aa81620013ee565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156200177a575060408051601f3d908101601f19168201909252620017779181019062002aa8565b60015b6200179c5781604051634c9c8ce360e01b81526004016200091d9190620024f1565b60008051602062002fab8339815191528114620017d057604051632a87526960e21b8152600481018290526024016200091d565b62000b59838362001f0f565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614620017005760405163703e46dd60e11b815260040160405180910390fd5b7fcd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f0330090565b6000816040516020016200185f9190620028f4565b60405160208183030381529060405280519060200120905060006200188362001588565b9050600062001893828462001f6c565b905080620018b45760405163162e926760e11b815260040160405180910390fd5b60008381526002830160205260408120620018cf916200245d565b8160030184604051620018e39190620028f4565b9081526020016040518091039020600090557f57158eaa7e642cefd761327d5cd6c147ddaad706ec257f90f4d8b59b3d365eb784846040516200150d92919062002a84565b600062001934620013ca565b60020180546001600160a01b0319166001600160a01b03939093169290921790915550565b60606000620010788362001f7a565b6200197262001ab3565b60006200197e62001826565b805460ff1916600117815590507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586200163d3390565b7fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200090565b600062001078838362001fd8565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b62001a1462002005565b620017006200202d565b6200170062002005565b600062001a34620013ca565b60040180546001600160a01b0319166001600160a01b03939093169290921790915550565b6000620008ac825490565b600062001a70620013ca565b6003019190915550565b600062001a866200204e565b80549091506001190162001aad57604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b62001abd62000ce1565b15620017005760405163d93c066560e01b815260040160405180910390fd5b60006001600160a01b03831662001b0a578260405163715397cd60e11b81526004016200091d9190620024f1565b600062001b166200129d565b90508034101562001b44576040516353f01c6360e11b8152600481018290523460248201526044016200091d565b600062001b5062001031565b9050806001600160a01b03163b60000362001b8257806040516337766f4360e11b81526004016200091d9190620024f1565b600062001b8e62000bbe565b9050806001600160a01b03163b60000362001bc0578060405163c9c10a6160e01b81526004016200091d9190620024f1565b60008260405162001bd1906200249c565b6001600160a01b039091168152604060208201819052600090820152606001604051809103906000f08015801562001c0d573d6000803e3d6000fd5b506040516333e1a22360e01b81523060048201526001600160a01b0384811660248301526044820187905289811660648301528881166084830152919250908216906333e1a2239060a401600060405180830381600087803b15801562001c7357600080fd5b505af115801562001c88573d6000803e3d6000fd5b5050604080518082019091526001815233602082015262001cad925083915062002072565b62001cc86000805160206200300b833981519152826200153f565b5062001cde6001600160a01b03821634620020d5565b6040516001600160a01b038216907f22de16ef21e3a33810fbcaf0e737ab9c9e2854fa565d8535041456c789afcd9390600090a29695505050505050565b600062001d286200204e565b6001905550565b62001d3b828262000e3b565b620009aa5760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016200091d565b600062001078838362002178565b60008062001d876200151b565b905062001d95848462000e3b565b62001e18576000848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905562001dcd3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050620008ac565b6000915050620008ac565b600062001078836001600160a01b03841662002178565b60009081526001919091016020526040902054151590565b60008062001e5f6200151b565b905062001e6d848462000e3b565b1562001e18576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050620008ac565b600062001078836001600160a01b038416620021c7565b62001ef162000ce1565b6200170057604051638dfc202b60e01b815260040160405180910390fd5b62001f1a82620022c0565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511562001f625762000b59828262002320565b620009aa6200239c565b6000620010788383620021c7565b60608160000180548060200260200160405190810160405280929190818152602001828054801562001fcc57602002820191906000526020600020905b81548152602001906001019080831162001fb7575b50505050509050919050565b600082600001828154811062001ff25762001ff26200294e565b9060005260206000200154905092915050565b6200200f620023bc565b6200170057604051631afcd79f60e31b815260040160405180910390fd5b6200203762002005565b60006200204362001826565b805460ff1916905550565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b60006200207e620013ca565b6001600160a01b03938416600090815260059091016020908152604090912083518154929094015190941661010002610100600160a81b0319931515939093166001600160a81b0319909116179190911790915550565b80471015620021015760405163cf47918160e01b8152476004820152602481018290526044016200091d565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811462002150576040519150601f19603f3d011682016040523d82523d6000602084013e62002155565b606091505b505090508062000b595760405163d6bda27560e01b815260040160405180910390fd5b600062002186838362001e3a565b620021be57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620008ac565b506000620008ac565b6000818152600183016020526040812054801562001e18576000620021ee60018362002ac2565b8554909150600090620022049060019062002ac2565b9050808214620022705760008660000182815481106200222857620022286200294e565b90600052602060002001549050808760000184815481106200224e576200224e6200294e565b6000918252602080832090910192909255918252600188019052604090208390555b855486908062002284576200228462002ae4565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050620008ac565b806001600160a01b03163b600003620022f05780604051634c9c8ce360e01b81526004016200091d9190620024f1565b60008051602062002fab83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516200233f9190620028f4565b600060405180830381855af49150503d80600081146200237c576040519150601f19603f3d011682016040523d82523d6000602084013e62002381565b606091505b509150915062002393858383620023d8565b95945050505050565b3415620017005760405163b398979f60e01b815260040160405180910390fd5b6000620023c8620019e6565b54600160401b900460ff16919050565b606082620023f157620023eb8262002433565b62001078565b81511580156200240957506001600160a01b0384163b155b156200242c5783604051639996b31560e01b81526004016200091d9190620024f1565b5092915050565b805115620024445780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b5080546200246b9062002912565b6000825580601f106200247c575050565b601f01602090049060005260206000209081019062000b9a9190620024aa565b6104108062002afb83390190565b5b80821115620024c15760008155600101620024ab565b5090565b600060208284031215620024d857600080fd5b81356001600160e01b0319811681146200107857600080fd5b6001600160a01b0391909116815260200190565b80356001600160a01b03811681146200251d57600080fd5b919050565b6000602082840312156200253557600080fd5b620010788262002505565b634e487b7160e01b600052604160045260246000fd5b60006001600160401b038084111562002573576200257362002540565b604051601f8501601f19908116603f011681019082821181831017156200259e576200259e62002540565b81604052809350858152868686011115620025b857600080fd5b858560208301376000602087830101525050509392505050565b600060208284031215620025e557600080fd5b81356001600160401b03811115620025fc57600080fd5b8201601f810184136200260e57600080fd5b62000e338482356020840162002556565b60005b838110156200263c57818101518382015260200162002622565b50506000910152565b600081518084526200265f8160208601602086016200261f565b601f01601f19169290920160200192915050565b60208152600062001078602083018462002645565b6000602082840312156200269b57600080fd5b5035919050565b60008060408385031215620026b657600080fd5b82359150620026c86020840162002505565b90509250929050565b60008060408385031215620026e557600080fd5b620026f08362002505565b915060208301356001600160401b038111156200270c57600080fd5b8301601f810185136200271e57600080fd5b6200272f8582356020840162002556565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b81811015620027735783518352928401929184019160010162002755565b50909695505050505050565b600080604083850312156200279357600080fd5b50508035926020909101359150565b60008060008060008060c08789031215620027bc57600080fd5b620027c78762002505565b9550620027d76020880162002505565b9450620027e76040880162002505565b9350620027f76060880162002505565b9250620028076080880162002505565b915060a087013590509295509295509295565b6020808252825182820181905260009190848201906040850190845b81811015620027735783516001600160a01b03168352928401929184019160010162002836565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015620028b857603f19888603018452620028a585835162002645565b9450928501929085019060010162002886565b5092979650505050505050565b60008060408385031215620028d957600080fd5b620028e48362002505565b9150620026c86020840162002505565b60008251620029088184602087016200261f565b9190910192915050565b600181811c908216806200292757607f821691505b6020821081036200294857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b601f82111562000b59576000816000526020600020601f850160051c810160208610156200298f5750805b601f850160051c820191505b81811015620029b0578281556001016200299b565b505050505050565b81516001600160401b03811115620029d457620029d462002540565b620029ec81620029e5845462002912565b8462002964565b602080601f83116001811462002a24576000841562002a0b5750858301515b600019600386901b1c1916600185901b178555620029b0565b600085815260208120601f198616915b8281101562002a555788860151825594840194600190910190840162002a34565b508582101562002a745787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60408152600062002a99604083018562002645565b90508260208301529392505050565b60006020828403121562002abb57600080fd5b5051919050565b81810381811115620008ac57634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fdfe60806040526040516104103803806104108339810160408190526100229161025a565b61002c8282610033565b5050610358565b61003c82610092565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610086576100818282610109565b505050565b61008e610180565b5050565b806001600160a01b03163b6000036100c85780604051634c9c8ce360e01b81526004016100bf9190610328565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610126919061033c565b600060405180830381855af49150503d8060008114610161576040519150601f19603f3d011682016040523d82523d6000602084013e610166565b606091505b5090925090506101778583836101a1565b95945050505050565b341561019f5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b6576101b1826101f7565b6101f0565b81511580156101cd57506001600160a01b0384163b155b156101ed5783604051639996b31560e01b81526004016100bf9190610328565b50805b9392505050565b8051156102075780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b634e487b7160e01b600052604160045260246000fd5b60005b83811015610251578181015183820152602001610239565b50506000910152565b6000806040838503121561026d57600080fd5b82516001600160a01b038116811461028457600080fd5b60208401519092506001600160401b03808211156102a157600080fd5b818501915085601f8301126102b557600080fd5b8151818111156102c7576102c7610220565b604051601f8201601f19908116603f011681019083821181831017156102ef576102ef610220565b8160405282815288602084870101111561030857600080fd5b610319836020830160208801610236565b80955050505050509250929050565b6001600160a01b0391909116815260200190565b6000825161034e818460208701610236565b9190910192915050565b60aa806103666000396000f3fe6080604052600a600c565b005b60186014601a565b6051565b565b6000604c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015606f573d6000f35b3d6000fdfea26469706673582212205010fbd336314ff514e3c3a5ed98aed1c9c96a5210a9df6dc914e2a04bbe772564736f6c6343000818003330f3325e23b502dce693b147d37de928d14dd5ab09bbc928fb79867329ac5b83dccfb718b018e1b06f849958baf67b0b252302f06a69871f72c5127ee92f659d349eec46d2c564a125684d1934a6120a70cc341d3a26d362e358a775e07dec176a42249708403f5ed28bf492facd11e85bc1054e6c27c155ed468f6ff4f7ecd0189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a819590c814c6d279357359f817d25adb06a7b9f6e493592b7d3b8bb268adb6764f22871c78b70c8896c7119179fc4e9b6f4cf323f8db6eadb7d79007d1e00c3fa2646970667358221220f29ed9781c8ed513c4495c03dc9e565674abad73abc8496eeb94a0f6105dc0a964736f6c63430008180033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH3 0x230 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x1601D2F EQ PUSH3 0x235 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH3 0x26D JUMPI DUP1 PUSH4 0x470D3AC EQ PUSH3 0x2A3 JUMPI DUP1 PUSH4 0x9766DA2 EQ PUSH3 0x2CA JUMPI DUP1 PUSH4 0xD6115D0 EQ PUSH3 0x2F1 JUMPI DUP1 PUSH4 0xD8E6E2C EQ PUSH3 0x316 JUMPI DUP1 PUSH4 0x12B357B5 EQ PUSH3 0x352 JUMPI DUP1 PUSH4 0x1C2B3AFC EQ PUSH3 0x377 JUMPI DUP1 PUSH4 0x248A9CA3 EQ PUSH3 0x39C JUMPI DUP1 PUSH4 0x2CEC1A06 EQ PUSH3 0x3C1 JUMPI DUP1 PUSH4 0x2F2FF15D EQ PUSH3 0x3E6 JUMPI DUP1 PUSH4 0x352AF39A EQ PUSH3 0x40B JUMPI DUP1 PUSH4 0x36568ABE EQ PUSH3 0x430 JUMPI DUP1 PUSH4 0x3C555938 EQ PUSH3 0x455 JUMPI DUP1 PUSH4 0x3F4BA83A EQ PUSH3 0x46D JUMPI DUP1 PUSH4 0x40DF8D84 EQ PUSH3 0x485 JUMPI DUP1 PUSH4 0x4CBA593A EQ PUSH3 0x4AA JUMPI DUP1 PUSH4 0x4F1EF286 EQ PUSH3 0x4CF JUMPI DUP1 PUSH4 0x4F3F4639 EQ PUSH3 0x4E6 JUMPI DUP1 PUSH4 0x52D1902D EQ PUSH3 0x4FE JUMPI DUP1 PUSH4 0x5A81A626 EQ PUSH3 0x516 JUMPI DUP1 PUSH4 0x5C975ABB EQ PUSH3 0x53B JUMPI DUP1 PUSH4 0x5E818619 EQ PUSH3 0x553 JUMPI DUP1 PUSH4 0x6CD56878 EQ PUSH3 0x578 JUMPI DUP1 PUSH4 0x7FA34657 EQ PUSH3 0x59D JUMPI DUP1 PUSH4 0x8127F465 EQ PUSH3 0x5C2 JUMPI DUP1 PUSH4 0x8456CB59 EQ PUSH3 0x5E9 JUMPI DUP1 PUSH4 0x9010D07C EQ PUSH3 0x601 JUMPI DUP1 PUSH4 0x91D14854 EQ PUSH3 0x626 JUMPI DUP1 PUSH4 0x92CF833F EQ PUSH3 0x64B JUMPI DUP1 PUSH4 0x95B6EF0C EQ PUSH3 0x670 JUMPI DUP1 PUSH4 0x9D825BC5 EQ PUSH3 0x695 JUMPI DUP1 PUSH4 0xA217FDDF EQ PUSH3 0x6AD JUMPI DUP1 PUSH4 0xA3246AD3 EQ PUSH3 0x6C4 JUMPI DUP1 PUSH4 0xAD3CB1CC EQ PUSH3 0x6F8 JUMPI DUP1 PUSH4 0xB289819C EQ PUSH3 0x72B JUMPI DUP1 PUSH4 0xC17E30BF EQ PUSH3 0x750 JUMPI DUP1 PUSH4 0xC2A1DB78 EQ PUSH3 0x775 JUMPI DUP1 PUSH4 0xC39409E1 EQ PUSH3 0x79C JUMPI DUP1 PUSH4 0xCA15C873 EQ PUSH3 0x7B4 JUMPI DUP1 PUSH4 0xD547741F EQ PUSH3 0x7D9 JUMPI DUP1 PUSH4 0xE63AB1E9 EQ PUSH3 0x7FE JUMPI DUP1 PUSH4 0xF72C0D8B EQ PUSH3 0x823 JUMPI DUP1 PUSH4 0xF85B4A9C EQ PUSH3 0x848 JUMPI DUP1 PUSH4 0xFD2FBD52 EQ PUSH3 0x86D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x242 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x25A PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F0B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x27A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x292 PUSH3 0x28C CALLDATASIZE PUSH1 0x4 PUSH3 0x24C5 JUMP JUMPDEST PUSH3 0x884 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH3 0x264 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x2B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2BB PUSH3 0x8B2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x264 SWAP2 SWAP1 PUSH3 0x24F1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x2D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2EF PUSH3 0x2E9 CALLDATASIZE PUSH1 0x4 PUSH3 0x2522 JUMP JUMPDEST PUSH3 0x8D2 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x2FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2EF PUSH3 0x310 CALLDATASIZE PUSH1 0x4 PUSH3 0x25D2 JUMP JUMPDEST PUSH3 0x984 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x323 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x7 DUP2 MSTORE PUSH7 0x54455354494E47 PUSH1 0xC8 SHL PUSH1 0x20 DUP3 ADD MSTORE JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x264 SWAP2 SWAP1 PUSH3 0x2673 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x35F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x292 PUSH3 0x371 CALLDATASIZE PUSH1 0x4 PUSH3 0x2522 JUMP JUMPDEST PUSH3 0x9AE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x384 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2EF PUSH3 0x396 CALLDATASIZE PUSH1 0x4 PUSH3 0x2688 JUMP JUMPDEST PUSH3 0x9E0 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x3A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x25A PUSH3 0x3BB CALLDATASIZE PUSH1 0x4 PUSH3 0x2688 JUMP JUMPDEST PUSH3 0xA12 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x3CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2BB PUSH3 0x3E0 CALLDATASIZE PUSH1 0x4 PUSH3 0x2522 JUMP JUMPDEST PUSH3 0xA34 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x3F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2EF PUSH3 0x405 CALLDATASIZE PUSH1 0x4 PUSH3 0x26A2 JUMP JUMPDEST PUSH3 0xA6C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x418 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x25A PUSH3 0x42A CALLDATASIZE PUSH1 0x4 PUSH3 0x25D2 JUMP JUMPDEST PUSH3 0xA94 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x43D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2EF PUSH3 0x44F CALLDATASIZE PUSH1 0x4 PUSH3 0x26A2 JUMP JUMPDEST PUSH3 0xB23 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x462 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x25A PUSH3 0xB5E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x47A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2EF PUSH3 0xB75 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x492 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x25A PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2FEB DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x4B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x25A PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F4B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST PUSH3 0x2EF PUSH3 0x4E0 CALLDATASIZE PUSH1 0x4 PUSH3 0x26D1 JUMP JUMPDEST PUSH3 0xB9D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x4F3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2BB PUSH3 0xBBE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x50B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x25A PUSH3 0xBDE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x523 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x343 PUSH3 0x535 CALLDATASIZE PUSH1 0x4 PUSH3 0x2688 JUMP JUMPDEST PUSH3 0xBFE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x548 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x292 PUSH3 0xCE1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x560 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2EF PUSH3 0x572 CALLDATASIZE PUSH1 0x4 PUSH3 0x25D2 JUMP JUMPDEST PUSH3 0xCF8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x585 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2EF PUSH3 0x597 CALLDATASIZE PUSH1 0x4 PUSH3 0x2522 JUMP JUMPDEST PUSH3 0xD1E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x5AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x25A PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x300B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x5CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x5DA PUSH3 0xDC3 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x264 SWAP2 SWAP1 PUSH3 0x2739 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x5F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2EF PUSH3 0xDE4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x60E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2BB PUSH3 0x620 CALLDATASIZE PUSH1 0x4 PUSH3 0x277F JUMP JUMPDEST PUSH3 0xE09 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x633 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x292 PUSH3 0x645 CALLDATASIZE PUSH1 0x4 PUSH3 0x26A2 JUMP JUMPDEST PUSH3 0xE3B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x658 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x25A PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F2B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x67D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2EF PUSH3 0x68F CALLDATASIZE PUSH1 0x4 PUSH3 0x27A2 JUMP JUMPDEST PUSH3 0xE73 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x6A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2BB PUSH3 0x1031 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x6BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x25A PUSH1 0x0 DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x6D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x6E9 PUSH3 0x6E3 CALLDATASIZE PUSH1 0x4 PUSH3 0x2688 JUMP JUMPDEST PUSH3 0x104E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x264 SWAP2 SWAP1 PUSH3 0x281A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x705 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x343 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x5 DUP2 MSTORE PUSH1 0x20 ADD PUSH5 0x352E302E3 PUSH1 0xDC SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x738 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x25A PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F6B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x75D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2EF PUSH3 0x76F CALLDATASIZE PUSH1 0x4 PUSH3 0x2522 JUMP JUMPDEST PUSH3 0x107F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x782 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x78D PUSH3 0x1128 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x264 SWAP2 SWAP1 PUSH3 0x285D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x7A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x25A PUSH3 0x129D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x7C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x25A PUSH3 0x7D3 CALLDATASIZE PUSH1 0x4 PUSH3 0x2688 JUMP JUMPDEST PUSH3 0x12B4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x7E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2EF PUSH3 0x7F8 CALLDATASIZE PUSH1 0x4 PUSH3 0x26A2 JUMP JUMPDEST PUSH3 0x12DD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x80B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x25A PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2FCB DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x830 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x25A PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F8B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH3 0x855 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH3 0x2EF PUSH3 0x867 CALLDATASIZE PUSH1 0x4 PUSH3 0x2688 JUMP JUMPDEST PUSH3 0x12FF JUMP JUMPDEST PUSH3 0x2BB PUSH3 0x87E CALLDATASIZE PUSH1 0x4 PUSH3 0x28C5 JUMP JUMPDEST PUSH3 0x1365 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x5A05180F PUSH1 0xE0 SHL EQ DUP1 PUSH3 0x8AC JUMPI POP PUSH3 0x8AC DUP3 PUSH3 0x1393 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x8BF PUSH3 0x13CA JUMP JUMPDEST PUSH1 0x2 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F6B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x8ED DUP2 PUSH3 0x13EE JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH3 0x926 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x37766F43 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x91D SWAP2 SWAP1 PUSH3 0x24F1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x932 PUSH3 0x1031 JUMP JUMPDEST SWAP1 POP PUSH3 0x93F DUP4 PUSH3 0x13FA JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xECD599290ADA9C149AE0FB600BC6ADA3C103A716EADB877B5341B7D298B62D93 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F2B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x99F DUP2 PUSH3 0x13EE JUMP JUMPDEST PUSH3 0x9AA DUP3 PUSH3 0x1428 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x9BB PUSH3 0x13CA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 SWAP1 SWAP4 ADD PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F0B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x9FB DUP2 PUSH3 0x13EE JUMP JUMPDEST PUSH1 0x0 PUSH3 0xA07 PUSH3 0x13CA JUMP JUMPDEST PUSH1 0x1 ADD SWAP3 SWAP1 SWAP3 SSTORE POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xA1F PUSH3 0x151B JUMP JUMPDEST PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x20 MSTORE POP POP PUSH1 0x40 SWAP1 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xA41 PUSH3 0x13CA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x100 SWAP1 DIV SWAP1 SWAP3 AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0xA77 DUP3 PUSH3 0xA12 JUMP JUMPDEST PUSH3 0xA82 DUP2 PUSH3 0x13EE JUMP JUMPDEST PUSH3 0xA8E DUP4 DUP4 PUSH3 0x153F JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xAA1 PUSH3 0x1588 JUMP JUMPDEST SWAP1 POP PUSH3 0xADA DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0xABA SWAP2 SWAP1 PUSH3 0x28F4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 DUP3 SWAP1 PUSH3 0x15AC JUMP JUMPDEST PUSH3 0xAF8 JUMPI PUSH1 0x40 MLOAD PUSH4 0x162E9267 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x3 ADD DUP4 PUSH1 0x40 MLOAD PUSH3 0xB0C SWAP2 SWAP1 PUSH3 0x28F4 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 SLOAD SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND CALLER EQ PUSH3 0xB4D JUMPI PUSH1 0x40 MLOAD PUSH4 0x334BD919 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0xB59 DUP3 DUP3 PUSH3 0x15BA JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xB6B PUSH3 0x13CA JUMP JUMPDEST PUSH1 0x3 ADD SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2FCB DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0xB90 DUP2 PUSH3 0x13EE JUMP JUMPDEST PUSH3 0xB9A PUSH3 0x15FA JUMP JUMPDEST POP JUMP JUMPDEST PUSH3 0xBA7 PUSH3 0x1657 JUMP JUMPDEST PUSH3 0xBB2 DUP3 PUSH3 0x1702 JUMP JUMPDEST PUSH3 0x9AA DUP3 DUP3 PUSH3 0x171D JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xBCB PUSH3 0x13CA JUMP JUMPDEST PUSH1 0x4 ADD SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0xBEA PUSH3 0x17DC JUMP JUMPDEST POP PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2FAB DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH3 0xC0C PUSH3 0x1588 JUMP JUMPDEST SWAP1 POP PUSH3 0xC1A DUP2 DUP5 PUSH3 0x15AC JUMP JUMPDEST PUSH3 0xC38 JUMPI PUSH1 0x40 MLOAD PUSH4 0x162E9267 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP3 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH3 0xC55 SWAP1 PUSH3 0x2912 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH3 0xC83 SWAP1 PUSH3 0x2912 JUMP JUMPDEST DUP1 ISZERO PUSH3 0xCD4 JUMPI DUP1 PUSH1 0x1F LT PUSH3 0xCA8 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH3 0xCD4 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH3 0xCB6 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xCEE PUSH3 0x1826 JUMP JUMPDEST SLOAD PUSH1 0xFF AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F2B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0xD13 DUP2 PUSH3 0x13EE JUMP JUMPDEST PUSH3 0x9AA DUP3 PUSH3 0x184A JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2FEB DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0xD39 DUP2 PUSH3 0x13EE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0xD65 JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x220B4F11 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x91D SWAP2 SWAP1 PUSH3 0x24F1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0xD71 PUSH3 0x8B2 JUMP JUMPDEST SWAP1 POP PUSH3 0xD7E DUP4 PUSH3 0x1928 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x88BF70D4F3C446213B5064D7CFE95EC0ED196748F014C19A833117BAC32468FD PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH3 0xDD1 PUSH3 0x1588 JUMP JUMPDEST SWAP1 POP PUSH3 0xDDE DUP2 PUSH3 0x1959 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2FCB DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0xDFF DUP2 PUSH3 0x13EE JUMP JUMPDEST PUSH3 0xB9A PUSH3 0x1968 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xE16 PUSH3 0x19B4 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH3 0xE33 SWAP1 DUP5 PUSH3 0x19D8 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0xE48 PUSH3 0x151B JUMP JUMPDEST PUSH1 0x0 SWAP5 DUP6 MSTORE PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP6 SWAP1 SWAP6 AND DUP7 MSTORE SWAP4 SWAP1 MSTORE POP POP SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0xE7F PUSH3 0x19E6 JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0xFF PUSH1 0x1 PUSH1 0x40 SHL DUP3 DIV AND ISZERO SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x0 DUP2 ISZERO DUP1 ISZERO PUSH3 0xEA7 JUMPI POP DUP3 JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB AND PUSH1 0x1 EQ DUP1 ISZERO PUSH3 0xEC4 JUMPI POP ADDRESS EXTCODESIZE ISZERO JUMPDEST SWAP1 POP DUP2 ISZERO DUP1 ISZERO PUSH3 0xED3 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH3 0xEF2 JUMPI PUSH1 0x40 MLOAD PUSH4 0xF92EE8A9 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT AND PUSH1 0x1 OR DUP6 SSTORE DUP4 ISZERO PUSH3 0xF1C JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND PUSH1 0x1 PUSH1 0x40 SHL OR DUP6 SSTORE JUMPDEST PUSH3 0xF26 PUSH3 0x1A0A JUMP JUMPDEST PUSH3 0xF30 PUSH3 0x1A1E JUMP JUMPDEST PUSH3 0xF3A PUSH3 0x1A1E JUMP JUMPDEST PUSH3 0xF47 PUSH1 0x0 DUP13 PUSH3 0x153F JUMP JUMPDEST POP PUSH3 0xF63 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2FCB DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP12 PUSH3 0x153F JUMP JUMPDEST POP PUSH3 0xF7F PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F8B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP11 PUSH3 0x153F JUMP JUMPDEST POP PUSH3 0xF9B PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F6B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP10 PUSH3 0x153F JUMP JUMPDEST POP PUSH1 0x0 PUSH3 0xFA8 PUSH3 0x13CA JUMP JUMPDEST PUSH1 0x2 DUP2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND OR SWAP1 SSTORE PUSH1 0x3 DUP2 ADD DUP9 SWAP1 SSTORE PUSH9 0x56BC75E2D63100000 PUSH1 0x1 SWAP1 SWAP2 ADD SSTORE POP DUP4 ISZERO PUSH3 0x1024 JUMPI DUP5 SLOAD PUSH1 0xFF PUSH1 0x40 SHL NOT AND DUP6 SSTORE PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE PUSH32 0xC7F505B2F371AE2175EE4913F4499E1F2633A7B5936321EED1CDAEB6115181D2 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x103E PUSH3 0x13CA JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH3 0x105C PUSH3 0x19B4 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH3 0x1078 SWAP1 PUSH3 0x1959 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F6B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x109A DUP2 PUSH3 0x13EE JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH3 0x10CA JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0xC9C10A61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x91D SWAP2 SWAP1 PUSH3 0x24F1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x10D6 PUSH3 0xBBE JUMP JUMPDEST SWAP1 POP PUSH3 0x10E3 DUP4 PUSH3 0x1A28 JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8752DAF55FA0CCD919C149BBC809ABAAD4433F02BA7AA93AC6D5ACFD2F8DC22C PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH3 0x1136 PUSH3 0x1588 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0x1145 DUP3 PUSH3 0x1959 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x1165 JUMPI PUSH3 0x1165 PUSH3 0x2540 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH3 0x119A JUMPI DUP2 PUSH1 0x20 ADD JUMPDEST PUSH1 0x60 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 SWAP1 SUB SWAP1 DUP2 PUSH3 0x1184 JUMPI SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP3 MLOAD DUP2 LT ISZERO PUSH3 0x1295 JUMPI DUP4 PUSH1 0x2 ADD PUSH1 0x0 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH3 0x11C5 JUMPI PUSH3 0x11C5 PUSH3 0x294E JUMP JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 DUP1 SLOAD PUSH3 0x11E8 SWAP1 PUSH3 0x2912 JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH3 0x1216 SWAP1 PUSH3 0x2912 JUMP JUMPDEST DUP1 ISZERO PUSH3 0x1267 JUMPI DUP1 PUSH1 0x1F LT PUSH3 0x123B JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH3 0x1267 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH3 0x1249 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH3 0x1281 JUMPI PUSH3 0x1281 PUSH3 0x294E JUMP JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH3 0x11A0 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x12AA PUSH3 0x13CA JUMP JUMPDEST PUSH1 0x1 ADD SLOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x12C1 PUSH3 0x19B4 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 SWAP2 POP PUSH3 0x1078 SWAP1 PUSH3 0x1A59 JUMP JUMPDEST PUSH3 0x12E8 DUP3 PUSH3 0xA12 JUMP JUMPDEST PUSH3 0x12F3 DUP2 PUSH3 0x13EE JUMP JUMPDEST PUSH3 0xA8E DUP4 DUP4 PUSH3 0x15BA JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F4B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x131A DUP2 PUSH3 0x13EE JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1326 PUSH3 0xB5E JUMP JUMPDEST SWAP1 POP PUSH3 0x1333 DUP4 PUSH3 0x1A64 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP4 SWAP1 DUP3 SWAP1 PUSH32 0xC1FEC27BBB8C533FEDD3D449016C429341BFC0DF21A9600E6162605E08F1C78F SWAP1 PUSH1 0x0 SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1371 PUSH3 0x1A7A JUMP JUMPDEST PUSH3 0x137B PUSH3 0x1AB3 JUMP JUMPDEST PUSH3 0x1387 DUP4 DUP4 PUSH3 0x1ADC JUMP JUMPDEST SWAP1 POP PUSH3 0x8AC PUSH3 0x1D1C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP3 AND PUSH4 0x7965DB0B PUSH1 0xE0 SHL EQ DUP1 PUSH3 0x8AC JUMPI POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP4 AND EQ PUSH3 0x8AC JUMP JUMPDEST PUSH32 0x2B421AF391835920C41E77B6810F6E715F5B713C17BC590F55DE6A7D3912E800 SWAP1 JUMP JUMPDEST PUSH3 0xB9A DUP2 CALLER PUSH3 0x1D2F JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1406 PUSH3 0x13CA JUMP JUMPDEST DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x143D SWAP2 SWAP1 PUSH3 0x28F4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH3 0x1461 PUSH3 0x1588 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0x1471 DUP3 DUP5 PUSH3 0x1D6C JUMP JUMPDEST SWAP1 POP DUP1 PUSH3 0x1496 JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x3DAD0DF5 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x91D SWAP2 SWAP1 PUSH3 0x2673 JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH3 0x14B2 DUP6 DUP3 PUSH3 0x29B8 JUMP JUMPDEST POP DUP3 DUP3 PUSH1 0x3 ADD DUP6 PUSH1 0x40 MLOAD PUSH3 0x14C8 SWAP2 SWAP1 PUSH3 0x28F4 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 DUP2 SWAP1 SSTORE POP PUSH32 0xBAD43A69707AC20DD539F3163B927E83BAEF6E967F2C95432129B1DED4166458 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH3 0x150D SWAP3 SWAP2 SWAP1 PUSH3 0x2A84 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP JUMP JUMPDEST PUSH32 0x2DD7BC7DEC4DCEEDDA775E58DD541E08A116C6C53815C0BD028192F7B626800 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x154C PUSH3 0x19B4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0x155C DUP6 DUP6 PUSH3 0x1D7A JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH3 0xE33 JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH3 0x157F SWAP1 DUP6 PUSH3 0x1E23 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x563E037355FFF0507705F481E4B362E4C3996A3B57D07307DEABFCA3D8168600 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1078 DUP4 DUP4 PUSH3 0x1E3A JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x15C7 PUSH3 0x19B4 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0x15D7 DUP6 DUP6 PUSH3 0x1E52 JUMP JUMPDEST SWAP1 POP DUP1 ISZERO PUSH3 0xE33 JUMPI PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP4 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH3 0x157F SWAP1 DUP6 PUSH3 0x1ED0 JUMP JUMPDEST PUSH3 0x1604 PUSH3 0x1EE7 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1610 PUSH3 0x1826 JUMP JUMPDEST DUP1 SLOAD PUSH1 0xFF NOT AND DUP2 SSTORE SWAP1 POP PUSH32 0x5DB9EE0A495BF2E6FF9C91A7834C1BA4FDD244A5E8AA4E537BD38AEAE4B073AA CALLER JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x164C SWAP2 SWAP1 PUSH3 0x24F1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ DUP1 PUSH3 0x16E1 JUMPI POP PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH3 0x16D5 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2FAB DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO JUMPDEST ISZERO PUSH3 0x1700 JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2F8B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE PUSH3 0x9AA DUP2 PUSH3 0x13EE JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x52D1902D PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL SWAP3 POP POP POP DUP1 ISZERO PUSH3 0x177A JUMPI POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F RETURNDATASIZE SWAP1 DUP2 ADD PUSH1 0x1F NOT AND DUP3 ADD SWAP1 SWAP3 MSTORE PUSH3 0x1777 SWAP2 DUP2 ADD SWAP1 PUSH3 0x2AA8 JUMP JUMPDEST PUSH1 0x1 JUMPDEST PUSH3 0x179C JUMPI DUP2 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x91D SWAP2 SWAP1 PUSH3 0x24F1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2FAB DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP2 EQ PUSH3 0x17D0 JUMPI PUSH1 0x40 MLOAD PUSH4 0x2A875269 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x24 ADD PUSH3 0x91D JUMP JUMPDEST PUSH3 0xB59 DUP4 DUP4 PUSH3 0x1F0F JUMP JUMPDEST ADDRESS PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH32 0x0 AND EQ PUSH3 0x1700 JUMPI PUSH1 0x40 MLOAD PUSH4 0x703E46DD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0xCD5ED15C6E187E77E9AEE88184C21F4F2182AB5827CB3B7E07FBEDCD63F03300 SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH3 0x185F SWAP2 SWAP1 PUSH3 0x28F4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 PUSH3 0x1883 PUSH3 0x1588 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0x1893 DUP3 DUP5 PUSH3 0x1F6C JUMP JUMPDEST SWAP1 POP DUP1 PUSH3 0x18B4 JUMPI PUSH1 0x40 MLOAD PUSH4 0x162E9267 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x2 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH3 0x18CF SWAP2 PUSH3 0x245D JUMP JUMPDEST DUP2 PUSH1 0x3 ADD DUP5 PUSH1 0x40 MLOAD PUSH3 0x18E3 SWAP2 SWAP1 PUSH3 0x28F4 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH32 0x57158EAA7E642CEFD761327D5CD6C147DDAAD706EC257F90F4D8B59B3D365EB7 DUP5 DUP5 PUSH1 0x40 MLOAD PUSH3 0x150D SWAP3 SWAP2 SWAP1 PUSH3 0x2A84 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1934 PUSH3 0x13CA JUMP JUMPDEST PUSH1 0x2 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 PUSH3 0x1078 DUP4 PUSH3 0x1F7A JUMP JUMPDEST PUSH3 0x1972 PUSH3 0x1AB3 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x197E PUSH3 0x1826 JUMP JUMPDEST DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR DUP2 SSTORE SWAP1 POP PUSH32 0x62E78CEA01BEE320CD4E420270B5EA74000D11B0C9F74754EBDBFC544B05A258 PUSH3 0x163D CALLER SWAP1 JUMP JUMPDEST PUSH32 0xC1F6FE24621CE81EC5827CAF0253CADB74709B061630E6B55E82371705932000 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1078 DUP4 DUP4 PUSH3 0x1FD8 JUMP JUMPDEST PUSH32 0xF0C57E16840DF040F15088DC2F81FE391C3923BEC73E23A9662EFC9C229C6A00 SWAP1 JUMP JUMPDEST PUSH3 0x1A14 PUSH3 0x2005 JUMP JUMPDEST PUSH3 0x1700 PUSH3 0x202D JUMP JUMPDEST PUSH3 0x1700 PUSH3 0x2005 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1A34 PUSH3 0x13CA JUMP JUMPDEST PUSH1 0x4 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x8AC DUP3 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1A70 PUSH3 0x13CA JUMP JUMPDEST PUSH1 0x3 ADD SWAP2 SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1A86 PUSH3 0x204E JUMP JUMPDEST DUP1 SLOAD SWAP1 SWAP2 POP PUSH1 0x1 NOT ADD PUSH3 0x1AAD JUMPI PUSH1 0x40 MLOAD PUSH4 0x3EE5AEB5 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x2 SWAP1 SSTORE JUMP JUMPDEST PUSH3 0x1ABD PUSH3 0xCE1 JUMP JUMPDEST ISZERO PUSH3 0x1700 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD93C0665 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH3 0x1B0A JUMPI DUP3 PUSH1 0x40 MLOAD PUSH4 0x715397CD PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x91D SWAP2 SWAP1 PUSH3 0x24F1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1B16 PUSH3 0x129D JUMP JUMPDEST SWAP1 POP DUP1 CALLVALUE LT ISZERO PUSH3 0x1B44 JUMPI PUSH1 0x40 MLOAD PUSH4 0x53F01C63 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 DUP2 ADD DUP3 SWAP1 MSTORE CALLVALUE PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 ADD PUSH3 0x91D JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1B50 PUSH3 0x1031 JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH3 0x1B82 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x37766F43 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x91D SWAP2 SWAP1 PUSH3 0x24F1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1B8E PUSH3 0xBBE JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH3 0x1BC0 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0xC9C10A61 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x91D SWAP2 SWAP1 PUSH3 0x24F1 JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x40 MLOAD PUSH3 0x1BD1 SWAP1 PUSH3 0x249C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x40 PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 PUSH1 0x0 CREATE DUP1 ISZERO DUP1 ISZERO PUSH3 0x1C0D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH4 0x33E1A223 PUSH1 0xE0 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP3 ADD DUP8 SWAP1 MSTORE DUP10 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE DUP9 DUP2 AND PUSH1 0x84 DUP4 ADD MSTORE SWAP2 SWAP3 POP SWAP1 DUP3 AND SWAP1 PUSH4 0x33E1A223 SWAP1 PUSH1 0xA4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH3 0x1C73 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH3 0x1C88 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE CALLER PUSH1 0x20 DUP3 ADD MSTORE PUSH3 0x1CAD SWAP3 POP DUP4 SWAP2 POP PUSH3 0x2072 JUMP JUMPDEST PUSH3 0x1CC8 PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x300B DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP3 PUSH3 0x153F JUMP JUMPDEST POP PUSH3 0x1CDE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND CALLVALUE PUSH3 0x20D5 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND SWAP1 PUSH32 0x22DE16EF21E3A33810FBCAF0E737AB9C9E2854FA565D8535041456C789AFCD93 SWAP1 PUSH1 0x0 SWAP1 LOG2 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1D28 PUSH3 0x204E JUMP JUMPDEST PUSH1 0x1 SWAP1 SSTORE POP JUMP JUMPDEST PUSH3 0x1D3B DUP3 DUP3 PUSH3 0xE3B JUMP JUMPDEST PUSH3 0x9AA JUMPI PUSH1 0x40 MLOAD PUSH4 0xE2517D3F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x44 ADD PUSH3 0x91D JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1078 DUP4 DUP4 PUSH3 0x2178 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x1D87 PUSH3 0x151B JUMP JUMPDEST SWAP1 POP PUSH3 0x1D95 DUP5 DUP5 PUSH3 0xE3B JUMP JUMPDEST PUSH3 0x1E18 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE PUSH3 0x1DCD CALLER SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH32 0x2F8788117E7EFF1D82E926EC794901D17C78024A50270940304540A733656F0D PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH3 0x8AC JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH3 0x8AC JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1078 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH3 0x2178 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH3 0x1E5F PUSH3 0x151B JUMP JUMPDEST SWAP1 POP PUSH3 0x1E6D DUP5 DUP5 PUSH3 0xE3B JUMP JUMPDEST ISZERO PUSH3 0x1E18 JUMPI PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP3 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE MLOAD CALLER SWAP3 DUP8 SWAP2 PUSH32 0xF6391F5C32D9C69D2A47EA670B442974B53935D1EDC7FD64EB21E047A839171B SWAP2 SWAP1 LOG4 PUSH1 0x1 SWAP2 POP POP PUSH3 0x8AC JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1078 DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH3 0x21C7 JUMP JUMPDEST PUSH3 0x1EF1 PUSH3 0xCE1 JUMP JUMPDEST PUSH3 0x1700 JUMPI PUSH1 0x40 MLOAD PUSH4 0x8DFC202B PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x1F1A DUP3 PUSH3 0x22C0 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH3 0x1F62 JUMPI PUSH3 0xB59 DUP3 DUP3 PUSH3 0x2320 JUMP JUMPDEST PUSH3 0x9AA PUSH3 0x239C JUMP JUMPDEST PUSH1 0x0 PUSH3 0x1078 DUP4 DUP4 PUSH3 0x21C7 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH1 0x0 ADD DUP1 SLOAD DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD DUP1 ISZERO PUSH3 0x1FCC JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH3 0x1FB7 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH3 0x1FF2 JUMPI PUSH3 0x1FF2 PUSH3 0x294E JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH3 0x200F PUSH3 0x23BC JUMP JUMPDEST PUSH3 0x1700 JUMPI PUSH1 0x40 MLOAD PUSH4 0x1AFCD79F PUSH1 0xE3 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0x2037 PUSH3 0x2005 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x2043 PUSH3 0x1826 JUMP JUMPDEST DUP1 SLOAD PUSH1 0xFF NOT AND SWAP1 SSTORE POP JUMP JUMPDEST PUSH32 0x9B779B17422D0DF92223018B32B4D1FA46E071723D6817E2486D003BECC55F00 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH3 0x207E PUSH3 0x13CA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 SWAP1 SWAP2 ADD PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 DUP4 MLOAD DUP2 SLOAD SWAP3 SWAP1 SWAP5 ADD MLOAD SWAP1 SWAP5 AND PUSH2 0x100 MUL PUSH2 0x100 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT SWAP4 ISZERO ISZERO SWAP4 SWAP1 SWAP4 AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA8 SHL SUB NOT SWAP1 SWAP2 AND OR SWAP2 SWAP1 SWAP2 OR SWAP1 SWAP2 SSTORE POP JUMP JUMPDEST DUP1 SELFBALANCE LT ISZERO PUSH3 0x2101 JUMPI PUSH1 0x40 MLOAD PUSH4 0xCF479181 PUSH1 0xE0 SHL DUP2 MSTORE SELFBALANCE PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 ADD PUSH3 0x91D JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x2150 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x2155 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH3 0xB59 JUMPI PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x2186 DUP4 DUP4 PUSH3 0x1E3A JUMP JUMPDEST PUSH3 0x21BE JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP5 SWAP1 SSTORE DUP5 SLOAD DUP5 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH3 0x8AC JUMP JUMPDEST POP PUSH1 0x0 PUSH3 0x8AC JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH3 0x1E18 JUMPI PUSH1 0x0 PUSH3 0x21EE PUSH1 0x1 DUP4 PUSH3 0x2AC2 JUMP JUMPDEST DUP6 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH3 0x2204 SWAP1 PUSH1 0x1 SWAP1 PUSH3 0x2AC2 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 EQ PUSH3 0x2270 JUMPI PUSH1 0x0 DUP7 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH3 0x2228 JUMPI PUSH3 0x2228 PUSH3 0x294E JUMP JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP8 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH3 0x224E JUMPI PUSH3 0x224E PUSH3 0x294E JUMP JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE SWAP2 DUP3 MSTORE PUSH1 0x1 DUP9 ADD SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP4 SWAP1 SSTORE JUMPDEST DUP6 SLOAD DUP7 SWAP1 DUP1 PUSH3 0x2284 JUMPI PUSH3 0x2284 PUSH3 0x2AE4 JUMP JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE DUP6 PUSH1 0x1 ADD PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH1 0x1 SWAP4 POP POP POP POP PUSH3 0x8AC JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH3 0x22F0 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x91D SWAP2 SWAP1 PUSH3 0x24F1 JUMP JUMPDEST PUSH1 0x0 DUP1 MLOAD PUSH1 0x20 PUSH3 0x2FAB DUP4 CODECOPY DUP2 MLOAD SWAP2 MSTORE DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH3 0x233F SWAP2 SWAP1 PUSH3 0x28F4 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH3 0x237C JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH3 0x2381 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH3 0x2393 DUP6 DUP4 DUP4 PUSH3 0x23D8 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH3 0x1700 JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH3 0x23C8 PUSH3 0x19E6 JUMP JUMPDEST SLOAD PUSH1 0x1 PUSH1 0x40 SHL SWAP1 DIV PUSH1 0xFF AND SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH3 0x23F1 JUMPI PUSH3 0x23EB DUP3 PUSH3 0x2433 JUMP JUMPDEST PUSH3 0x1078 JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH3 0x2409 JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH3 0x242C JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH3 0x91D SWAP2 SWAP1 PUSH3 0x24F1 JUMP JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH3 0x2444 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP1 SLOAD PUSH3 0x246B SWAP1 PUSH3 0x2912 JUMP JUMPDEST PUSH1 0x0 DUP3 SSTORE DUP1 PUSH1 0x1F LT PUSH3 0x247C JUMPI POP POP JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP1 PUSH3 0xB9A SWAP2 SWAP1 PUSH3 0x24AA JUMP JUMPDEST PUSH2 0x410 DUP1 PUSH3 0x2AFB DUP4 CODECOPY ADD SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x24C1 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x24AB JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x24D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND DUP2 EQ PUSH3 0x1078 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x251D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x2535 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x1078 DUP3 PUSH3 0x2505 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP5 GT ISZERO PUSH3 0x2573 JUMPI PUSH3 0x2573 PUSH3 0x2540 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP6 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP3 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH3 0x259E JUMPI PUSH3 0x259E PUSH3 0x2540 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP1 SWAP4 POP DUP6 DUP2 MSTORE DUP7 DUP7 DUP7 ADD GT ISZERO PUSH3 0x25B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 DUP6 PUSH1 0x20 DUP4 ADD CALLDATACOPY PUSH1 0x0 PUSH1 0x20 DUP8 DUP4 ADD ADD MSTORE POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x25E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x25FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD PUSH1 0x1F DUP2 ADD DUP5 SGT PUSH3 0x260E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0xE33 DUP5 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH3 0x2556 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x263C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x2622 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD DUP1 DUP5 MSTORE PUSH3 0x265F DUP2 PUSH1 0x20 DUP7 ADD PUSH1 0x20 DUP7 ADD PUSH3 0x261F JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP3 SWAP1 SWAP3 ADD PUSH1 0x20 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 PUSH3 0x1078 PUSH1 0x20 DUP4 ADD DUP5 PUSH3 0x2645 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x269B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x26B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD SWAP2 POP PUSH3 0x26C8 PUSH1 0x20 DUP5 ADD PUSH3 0x2505 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x26E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x26F0 DUP4 PUSH3 0x2505 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x270C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP4 ADD PUSH1 0x1F DUP2 ADD DUP6 SGT PUSH3 0x271E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x272F DUP6 DUP3 CALLDATALOAD PUSH1 0x20 DUP5 ADD PUSH3 0x2556 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x2773 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x2755 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x2793 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP DUP1 CALLDATALOAD SWAP3 PUSH1 0x20 SWAP1 SWAP2 ADD CALLDATALOAD SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xC0 DUP8 DUP10 SUB SLT ISZERO PUSH3 0x27BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x27C7 DUP8 PUSH3 0x2505 JUMP JUMPDEST SWAP6 POP PUSH3 0x27D7 PUSH1 0x20 DUP9 ADD PUSH3 0x2505 JUMP JUMPDEST SWAP5 POP PUSH3 0x27E7 PUSH1 0x40 DUP9 ADD PUSH3 0x2505 JUMP JUMPDEST SWAP4 POP PUSH3 0x27F7 PUSH1 0x60 DUP9 ADD PUSH3 0x2505 JUMP JUMPDEST SWAP3 POP PUSH3 0x2807 PUSH1 0x80 DUP9 ADD PUSH3 0x2505 JUMP JUMPDEST SWAP2 POP PUSH1 0xA0 DUP8 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x2773 JUMPI DUP4 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH3 0x2836 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 ADD PUSH1 0x20 DUP5 MSTORE DUP1 DUP6 MLOAD DUP1 DUP4 MSTORE PUSH1 0x40 DUP7 ADD SWAP2 POP PUSH1 0x40 DUP2 PUSH1 0x5 SHL DUP8 ADD ADD SWAP3 POP PUSH1 0x20 DUP8 ADD PUSH1 0x0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x28B8 JUMPI PUSH1 0x3F NOT DUP9 DUP7 SUB ADD DUP5 MSTORE PUSH3 0x28A5 DUP6 DUP4 MLOAD PUSH3 0x2645 JUMP JUMPDEST SWAP5 POP SWAP3 DUP6 ADD SWAP3 SWAP1 DUP6 ADD SWAP1 PUSH1 0x1 ADD PUSH3 0x2886 JUMP JUMPDEST POP SWAP3 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x28D9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x28E4 DUP4 PUSH3 0x2505 JUMP JUMPDEST SWAP2 POP PUSH3 0x26C8 PUSH1 0x20 DUP5 ADD PUSH3 0x2505 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH3 0x2908 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH3 0x261F JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x2927 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x2948 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0xB59 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH3 0x298F JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x29B0 JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x299B JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x29D4 JUMPI PUSH3 0x29D4 PUSH3 0x2540 JUMP JUMPDEST PUSH3 0x29EC DUP2 PUSH3 0x29E5 DUP5 SLOAD PUSH3 0x2912 JUMP JUMPDEST DUP5 PUSH3 0x2964 JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x2A24 JUMPI PUSH1 0x0 DUP5 ISZERO PUSH3 0x2A0B JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH3 0x29B0 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x2A55 JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH3 0x2A34 JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH3 0x2A74 JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH1 0x40 DUP2 MSTORE PUSH1 0x0 PUSH3 0x2A99 PUSH1 0x40 DUP4 ADD DUP6 PUSH3 0x2645 JUMP JUMPDEST SWAP1 POP DUP3 PUSH1 0x20 DUP4 ADD MSTORE SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH3 0x2ABB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH3 0x8AC JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x31 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD PUSH2 0x410 CODESIZE SUB DUP1 PUSH2 0x410 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x22 SWAP2 PUSH2 0x25A JUMP JUMPDEST PUSH2 0x2C DUP3 DUP3 PUSH2 0x33 JUMP JUMPDEST POP POP PUSH2 0x358 JUMP JUMPDEST PUSH2 0x3C DUP3 PUSH2 0x92 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 PUSH32 0xBC7CD75A20EE27FD9ADEBAB32041F755214DBC6BFFA90CC0225B39DA2E5C2D3B SWAP1 PUSH1 0x0 SWAP1 LOG2 DUP1 MLOAD ISZERO PUSH2 0x86 JUMPI PUSH2 0x81 DUP3 DUP3 PUSH2 0x109 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH2 0x8E PUSH2 0x180 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EXTCODESIZE PUSH1 0x0 SUB PUSH2 0xC8 JUMPI DUP1 PUSH1 0x40 MLOAD PUSH4 0x4C9C8CE3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF SWAP2 SWAP1 PUSH2 0x328 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x40 MLOAD PUSH2 0x126 SWAP2 SWAP1 PUSH2 0x33C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x161 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x166 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x177 DUP6 DUP4 DUP4 PUSH2 0x1A1 JUMP JUMPDEST SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST CALLVALUE ISZERO PUSH2 0x19F JUMPI PUSH1 0x40 MLOAD PUSH4 0xB398979F PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST JUMP JUMPDEST PUSH1 0x60 DUP3 PUSH2 0x1B6 JUMPI PUSH2 0x1B1 DUP3 PUSH2 0x1F7 JUMP JUMPDEST PUSH2 0x1F0 JUMP JUMPDEST DUP2 MLOAD ISZERO DUP1 ISZERO PUSH2 0x1CD JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND EXTCODESIZE ISZERO JUMPDEST ISZERO PUSH2 0x1ED JUMPI DUP4 PUSH1 0x40 MLOAD PUSH4 0x9996B315 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBF SWAP2 SWAP1 PUSH2 0x328 JUMP JUMPDEST POP DUP1 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 MLOAD ISZERO PUSH2 0x207 JUMPI DUP1 MLOAD DUP1 DUP3 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH4 0xD6BDA275 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x251 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x239 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x26D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x284 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP1 DUP3 GT ISZERO PUSH2 0x2A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 DUP6 ADD SWAP2 POP DUP6 PUSH1 0x1F DUP4 ADD SLT PUSH2 0x2B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD DUP2 DUP2 GT ISZERO PUSH2 0x2C7 JUMPI PUSH2 0x2C7 PUSH2 0x220 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x1F DUP3 ADD PUSH1 0x1F NOT SWAP1 DUP2 AND PUSH1 0x3F ADD AND DUP2 ADD SWAP1 DUP4 DUP3 GT DUP2 DUP4 LT OR ISZERO PUSH2 0x2EF JUMPI PUSH2 0x2EF PUSH2 0x220 JUMP JUMPDEST DUP2 PUSH1 0x40 MSTORE DUP3 DUP2 MSTORE DUP9 PUSH1 0x20 DUP5 DUP8 ADD ADD GT ISZERO PUSH2 0x308 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x319 DUP4 PUSH1 0x20 DUP4 ADD PUSH1 0x20 DUP9 ADD PUSH2 0x236 JUMP JUMPDEST DUP1 SWAP6 POP POP POP POP POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x34E DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x236 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xAA DUP1 PUSH2 0x366 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0xA PUSH1 0xC JUMP JUMPDEST STOP JUMPDEST PUSH1 0x18 PUSH1 0x14 PUSH1 0x1A JUMP JUMPDEST PUSH1 0x51 JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4C PUSH32 0x360894A13BA1A3210667C828492DB98DCA3E2076CC3735A920A3CA505D382BBC SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST CALLDATASIZE PUSH1 0x0 DUP1 CALLDATACOPY PUSH1 0x0 DUP1 CALLDATASIZE PUSH1 0x0 DUP5 GAS DELEGATECALL RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY DUP1 DUP1 ISZERO PUSH1 0x6F JUMPI RETURNDATASIZE PUSH1 0x0 RETURN JUMPDEST RETURNDATASIZE PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 POP LT 0xFB 0xD3 CALLDATASIZE BALANCE 0x4F CREATE2 EQ 0xE3 0xC3 0xA5 0xED SWAP9 0xAE 0xD1 0xC9 0xC9 PUSH11 0x5210A9DF6DC914E2A04BBE PUSH24 0x2564736F6C6343000818003330F3325E23B502DCE693B147 0xD3 PUSH30 0xE928D14DD5AB09BBC928FB79867329AC5B83DCCFB718B018E1B06F849958 0xBA 0xF6 PUSH28 0xB252302F06A69871F72C5127EE92F659D349EEC46D2C564A125684D NOT CALLVALUE 0xA6 SLT EXP PUSH17 0xCC341D3A26D362E358A775E07DEC176A42 0x24 SWAP8 ADDMOD BLOCKHASH EXTCODEHASH MCOPY 0xD2 DUP12 DELEGATECALL SWAP3 STATICCALL 0xCD GT 0xE8 JUMPDEST 0xC1 SDIV 0x4E PUSH13 0x27C155ED468F6FF4F7ECD0189A 0xB7 0xA9 0x24 0x4D CREATE DUP5 DUP2 0x22 ISZERO NUMBER ISZERO 0xAF PUSH18 0xFE140F3DB0FE014031783B0946B8C9D2E336 ADDMOD SWAP5 LOG1 EXTCODESIZE LOG1 LOG3 0x21 MOD PUSH8 0xC828492DB98DCA3E KECCAK256 PUSH23 0xCC3735A920A3CA505D382BBC65D7A28E3265B37A647492 SWAP16 CALLER PUSH6 0x21B332C1681B SWAP4 EXTCODEHASH PUSH13 0xB9F3376673440D862A819590C8 EQ 0xC6 0xD2 PUSH26 0x357359F817D25ADB06A7B9F6E493592B7D3B8BB268ADB6764F22 DUP8 SHR PUSH25 0xB70C8896C7119179FC4E9B6F4CF323F8DB6EADB7D79007D1E0 0xC EXTCODEHASH LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLCODE SWAP15 0xD9 PUSH25 0x1C8ED513C4495C03DC9E565674ABAD73ABC8496EEB94A0F610 TSTORE 0xC0 0xA9 PUSH5 0x736F6C6343 STOP ADDMOD XOR STOP CALLER ", + "sourceMap": "235:319:56:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4046:76:54;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4046:76:54;;;;;160:25:61;;;148:2;133:18;4046:76:54;;;;;;;;1695:212:1;;;;;;;;;;-1:-1:-1;1695:212:1;;;;;:::i;:::-;;:::i;:::-;;;652:14:61;;645:22;627:41;;615:2;600:18;1695:212:1;487:187:61;17650:193:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;15061:432::-;;;;;;;;;;-1:-1:-1;15061:432:54;;;;;:::i;:::-;;:::i;:::-;;19844:147;;;;;;;;;;-1:-1:-1;19844:147:54;;;;;:::i;:::-;;:::i;291:91:56:-;;;;;;;;;;-1:-1:-1;359:16:56;;;;;;;;;;;;-1:-1:-1;;;359:16:56;;;;291:91;;;;;;;:::i;14265:201:54:-;;;;;;;;;;-1:-1:-1;14265:201:54;;;;;:::i;:::-;;:::i;16185:215::-;;;;;;;;;;-1:-1:-1;16185:215:54;;;;;:::i;:::-;;:::i;4759:191:0:-;;;;;;;;;;-1:-1:-1;4759:191:0;;;;;:::i;:::-;;:::i;13912:208:54:-;;;;;;;;;;-1:-1:-1;13912:208:54;;;;;:::i;:::-;;:::i;5246:136:0:-;;;;;;;;;;-1:-1:-1;5246:136:0;;;;;:::i;:::-;;:::i;5422:426:58:-;;;;;;;;;;-1:-1:-1;5422:426:58;;;;;:::i;:::-;;:::i;6348:245:0:-;;;;;;;;;;-1:-1:-1;6348:245:0;;;;;:::i;:::-;;:::i;18583:190:54:-;;;;;;;;;;;;;:::i;10892:75::-;;;;;;;;;;;;;:::i;3824:94::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3824:94:54;;3602:68;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3602:68:54;;4161:214:3;;;;;;:::i;:::-;;:::i;16645:178:54:-;;;;;;;;;;;;;:::i;3708:134:3:-;;;;;;;;;;;;;:::i;4893:396:58:-;;;;;;;;;;-1:-1:-1;4893:396:58;;;;;:::i;:::-;;:::i;2692:145:8:-;;;;;;;;;;;;;:::i;20184:151:54:-;;;;;;;;;;-1:-1:-1;20184:151:54;;;;;:::i;:::-;;:::i;17911:400::-;;;;;;;;;;-1:-1:-1;17911:400:54;;;;;:::i;:::-;;:::i;4541:68::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4541:68:54;;5989:213:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;10744:71:54:-;;;;;;;;;;;;;:::i;2492:233:1:-;;;;;;;;;;-1:-1:-1;2492:233:1;;;;;:::i;:::-;;:::i;3732:207:0:-;;;;;;;;;;-1:-1:-1;3732:207:0;;;;;:::i;:::-;;:::i;4299:94:54:-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;4299:94:54;;9590:975;;;;;;;;;;-1:-1:-1;9590:975:54;;;;;:::i;:::-;;:::i;14722:195::-;;;;;;;;;;;;;:::i;2317:49:0:-;;;;;;;;;;-1:-1:-1;2317:49:0;2362:4;2317:49;;3658:227:1;;;;;;;;;;-1:-1:-1;3658:227:1;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1819:58:3:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:3;;;;;3352:68:54;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;3352:68:54;;16888:340;;;;;;;;;;-1:-1:-1;16888:340:54;;;;;:::i;:::-;;:::i;6341:592:58:-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;15950:173:54:-;;;;;;;;;;;;;:::i;2893:222:1:-;;;;;;;;;;-1:-1:-1;2893:222:1;;;;;:::i;:::-;;:::i;5662:138:0:-;;;;;;;;;;-1:-1:-1;5662:138:0;;;;;:::i;:::-;;:::i;2720:62:54:-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2720:62:54;;2884:66;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2884:66:54;;19056:202;;;;;;;;;;-1:-1:-1;19056:202:54;;;;;:::i;:::-;;:::i;11737:199::-;;;;;;:::i;:::-;;:::i;1695:212:1:-;1780:4;-1:-1:-1;;;;;;1803:57:1;;-1:-1:-1;;;1803:57:1;;:97;;;1864:36;1888:11;1864:23;:36::i;:::-;1796:104;1695:212;-1:-1:-1;;1695:212:1:o;17650:193:54:-;17701:23;17736:33;17772:29;:27;:29::i;:::-;17818:18;;;-1:-1:-1;;;;;17818:18:54;;17650:193;-1:-1:-1;;17650:193:54:o;15061:432::-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;15168:17:54::1;-1:-1:-1::0;;;;;15168:29:54::1;;15201:1;15168:34:::0;15164:121:::1;;15256:17;15225:49;;-1:-1:-1::0;;;15225:49:54::1;;;;;;;;:::i;:::-;;;;;;;;15164:121;15295:25;15323:26;:24;:26::i;:::-;15295:54;;15359:44;15385:17;15359:25;:44::i;:::-;15468:17;-1:-1:-1::0;;;;;15418:68:54::1;15449:17;-1:-1:-1::0;;;;;15418:68:54::1;;;;;;;;;;;15154:339;15061:432:::0;;:::o;19844:147::-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;19951:33:54::1;19972:11;19951:20;:33::i;:::-;19844:147:::0;;:::o;14265:201::-;14324:4;14340:33;14376:29;:27;:29::i;:::-;-1:-1:-1;;;;;14422:25:54;;;;;;;:16;;;;:25;;-1:-1:-1;;14422:25:54;;;:37;;;;14265:201::o;16185:215::-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;16283:33:54::1;16319:29;:27;:29::i;:::-;16358:16;;:35:::0;;;;-1:-1:-1;;16185:215:54:o;4759:191:0:-;4824:7;4843:30;4876:26;:24;:26::i;:::-;4919:8;:14;;;;;-1:-1:-1;;4919:14:0;;;:24;;;;4759:191::o;13912:208:54:-;13979:7;13998:33;14034:29;:27;:29::i;:::-;-1:-1:-1;;;;;14080:25:54;;;;;;;:16;;;;:25;;;;;:33;;;;;;;;13912:208;-1:-1:-1;;13912:208:54:o;5246:136:0:-;5320:18;5333:4;5320:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5350:25:::1;5361:4;5367:7;5350:10;:25::i;:::-;;5246:136:::0;;;:::o;5422:426:58:-;5510:19;5541:32;5576:28;:26;:28::i;:::-;5541:63;;5666:69;5721:11;5704:29;;;;;;;;:::i;:::-;;;;-1:-1:-1;;5704:29:58;;;;;;;;;5694:40;;5704:29;5694:40;;;;5666:1;;:27;:69::i;:::-;5661:130;;5758:22;;-1:-1:-1;;;5758:22:58;;;;;;;;;;;5661:130;5808:1;:20;;5829:11;5808:33;;;;;;:::i;:::-;;;;;;;;;;;;;;5801:40;;;5422:426;;;:::o;6348:245:0:-;-1:-1:-1;;;;;6441:34:0;;966:10:7;6441:34:0;6437:102;;6498:30;;-1:-1:-1;;;6498:30:0;;;;;;;;;;;6437:102;6549:37;6561:4;6567:18;6549:11;:37::i;:::-;;6348:245;;:::o;18583:190:54:-;18633:22;18667:33;18703:29;:27;:29::i;:::-;18749:17;;;;18583:190;-1:-1:-1;;18583:190:54:o;10892:75::-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;10950:10:54::1;:8;:10::i;:::-;10892:75:::0;:::o;4161:214:3:-;2655:13;:11;:13::i;:::-;4276:36:::1;4294:17;4276;:36::i;:::-;4322:46;4344:17;4363:4;4322:21;:46::i;16645:178:54:-:0;16700:7;16719:33;16755:29;:27;:29::i;:::-;16801:15;;;-1:-1:-1;;;;;16801:15:54;;16645:178;-1:-1:-1;;16645:178:54:o;3708:134:3:-;3777:7;2926:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3708:134:3;:::o;4893:396:58:-;4975:25;5012:32;5047:28;:26;:28::i;:::-;5012:63;-1:-1:-1;5137:40:58;5012:63;5165:11;5137:27;:40::i;:::-;5132:101;;5200:22;;-1:-1:-1;;;5200:22:58;;;;;;;;;;;5132:101;5249:33;;;;:20;;;:33;;;;;5242:40;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4893:396;;;:::o;2692:145:8:-;2739:4;2755:25;2783:21;:19;:21::i;:::-;2821:9;;;;2692:145;-1:-1:-1;;2692:145:8:o;20184:151:54:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;20293:35:54::1;20316:11;20293:22;:35::i;17911:400::-:0;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;-1:-1:-1;;;;;18023:29:54;::::1;18019:106;;18098:15;18075:39;;-1:-1:-1::0;;;18075:39:54::1;;;;;;;;:::i;18019:106::-;18135:26;18164:20;:18;:20::i;:::-;18135:49;;18194:36;18214:15;18194:19;:36::i;:::-;18288:15;-1:-1:-1::0;;;;;18245:59:54::1;18268:18;-1:-1:-1::0;;;;;18245:59:54::1;;;;;;;;;;;18009:302;17911:400:::0;;:::o;5989:213:58:-;6051:25;6088:32;6123:28;:26;:28::i;:::-;6088:63;-1:-1:-1;6168:27:58;6088:63;6168:25;:27::i;:::-;6161:34;;;5989:213;:::o;10744:71:54:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;10800:8:54::1;:6;:8::i;2492:233:1:-:0;2573:7;2592:40;2635:36;:34;:36::i;:::-;2688:14;:20;;;;;;;;;;2592:79;;-1:-1:-1;2688:30:1;;2712:5;2688:23;:30::i;:::-;2681:37;2492:233;-1:-1:-1;;;;2492:233:1:o;3732:207:0:-;3809:4;3825:30;3858:26;:24;:26::i;:::-;3901:8;:14;;;;;;;;;;;-1:-1:-1;;;;;3901:31:0;;;;;;;;;-1:-1:-1;;3901:31:0;;;;;;3732:207::o;9590:975:54:-;4158:30:2;4191:26;:24;:26::i;:::-;4302:15;;4158:59;;-1:-1:-1;4302:15:2;-1:-1:-1;;;4302:15:2;;;4301:16;;-1:-1:-1;;;;;4348:14:2;4279:19;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:2;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:2;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:2;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;;;;;4951:18:2;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:2;-1:-1:-1;;;5013:22:2;;;4979:67;10032:17:54::1;:15;:17::i;:::-;10059:22;:20;:22::i;:::-;10091:24;:22;:24::i;:::-;10126:44;2362:4:0;10157:12:54::0;10126:10:::1;:44::i;:::-;;10180:31;-1:-1:-1::0;;;;;;;;;;;10204:6:54::1;10180:10;:31::i;:::-;;10221:35;-1:-1:-1::0;;;;;;;;;;;10247:8:54::1;10221:10;:35::i;:::-;;10266:37;-1:-1:-1::0;;;;;;;;;;;10293:9:54::1;10266:10;:37::i;:::-;;10314:33;10350:29;:27;:29::i;:::-;10390:18;::::0;::::1;:36:::0;;-1:-1:-1;;;;;;10390:36:54::1;-1:-1:-1::0;;;;;10390:36:54;::::1;;::::0;;10436:17:::1;::::0;::::1;:34:::0;;;10549:9:::1;-1:-1:-1::0;10530:16:54;;::::1;:28:::0;-1:-1:-1;5066:101:2;;;;5100:23;;-1:-1:-1;;;;5100:23:2;;;5142:14;;-1:-1:-1;8593:50:61;;5142:14:2;;8581:2:61;8566:18;5142:14:2;;;;;;;5066:101;4092:1081;;;;;9590:975:54;;;;;;:::o;14722:195::-;14779:7;14798:33;14834:29;:27;:29::i;:::-;14880:30;-1:-1:-1;;;;;14880:30:54;;14722:195;-1:-1:-1;;14722:195:54:o;3658:227:1:-;3725:16;3753:40;3796:36;:34;:36::i;:::-;3849:14;:20;;;;;;;;;;3753:79;;-1:-1:-1;3849:29:1;;:27;:29::i;:::-;3842:36;3658:227;-1:-1:-1;;;3658:227:1:o;16888:340:54:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;16981:5:54::1;-1:-1:-1::0;;;;;16981:17:54::1;;17002:1;16981:22:::0;16977:93:::1;;17053:5;17026:33;;-1:-1:-1::0;;;17026:33:54::1;;;;;;;;:::i;16977:93::-;17080:16;17099:24;:22;:24::i;:::-;17080:43;;17133:30;17157:5;17133:23;:30::i;:::-;17215:5;-1:-1:-1::0;;;;;17178:43:54::1;17205:8;-1:-1:-1::0;;;;;17178:43:54::1;;;;;;;;;;;16967:261;16888:340:::0;;:::o;6341:592:58:-;6402:24;6438:32;6473:28;:26;:28::i;:::-;6438:63;-1:-1:-1;6579:30:58;6612:27;6438:63;6612:25;:27::i;:::-;6579:60;;6649:28;6693:13;:20;-1:-1:-1;;;;;6680:34:58;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6649:65;;6770:9;6765:132;6789:13;:20;6785:1;:24;6765:132;;;6848:1;:20;;:38;6869:13;6883:1;6869:16;;;;;;;;:::i;:::-;;;;;;;6848:38;;;;;;;;;;;6830:56;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:12;6843:1;6830:15;;;;;;;;:::i;:::-;;;;;;;;;;:56;6811:3;;6765:132;;;-1:-1:-1;6914:12:58;6341:592;-1:-1:-1;;;6341:592:58:o;15950:173:54:-;15999:7;16018:33;16054:29;:27;:29::i;:::-;16100:16;;;;15950:173;-1:-1:-1;;15950:173:54:o;2893:222:1:-;2964:7;2983:40;3026:36;:34;:36::i;:::-;3079:14;:20;;;;;;;;;;2983:79;;-1:-1:-1;3079:29:1;;:27;:29::i;5662:138:0:-;5737:18;5750:4;5737:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5767:26:::1;5779:4;5785:7;5767:11;:26::i;19056:202:54:-:0;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;:::-;19137:13:54::1;19153:19;:17;:19::i;:::-;19137:35;;19182:22;19201:2;19182:18;:22::i;:::-;19219:32;::::0;19248:2;;19241:5;;19219:32:::1;::::0;;;::::1;19127:131;19056:202:::0;;:::o;11737:199::-;11870:7;3395:21:9;:19;:21::i;:::-;2316:19:8::1;:17;:19::i;:::-;11896:33:54::2;11913:5;11920:8;11896:16;:33::i;:::-;11889:40;;3437:20:9::0;:18;:20::i;3443:202:0:-;3528:4;-1:-1:-1;;;;;;3551:47:0;;-1:-1:-1;;;3551:47:0;;:87;;-1:-1:-1;;;;;;;;;;1134:40:10;;;3602:36:0;1035:146:10;6469:186:54;6608:31;;6469:186::o;4148:103:0:-;4214:30;4225:4;966:10:7;4214::0;:30::i;15499:213:54:-;15580:33;15616:29;:27;:29::i;:::-;15655:50;;-1:-1:-1;;;;;;15655:50:54;-1:-1:-1;;;;;15655:50:54;;;;;;;;;;;-1:-1:-1;15499:213:54:o;3357:601:58:-;3441:19;3490:11;3473:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;3463:40;;;;;;3441:62;;3514:32;3549:28;:26;:28::i;:::-;3514:63;-1:-1:-1;3638:10:58;3651:35;3514:63;3674:11;3651:22;:35::i;:::-;3638:48;;3702:5;3697:81;;3755:11;3730:37;;-1:-1:-1;;;3730:37:58;;;;;;;;:::i;3697:81::-;3788:33;;;;:20;;;:33;;;;;:47;3824:11;3788:33;:47;:::i;:::-;;3881:11;3845:1;:20;;3866:11;3845:33;;;;;;:::i;:::-;;;;;;;;;;;;;:47;;;;3908:43;3926:11;3939;3908:43;;;;;;;:::i;:::-;;;;;;;;3431:527;;;3357:601;:::o;2787:177:0:-;2920:28;;2787:177::o;3987:348:1:-;4073:4;4089:40;4132:36;:34;:36::i;:::-;4089:79;;4178:12;4193:31;4210:4;4216:7;4193:16;:31::i;:::-;4178:46;;4238:7;4234:71;;;4261:14;:20;;;;;;;;;;:33;;4286:7;4261:24;:33::i;:::-;;4321:7;3987:348;-1:-1:-1;;;;3987:348:1:o;1473:183:58:-;1610:30;;1473:183::o;6431:138:45:-;6511:4;6534:28;6544:3;6556:5;6534:9;:28::i;4438:353:1:-;4525:4;4541:40;4584:36;:34;:36::i;:::-;4541:79;;4630:12;4645:32;4663:4;4669:7;4645:17;:32::i;:::-;4630:47;;4691:7;4687:74;;;4714:14;:20;;;;;;;;;;:36;;4742:7;4714:27;:36::i;3674:178:8:-;2563:16;:14;:16::i;:::-;3732:25:::1;3760:21;:19;:21::i;:::-;3791:17:::0;;-1:-1:-1;;3791:17:8::1;::::0;;;-1:-1:-1;3823:22:8::1;966:10:7::0;3832:12:8::1;3823:22;;;;;;:::i;:::-;;;;;;;;3722:130;3674:178::o:0;4603:312:3:-;4683:4;-1:-1:-1;;;;;4692:6:3;4675:23;;;:120;;;4789:6;-1:-1:-1;;;;;4753:42:3;:32;-1:-1:-1;;;;;;;;;;;1519:53:22;-1:-1:-1;;;;;1519:53:22;;1441:138;4753:32:3;-1:-1:-1;;;;;4753:42:3;;;4675:120;4658:251;;;4869:29;;-1:-1:-1;;;4869:29:3;;;;;;;;;;;4658:251;4603:312::o;11061:98:54:-;-1:-1:-1;;;;;;;;;;;3191:16:0;3202:4;3191:10;:16::i;6057:538:3:-;6174:17;-1:-1:-1;;;;;6156:50:3;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6156:52:3;;;;;;;;-1:-1:-1;;6156:52:3;;;;;;;;;;;;:::i;:::-;;;6152:437;;6560:17;6518:60;;-1:-1:-1;;;6518:60:3;;;;;;;;:::i;6152:437::-;-1:-1:-1;;;;;;;;;;;6250:40:3;;6246:120;;6317:34;;-1:-1:-1;;;6317:34:3;;;;;160:25:61;;;133:18;;6317:34:3;14:177:61;6246:120:3;6379:54;6409:17;6428:4;6379:29;:54::i;5032:213::-;5106:4;-1:-1:-1;;;;;5115:6:3;5098:23;;5094:145;;5199:29;;-1:-1:-1;;;5199:29:3;;;;;;;;;;;1147:162:8;1270:23;;1147:162::o;4174:586:58:-;4260:19;4309:11;4292:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;4282:40;;;;;;4260:62;;4333:32;4368:28;:26;:28::i;:::-;4333:63;-1:-1:-1;4460:12:58;4475:38;4333:63;4501:11;4475:25;:38::i;:::-;4460:53;;4529:7;4524:68;;4559:22;;-1:-1:-1;;;4559:22:58;;;;;;;;;;;4524:68;4609:33;;;;:20;;;:33;;;;;4602:40;;;:::i;:::-;4659:1;:20;;4680:11;4659:33;;;;;;:::i;:::-;;;;;;;;;;;;;4652:40;;;4708:45;4728:11;4741;4708:45;;;;;;;:::i;18317:190:54:-;18389:33;18425:29;:27;:29::i;:::-;18464:18;;:36;;-1:-1:-1;;;;;;18464:36:54;-1:-1:-1;;;;;18464:36:54;;;;;;;;;;;-1:-1:-1;18317:190:54:o;7776:273:45:-;7839:16;7867:22;7892:19;7900:3;7892:7;:19::i;3366:176:8:-;2316:19;:17;:19::i;:::-;3425:25:::1;3453:21;:19;:21::i;:::-;3484:16:::0;;-1:-1:-1;;3484:16:8::1;3496:4;3484:16;::::0;;3425:49;-1:-1:-1;3515:20:8::1;3522:12;966:10:7::0;;887:96;1250:207:1;1403:38;;1250:207::o;9547:156:45:-;9621:7;9671:22;9675:3;9687:5;9671:3;:22::i;8737:170:2:-;8870:21;;8737:170::o;1836:97:8:-;6931:20:2;:18;:20::i;:::-;1899:27:8::1;:25;:27::i;3231:65:0:-:0;6931:20:2;:18;:20::i;17234:172:54:-;17301:33;17337:29;:27;:29::i;:::-;17376:15;;:23;;-1:-1:-1;;;;;;17376:23:54;-1:-1:-1;;;;;17376:23:54;;;;;;;;;;;-1:-1:-1;17234:172:54:o;9090:115:45:-;9153:7;9179:19;9187:3;4556:18;;4474:107;19264:162:54;19322:33;19358:29;:27;:29::i;:::-;19397:17;;:22;;;;-1:-1:-1;19264:162:54:o;3470:384:9:-;3519:32;3554:28;:26;:28::i;:::-;3670:9;;3519:63;;-1:-1:-1;;;3670:20:9;3666:88;;3713:30;;-1:-1:-1;;;3713:30:9;;;;;;;;;;;3666:88;1991:1;3828:19;;3470:384::o;2905:128:8:-;2970:8;:6;:8::i;:::-;2966:61;;;3001:15;;-1:-1:-1;;;3001:15:8;;;;;;;;;;;12015:1571:54;12091:7;-1:-1:-1;;;;;12132:19:54;;12128:85;;12196:5;12174:28;;-1:-1:-1;;;12174:28:54;;;;;;;;:::i;12128:85::-;12223:21;12247:18;:16;:18::i;:::-;12223:42;;12325:13;12313:9;:25;12309:111;;;12361:48;;-1:-1:-1;;;12361:48:54;;;;;11640:25:61;;;12399:9:54;11681:18:61;;;11674:34;11613:18;;12361:48:54;11466:248:61;12309:111:54;12430:35;12468:26;:24;:26::i;:::-;12430:64;;12508:27;-1:-1:-1;;;;;12508:39:54;;12551:1;12508:44;12504:141;;12606:27;12575:59;;-1:-1:-1;;;12575:59:54;;;;;;;;:::i;12504:141::-;12655:20;12678:24;:22;:24::i;:::-;12655:47;;12716:12;-1:-1:-1;;;;;12716:24:54;;12744:1;12716:29;12712:107;;12795:12;12768:40;;-1:-1:-1;;;12768:40:54;;;;;;;;:::i;12712:107::-;12898:27;12945;12928:49;;;;;:::i;:::-;-1:-1:-1;;;;;11948:32:61;;;11930:51;;12017:2;12012;11997:18;;11990:30;;;-1:-1:-1;12036:18:61;;;12029:29;12090:2;12075:18;12928:49:54;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13024:107:54;;-1:-1:-1;;;13024:107:54;;13079:4;13024:107;;;12401:34:61;-1:-1:-1;;;;;12471:15:61;;;12451:18;;;12444:43;12503:18;;;12496:34;;;12566:15;;;12546:18;;;12539:43;12619:15;;;12598:19;;;12591:44;12898:79:54;;-1:-1:-1;13024:46:54;;;;;;12335:19:61;;13024:107:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13228:57:54;;;;;;;;;13257:4;13228:57;;13272:10;13228:57;;;;13185:101;;-1:-1:-1;13211:14:54;;-1:-1:-1;13185:17:54;:101::i;:::-;13329:51;-1:-1:-1;;;;;;;;;;;13364:14:54;13329:10;:51::i;:::-;-1:-1:-1;13437:44:54;-1:-1:-1;;;;;13437:33:54;;13471:9;13437:33;:44::i;:::-;13497:41;;-1:-1:-1;;;;;13497:41:54;;;;;;;;13564:14;12015:1571;-1:-1:-1;;;;;;12015:1571:54:o;3860:283:9:-;3908:32;3943:28;:26;:28::i;:::-;1949:1;4113:23;;-1:-1:-1;3860:283:9:o;4381:197:0:-;4469:22;4477:4;4483:7;4469;:22::i;:::-;4464:108;;4514:47;;-1:-1:-1;;;4514:47:0;;-1:-1:-1;;;;;12838:32:61;;4514:47:0;;;12820:51:61;12887:18;;;12880:34;;;12793:18;;4514:47:0;12646:274:61;5930:123:45;6000:4;6023:23;6028:3;6040:5;6023:4;:23::i;7270:387:0:-;7347:4;7363:30;7396:26;:24;:26::i;:::-;7363:59;;7437:22;7445:4;7451:7;7437;:22::i;:::-;7432:219;;7475:8;:14;;;;;;;;;;;-1:-1:-1;;;;;7475:31:0;;;;;;;;;:38;;-1:-1:-1;;7475:38:0;7509:4;7475:38;;;7559:12;966:10:7;;887:96;7559:12:0;-1:-1:-1;;;;;7532:40:0;7550:7;-1:-1:-1;;;;;7532:40:0;7544:4;7532:40;;;;;;;;;;7593:4;7586:11;;;;;7432:219;7635:5;7628:12;;;;;8289:150:45;8359:4;8382:50;8387:3;-1:-1:-1;;;;;8407:23:45;;8382:4;:50::i;4264:129::-;4337:4;4360:21;;;:14;;;;;:21;;;;;;:26;;;4264:129::o;7892:388:0:-;7970:4;7986:30;8019:26;:24;:26::i;:::-;7986:59;;8059:22;8067:4;8073:7;8059;:22::i;:::-;8055:219;;;8131:5;8097:14;;;;;;;;;;;-1:-1:-1;;;;;8097:31:0;;;;;;;;;;:39;;-1:-1:-1;;8097:39:0;;;8155:40;966:10:7;;8097:14:0;;8155:40;;8131:5;8155:40;8216:4;8209:11;;;;;8607:156:45;8680:4;8703:53;8711:3;-1:-1:-1;;;;;8731:23:45;;8703:7;:53::i;3105:126:8:-;3168:8;:6;:8::i;:::-;3163:62;;3199:15;;-1:-1:-1;;;3199:15:8;;;;;;;;;;;2264:344:22;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:22;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;2454:148::-;2573:18;:16;:18::i;6221:129:45:-;6294:4;6317:26;6325:3;6337:5;6317:7;:26::i;5581:109::-;5637:16;5672:3;:11;;5665:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5581:109;;;:::o;4923:118::-;4990:7;5016:3;:11;;5028:5;5016:18;;;;;;;;:::i;:::-;;;;;;;;;5009:25;;4923:118;;;;:::o;7084:141:2:-;7151:17;:15;:17::i;:::-;7146:73;;7191:17;;-1:-1:-1;;;7191:17:2;;;;;;;;;;;1939:156:8;6931:20:2;:18;:20::i;:::-;2012:25:8::1;2040:21;:19;:21::i;:::-;2071:17:::0;;-1:-1:-1;;2071:17:8::1;::::0;;-1:-1:-1;1939:156:8:o;2395:183:9:-;2532:30;;2395:183::o;13592:204:54:-;13682:33;13718:29;:27;:29::i;:::-;-1:-1:-1;;;;;13757:25:54;;;;;;;:16;;;;:25;;;;;;;;:32;;;;;;;;;;;;;;-1:-1:-1;;;;;;13757:32:54;;;;;;;-1:-1:-1;;;;;;13757:32:54;;;;;;;;;;;-1:-1:-1;13592:204:54:o;1290:349:34:-;1399:6;1375:21;:30;1371:125;;;1428:57;;-1:-1:-1;;;1428:57:34;;1455:21;1428:57;;;11640:25:61;11681:18;;;11674:34;;;11613:18;;1428:57:34;11466:248:61;1371:125:34;1507:12;1525:9;-1:-1:-1;;;;;1525:14:34;1547:6;1525:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1506:52;;;1573:7;1568:65;;1603:19;;-1:-1:-1;;;1603:19:34;;;;;;;;;;;2241:406:45;2304:4;2325:21;2335:3;2340:5;2325:9;:21::i;:::-;2320:321;;-1:-1:-1;2362:23:45;;;;;;;;:11;:23;;;;;;;;;;;;;2544:18;;2520:21;;;:14;;;:21;;;;;;:42;;;;2576:11;;2320:321;-1:-1:-1;2625:5:45;2618:12;;2815:1368;2881:4;3010:21;;;:14;;;:21;;;;;;3046:13;;3042:1135;;3413:18;3434:12;3445:1;3434:8;:12;:::i;:::-;3480:18;;3413:33;;-1:-1:-1;3460:17:45;;3480:22;;3501:1;;3480:22;:::i;:::-;3460:42;;3535:9;3521:10;:23;3517:378;;3564:17;3584:3;:11;;3596:9;3584:22;;;;;;;;:::i;:::-;;;;;;;;;3564:42;;3731:9;3705:3;:11;;3717:10;3705:23;;;;;;;;:::i;:::-;;;;;;;;;;;;:35;;;;3844:25;;;:14;;;:25;;;;;:36;;;3517:378;3973:17;;:3;;:17;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;4076:3;:14;;:21;4091:5;4076:21;;;;;;;;;;;4069:28;;;4119:4;4112:11;;;;;;;1671:281:22;1748:17;-1:-1:-1;;;;;1748:29:22;;1781:1;1748:34;1744:119;;1834:17;1805:47;;-1:-1:-1;;;1805:47:22;;;;;;;;:::i;1744:119::-;-1:-1:-1;;;;;;;;;;;1872:73:22;;-1:-1:-1;;;;;;1872:73:22;-1:-1:-1;;;;;1872:73:22;;;;;;;;;;1671:281::o;3900:253:34:-;3983:12;4008;4022:23;4049:6;-1:-1:-1;;;;;4049:19:34;4069:4;4049:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4007:67;;;;4091:55;4118:6;4126:7;4135:10;4091:26;:55::i;:::-;4084:62;3900:253;-1:-1:-1;;;;;3900:253:34:o;6113:122:22:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:22;;;;;;;;;;;8487:120:2;8537:4;8560:26;:24;:26::i;:::-;:40;-1:-1:-1;;;8560:40:2;;;;;;-1:-1:-1;8487:120:2:o;4421:582:34:-;4565:12;4594:7;4589:408;;4617:19;4625:10;4617:7;:19::i;:::-;4589:408;;;4841:17;;:22;:49;;;;-1:-1:-1;;;;;;4867:18:34;;;:23;4841:49;4837:119;;;4934:6;4917:24;;-1:-1:-1;;;4917:24:34;;;;;;;;:::i;4837:119::-;-1:-1:-1;4976:10:34;4421:582;-1:-1:-1;;4421:582:34:o;5543:487::-;5674:17;;:21;5670:354;;5871:10;5865:17;5927:15;5914:10;5910:2;5906:19;5899:44;5670:354;5994:19;;-1:-1:-1;;;5994:19:34;;;;;;;;;;;-1:-1:-1;;;;;;;:::i;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;:::o;196:286:61:-;254:6;307:2;295:9;286:7;282:23;278:32;275:52;;;323:1;320;313:12;275:52;349:23;;-1:-1:-1;;;;;;401:32:61;;391:43;;381:71;;448:1;445;438:12;679:203;-1:-1:-1;;;;;843:32:61;;;;825:51;;813:2;798:18;;679:203::o;887:173::-;955:20;;-1:-1:-1;;;;;1004:31:61;;994:42;;984:70;;1050:1;1047;1040:12;984:70;887:173;;;:::o;1065:186::-;1124:6;1177:2;1165:9;1156:7;1152:23;1148:32;1145:52;;;1193:1;1190;1183:12;1145:52;1216:29;1235:9;1216:29;:::i;1256:127::-;1317:10;1312:3;1308:20;1305:1;1298:31;1348:4;1345:1;1338:15;1372:4;1369:1;1362:15;1388:632;1453:5;-1:-1:-1;;;;;1513:14:61;;;1510:40;;;1530:18;;:::i;:::-;1605:2;1599:9;1573:2;1659:15;;-1:-1:-1;;1655:24:61;;;1681:2;1651:33;1647:42;1635:55;;;1705:18;;;1725:22;;;1702:46;1699:72;;;1751:18;;:::i;:::-;1791:10;1787:2;1780:22;1820:6;1811:15;;1850:6;1842;1835:22;1890:3;1881:6;1876:3;1872:16;1869:25;1866:45;;;1907:1;1904;1897:12;1866:45;1957:6;1952:3;1945:4;1937:6;1933:17;1920:44;2012:1;2005:4;1996:6;1988;1984:19;1980:30;1973:41;;;;1388:632;;;;;:::o;2025:451::-;2094:6;2147:2;2135:9;2126:7;2122:23;2118:32;2115:52;;;2163:1;2160;2153:12;2115:52;2190:23;;-1:-1:-1;;;;;2225:30:61;;2222:50;;;2268:1;2265;2258:12;2222:50;2291:22;;2344:4;2336:13;;2332:27;-1:-1:-1;2322:55:61;;2373:1;2370;2363:12;2322:55;2396:74;2462:7;2457:2;2444:16;2439:2;2435;2431:11;2396:74;:::i;2481:250::-;2566:1;2576:113;2590:6;2587:1;2584:13;2576:113;;;2666:11;;;2660:18;2647:11;;;2640:39;2612:2;2605:10;2576:113;;;-1:-1:-1;;2723:1:61;2705:16;;2698:27;2481:250::o;2736:271::-;2778:3;2816:5;2810:12;2843:6;2838:3;2831:19;2859:76;2928:6;2921:4;2916:3;2912:14;2905:4;2898:5;2894:16;2859:76;:::i;:::-;2989:2;2968:15;-1:-1:-1;;2964:29:61;2955:39;;;;2996:4;2951:50;;2736:271;-1:-1:-1;;2736:271:61:o;3012:220::-;3161:2;3150:9;3143:21;3124:4;3181:45;3222:2;3211:9;3207:18;3199:6;3181:45;:::i;3237:180::-;3296:6;3349:2;3337:9;3328:7;3324:23;3320:32;3317:52;;;3365:1;3362;3355:12;3317:52;-1:-1:-1;3388:23:61;;3237:180;-1:-1:-1;3237:180:61:o;3607:254::-;3675:6;3683;3736:2;3724:9;3715:7;3711:23;3707:32;3704:52;;;3752:1;3749;3742:12;3704:52;3788:9;3775:23;3765:33;;3817:38;3851:2;3840:9;3836:18;3817:38;:::i;:::-;3807:48;;3607:254;;;;;:::o;4048:524::-;4125:6;4133;4186:2;4174:9;4165:7;4161:23;4157:32;4154:52;;;4202:1;4199;4192:12;4154:52;4225:29;4244:9;4225:29;:::i;:::-;4215:39;-1:-1:-1;4305:2:61;4290:18;;4277:32;-1:-1:-1;;;;;4321:30:61;;4318:50;;;4364:1;4361;4354:12;4318:50;4387:22;;4440:4;4432:13;;4428:27;-1:-1:-1;4418:55:61;;4469:1;4466;4459:12;4418:55;4492:74;4558:7;4553:2;4540:16;4535:2;4531;4527:11;4492:74;:::i;:::-;4482:84;;;4048:524;;;;;:::o;4577:632::-;4748:2;4800:21;;;4870:13;;4773:18;;;4892:22;;;4719:4;;4748:2;4971:15;;;;4945:2;4930:18;;;4719:4;5014:169;5028:6;5025:1;5022:13;5014:169;;;5089:13;;5077:26;;5158:15;;;;5123:12;;;;5050:1;5043:9;5014:169;;;-1:-1:-1;5200:3:61;;4577:632;-1:-1:-1;;;;;;4577:632:61:o;5214:248::-;5282:6;5290;5343:2;5331:9;5322:7;5318:23;5314:32;5311:52;;;5359:1;5356;5349:12;5311:52;-1:-1:-1;;5382:23:61;;;5452:2;5437:18;;;5424:32;;-1:-1:-1;5214:248:61:o;5467:553::-;5571:6;5579;5587;5595;5603;5611;5664:3;5652:9;5643:7;5639:23;5635:33;5632:53;;;5681:1;5678;5671:12;5632:53;5704:29;5723:9;5704:29;:::i;:::-;5694:39;;5752:38;5786:2;5775:9;5771:18;5752:38;:::i;:::-;5742:48;;5809:38;5843:2;5832:9;5828:18;5809:38;:::i;:::-;5799:48;;5866:38;5900:2;5889:9;5885:18;5866:38;:::i;:::-;5856:48;;5923:39;5957:3;5946:9;5942:19;5923:39;:::i;:::-;5913:49;;6009:3;5998:9;5994:19;5981:33;5971:43;;5467:553;;;;;;;;:::o;6025:658::-;6196:2;6248:21;;;6318:13;;6221:18;;;6340:22;;;6167:4;;6196:2;6419:15;;;;6393:2;6378:18;;;6167:4;6462:195;6476:6;6473:1;6470:13;6462:195;;;6541:13;;-1:-1:-1;;;;;6537:39:61;6525:52;;6632:15;;;;6597:12;;;;6573:1;6491:9;6462:195;;6688:803;6850:4;6879:2;6919;6908:9;6904:18;6949:2;6938:9;6931:21;6972:6;7007;7001:13;7038:6;7030;7023:22;7076:2;7065:9;7061:18;7054:25;;7138:2;7128:6;7125:1;7121:14;7110:9;7106:30;7102:39;7088:53;;7176:2;7168:6;7164:15;7197:1;7207:255;7221:6;7218:1;7215:13;7207:255;;;7314:2;7310:7;7298:9;7290:6;7286:22;7282:36;7277:3;7270:49;7342:40;7375:6;7366;7360:13;7342:40;:::i;:::-;7332:50;-1:-1:-1;7440:12:61;;;;7405:15;;;;7243:1;7236:9;7207:255;;;-1:-1:-1;7479:6:61;;6688:803;-1:-1:-1;;;;;;;6688:803:61:o;7496:260::-;7564:6;7572;7625:2;7613:9;7604:7;7600:23;7596:32;7593:52;;;7641:1;7638;7631:12;7593:52;7664:29;7683:9;7664:29;:::i;:::-;7654:39;;7712:38;7746:2;7735:9;7731:18;7712:38;:::i;7761:289::-;7892:3;7930:6;7924:13;7946:66;8005:6;8000:3;7993:4;7985:6;7981:17;7946:66;:::i;:::-;8028:16;;;;;7761:289;-1:-1:-1;;7761:289:61:o;8055:380::-;8134:1;8130:12;;;;8177;;;8198:61;;8252:4;8244:6;8240:17;8230:27;;8198:61;8305:2;8297:6;8294:14;8274:18;8271:38;8268:161;;8351:10;8346:3;8342:20;8339:1;8332:31;8386:4;8383:1;8376:15;8414:4;8411:1;8404:15;8268:161;;8055:380;;;:::o;8654:127::-;8715:10;8710:3;8706:20;8703:1;8696:31;8746:4;8743:1;8736:15;8770:4;8767:1;8760:15;8912:543;9014:2;9009:3;9006:11;9003:446;;;9050:1;9074:5;9071:1;9064:16;9118:4;9115:1;9105:18;9188:2;9176:10;9172:19;9169:1;9165:27;9159:4;9155:38;9224:4;9212:10;9209:20;9206:47;;;-1:-1:-1;9247:4:61;9206:47;9302:2;9297:3;9293:12;9290:1;9286:20;9280:4;9276:31;9266:41;;9357:82;9375:2;9368:5;9365:13;9357:82;;;9420:17;;;9401:1;9390:13;9357:82;;;9361:3;;;8912:543;;;:::o;9631:1345::-;9751:10;;-1:-1:-1;;;;;9773:30:61;;9770:56;;;9806:18;;:::i;:::-;9835:97;9925:6;9885:38;9917:4;9911:11;9885:38;:::i;:::-;9879:4;9835:97;:::i;:::-;9987:4;;10044:2;10033:14;;10061:1;10056:663;;;;10763:1;10780:6;10777:89;;;-1:-1:-1;10832:19:61;;;10826:26;10777:89;-1:-1:-1;;9588:1:61;9584:11;;;9580:24;9576:29;9566:40;9612:1;9608:11;;;9563:57;10879:81;;10026:944;;10056:663;8859:1;8852:14;;;8896:4;8883:18;;-1:-1:-1;;10092:20:61;;;10210:236;10224:7;10221:1;10218:14;10210:236;;;10313:19;;;10307:26;10292:42;;10405:27;;;;10373:1;10361:14;;;;10240:19;;10210:236;;;10214:3;10474:6;10465:7;10462:19;10459:201;;;10535:19;;;10529:26;-1:-1:-1;;10618:1:61;10614:14;;;10630:3;10610:24;10606:37;10602:42;10587:58;10572:74;;10459:201;-1:-1:-1;;;;;10706:1:61;10690:14;;;10686:22;10673:36;;-1:-1:-1;9631:1345:61:o;10981:291::-;11158:2;11147:9;11140:21;11121:4;11178:45;11219:2;11208:9;11204:18;11196:6;11178:45;:::i;:::-;11170:53;;11259:6;11254:2;11243:9;11239:18;11232:34;10981:291;;;;;:::o;11277:184::-;11347:6;11400:2;11388:9;11379:7;11375:23;11371:32;11368:52;;;11416:1;11413;11406:12;11368:52;-1:-1:-1;11439:16:61;;11277:184;-1:-1:-1;11277:184:61:o;13135:225::-;13202:9;;;13223:11;;;13220:134;;;13276:10;13271:3;13267:20;13264:1;13257:31;13311:4;13308:1;13301:15;13339:4;13336:1;13329:15;13365:127;13426:10;13421:3;13417:20;13414:1;13407:31;13457:4;13454:1;13447:15;13481:4;13478:1;13471:15" + }, + "methodIdentifiers": { + "CMACCOUNT_ROLE()": "7fa34657", + "DEFAULT_ADMIN_ROLE()": "a217fddf", + "DEVELOPER_WALLET_ADMIN_ROLE()": "40df8d84", + "FEE_ADMIN_ROLE()": "4cba593a", + "PAUSER_ROLE()": "e63ab1e9", + "PREFUND_ADMIN_ROLE()": "01601d2f", + "SERVICE_REGISTRY_ADMIN_ROLE()": "92cf833f", + "UPGRADER_ROLE()": "f72c0d8b", + "UPGRADE_INTERFACE_VERSION()": "ad3cb1cc", + "VERSIONER_ROLE()": "b289819c", + "createCMAccount(address,address)": "fd2fbd52", + "getAccountImplementation()": "9d825bc5", + "getAllRegisteredServiceHashes()": "8127f465", + "getAllRegisteredServiceNames()": "c2a1db78", + "getBookingTokenAddress()": "4f3f4639", + "getCMAccountCreator(address)": "2cec1a06", + "getDeveloperFeeBp()": "3c555938", + "getDeveloperWallet()": "0470d3ac", + "getPrefundAmount()": "c39409e1", + "getRegisteredServiceHashByName(string)": "352af39a", + "getRegisteredServiceNameByHash(bytes32)": "5a81a626", + "getRoleAdmin(bytes32)": "248a9ca3", + "getRoleMember(bytes32,uint256)": "9010d07c", + "getRoleMemberCount(bytes32)": "ca15c873", + "getRoleMembers(bytes32)": "a3246ad3", + "getVersion()": "0d8e6e2c", + "grantRole(bytes32,address)": "2f2ff15d", + "hasRole(bytes32,address)": "91d14854", + "initialize(address,address,address,address,address,uint256)": "95b6ef0c", + "isCMAccount(address)": "12b357b5", + "pause()": "8456cb59", + "paused()": "5c975abb", + "proxiableUUID()": "52d1902d", + "registerService(string)": "0d6115d0", + "renounceRole(bytes32,address)": "36568abe", + "revokeRole(bytes32,address)": "d547741f", + "setAccountImplementation(address)": "09766da2", + "setBookingTokenAddress(address)": "c17e30bf", + "setDeveloperFeeBp(uint256)": "f85b4a9c", + "setDeveloperWallet(address)": "6cd56878", + "setPrefundAmount(uint256)": "1c2b3afc", + "supportsInterface(bytes4)": "01ffc9a7", + "unpause()": "3f4ba83a", + "unregisterService(string)": "5e818619", + "upgradeToAndCall(address,bytes)": "4f1ef286" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"}],\"name\":\"CMAccountInvalidAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"CMAccountInvalidImplementation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EnforcedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExpectedPause\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"expected\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"sended\",\"type\":\"uint256\"}],\"name\":\"IncorrectPrefundAmount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"bookingToken\",\"type\":\"address\"}],\"name\":\"InvalidBookingTokenAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"developerWallet\",\"type\":\"address\"}],\"name\":\"InvalidDeveloperWallet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"name\":\"ServiceAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ServiceNotRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldBookingToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newBookingToken\",\"type\":\"address\"}],\"name\":\"BookingTokenAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"CMAccountCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldImplementation\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"CMAccountImplementationUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"oldDeveloperFeeBp\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"newDeveloperFeeBp\",\"type\":\"uint256\"}],\"name\":\"DeveloperFeeBpUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldDeveloperWallet\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newDeveloperWallet\",\"type\":\"address\"}],\"name\":\"DeveloperWalletUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"ServiceRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"ServiceUnregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"CMACCOUNT_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEVELOPER_WALLET_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FEE_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PAUSER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PREFUND_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SERVICE_REGISTRY_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERSIONER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"upgrader\",\"type\":\"address\"}],\"name\":\"createCMAccount\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAccountImplementation\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllRegisteredServiceHashes\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"services\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllRegisteredServiceNames\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"services\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getBookingTokenAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getCMAccountCreator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDeveloperFeeBp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"developerFeeBp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDeveloperWallet\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"developerWallet\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPrefundAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"name\":\"getRegisteredServiceHashByName\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"getRegisteredServiceNameByHash\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMembers\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"defaultAdmin\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pauser\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"upgrader\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"versioner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"developerWallet\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"developerFeeBp\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isCMAccount\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"name\":\"registerService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"}],\"name\":\"setAccountImplementation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"setBookingTokenAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"bp\",\"type\":\"uint256\"}],\"name\":\"setDeveloperFeeBp\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"developerWallet\",\"type\":\"address\"}],\"name\":\"setDeveloperWallet\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newPrefundAmount\",\"type\":\"uint256\"}],\"name\":\"setPrefundAmount\",\"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\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"name\":\"unregisterService\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"CMAccountInvalidAdmin(address)\":[{\"params\":{\"admin\":\"The admin address\"}}],\"CMAccountInvalidImplementation(address)\":[{\"params\":{\"implementation\":\"The implementation address of the CMAccount\"}}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"EnforcedPause()\":[{\"details\":\"The operation failed because the contract is paused.\"}],\"ExpectedPause()\":[{\"details\":\"The operation failed because the contract is not paused.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"IncorrectPrefundAmount(uint256,uint256)\":[{\"params\":{\"expected\":\"The expected pre fund amount\"}}],\"InsufficientBalance(uint256,uint256)\":[{\"details\":\"The ETH balance of the account is not enough to perform the operation.\"}],\"InvalidBookingTokenAddress(address)\":[{\"params\":{\"bookingToken\":\"The booking token address\"}}],\"InvalidDeveloperWallet(address)\":[{\"params\":{\"developerWallet\":\"The developer wallet address\"}}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"BookingTokenAddressUpdated(address,address)\":{\"params\":{\"newBookingToken\":\"The new booking token address\",\"oldBookingToken\":\"The old booking token address\"}},\"CMAccountCreated(address)\":{\"params\":{\"account\":\"The address of the new CMAccount\"}},\"CMAccountImplementationUpdated(address,address)\":{\"params\":{\"newImplementation\":\"The new implementation address\",\"oldImplementation\":\"The old implementation address\"}},\"DeveloperFeeBpUpdated(uint256,uint256)\":{\"params\":{\"newDeveloperFeeBp\":\"The new developer fee basis points\",\"oldDeveloperFeeBp\":\"The old developer fee basis points\"}},\"DeveloperWalletUpdated(address,address)\":{\"params\":{\"newDeveloperWallet\":\"The new developer wallet address\",\"oldDeveloperWallet\":\"The old developer wallet address\"}},\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Paused(address)\":{\"details\":\"Emitted when the pause is triggered by `account`.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"Unpaused(address)\":{\"details\":\"Emitted when the pause is lifted by `account`.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"createCMAccount(address,address)\":{\"details\":\"Emits a {CMAccountCreated} event.\"},\"getAllRegisteredServiceHashes()\":{\"returns\":{\"services\":\"All registered service hashes\"}},\"getAllRegisteredServiceNames()\":{\"returns\":{\"services\":\"All registered service names\"}},\"getCMAccountCreator(address)\":{\"params\":{\"account\":\"The account address\"}},\"getRegisteredServiceHashByName(string)\":{\"params\":{\"serviceName\":\"Name of the service\"}},\"getRegisteredServiceNameByHash(bytes32)\":{\"params\":{\"serviceHash\":\"Hash of the service\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"getRoleMembers(bytes32)\":{\"details\":\"Return all accounts that have `role` WARNING: This operation will copy the entire storage to memory, which can be quite expensive. This is designed to mostly be used by view accessors that are queried without any gas fees. Developers should keep in mind that this function has an unbounded cost, and using it as part of a state-changing function may render the function uncallable if the set grows to a point where copying to memory consumes too much gas to fit in a block.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"isCMAccount(address)\":{\"params\":{\"account\":\"The account address to check\"}},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"registerService(string)\":{\"params\":{\"serviceName\":\"Name of the service\"}},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setAccountImplementation(address)\":{\"params\":{\"newImplementation\":\"The new implementation address\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"unregisterService(string)\":{\"params\":{\"serviceName\":\"Name of the service\"}},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"version\":1},\"userdoc\":{\"errors\":{\"CMAccountInvalidAdmin(address)\":[{\"notice\":\"The admin address is invalid.\"}],\"CMAccountInvalidImplementation(address)\":[{\"notice\":\"The implementation of the CMAccount is invalid.\"}],\"IncorrectPrefundAmount(uint256,uint256)\":[{\"notice\":\"Incorrect pre fund amount.\"}],\"InvalidBookingTokenAddress(address)\":[{\"notice\":\"Invalid booking token address.\"}],\"InvalidDeveloperWallet(address)\":[{\"notice\":\"Invalid developer address.\"}]},\"events\":{\"BookingTokenAddressUpdated(address,address)\":{\"notice\":\"Booking token address updated event.\"},\"CMAccountCreated(address)\":{\"notice\":\"CM Account created event.\"},\"CMAccountImplementationUpdated(address,address)\":{\"notice\":\"CM Account implementation address updated event.\"},\"DeveloperFeeBpUpdated(uint256,uint256)\":{\"notice\":\"Developer fee basis points updated event.\"},\"DeveloperWalletUpdated(address,address)\":{\"notice\":\"Developer wallet address updated event.\"}},\"kind\":\"user\",\"methods\":{\"CMACCOUNT_ROLE()\":{\"notice\":\"This role is granted to the created CM Accounts. It is used to keep an enumerable list of CM Accounts.\"},\"DEVELOPER_WALLET_ADMIN_ROLE()\":{\"notice\":\"Developer wallet admin role can set the developer wallet address which is used to receive the developer fee.\"},\"FEE_ADMIN_ROLE()\":{\"notice\":\"Fee admin role can set the developer fee basis points which used for calculating the developer fee that is cut from the cheque payments.\"},\"PAUSER_ROLE()\":{\"notice\":\"Pauser role can pause the contract. Currently this only affects the creation of CM Accounts. When paused, account creation is stopped.\"},\"PREFUND_ADMIN_ROLE()\":{\"notice\":\"Prefund admin role can set the mandatory prefund amount for {CMAccount} contracts.\"},\"SERVICE_REGISTRY_ADMIN_ROLE()\":{\"notice\":\"Service registry admin role can add and remove services to the service registry mapping. Implemented by {ServiceRegistry} contract.\"},\"UPGRADER_ROLE()\":{\"notice\":\"Upgrader role can upgrade the contract to a new implementation.\"},\"VERSIONER_ROLE()\":{\"notice\":\"Versioner role can set new {CMAccount} implementation address. When a new implementation address is set, it is used for the new {CMAccount} creations. The old {CMAccount} contracts are not affected by this. Owners of those should do the upgrade manually by calling the `upgradeToAndCall(address)` function on the account.\"},\"createCMAccount(address,address)\":{\"notice\":\"Creates CMAccount by deploying a ERC1967Proxy with the CMAccount implementation from the manager. Because this function is deploying a contract, it reverts if the caller is not KYC or KYB verified. (For EOAs only) Caller must send the pre-fund amount with the transaction.\"},\"getAccountImplementation()\":{\"notice\":\"Returns the CMAccount implementation address.\"},\"getAllRegisteredServiceHashes()\":{\"notice\":\"Returns all registered service **hashes**.\"},\"getAllRegisteredServiceNames()\":{\"notice\":\"Returns all registered service **names**.\"},\"getBookingTokenAddress()\":{\"notice\":\"Returns the booking token address.\"},\"getCMAccountCreator(address)\":{\"notice\":\"Returns the given account's creator.\"},\"getDeveloperFeeBp()\":{\"notice\":\"Returns developer fee in basis points.\"},\"getDeveloperWallet()\":{\"notice\":\"Returns developer wallet address.\"},\"getPrefundAmount()\":{\"notice\":\"Returns the prefund amount.\"},\"getRegisteredServiceHashByName(string)\":{\"notice\":\"Returns the hash of a service by its name.\"},\"getRegisteredServiceNameByHash(bytes32)\":{\"notice\":\"Returns the name of a service by its hash.\"},\"isCMAccount(address)\":{\"notice\":\"Check if an address is CMAccount created by the manager.\"},\"pause()\":{\"notice\":\"Pauses the CMAccountManager contract. Currently this only affects the creation of CMAccount. When paused, account creation is stopped.\"},\"registerService(string)\":{\"notice\":\"Registers a given service name. CM Accounts can only register services if they are also registered in the service registry on the manager contract.\"},\"setAccountImplementation(address)\":{\"notice\":\"Set a new CMAccount implementation address.\"},\"setBookingTokenAddress(address)\":{\"notice\":\"Sets booking token address.\"},\"setDeveloperFeeBp(uint256)\":{\"notice\":\"Sets developer fee in basis points. A basis point (bp) is one hundredth of 1 percentage point. 1 bp = 0.01%, 1/10,000\\u2060, or 0.0001. 10 bp = 0.1%, 1/1,000\\u2060, or 0.001. 100 bp = 1%, \\u20601/100\\u2060, or 0.01.\"},\"setDeveloperWallet(address)\":{\"notice\":\"Sets developer wallet address.\"},\"setPrefundAmount(uint256)\":{\"notice\":\"Sets the prefund amount.\"},\"unpause()\":{\"notice\":\"Unpauses the CMAccountManager contract.\"},\"unregisterService(string)\":{\"notice\":\"Unregisters a given service name. CM Accounts will not be able to register the service anymore.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/manager/test/CMAccountManagerTest.sol\":\"CMAccountManagerTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"@openzeppelin/contracts-upgradeable/access/extensions/AccessControlEnumerableUpgradeable.sol\":{\"keccak256\":\"0xaec38804089a16494f7d45ebbbeab78fe05e5dc4bc2eae1d2af458fe999fb43c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04796408e2c4a1051afb23319e9505edb595a3d9c663ff5d6fcfb8e185ab1d93\",\"dweb:/ipfs/Qma8ZTi4kGyqg45SyNibbJSqMF7broiQnJPHhEGLcZyF9U\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xf72d3b11f41fccbbdcacd121f994daab8267ccfceb1fb4f247e4ba274c169d27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e46ee40ddc9e2009176ce5d76aa2c046fd68f2ed52d02d77db191365b7c5b2e\",\"dweb:/ipfs/QmZnxgPmCCHosdvbh4J65uTaFYeGtZGzQ1sXRdeh1y68Zr\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"@openzeppelin/contracts-upgradeable/utils/PausableUpgradeable.sol\":{\"keccak256\":\"0x92915b7f7f642c6be3f65bfd1522feb5d5b6ef25f755f4dbb51df32c868f2f97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85ad36d5cc7e190e1ee6c94b24659bc3a31396c4c36b6ffa6a509e10661f8007\",\"dweb:/ipfs/QmPFyc4zMh2zo6YWZt25gjm3YdR2hg6wGETaWw256fMmJJ\"]},\"@openzeppelin/contracts-upgradeable/utils/ReentrancyGuardUpgradeable.sol\":{\"keccak256\":\"0x361126a17677994081cd9cb69c3f50cffff6e920d25cb7e428acdb1ae41d1866\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://19ae787a7dd001269cd60a394b1a5261b78925a0fc3a6f927beb2986a9aa56cf\",\"dweb:/ipfs/QmYLfXiuKmcRgTDBEDXMMjXU8t6JxsspUmjxYzqWS55oEv\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"@openzeppelin/contracts/access/extensions/IAccessControlEnumerable.sol\":{\"keccak256\":\"0xca774fbe0568762efdc1a7cba31f09549c7fa96dbe97410f4843fa2f0bc000a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0187ffdbf3d61b6d86cba4fcd9826e53d876987d620533ee84c681bdaf0f3ba3\",\"dweb:/ipfs/QmVJDqdJv6uzHY7ifncfv2QJep8XTzS3bGb4s5Exhuv86m\"]},\"@openzeppelin/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol\":{\"keccak256\":\"0x0a8a5b994d4c4da9f61d128945cc8c9e60dcbc72bf532f72ae42a48ea90eed9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e63ae15b6b1079b9d3c73913424d4278139f9e9c9658316675b9c48d5883a50d\",\"dweb:/ipfs/QmWLxBYfp8j1YjNMabWgv75ELTaK2eEYEEGx7qsJbxVZZq\"]},\"@openzeppelin/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x911c3346ee26afe188f3b9dc267ef62a7ccf940aba1afa963e3922f0ca3d8a06\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://04539f4419e44a831807d7203375d2bc6a733da256efd02e51290f5d5015218c\",\"dweb:/ipfs/QmPZ97gsAAgaMRPiE2WJfkzRsudQnW5tPAvMgGj1jcTJtR\"]},\"@openzeppelin/contracts/proxy/Proxy.sol\":{\"keccak256\":\"0xc3f2ec76a3de8ed7a7007c46166f5550c72c7709e3fc7e8bb3111a7191cdedbd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e73efb4c2ca655882dc237c6b4f234a9bd36d97159d8fcaa837eb01171f726ac\",\"dweb:/ipfs/QmTNnnv7Gu5fs5G1ZMh7Fexp8N4XUs3XrNAngjcxgiss3e\"]},\"@openzeppelin/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x9d8da059267bac779a2dbbb9a26c2acf00ca83085e105d62d5d4ef96054a47f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c78e2aa4313323cecd1ef12a8d6265b96beee1a199923abf55d9a2a9e291ad23\",\"dweb:/ipfs/QmUTs2KStXucZezzFo3EYeqYu47utu56qrF7jj1Gue65vb\"]},\"@openzeppelin/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"contracts/account/ICMAccount.sol\":{\"keccak256\":\"0xafd07c8ff1ada61a29518c8f1cde952e93eb56154ba787a38fbf6f49d4187d91\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b8126900ad90ee8da111f0c775fcd7fdf54e16e7bf3a1ffbaf317f62852f47b9\",\"dweb:/ipfs/QmPsC5nSgo8c6tjSZ5yTRc84WaBw1jwLgQLbT5pP1k4jSk\"]},\"contracts/manager/CMAccountManager.sol\":{\"keccak256\":\"0x64e611b927007d9748e5e23ead82c2a56cbb8195b24e59025b2a097a5e3b91d7\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://31d40022c77db3f0a68f4f07881b1e2f8b93f6e0add1e5c9b8f268fbe729840c\",\"dweb:/ipfs/QmTH61TnrLPgyNDKHcL29ctiFq5MCmwipuxDXBj7Mq3kpT\"]},\"contracts/manager/test/CMAccountManagerTest.sol\":{\"keccak256\":\"0x3f7b06daac46e89b55c394565c91a84ba9d48da3b4d66321cadcd377b3296b99\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://59da5131e165b05be124c886a2f1ddc70a3bf67ad0c31d0d84a05e93d94944b3\",\"dweb:/ipfs/Qmbh2iHFAxspp3Z1VpjXwHFk1EHzLA2cSfprPf9PCM6ncr\"]},\"contracts/partner/ServiceRegistry.sol\":{\"keccak256\":\"0xa17180671d286fe317321ca5c45f5a44a7c731ce1ad75b223a9fa23a0359cb2d\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f6028d7acbcbfaa71a8c5194f5271807091290a93b254487851930b0ca168ef8\",\"dweb:/ipfs/QmWriZasiVacHGHBSYyo7T2aCrj74tbiNoiVegTc9MSRB7\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "contracts/partner/PartnerConfiguration.sol": { + "PartnerConfiguration": { + "abi": [ + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint8", + "name": "use", + "type": "uint8" + } + ], + "name": "InvalidPublicKeyUseType", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "PaymentTokenAlreadyExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "PaymentTokenDoesNotExist", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "PublicKeyAlreadyExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "PublicKeyDoesNotExist", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceAlreadyExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceDoesNotExist", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "WantedServiceAlreadyExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "WantedServiceDoesNotExist", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "supportsOffChainPayment", + "type": "bool" + } + ], + "name": "OffChainPaymentSupportUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "PaymentTokenAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + } + ], + "name": "PaymentTokenRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "PublicKeyAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "PublicKeyRemoved", + "type": "event" + }, + { + "inputs": [], + "name": "getAllServiceHashes", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "serviceHashes", + "type": "bytes32[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "pubKeyAddress", + "type": "address" + } + ], + "name": "getPublicKey", + "outputs": [ + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getPublicKeysAddresses", + "outputs": [ + { + "internalType": "address[]", + "name": "pubKeyAddresses", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "getService", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "_fee", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "_restrictedRate", + "type": "bool" + }, + { + "internalType": "string[]", + "name": "_capabilities", + "type": "string[]" + } + ], + "internalType": "struct PartnerConfiguration.Service", + "name": "service", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "getServiceCapabilities", + "outputs": [ + { + "internalType": "string[]", + "name": "capabilities", + "type": "string[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "getServiceFee", + "outputs": [ + { + "internalType": "uint256", + "name": "fee", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "getServiceRestrictedRate", + "outputs": [ + { + "internalType": "bool", + "name": "restrictedRate", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getSupportedTokens", + "outputs": [ + { + "internalType": "address[]", + "name": "tokens", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getWantedServiceHashes", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "serviceHashes", + "type": "bytes32[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "offChainPaymentSupported", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "getAllServiceHashes()": "42072bbd", + "getPublicKey(address)": "857cdbb8", + "getPublicKeysAddresses()": "ea79d07a", + "getService(bytes32)": "da47d856", + "getServiceCapabilities(bytes32)": "5e07f869", + "getServiceFee(bytes32)": "eb5ea273", + "getServiceRestrictedRate(bytes32)": "8f69347d", + "getSupportedTokens()": "d3c7c2c7", + "getWantedServiceHashes()": "136f50ca", + "offChainPaymentSupported()": "241bbbfc" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"use\",\"type\":\"uint8\"}],\"name\":\"InvalidPublicKeyUseType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"PaymentTokenAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"PaymentTokenDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pubKeyAddress\",\"type\":\"address\"}],\"name\":\"PublicKeyAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pubKeyAddress\",\"type\":\"address\"}],\"name\":\"PublicKeyDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"ServiceAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"ServiceDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"WantedServiceAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"WantedServiceDoesNotExist\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"supportsOffChainPayment\",\"type\":\"bool\"}],\"name\":\"OffChainPaymentSupportUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"PaymentTokenAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"PaymentTokenRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pubKeyAddress\",\"type\":\"address\"}],\"name\":\"PublicKeyAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pubKeyAddress\",\"type\":\"address\"}],\"name\":\"PublicKeyRemoved\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getAllServiceHashes\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"serviceHashes\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pubKeyAddress\",\"type\":\"address\"}],\"name\":\"getPublicKey\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPublicKeysAddresses\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"pubKeyAddresses\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"getService\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"_restrictedRate\",\"type\":\"bool\"},{\"internalType\":\"string[]\",\"name\":\"_capabilities\",\"type\":\"string[]\"}],\"internalType\":\"struct PartnerConfiguration.Service\",\"name\":\"service\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"getServiceCapabilities\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"capabilities\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"getServiceFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"getServiceRestrictedRate\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"restrictedRate\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSupportedTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWantedServiceHashes\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"serviceHashes\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"offChainPaymentSupported\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"getPublicKey(address)\":{\"params\":{\"pubKeyAddress\":\"Address of the public key\"}},\"getService(bytes32)\":{\"details\":\"These services are coming from the Camino Messenger Protocol's protobuf definitions.\",\"params\":{\"serviceHash\":\"Hash of the service\"}},\"getServiceCapabilities(bytes32)\":{\"params\":{\"serviceHash\":\"Hash of the service\"}},\"getServiceFee(bytes32)\":{\"params\":{\"serviceHash\":\"Hash of the service\"}},\"getServiceRestrictedRate(bytes32)\":{\"params\":{\"serviceHash\":\"Hash of the service\"}},\"getSupportedTokens()\":{\"returns\":{\"tokens\":\"Supported token addresses\"}},\"getWantedServiceHashes()\":{\"returns\":{\"serviceHashes\":\"Wanted service hashes\"}}},\"title\":\"PartnerConfiguration\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAllServiceHashes()\":{\"notice\":\"Returns all supported service hashes.\"},\"getPublicKey(address)\":{\"notice\":\"Returns the public key for a given address. Reverts if the public key does not exist\"},\"getPublicKeysAddresses()\":{\"notice\":\"Returns the addresses of all public keys. These can then be used to retrieve the public keys the `getPublicKey(address)` function.\"},\"getService(bytes32)\":{\"notice\":\"Returns the Service object for a given hash. Service object contains fee and capabilities. `serviceHash` is keccak256 hash of the pkg + service name as: ```text \\u250c\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500 pkg \\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2500\\u2510 \\u250c\\u2500\\u2500\\u2500\\u2500\\u2500 service name \\u2500\\u2500\\u2500\\u2500\\u2500\\u2510 keccak256(\\\"cmp.services.accommodation.v1alpha.AccommodationSearchService\\\") ```\"},\"getServiceCapabilities(bytes32)\":{\"notice\":\"Returns the capabilities for a given service hash.\"},\"getServiceFee(bytes32)\":{\"notice\":\"Returns the fee for a given service hash.\"},\"getServiceRestrictedRate(bytes32)\":{\"notice\":\"Returns the restricted rate for a given service hash.\"},\"getSupportedTokens()\":{\"notice\":\"Returns supported token addresses.\"},\"getWantedServiceHashes()\":{\"notice\":\"Returns all wanted service hashes.\"},\"offChainPaymentSupported()\":{\"notice\":\"Returns true if off-chain payment is supported for the given service.\"}},\"notice\":\"Partner Configuration is used by the {CMAccount} contract to register supported and wanted services by the partner.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/partner/PartnerConfiguration.sol\":\"PartnerConfiguration\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"contracts/partner/PartnerConfiguration.sol\":{\"keccak256\":\"0x9751a5d0e29d22ec4db2fac37fc2f2d07a774ce49ae76b2ad9ed322f2b517ea3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://418157de273fb562149939a308b9b0679282b2b8e7297d94be6335be5361a95e\",\"dweb:/ipfs/QmQMJnixZygmSE7gMqhetupwn8yqUx5CYeZTqxn1JZFayc\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "contracts/partner/ServiceRegistry.sol": { + "ServiceRegistry": { + "abi": [ + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "ServiceAlreadyRegistered", + "type": "error" + }, + { + "inputs": [], + "name": "ServiceNotRegistered", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceRegistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "serviceName", + "type": "string" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "ServiceUnregistered", + "type": "event" + }, + { + "inputs": [], + "name": "getAllRegisteredServiceHashes", + "outputs": [ + { + "internalType": "bytes32[]", + "name": "services", + "type": "bytes32[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getAllRegisteredServiceNames", + "outputs": [ + { + "internalType": "string[]", + "name": "services", + "type": "string[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "name": "getRegisteredServiceHashByName", + "outputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "serviceHash", + "type": "bytes32" + } + ], + "name": "getRegisteredServiceNameByHash", + "outputs": [ + { + "internalType": "string", + "name": "serviceName", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "getAllRegisteredServiceHashes()": "8127f465", + "getAllRegisteredServiceNames()": "c2a1db78", + "getRegisteredServiceHashByName(string)": "352af39a", + "getRegisteredServiceNameByHash(bytes32)": "5a81a626" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"name\":\"ServiceAlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ServiceNotRegistered\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"ServiceRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"ServiceUnregistered\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getAllRegisteredServiceHashes\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"services\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllRegisteredServiceNames\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"services\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"name\":\"getRegisteredServiceHashByName\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"serviceHash\",\"type\":\"bytes32\"}],\"name\":\"getRegisteredServiceNameByHash\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"serviceName\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"getAllRegisteredServiceHashes()\":{\"returns\":{\"services\":\"All registered service hashes\"}},\"getAllRegisteredServiceNames()\":{\"returns\":{\"services\":\"All registered service names\"}},\"getRegisteredServiceHashByName(string)\":{\"params\":{\"serviceName\":\"Name of the service\"}},\"getRegisteredServiceNameByHash(bytes32)\":{\"params\":{\"serviceHash\":\"Hash of the service\"}}},\"title\":\"ServiceRegistry\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getAllRegisteredServiceHashes()\":{\"notice\":\"Returns all registered service **hashes**.\"},\"getAllRegisteredServiceNames()\":{\"notice\":\"Returns all registered service **names**.\"},\"getRegisteredServiceHashByName(string)\":{\"notice\":\"Returns the hash of a service by its name.\"},\"getRegisteredServiceNameByHash(bytes32)\":{\"notice\":\"Returns the name of a service by its hash.\"}},\"notice\":\"Service registry is used by the {CMAccountManager} contract to register services by hashing (keccak256) the service name (string) and creating a mapping as keccak256(serviceName) => serviceName.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/partner/ServiceRegistry.sol\":\"ServiceRegistry\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"@openzeppelin/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"contracts/partner/ServiceRegistry.sol\":{\"keccak256\":\"0xa17180671d286fe317321ca5c45f5a44a7c731ce1ad75b223a9fa23a0359cb2d\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f6028d7acbcbfaa71a8c5194f5271807091290a93b254487851930b0ca168ef8\",\"dweb:/ipfs/QmWriZasiVacHGHBSYyo7T2aCrj74tbiNoiVegTc9MSRB7\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "contracts/test/Dummy.sol": { + "Dummy": { + "abi": [ + { + "inputs": [], + "name": "getVersion", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "pure", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b5060de8061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c80630d8e6e2c14602d575b600080fd5b604080518082018252600581526444554d4d5960d81b6020820152905160529190605b565b60405180910390f35b60006020808352835180602085015260005b81811015608757858101830151858201604001528201606d565b506000604082860101526040601f19601f830116850101925050509291505056fea2646970667358221220afb9fcfe6f65abee44ce3152cb1b3231cd2d9d7aa6603987f7395120d08065c964736f6c63430008180033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0xDE DUP1 PUSH2 0x1F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xD8E6E2C EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x5 DUP2 MSTORE PUSH5 0x44554D4D59 PUSH1 0xD8 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x52 SWAP2 SWAP1 PUSH1 0x5B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH1 0x87 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH1 0x6D JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAF 0xB9 0xFC INVALID PUSH16 0x65ABEE44CE3152CB1B3231CD2D9D7AA6 PUSH1 0x39 DUP8 0xF7 CODECOPY MLOAD KECCAK256 0xD0 DUP1 PUSH6 0xC964736F6C63 NUMBER STOP ADDMOD XOR STOP CALLER ", + "sourceMap": "85:112:59:-:0;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@getVersion_18175": { + "entryPoint": null, + "id": 18175, + "parameterSlots": 0, + "returnSlots": 1 + }, + "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": 91, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + } + }, + "generatedSources": [ + { + "ast": { + "nativeSrc": "0:564:61", + "nodeType": "YulBlock", + "src": "0:564:61", + "statements": [ + { + "nativeSrc": "6:3:61", + "nodeType": "YulBlock", + "src": "6:3:61", + "statements": [] + }, + { + "body": { + "nativeSrc": "135:427:61", + "nodeType": "YulBlock", + "src": "135:427:61", + "statements": [ + { + "nativeSrc": "145:12:61", + "nodeType": "YulVariableDeclaration", + "src": "145:12:61", + "value": { + "kind": "number", + "nativeSrc": "155:2:61", + "nodeType": "YulLiteral", + "src": "155:2:61", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "149:2:61", + "nodeType": "YulTypedName", + "src": "149:2:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "173:9:61", + "nodeType": "YulIdentifier", + "src": "173:9:61" + }, + { + "kind": "number", + "nativeSrc": "184:2:61", + "nodeType": "YulLiteral", + "src": "184:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "166:6:61", + "nodeType": "YulIdentifier", + "src": "166:6:61" + }, + "nativeSrc": "166:21:61", + "nodeType": "YulFunctionCall", + "src": "166:21:61" + }, + "nativeSrc": "166:21:61", + "nodeType": "YulExpressionStatement", + "src": "166:21:61" + }, + { + "nativeSrc": "196:27:61", + "nodeType": "YulVariableDeclaration", + "src": "196:27:61", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "216:6:61", + "nodeType": "YulIdentifier", + "src": "216:6:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "210:5:61", + "nodeType": "YulIdentifier", + "src": "210:5:61" + }, + "nativeSrc": "210:13:61", + "nodeType": "YulFunctionCall", + "src": "210:13:61" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "200:6:61", + "nodeType": "YulTypedName", + "src": "200:6:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "243:9:61", + "nodeType": "YulIdentifier", + "src": "243:9:61" + }, + { + "kind": "number", + "nativeSrc": "254:2:61", + "nodeType": "YulLiteral", + "src": "254:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "239:3:61", + "nodeType": "YulIdentifier", + "src": "239:3:61" + }, + "nativeSrc": "239:18:61", + "nodeType": "YulFunctionCall", + "src": "239:18:61" + }, + { + "name": "length", + "nativeSrc": "259:6:61", + "nodeType": "YulIdentifier", + "src": "259:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "232:6:61", + "nodeType": "YulIdentifier", + "src": "232:6:61" + }, + "nativeSrc": "232:34:61", + "nodeType": "YulFunctionCall", + "src": "232:34:61" + }, + "nativeSrc": "232:34:61", + "nodeType": "YulExpressionStatement", + "src": "232:34:61" + }, + { + "nativeSrc": "275:10:61", + "nodeType": "YulVariableDeclaration", + "src": "275:10:61", + "value": { + "kind": "number", + "nativeSrc": "284:1:61", + "nodeType": "YulLiteral", + "src": "284:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "279:1:61", + "nodeType": "YulTypedName", + "src": "279:1:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "344:90:61", + "nodeType": "YulBlock", + "src": "344:90:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "373:9:61", + "nodeType": "YulIdentifier", + "src": "373:9:61" + }, + { + "name": "i", + "nativeSrc": "384:1:61", + "nodeType": "YulIdentifier", + "src": "384:1:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "369:3:61", + "nodeType": "YulIdentifier", + "src": "369:3:61" + }, + "nativeSrc": "369:17:61", + "nodeType": "YulFunctionCall", + "src": "369:17:61" + }, + { + "kind": "number", + "nativeSrc": "388:2:61", + "nodeType": "YulLiteral", + "src": "388:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "365:3:61", + "nodeType": "YulIdentifier", + "src": "365:3:61" + }, + "nativeSrc": "365:26:61", + "nodeType": "YulFunctionCall", + "src": "365:26:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "407:6:61", + "nodeType": "YulIdentifier", + "src": "407:6:61" + }, + { + "name": "i", + "nativeSrc": "415:1:61", + "nodeType": "YulIdentifier", + "src": "415:1:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "403:3:61", + "nodeType": "YulIdentifier", + "src": "403:3:61" + }, + "nativeSrc": "403:14:61", + "nodeType": "YulFunctionCall", + "src": "403:14:61" + }, + { + "name": "_1", + "nativeSrc": "419:2:61", + "nodeType": "YulIdentifier", + "src": "419:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "399:3:61", + "nodeType": "YulIdentifier", + "src": "399:3:61" + }, + "nativeSrc": "399:23:61", + "nodeType": "YulFunctionCall", + "src": "399:23:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "393:5:61", + "nodeType": "YulIdentifier", + "src": "393:5:61" + }, + "nativeSrc": "393:30:61", + "nodeType": "YulFunctionCall", + "src": "393:30:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "358:6:61", + "nodeType": "YulIdentifier", + "src": "358:6:61" + }, + "nativeSrc": "358:66:61", + "nodeType": "YulFunctionCall", + "src": "358:66:61" + }, + "nativeSrc": "358:66:61", + "nodeType": "YulExpressionStatement", + "src": "358:66:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "305:1:61", + "nodeType": "YulIdentifier", + "src": "305:1:61" + }, + { + "name": "length", + "nativeSrc": "308:6:61", + "nodeType": "YulIdentifier", + "src": "308:6:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "302:2:61", + "nodeType": "YulIdentifier", + "src": "302:2:61" + }, + "nativeSrc": "302:13:61", + "nodeType": "YulFunctionCall", + "src": "302:13:61" + }, + "nativeSrc": "294:140:61", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "316:19:61", + "nodeType": "YulBlock", + "src": "316:19:61", + "statements": [ + { + "nativeSrc": "318:15:61", + "nodeType": "YulAssignment", + "src": "318:15:61", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "327:1:61", + "nodeType": "YulIdentifier", + "src": "327:1:61" + }, + { + "name": "_1", + "nativeSrc": "330:2:61", + "nodeType": "YulIdentifier", + "src": "330:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "323:3:61", + "nodeType": "YulIdentifier", + "src": "323:3:61" + }, + "nativeSrc": "323:10:61", + "nodeType": "YulFunctionCall", + "src": "323:10:61" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "318:1:61", + "nodeType": "YulIdentifier", + "src": "318:1:61" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "298:3:61", + "nodeType": "YulBlock", + "src": "298:3:61", + "statements": [] + }, + "src": "294:140:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "458:9:61", + "nodeType": "YulIdentifier", + "src": "458:9:61" + }, + { + "name": "length", + "nativeSrc": "469:6:61", + "nodeType": "YulIdentifier", + "src": "469:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "454:3:61", + "nodeType": "YulIdentifier", + "src": "454:3:61" + }, + "nativeSrc": "454:22:61", + "nodeType": "YulFunctionCall", + "src": "454:22:61" + }, + { + "kind": "number", + "nativeSrc": "478:2:61", + "nodeType": "YulLiteral", + "src": "478:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "450:3:61", + "nodeType": "YulIdentifier", + "src": "450:3:61" + }, + "nativeSrc": "450:31:61", + "nodeType": "YulFunctionCall", + "src": "450:31:61" + }, + { + "kind": "number", + "nativeSrc": "483:1:61", + "nodeType": "YulLiteral", + "src": "483:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "443:6:61", + "nodeType": "YulIdentifier", + "src": "443:6:61" + }, + "nativeSrc": "443:42:61", + "nodeType": "YulFunctionCall", + "src": "443:42:61" + }, + "nativeSrc": "443:42:61", + "nodeType": "YulExpressionStatement", + "src": "443:42:61" + }, + { + "nativeSrc": "494:62:61", + "nodeType": "YulAssignment", + "src": "494:62:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "510:9:61", + "nodeType": "YulIdentifier", + "src": "510:9:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nativeSrc": "529:6:61", + "nodeType": "YulIdentifier", + "src": "529:6:61" + }, + { + "kind": "number", + "nativeSrc": "537:2:61", + "nodeType": "YulLiteral", + "src": "537:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "525:3:61", + "nodeType": "YulIdentifier", + "src": "525:3:61" + }, + "nativeSrc": "525:15:61", + "nodeType": "YulFunctionCall", + "src": "525:15:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "546:2:61", + "nodeType": "YulLiteral", + "src": "546:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "542:3:61", + "nodeType": "YulIdentifier", + "src": "542:3:61" + }, + "nativeSrc": "542:7:61", + "nodeType": "YulFunctionCall", + "src": "542:7:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "521:3:61", + "nodeType": "YulIdentifier", + "src": "521:3:61" + }, + "nativeSrc": "521:29:61", + "nodeType": "YulFunctionCall", + "src": "521:29:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "506:3:61", + "nodeType": "YulIdentifier", + "src": "506:3:61" + }, + "nativeSrc": "506:45:61", + "nodeType": "YulFunctionCall", + "src": "506:45:61" + }, + { + "kind": "number", + "nativeSrc": "553:2:61", + "nodeType": "YulLiteral", + "src": "553:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "502:3:61", + "nodeType": "YulIdentifier", + "src": "502:3:61" + }, + "nativeSrc": "502:54:61", + "nodeType": "YulFunctionCall", + "src": "502:54:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "494:4:61", + "nodeType": "YulIdentifier", + "src": "494:4:61" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed", + "nativeSrc": "14:548:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "104:9:61", + "nodeType": "YulTypedName", + "src": "104:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "115:6:61", + "nodeType": "YulTypedName", + "src": "115:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "126:4:61", + "nodeType": "YulTypedName", + "src": "126:4:61", + "type": "" + } + ], + "src": "14:548:61" + } + ] + }, + "contents": "{\n { }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n mstore(headStart, 32)\n let length := mload(value0)\n mstore(add(headStart, 32), length)\n let i := 0\n for { } lt(i, length) { i := add(i, _1) }\n {\n mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n }\n mstore(add(add(headStart, length), 64), 0)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n}", + "id": 61, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": {}, + "linkReferences": {}, + "object": "6080604052348015600f57600080fd5b506004361060285760003560e01c80630d8e6e2c14602d575b600080fd5b604080518082018252600581526444554d4d5960d81b6020820152905160529190605b565b60405180910390f35b60006020808352835180602085015260005b81811015608757858101830151858201604001528201606d565b506000604082860101526040601f19601f830116850101925050509291505056fea2646970667358221220afb9fcfe6f65abee44ce3152cb1b3231cd2d9d7aa6603987f7395120d08065c964736f6c63430008180033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH1 0xF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH1 0x28 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xD8E6E2C EQ PUSH1 0x2D JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x5 DUP2 MSTORE PUSH5 0x44554D4D59 PUSH1 0xD8 SHL PUSH1 0x20 DUP3 ADD MSTORE SWAP1 MLOAD PUSH1 0x52 SWAP2 SWAP1 PUSH1 0x5B JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH1 0x87 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH1 0x6D JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAF 0xB9 0xFC INVALID PUSH16 0x65ABEE44CE3152CB1B3231CD2D9D7AA6 PUSH1 0x39 DUP8 0xF7 CODECOPY MLOAD KECCAK256 0xD0 DUP1 PUSH6 0xC964736F6C63 NUMBER STOP ADDMOD XOR STOP CALLER ", + "sourceMap": "85:112:59:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;106:89;174:14;;;;;;;;;;;-1:-1:-1;;;174:14:59;;;;106:89;;;;174:14;106:89;:::i;:::-;;;;;;;;14:548:61;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o" + }, + "methodIdentifiers": { + "getVersion()": "0d8e6e2c" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/Dummy.sol\":\"Dummy\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"contracts/test/Dummy.sol\":{\"keccak256\":\"0x9a5603c26801490ead2233c11ba7a7b5e57fc8a731d028d7046d0c05c79a6251\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://316a5132452a3a05ce5e733a178d13268266be34dc7d22998ca2408ebb683288\",\"dweb:/ipfs/Qmb15ZqBJKottsJTXmBbdLk19FgfWUBGJkGd2wvmLHxT5m\"]}},\"version\":1}", + "storageLayout": { + "storage": [], + "types": null + } + } + }, + "contracts/test/NullUSD.sol": { + "NullUSD": { + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "allowance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientAllowance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "ERC20InsufficientBalance", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC20InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC20InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC20InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "ERC20InvalidSpender", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": { + "@_18201": { + "entryPoint": null, + "id": 18201, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@_3972": { + "entryPoint": null, + "id": 3972, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_mint_4275": { + "entryPoint": 180, + "id": 4275, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@_update_4242": { + "entryPoint": 246, + "id": 4242, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@decimals_3999": { + "entryPoint": 175, + "id": 3999, + "parameterSlots": 0, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "array_dataslot_string_storage": { + "entryPoint": null, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "checked_add_t_uint256": { + "entryPoint": 1251, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_exp_helper": { + "entryPoint": 946, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "checked_exp_t_uint256_t_uint8": { + "entryPoint": 1201, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_exp_unsigned": { + "entryPoint": 1019, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_mul_t_uint256": { + "entryPoint": 1225, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "clean_up_bytearray_end_slots_string_storage": { + "entryPoint": 635, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage": { + "entryPoint": 720, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "extract_byte_array_length": { + "entryPoint": 575, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "extract_used_part_and_set_length_of_short_byte_array": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "panic_error_0x11": { + "entryPoint": 924, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x41": { + "entryPoint": 553, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nativeSrc": "0:5275:61", + "nodeType": "YulBlock", + "src": "0:5275:61", + "statements": [ + { + "nativeSrc": "6:3:61", + "nodeType": "YulBlock", + "src": "6:3:61", + "statements": [] + }, + { + "body": { + "nativeSrc": "46:95:61", + "nodeType": "YulBlock", + "src": "46:95:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "63:1:61", + "nodeType": "YulLiteral", + "src": "63:1:61", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "70:3:61", + "nodeType": "YulLiteral", + "src": "70:3:61", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "75:10:61", + "nodeType": "YulLiteral", + "src": "75:10:61", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "66:3:61", + "nodeType": "YulIdentifier", + "src": "66:3:61" + }, + "nativeSrc": "66:20:61", + "nodeType": "YulFunctionCall", + "src": "66:20:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "56:6:61", + "nodeType": "YulIdentifier", + "src": "56:6:61" + }, + "nativeSrc": "56:31:61", + "nodeType": "YulFunctionCall", + "src": "56:31:61" + }, + "nativeSrc": "56:31:61", + "nodeType": "YulExpressionStatement", + "src": "56:31:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "103:1:61", + "nodeType": "YulLiteral", + "src": "103:1:61", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "106:4:61", + "nodeType": "YulLiteral", + "src": "106:4:61", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "96:6:61", + "nodeType": "YulIdentifier", + "src": "96:6:61" + }, + "nativeSrc": "96:15:61", + "nodeType": "YulFunctionCall", + "src": "96:15:61" + }, + "nativeSrc": "96:15:61", + "nodeType": "YulExpressionStatement", + "src": "96:15:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "127:1:61", + "nodeType": "YulLiteral", + "src": "127:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "130:4:61", + "nodeType": "YulLiteral", + "src": "130:4:61", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "120:6:61", + "nodeType": "YulIdentifier", + "src": "120:6:61" + }, + "nativeSrc": "120:15:61", + "nodeType": "YulFunctionCall", + "src": "120:15:61" + }, + "nativeSrc": "120:15:61", + "nodeType": "YulExpressionStatement", + "src": "120:15:61" + } + ] + }, + "name": "panic_error_0x41", + "nativeSrc": "14:127:61", + "nodeType": "YulFunctionDefinition", + "src": "14:127:61" + }, + { + "body": { + "nativeSrc": "201:325:61", + "nodeType": "YulBlock", + "src": "201:325:61", + "statements": [ + { + "nativeSrc": "211:22:61", + "nodeType": "YulAssignment", + "src": "211:22:61", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "225:1:61", + "nodeType": "YulLiteral", + "src": "225:1:61", + "type": "", + "value": "1" + }, + { + "name": "data", + "nativeSrc": "228:4:61", + "nodeType": "YulIdentifier", + "src": "228:4:61" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "221:3:61", + "nodeType": "YulIdentifier", + "src": "221:3:61" + }, + "nativeSrc": "221:12:61", + "nodeType": "YulFunctionCall", + "src": "221:12:61" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "211:6:61", + "nodeType": "YulIdentifier", + "src": "211:6:61" + } + ] + }, + { + "nativeSrc": "242:38:61", + "nodeType": "YulVariableDeclaration", + "src": "242:38:61", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "272:4:61", + "nodeType": "YulIdentifier", + "src": "272:4:61" + }, + { + "kind": "number", + "nativeSrc": "278:1:61", + "nodeType": "YulLiteral", + "src": "278:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "268:3:61", + "nodeType": "YulIdentifier", + "src": "268:3:61" + }, + "nativeSrc": "268:12:61", + "nodeType": "YulFunctionCall", + "src": "268:12:61" + }, + "variables": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "246:18:61", + "nodeType": "YulTypedName", + "src": "246:18:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "319:31:61", + "nodeType": "YulBlock", + "src": "319:31:61", + "statements": [ + { + "nativeSrc": "321:27:61", + "nodeType": "YulAssignment", + "src": "321:27:61", + "value": { + "arguments": [ + { + "name": "length", + "nativeSrc": "335:6:61", + "nodeType": "YulIdentifier", + "src": "335:6:61" + }, + { + "kind": "number", + "nativeSrc": "343:4:61", + "nodeType": "YulLiteral", + "src": "343:4:61", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "331:3:61", + "nodeType": "YulIdentifier", + "src": "331:3:61" + }, + "nativeSrc": "331:17:61", + "nodeType": "YulFunctionCall", + "src": "331:17:61" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "321:6:61", + "nodeType": "YulIdentifier", + "src": "321:6:61" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "299:18:61", + "nodeType": "YulIdentifier", + "src": "299:18:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "292:6:61", + "nodeType": "YulIdentifier", + "src": "292:6:61" + }, + "nativeSrc": "292:26:61", + "nodeType": "YulFunctionCall", + "src": "292:26:61" + }, + "nativeSrc": "289:61:61", + "nodeType": "YulIf", + "src": "289:61:61" + }, + { + "body": { + "nativeSrc": "409:111:61", + "nodeType": "YulBlock", + "src": "409:111:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "430:1:61", + "nodeType": "YulLiteral", + "src": "430:1:61", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "437:3:61", + "nodeType": "YulLiteral", + "src": "437:3:61", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "442:10:61", + "nodeType": "YulLiteral", + "src": "442:10:61", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "433:3:61", + "nodeType": "YulIdentifier", + "src": "433:3:61" + }, + "nativeSrc": "433:20:61", + "nodeType": "YulFunctionCall", + "src": "433:20:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "423:6:61", + "nodeType": "YulIdentifier", + "src": "423:6:61" + }, + "nativeSrc": "423:31:61", + "nodeType": "YulFunctionCall", + "src": "423:31:61" + }, + "nativeSrc": "423:31:61", + "nodeType": "YulExpressionStatement", + "src": "423:31:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "474:1:61", + "nodeType": "YulLiteral", + "src": "474:1:61", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "477:4:61", + "nodeType": "YulLiteral", + "src": "477:4:61", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "467:6:61", + "nodeType": "YulIdentifier", + "src": "467:6:61" + }, + "nativeSrc": "467:15:61", + "nodeType": "YulFunctionCall", + "src": "467:15:61" + }, + "nativeSrc": "467:15:61", + "nodeType": "YulExpressionStatement", + "src": "467:15:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "502:1:61", + "nodeType": "YulLiteral", + "src": "502:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "505:4:61", + "nodeType": "YulLiteral", + "src": "505:4:61", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "495:6:61", + "nodeType": "YulIdentifier", + "src": "495:6:61" + }, + "nativeSrc": "495:15:61", + "nodeType": "YulFunctionCall", + "src": "495:15:61" + }, + "nativeSrc": "495:15:61", + "nodeType": "YulExpressionStatement", + "src": "495:15:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "365:18:61", + "nodeType": "YulIdentifier", + "src": "365:18:61" + }, + { + "arguments": [ + { + "name": "length", + "nativeSrc": "388:6:61", + "nodeType": "YulIdentifier", + "src": "388:6:61" + }, + { + "kind": "number", + "nativeSrc": "396:2:61", + "nodeType": "YulLiteral", + "src": "396:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "385:2:61", + "nodeType": "YulIdentifier", + "src": "385:2:61" + }, + "nativeSrc": "385:14:61", + "nodeType": "YulFunctionCall", + "src": "385:14:61" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "362:2:61", + "nodeType": "YulIdentifier", + "src": "362:2:61" + }, + "nativeSrc": "362:38:61", + "nodeType": "YulFunctionCall", + "src": "362:38:61" + }, + "nativeSrc": "359:161:61", + "nodeType": "YulIf", + "src": "359:161:61" + } + ] + }, + "name": "extract_byte_array_length", + "nativeSrc": "146:380:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nativeSrc": "181:4:61", + "nodeType": "YulTypedName", + "src": "181:4:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nativeSrc": "190:6:61", + "nodeType": "YulTypedName", + "src": "190:6:61", + "type": "" + } + ], + "src": "146:380:61" + }, + { + "body": { + "nativeSrc": "587:65:61", + "nodeType": "YulBlock", + "src": "587:65:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "604:1:61", + "nodeType": "YulLiteral", + "src": "604:1:61", + "type": "", + "value": "0" + }, + { + "name": "ptr", + "nativeSrc": "607:3:61", + "nodeType": "YulIdentifier", + "src": "607:3:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "597:6:61", + "nodeType": "YulIdentifier", + "src": "597:6:61" + }, + "nativeSrc": "597:14:61", + "nodeType": "YulFunctionCall", + "src": "597:14:61" + }, + "nativeSrc": "597:14:61", + "nodeType": "YulExpressionStatement", + "src": "597:14:61" + }, + { + "nativeSrc": "620:26:61", + "nodeType": "YulAssignment", + "src": "620:26:61", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "638:1:61", + "nodeType": "YulLiteral", + "src": "638:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "641:4:61", + "nodeType": "YulLiteral", + "src": "641:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "628:9:61", + "nodeType": "YulIdentifier", + "src": "628:9:61" + }, + "nativeSrc": "628:18:61", + "nodeType": "YulFunctionCall", + "src": "628:18:61" + }, + "variableNames": [ + { + "name": "data", + "nativeSrc": "620:4:61", + "nodeType": "YulIdentifier", + "src": "620:4:61" + } + ] + } + ] + }, + "name": "array_dataslot_string_storage", + "nativeSrc": "531:121:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "ptr", + "nativeSrc": "570:3:61", + "nodeType": "YulTypedName", + "src": "570:3:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "data", + "nativeSrc": "578:4:61", + "nodeType": "YulTypedName", + "src": "578:4:61", + "type": "" + } + ], + "src": "531:121:61" + }, + { + "body": { + "nativeSrc": "738:462:61", + "nodeType": "YulBlock", + "src": "738:462:61", + "statements": [ + { + "body": { + "nativeSrc": "771:423:61", + "nodeType": "YulBlock", + "src": "771:423:61", + "statements": [ + { + "nativeSrc": "785:11:61", + "nodeType": "YulVariableDeclaration", + "src": "785:11:61", + "value": { + "kind": "number", + "nativeSrc": "795:1:61", + "nodeType": "YulLiteral", + "src": "795:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "789:2:61", + "nodeType": "YulTypedName", + "src": "789:2:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "816:1:61", + "nodeType": "YulLiteral", + "src": "816:1:61", + "type": "", + "value": "0" + }, + { + "name": "array", + "nativeSrc": "819:5:61", + "nodeType": "YulIdentifier", + "src": "819:5:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "809:6:61", + "nodeType": "YulIdentifier", + "src": "809:6:61" + }, + "nativeSrc": "809:16:61", + "nodeType": "YulFunctionCall", + "src": "809:16:61" + }, + "nativeSrc": "809:16:61", + "nodeType": "YulExpressionStatement", + "src": "809:16:61" + }, + { + "nativeSrc": "838:30:61", + "nodeType": "YulVariableDeclaration", + "src": "838:30:61", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "860:1:61", + "nodeType": "YulLiteral", + "src": "860:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "863:4:61", + "nodeType": "YulLiteral", + "src": "863:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "850:9:61", + "nodeType": "YulIdentifier", + "src": "850:9:61" + }, + "nativeSrc": "850:18:61", + "nodeType": "YulFunctionCall", + "src": "850:18:61" + }, + "variables": [ + { + "name": "data", + "nativeSrc": "842:4:61", + "nodeType": "YulTypedName", + "src": "842:4:61", + "type": "" + } + ] + }, + { + "nativeSrc": "881:57:61", + "nodeType": "YulVariableDeclaration", + "src": "881:57:61", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "904:4:61", + "nodeType": "YulIdentifier", + "src": "904:4:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "914:1:61", + "nodeType": "YulLiteral", + "src": "914:1:61", + "type": "", + "value": "5" + }, + { + "arguments": [ + { + "name": "startIndex", + "nativeSrc": "921:10:61", + "nodeType": "YulIdentifier", + "src": "921:10:61" + }, + { + "kind": "number", + "nativeSrc": "933:2:61", + "nodeType": "YulLiteral", + "src": "933:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "917:3:61", + "nodeType": "YulIdentifier", + "src": "917:3:61" + }, + "nativeSrc": "917:19:61", + "nodeType": "YulFunctionCall", + "src": "917:19:61" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "910:3:61", + "nodeType": "YulIdentifier", + "src": "910:3:61" + }, + "nativeSrc": "910:27:61", + "nodeType": "YulFunctionCall", + "src": "910:27:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "900:3:61", + "nodeType": "YulIdentifier", + "src": "900:3:61" + }, + "nativeSrc": "900:38:61", + "nodeType": "YulFunctionCall", + "src": "900:38:61" + }, + "variables": [ + { + "name": "deleteStart", + "nativeSrc": "885:11:61", + "nodeType": "YulTypedName", + "src": "885:11:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "975:23:61", + "nodeType": "YulBlock", + "src": "975:23:61", + "statements": [ + { + "nativeSrc": "977:19:61", + "nodeType": "YulAssignment", + "src": "977:19:61", + "value": { + "name": "data", + "nativeSrc": "992:4:61", + "nodeType": "YulIdentifier", + "src": "992:4:61" + }, + "variableNames": [ + { + "name": "deleteStart", + "nativeSrc": "977:11:61", + "nodeType": "YulIdentifier", + "src": "977:11:61" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "startIndex", + "nativeSrc": "957:10:61", + "nodeType": "YulIdentifier", + "src": "957:10:61" + }, + { + "kind": "number", + "nativeSrc": "969:4:61", + "nodeType": "YulLiteral", + "src": "969:4:61", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "954:2:61", + "nodeType": "YulIdentifier", + "src": "954:2:61" + }, + "nativeSrc": "954:20:61", + "nodeType": "YulFunctionCall", + "src": "954:20:61" + }, + "nativeSrc": "951:47:61", + "nodeType": "YulIf", + "src": "951:47:61" + }, + { + "nativeSrc": "1011:41:61", + "nodeType": "YulVariableDeclaration", + "src": "1011:41:61", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "1025:4:61", + "nodeType": "YulIdentifier", + "src": "1025:4:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1035:1:61", + "nodeType": "YulLiteral", + "src": "1035:1:61", + "type": "", + "value": "5" + }, + { + "arguments": [ + { + "name": "len", + "nativeSrc": "1042:3:61", + "nodeType": "YulIdentifier", + "src": "1042:3:61" + }, + { + "kind": "number", + "nativeSrc": "1047:2:61", + "nodeType": "YulLiteral", + "src": "1047:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1038:3:61", + "nodeType": "YulIdentifier", + "src": "1038:3:61" + }, + "nativeSrc": "1038:12:61", + "nodeType": "YulFunctionCall", + "src": "1038:12:61" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "1031:3:61", + "nodeType": "YulIdentifier", + "src": "1031:3:61" + }, + "nativeSrc": "1031:20:61", + "nodeType": "YulFunctionCall", + "src": "1031:20:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1021:3:61", + "nodeType": "YulIdentifier", + "src": "1021:3:61" + }, + "nativeSrc": "1021:31:61", + "nodeType": "YulFunctionCall", + "src": "1021:31:61" + }, + "variables": [ + { + "name": "_2", + "nativeSrc": "1015:2:61", + "nodeType": "YulTypedName", + "src": "1015:2:61", + "type": "" + } + ] + }, + { + "nativeSrc": "1065:24:61", + "nodeType": "YulVariableDeclaration", + "src": "1065:24:61", + "value": { + "name": "deleteStart", + "nativeSrc": "1078:11:61", + "nodeType": "YulIdentifier", + "src": "1078:11:61" + }, + "variables": [ + { + "name": "start", + "nativeSrc": "1069:5:61", + "nodeType": "YulTypedName", + "src": "1069:5:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "1163:21:61", + "nodeType": "YulBlock", + "src": "1163:21:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "start", + "nativeSrc": "1172:5:61", + "nodeType": "YulIdentifier", + "src": "1172:5:61" + }, + { + "name": "_1", + "nativeSrc": "1179:2:61", + "nodeType": "YulIdentifier", + "src": "1179:2:61" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "1165:6:61", + "nodeType": "YulIdentifier", + "src": "1165:6:61" + }, + "nativeSrc": "1165:17:61", + "nodeType": "YulFunctionCall", + "src": "1165:17:61" + }, + "nativeSrc": "1165:17:61", + "nodeType": "YulExpressionStatement", + "src": "1165:17:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "start", + "nativeSrc": "1113:5:61", + "nodeType": "YulIdentifier", + "src": "1113:5:61" + }, + { + "name": "_2", + "nativeSrc": "1120:2:61", + "nodeType": "YulIdentifier", + "src": "1120:2:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "1110:2:61", + "nodeType": "YulIdentifier", + "src": "1110:2:61" + }, + "nativeSrc": "1110:13:61", + "nodeType": "YulFunctionCall", + "src": "1110:13:61" + }, + "nativeSrc": "1102:82:61", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "1124:26:61", + "nodeType": "YulBlock", + "src": "1124:26:61", + "statements": [ + { + "nativeSrc": "1126:22:61", + "nodeType": "YulAssignment", + "src": "1126:22:61", + "value": { + "arguments": [ + { + "name": "start", + "nativeSrc": "1139:5:61", + "nodeType": "YulIdentifier", + "src": "1139:5:61" + }, + { + "kind": "number", + "nativeSrc": "1146:1:61", + "nodeType": "YulLiteral", + "src": "1146:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1135:3:61", + "nodeType": "YulIdentifier", + "src": "1135:3:61" + }, + "nativeSrc": "1135:13:61", + "nodeType": "YulFunctionCall", + "src": "1135:13:61" + }, + "variableNames": [ + { + "name": "start", + "nativeSrc": "1126:5:61", + "nodeType": "YulIdentifier", + "src": "1126:5:61" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "1106:3:61", + "nodeType": "YulBlock", + "src": "1106:3:61", + "statements": [] + }, + "src": "1102:82:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "len", + "nativeSrc": "754:3:61", + "nodeType": "YulIdentifier", + "src": "754:3:61" + }, + { + "kind": "number", + "nativeSrc": "759:2:61", + "nodeType": "YulLiteral", + "src": "759:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "751:2:61", + "nodeType": "YulIdentifier", + "src": "751:2:61" + }, + "nativeSrc": "751:11:61", + "nodeType": "YulFunctionCall", + "src": "751:11:61" + }, + "nativeSrc": "748:446:61", + "nodeType": "YulIf", + "src": "748:446:61" + } + ] + }, + "name": "clean_up_bytearray_end_slots_string_storage", + "nativeSrc": "657:543:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "array", + "nativeSrc": "710:5:61", + "nodeType": "YulTypedName", + "src": "710:5:61", + "type": "" + }, + { + "name": "len", + "nativeSrc": "717:3:61", + "nodeType": "YulTypedName", + "src": "717:3:61", + "type": "" + }, + { + "name": "startIndex", + "nativeSrc": "722:10:61", + "nodeType": "YulTypedName", + "src": "722:10:61", + "type": "" + } + ], + "src": "657:543:61" + }, + { + "body": { + "nativeSrc": "1290:81:61", + "nodeType": "YulBlock", + "src": "1290:81:61", + "statements": [ + { + "nativeSrc": "1300:65:61", + "nodeType": "YulAssignment", + "src": "1300:65:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "data", + "nativeSrc": "1315:4:61", + "nodeType": "YulIdentifier", + "src": "1315:4:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1333:1:61", + "nodeType": "YulLiteral", + "src": "1333:1:61", + "type": "", + "value": "3" + }, + { + "name": "len", + "nativeSrc": "1336:3:61", + "nodeType": "YulIdentifier", + "src": "1336:3:61" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "1329:3:61", + "nodeType": "YulIdentifier", + "src": "1329:3:61" + }, + "nativeSrc": "1329:11:61", + "nodeType": "YulFunctionCall", + "src": "1329:11:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1346:1:61", + "nodeType": "YulLiteral", + "src": "1346:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "1342:3:61", + "nodeType": "YulIdentifier", + "src": "1342:3:61" + }, + "nativeSrc": "1342:6:61", + "nodeType": "YulFunctionCall", + "src": "1342:6:61" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "1325:3:61", + "nodeType": "YulIdentifier", + "src": "1325:3:61" + }, + "nativeSrc": "1325:24:61", + "nodeType": "YulFunctionCall", + "src": "1325:24:61" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "1321:3:61", + "nodeType": "YulIdentifier", + "src": "1321:3:61" + }, + "nativeSrc": "1321:29:61", + "nodeType": "YulFunctionCall", + "src": "1321:29:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1311:3:61", + "nodeType": "YulIdentifier", + "src": "1311:3:61" + }, + "nativeSrc": "1311:40:61", + "nodeType": "YulFunctionCall", + "src": "1311:40:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1357:1:61", + "nodeType": "YulLiteral", + "src": "1357:1:61", + "type": "", + "value": "1" + }, + { + "name": "len", + "nativeSrc": "1360:3:61", + "nodeType": "YulIdentifier", + "src": "1360:3:61" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "1353:3:61", + "nodeType": "YulIdentifier", + "src": "1353:3:61" + }, + "nativeSrc": "1353:11:61", + "nodeType": "YulFunctionCall", + "src": "1353:11:61" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "1308:2:61", + "nodeType": "YulIdentifier", + "src": "1308:2:61" + }, + "nativeSrc": "1308:57:61", + "nodeType": "YulFunctionCall", + "src": "1308:57:61" + }, + "variableNames": [ + { + "name": "used", + "nativeSrc": "1300:4:61", + "nodeType": "YulIdentifier", + "src": "1300:4:61" + } + ] + } + ] + }, + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nativeSrc": "1205:166:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nativeSrc": "1267:4:61", + "nodeType": "YulTypedName", + "src": "1267:4:61", + "type": "" + }, + { + "name": "len", + "nativeSrc": "1273:3:61", + "nodeType": "YulTypedName", + "src": "1273:3:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "used", + "nativeSrc": "1281:4:61", + "nodeType": "YulTypedName", + "src": "1281:4:61", + "type": "" + } + ], + "src": "1205:166:61" + }, + { + "body": { + "nativeSrc": "1472:1249:61", + "nodeType": "YulBlock", + "src": "1472:1249:61", + "statements": [ + { + "nativeSrc": "1482:24:61", + "nodeType": "YulVariableDeclaration", + "src": "1482:24:61", + "value": { + "arguments": [ + { + "name": "src", + "nativeSrc": "1502:3:61", + "nodeType": "YulIdentifier", + "src": "1502:3:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "1496:5:61", + "nodeType": "YulIdentifier", + "src": "1496:5:61" + }, + "nativeSrc": "1496:10:61", + "nodeType": "YulFunctionCall", + "src": "1496:10:61" + }, + "variables": [ + { + "name": "newLen", + "nativeSrc": "1486:6:61", + "nodeType": "YulTypedName", + "src": "1486:6:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "1549:22:61", + "nodeType": "YulBlock", + "src": "1549:22:61", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "1551:16:61", + "nodeType": "YulIdentifier", + "src": "1551:16:61" + }, + "nativeSrc": "1551:18:61", + "nodeType": "YulFunctionCall", + "src": "1551:18:61" + }, + "nativeSrc": "1551:18:61", + "nodeType": "YulExpressionStatement", + "src": "1551:18:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "1521:6:61", + "nodeType": "YulIdentifier", + "src": "1521:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1537:2:61", + "nodeType": "YulLiteral", + "src": "1537:2:61", + "type": "", + "value": "64" + }, + { + "kind": "number", + "nativeSrc": "1541:1:61", + "nodeType": "YulLiteral", + "src": "1541:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "1533:3:61", + "nodeType": "YulIdentifier", + "src": "1533:3:61" + }, + "nativeSrc": "1533:10:61", + "nodeType": "YulFunctionCall", + "src": "1533:10:61" + }, + { + "kind": "number", + "nativeSrc": "1545:1:61", + "nodeType": "YulLiteral", + "src": "1545:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "1529:3:61", + "nodeType": "YulIdentifier", + "src": "1529:3:61" + }, + "nativeSrc": "1529:18:61", + "nodeType": "YulFunctionCall", + "src": "1529:18:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "1518:2:61", + "nodeType": "YulIdentifier", + "src": "1518:2:61" + }, + "nativeSrc": "1518:30:61", + "nodeType": "YulFunctionCall", + "src": "1518:30:61" + }, + "nativeSrc": "1515:56:61", + "nodeType": "YulIf", + "src": "1515:56:61" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "1624:4:61", + "nodeType": "YulIdentifier", + "src": "1624:4:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "slot", + "nativeSrc": "1662:4:61", + "nodeType": "YulIdentifier", + "src": "1662:4:61" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "1656:5:61", + "nodeType": "YulIdentifier", + "src": "1656:5:61" + }, + "nativeSrc": "1656:11:61", + "nodeType": "YulFunctionCall", + "src": "1656:11:61" + } + ], + "functionName": { + "name": "extract_byte_array_length", + "nativeSrc": "1630:25:61", + "nodeType": "YulIdentifier", + "src": "1630:25:61" + }, + "nativeSrc": "1630:38:61", + "nodeType": "YulFunctionCall", + "src": "1630:38:61" + }, + { + "name": "newLen", + "nativeSrc": "1670:6:61", + "nodeType": "YulIdentifier", + "src": "1670:6:61" + } + ], + "functionName": { + "name": "clean_up_bytearray_end_slots_string_storage", + "nativeSrc": "1580:43:61", + "nodeType": "YulIdentifier", + "src": "1580:43:61" + }, + "nativeSrc": "1580:97:61", + "nodeType": "YulFunctionCall", + "src": "1580:97:61" + }, + "nativeSrc": "1580:97:61", + "nodeType": "YulExpressionStatement", + "src": "1580:97:61" + }, + { + "nativeSrc": "1686:18:61", + "nodeType": "YulVariableDeclaration", + "src": "1686:18:61", + "value": { + "kind": "number", + "nativeSrc": "1703:1:61", + "nodeType": "YulLiteral", + "src": "1703:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "srcOffset", + "nativeSrc": "1690:9:61", + "nodeType": "YulTypedName", + "src": "1690:9:61", + "type": "" + } + ] + }, + { + "nativeSrc": "1713:23:61", + "nodeType": "YulVariableDeclaration", + "src": "1713:23:61", + "value": { + "kind": "number", + "nativeSrc": "1732:4:61", + "nodeType": "YulLiteral", + "src": "1732:4:61", + "type": "", + "value": "0x20" + }, + "variables": [ + { + "name": "srcOffset_1", + "nativeSrc": "1717:11:61", + "nodeType": "YulTypedName", + "src": "1717:11:61", + "type": "" + } + ] + }, + { + "nativeSrc": "1745:17:61", + "nodeType": "YulAssignment", + "src": "1745:17:61", + "value": { + "kind": "number", + "nativeSrc": "1758:4:61", + "nodeType": "YulLiteral", + "src": "1758:4:61", + "type": "", + "value": "0x20" + }, + "variableNames": [ + { + "name": "srcOffset", + "nativeSrc": "1745:9:61", + "nodeType": "YulIdentifier", + "src": "1745:9:61" + } + ] + }, + { + "cases": [ + { + "body": { + "nativeSrc": "1808:656:61", + "nodeType": "YulBlock", + "src": "1808:656:61", + "statements": [ + { + "nativeSrc": "1822:35:61", + "nodeType": "YulVariableDeclaration", + "src": "1822:35:61", + "value": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "1841:6:61", + "nodeType": "YulIdentifier", + "src": "1841:6:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1853:2:61", + "nodeType": "YulLiteral", + "src": "1853:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "1849:3:61", + "nodeType": "YulIdentifier", + "src": "1849:3:61" + }, + "nativeSrc": "1849:7:61", + "nodeType": "YulFunctionCall", + "src": "1849:7:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1837:3:61", + "nodeType": "YulIdentifier", + "src": "1837:3:61" + }, + "nativeSrc": "1837:20:61", + "nodeType": "YulFunctionCall", + "src": "1837:20:61" + }, + "variables": [ + { + "name": "loopEnd", + "nativeSrc": "1826:7:61", + "nodeType": "YulTypedName", + "src": "1826:7:61", + "type": "" + } + ] + }, + { + "nativeSrc": "1870:49:61", + "nodeType": "YulVariableDeclaration", + "src": "1870:49:61", + "value": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "1914:4:61", + "nodeType": "YulIdentifier", + "src": "1914:4:61" + } + ], + "functionName": { + "name": "array_dataslot_string_storage", + "nativeSrc": "1884:29:61", + "nodeType": "YulIdentifier", + "src": "1884:29:61" + }, + "nativeSrc": "1884:35:61", + "nodeType": "YulFunctionCall", + "src": "1884:35:61" + }, + "variables": [ + { + "name": "dstPtr", + "nativeSrc": "1874:6:61", + "nodeType": "YulTypedName", + "src": "1874:6:61", + "type": "" + } + ] + }, + { + "nativeSrc": "1932:10:61", + "nodeType": "YulVariableDeclaration", + "src": "1932:10:61", + "value": { + "kind": "number", + "nativeSrc": "1941:1:61", + "nodeType": "YulLiteral", + "src": "1941:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "1936:1:61", + "nodeType": "YulTypedName", + "src": "1936:1:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "2019:172:61", + "nodeType": "YulBlock", + "src": "2019:172:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "2044:6:61", + "nodeType": "YulIdentifier", + "src": "2044:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "2062:3:61", + "nodeType": "YulIdentifier", + "src": "2062:3:61" + }, + { + "name": "srcOffset", + "nativeSrc": "2067:9:61", + "nodeType": "YulIdentifier", + "src": "2067:9:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2058:3:61", + "nodeType": "YulIdentifier", + "src": "2058:3:61" + }, + "nativeSrc": "2058:19:61", + "nodeType": "YulFunctionCall", + "src": "2058:19:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2052:5:61", + "nodeType": "YulIdentifier", + "src": "2052:5:61" + }, + "nativeSrc": "2052:26:61", + "nodeType": "YulFunctionCall", + "src": "2052:26:61" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "2037:6:61", + "nodeType": "YulIdentifier", + "src": "2037:6:61" + }, + "nativeSrc": "2037:42:61", + "nodeType": "YulFunctionCall", + "src": "2037:42:61" + }, + "nativeSrc": "2037:42:61", + "nodeType": "YulExpressionStatement", + "src": "2037:42:61" + }, + { + "nativeSrc": "2096:24:61", + "nodeType": "YulAssignment", + "src": "2096:24:61", + "value": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "2110:6:61", + "nodeType": "YulIdentifier", + "src": "2110:6:61" + }, + { + "kind": "number", + "nativeSrc": "2118:1:61", + "nodeType": "YulLiteral", + "src": "2118:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2106:3:61", + "nodeType": "YulIdentifier", + "src": "2106:3:61" + }, + "nativeSrc": "2106:14:61", + "nodeType": "YulFunctionCall", + "src": "2106:14:61" + }, + "variableNames": [ + { + "name": "dstPtr", + "nativeSrc": "2096:6:61", + "nodeType": "YulIdentifier", + "src": "2096:6:61" + } + ] + }, + { + "nativeSrc": "2137:40:61", + "nodeType": "YulAssignment", + "src": "2137:40:61", + "value": { + "arguments": [ + { + "name": "srcOffset", + "nativeSrc": "2154:9:61", + "nodeType": "YulIdentifier", + "src": "2154:9:61" + }, + { + "name": "srcOffset_1", + "nativeSrc": "2165:11:61", + "nodeType": "YulIdentifier", + "src": "2165:11:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2150:3:61", + "nodeType": "YulIdentifier", + "src": "2150:3:61" + }, + "nativeSrc": "2150:27:61", + "nodeType": "YulFunctionCall", + "src": "2150:27:61" + }, + "variableNames": [ + { + "name": "srcOffset", + "nativeSrc": "2137:9:61", + "nodeType": "YulIdentifier", + "src": "2137:9:61" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "1966:1:61", + "nodeType": "YulIdentifier", + "src": "1966:1:61" + }, + { + "name": "loopEnd", + "nativeSrc": "1969:7:61", + "nodeType": "YulIdentifier", + "src": "1969:7:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "1963:2:61", + "nodeType": "YulIdentifier", + "src": "1963:2:61" + }, + "nativeSrc": "1963:14:61", + "nodeType": "YulFunctionCall", + "src": "1963:14:61" + }, + "nativeSrc": "1955:236:61", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "1978:28:61", + "nodeType": "YulBlock", + "src": "1978:28:61", + "statements": [ + { + "nativeSrc": "1980:24:61", + "nodeType": "YulAssignment", + "src": "1980:24:61", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "1989:1:61", + "nodeType": "YulIdentifier", + "src": "1989:1:61" + }, + { + "name": "srcOffset_1", + "nativeSrc": "1992:11:61", + "nodeType": "YulIdentifier", + "src": "1992:11:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1985:3:61", + "nodeType": "YulIdentifier", + "src": "1985:3:61" + }, + "nativeSrc": "1985:19:61", + "nodeType": "YulFunctionCall", + "src": "1985:19:61" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "1980:1:61", + "nodeType": "YulIdentifier", + "src": "1980:1:61" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "1959:3:61", + "nodeType": "YulBlock", + "src": "1959:3:61", + "statements": [] + }, + "src": "1955:236:61" + }, + { + "body": { + "nativeSrc": "2239:166:61", + "nodeType": "YulBlock", + "src": "2239:166:61", + "statements": [ + { + "nativeSrc": "2257:43:61", + "nodeType": "YulVariableDeclaration", + "src": "2257:43:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "2284:3:61", + "nodeType": "YulIdentifier", + "src": "2284:3:61" + }, + { + "name": "srcOffset", + "nativeSrc": "2289:9:61", + "nodeType": "YulIdentifier", + "src": "2289:9:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2280:3:61", + "nodeType": "YulIdentifier", + "src": "2280:3:61" + }, + "nativeSrc": "2280:19:61", + "nodeType": "YulFunctionCall", + "src": "2280:19:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2274:5:61", + "nodeType": "YulIdentifier", + "src": "2274:5:61" + }, + "nativeSrc": "2274:26:61", + "nodeType": "YulFunctionCall", + "src": "2274:26:61" + }, + "variables": [ + { + "name": "lastValue", + "nativeSrc": "2261:9:61", + "nodeType": "YulTypedName", + "src": "2261:9:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "2324:6:61", + "nodeType": "YulIdentifier", + "src": "2324:6:61" + }, + { + "arguments": [ + { + "name": "lastValue", + "nativeSrc": "2336:9:61", + "nodeType": "YulIdentifier", + "src": "2336:9:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2363:1:61", + "nodeType": "YulLiteral", + "src": "2363:1:61", + "type": "", + "value": "3" + }, + { + "name": "newLen", + "nativeSrc": "2366:6:61", + "nodeType": "YulIdentifier", + "src": "2366:6:61" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "2359:3:61", + "nodeType": "YulIdentifier", + "src": "2359:3:61" + }, + "nativeSrc": "2359:14:61", + "nodeType": "YulFunctionCall", + "src": "2359:14:61" + }, + { + "kind": "number", + "nativeSrc": "2375:3:61", + "nodeType": "YulLiteral", + "src": "2375:3:61", + "type": "", + "value": "248" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "2355:3:61", + "nodeType": "YulIdentifier", + "src": "2355:3:61" + }, + "nativeSrc": "2355:24:61", + "nodeType": "YulFunctionCall", + "src": "2355:24:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2385:1:61", + "nodeType": "YulLiteral", + "src": "2385:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "2381:3:61", + "nodeType": "YulIdentifier", + "src": "2381:3:61" + }, + "nativeSrc": "2381:6:61", + "nodeType": "YulFunctionCall", + "src": "2381:6:61" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "2351:3:61", + "nodeType": "YulIdentifier", + "src": "2351:3:61" + }, + "nativeSrc": "2351:37:61", + "nodeType": "YulFunctionCall", + "src": "2351:37:61" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "2347:3:61", + "nodeType": "YulIdentifier", + "src": "2347:3:61" + }, + "nativeSrc": "2347:42:61", + "nodeType": "YulFunctionCall", + "src": "2347:42:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "2332:3:61", + "nodeType": "YulIdentifier", + "src": "2332:3:61" + }, + "nativeSrc": "2332:58:61", + "nodeType": "YulFunctionCall", + "src": "2332:58:61" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "2317:6:61", + "nodeType": "YulIdentifier", + "src": "2317:6:61" + }, + "nativeSrc": "2317:74:61", + "nodeType": "YulFunctionCall", + "src": "2317:74:61" + }, + "nativeSrc": "2317:74:61", + "nodeType": "YulExpressionStatement", + "src": "2317:74:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "loopEnd", + "nativeSrc": "2210:7:61", + "nodeType": "YulIdentifier", + "src": "2210:7:61" + }, + { + "name": "newLen", + "nativeSrc": "2219:6:61", + "nodeType": "YulIdentifier", + "src": "2219:6:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "2207:2:61", + "nodeType": "YulIdentifier", + "src": "2207:2:61" + }, + "nativeSrc": "2207:19:61", + "nodeType": "YulFunctionCall", + "src": "2207:19:61" + }, + "nativeSrc": "2204:201:61", + "nodeType": "YulIf", + "src": "2204:201:61" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "2425:4:61", + "nodeType": "YulIdentifier", + "src": "2425:4:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2439:1:61", + "nodeType": "YulLiteral", + "src": "2439:1:61", + "type": "", + "value": "1" + }, + { + "name": "newLen", + "nativeSrc": "2442:6:61", + "nodeType": "YulIdentifier", + "src": "2442:6:61" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "2435:3:61", + "nodeType": "YulIdentifier", + "src": "2435:3:61" + }, + "nativeSrc": "2435:14:61", + "nodeType": "YulFunctionCall", + "src": "2435:14:61" + }, + { + "kind": "number", + "nativeSrc": "2451:1:61", + "nodeType": "YulLiteral", + "src": "2451:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2431:3:61", + "nodeType": "YulIdentifier", + "src": "2431:3:61" + }, + "nativeSrc": "2431:22:61", + "nodeType": "YulFunctionCall", + "src": "2431:22:61" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "2418:6:61", + "nodeType": "YulIdentifier", + "src": "2418:6:61" + }, + "nativeSrc": "2418:36:61", + "nodeType": "YulFunctionCall", + "src": "2418:36:61" + }, + "nativeSrc": "2418:36:61", + "nodeType": "YulExpressionStatement", + "src": "2418:36:61" + } + ] + }, + "nativeSrc": "1801:663:61", + "nodeType": "YulCase", + "src": "1801:663:61", + "value": { + "kind": "number", + "nativeSrc": "1806:1:61", + "nodeType": "YulLiteral", + "src": "1806:1:61", + "type": "", + "value": "1" + } + }, + { + "body": { + "nativeSrc": "2481:234:61", + "nodeType": "YulBlock", + "src": "2481:234:61", + "statements": [ + { + "nativeSrc": "2495:14:61", + "nodeType": "YulVariableDeclaration", + "src": "2495:14:61", + "value": { + "kind": "number", + "nativeSrc": "2508:1:61", + "nodeType": "YulLiteral", + "src": "2508:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "2499:5:61", + "nodeType": "YulTypedName", + "src": "2499:5:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "2544:67:61", + "nodeType": "YulBlock", + "src": "2544:67:61", + "statements": [ + { + "nativeSrc": "2562:35:61", + "nodeType": "YulAssignment", + "src": "2562:35:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "2581:3:61", + "nodeType": "YulIdentifier", + "src": "2581:3:61" + }, + { + "name": "srcOffset", + "nativeSrc": "2586:9:61", + "nodeType": "YulIdentifier", + "src": "2586:9:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2577:3:61", + "nodeType": "YulIdentifier", + "src": "2577:3:61" + }, + "nativeSrc": "2577:19:61", + "nodeType": "YulFunctionCall", + "src": "2577:19:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "2571:5:61", + "nodeType": "YulIdentifier", + "src": "2571:5:61" + }, + "nativeSrc": "2571:26:61", + "nodeType": "YulFunctionCall", + "src": "2571:26:61" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "2562:5:61", + "nodeType": "YulIdentifier", + "src": "2562:5:61" + } + ] + } + ] + }, + "condition": { + "name": "newLen", + "nativeSrc": "2525:6:61", + "nodeType": "YulIdentifier", + "src": "2525:6:61" + }, + "nativeSrc": "2522:89:61", + "nodeType": "YulIf", + "src": "2522:89:61" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "2631:4:61", + "nodeType": "YulIdentifier", + "src": "2631:4:61" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "2690:5:61", + "nodeType": "YulIdentifier", + "src": "2690:5:61" + }, + { + "name": "newLen", + "nativeSrc": "2697:6:61", + "nodeType": "YulIdentifier", + "src": "2697:6:61" + } + ], + "functionName": { + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nativeSrc": "2637:52:61", + "nodeType": "YulIdentifier", + "src": "2637:52:61" + }, + "nativeSrc": "2637:67:61", + "nodeType": "YulFunctionCall", + "src": "2637:67:61" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "2624:6:61", + "nodeType": "YulIdentifier", + "src": "2624:6:61" + }, + "nativeSrc": "2624:81:61", + "nodeType": "YulFunctionCall", + "src": "2624:81:61" + }, + "nativeSrc": "2624:81:61", + "nodeType": "YulExpressionStatement", + "src": "2624:81:61" + } + ] + }, + "nativeSrc": "2473:242:61", + "nodeType": "YulCase", + "src": "2473:242:61", + "value": "default" + } + ], + "expression": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "1781:6:61", + "nodeType": "YulIdentifier", + "src": "1781:6:61" + }, + { + "kind": "number", + "nativeSrc": "1789:2:61", + "nodeType": "YulLiteral", + "src": "1789:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "1778:2:61", + "nodeType": "YulIdentifier", + "src": "1778:2:61" + }, + "nativeSrc": "1778:14:61", + "nodeType": "YulFunctionCall", + "src": "1778:14:61" + }, + "nativeSrc": "1771:944:61", + "nodeType": "YulSwitch", + "src": "1771:944:61" + } + ] + }, + "name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage", + "nativeSrc": "1376:1345:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "slot", + "nativeSrc": "1457:4:61", + "nodeType": "YulTypedName", + "src": "1457:4:61", + "type": "" + }, + { + "name": "src", + "nativeSrc": "1463:3:61", + "nodeType": "YulTypedName", + "src": "1463:3:61", + "type": "" + } + ], + "src": "1376:1345:61" + }, + { + "body": { + "nativeSrc": "2758:95:61", + "nodeType": "YulBlock", + "src": "2758:95:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2775:1:61", + "nodeType": "YulLiteral", + "src": "2775:1:61", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2782:3:61", + "nodeType": "YulLiteral", + "src": "2782:3:61", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "2787:10:61", + "nodeType": "YulLiteral", + "src": "2787:10:61", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "2778:3:61", + "nodeType": "YulIdentifier", + "src": "2778:3:61" + }, + "nativeSrc": "2778:20:61", + "nodeType": "YulFunctionCall", + "src": "2778:20:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2768:6:61", + "nodeType": "YulIdentifier", + "src": "2768:6:61" + }, + "nativeSrc": "2768:31:61", + "nodeType": "YulFunctionCall", + "src": "2768:31:61" + }, + "nativeSrc": "2768:31:61", + "nodeType": "YulExpressionStatement", + "src": "2768:31:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2815:1:61", + "nodeType": "YulLiteral", + "src": "2815:1:61", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "2818:4:61", + "nodeType": "YulLiteral", + "src": "2818:4:61", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2808:6:61", + "nodeType": "YulIdentifier", + "src": "2808:6:61" + }, + "nativeSrc": "2808:15:61", + "nodeType": "YulFunctionCall", + "src": "2808:15:61" + }, + "nativeSrc": "2808:15:61", + "nodeType": "YulExpressionStatement", + "src": "2808:15:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2839:1:61", + "nodeType": "YulLiteral", + "src": "2839:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2842:4:61", + "nodeType": "YulLiteral", + "src": "2842:4:61", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2832:6:61", + "nodeType": "YulIdentifier", + "src": "2832:6:61" + }, + "nativeSrc": "2832:15:61", + "nodeType": "YulFunctionCall", + "src": "2832:15:61" + }, + "nativeSrc": "2832:15:61", + "nodeType": "YulExpressionStatement", + "src": "2832:15:61" + } + ] + }, + "name": "panic_error_0x11", + "nativeSrc": "2726:127:61", + "nodeType": "YulFunctionDefinition", + "src": "2726:127:61" + }, + { + "body": { + "nativeSrc": "2922:352:61", + "nodeType": "YulBlock", + "src": "2922:352:61", + "statements": [ + { + "nativeSrc": "2932:16:61", + "nodeType": "YulVariableDeclaration", + "src": "2932:16:61", + "value": { + "kind": "number", + "nativeSrc": "2947:1:61", + "nodeType": "YulLiteral", + "src": "2947:1:61", + "type": "", + "value": "1" + }, + "variables": [ + { + "name": "power_1", + "nativeSrc": "2936:7:61", + "nodeType": "YulTypedName", + "src": "2936:7:61", + "type": "" + } + ] + }, + { + "nativeSrc": "2957:10:61", + "nodeType": "YulAssignment", + "src": "2957:10:61", + "value": { + "kind": "number", + "nativeSrc": "2966:1:61", + "nodeType": "YulLiteral", + "src": "2966:1:61", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "power", + "nativeSrc": "2957:5:61", + "nodeType": "YulIdentifier", + "src": "2957:5:61" + } + ] + }, + { + "nativeSrc": "2976:13:61", + "nodeType": "YulAssignment", + "src": "2976:13:61", + "value": { + "name": "_base", + "nativeSrc": "2984:5:61", + "nodeType": "YulIdentifier", + "src": "2984:5:61" + }, + "variableNames": [ + { + "name": "base", + "nativeSrc": "2976:4:61", + "nodeType": "YulIdentifier", + "src": "2976:4:61" + } + ] + }, + { + "body": { + "nativeSrc": "3040:228:61", + "nodeType": "YulBlock", + "src": "3040:228:61", + "statements": [ + { + "body": { + "nativeSrc": "3085:22:61", + "nodeType": "YulBlock", + "src": "3085:22:61", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nativeSrc": "3087:16:61", + "nodeType": "YulIdentifier", + "src": "3087:16:61" + }, + "nativeSrc": "3087:18:61", + "nodeType": "YulFunctionCall", + "src": "3087:18:61" + }, + "nativeSrc": "3087:18:61", + "nodeType": "YulExpressionStatement", + "src": "3087:18:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "base", + "nativeSrc": "3060:4:61", + "nodeType": "YulIdentifier", + "src": "3060:4:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3074:1:61", + "nodeType": "YulLiteral", + "src": "3074:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "3070:3:61", + "nodeType": "YulIdentifier", + "src": "3070:3:61" + }, + "nativeSrc": "3070:6:61", + "nodeType": "YulFunctionCall", + "src": "3070:6:61" + }, + { + "name": "base", + "nativeSrc": "3078:4:61", + "nodeType": "YulIdentifier", + "src": "3078:4:61" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "3066:3:61", + "nodeType": "YulIdentifier", + "src": "3066:3:61" + }, + "nativeSrc": "3066:17:61", + "nodeType": "YulFunctionCall", + "src": "3066:17:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "3057:2:61", + "nodeType": "YulIdentifier", + "src": "3057:2:61" + }, + "nativeSrc": "3057:27:61", + "nodeType": "YulFunctionCall", + "src": "3057:27:61" + }, + "nativeSrc": "3054:53:61", + "nodeType": "YulIf", + "src": "3054:53:61" + }, + { + "body": { + "nativeSrc": "3146:29:61", + "nodeType": "YulBlock", + "src": "3146:29:61", + "statements": [ + { + "nativeSrc": "3148:25:61", + "nodeType": "YulAssignment", + "src": "3148:25:61", + "value": { + "arguments": [ + { + "name": "power", + "nativeSrc": "3161:5:61", + "nodeType": "YulIdentifier", + "src": "3161:5:61" + }, + { + "name": "base", + "nativeSrc": "3168:4:61", + "nodeType": "YulIdentifier", + "src": "3168:4:61" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "3157:3:61", + "nodeType": "YulIdentifier", + "src": "3157:3:61" + }, + "nativeSrc": "3157:16:61", + "nodeType": "YulFunctionCall", + "src": "3157:16:61" + }, + "variableNames": [ + { + "name": "power", + "nativeSrc": "3148:5:61", + "nodeType": "YulIdentifier", + "src": "3148:5:61" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "exponent", + "nativeSrc": "3127:8:61", + "nodeType": "YulIdentifier", + "src": "3127:8:61" + }, + { + "name": "power_1", + "nativeSrc": "3137:7:61", + "nodeType": "YulIdentifier", + "src": "3137:7:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "3123:3:61", + "nodeType": "YulIdentifier", + "src": "3123:3:61" + }, + "nativeSrc": "3123:22:61", + "nodeType": "YulFunctionCall", + "src": "3123:22:61" + }, + "nativeSrc": "3120:55:61", + "nodeType": "YulIf", + "src": "3120:55:61" + }, + { + "nativeSrc": "3188:23:61", + "nodeType": "YulAssignment", + "src": "3188:23:61", + "value": { + "arguments": [ + { + "name": "base", + "nativeSrc": "3200:4:61", + "nodeType": "YulIdentifier", + "src": "3200:4:61" + }, + { + "name": "base", + "nativeSrc": "3206:4:61", + "nodeType": "YulIdentifier", + "src": "3206:4:61" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "3196:3:61", + "nodeType": "YulIdentifier", + "src": "3196:3:61" + }, + "nativeSrc": "3196:15:61", + "nodeType": "YulFunctionCall", + "src": "3196:15:61" + }, + "variableNames": [ + { + "name": "base", + "nativeSrc": "3188:4:61", + "nodeType": "YulIdentifier", + "src": "3188:4:61" + } + ] + }, + { + "nativeSrc": "3224:34:61", + "nodeType": "YulAssignment", + "src": "3224:34:61", + "value": { + "arguments": [ + { + "name": "power_1", + "nativeSrc": "3240:7:61", + "nodeType": "YulIdentifier", + "src": "3240:7:61" + }, + { + "name": "exponent", + "nativeSrc": "3249:8:61", + "nodeType": "YulIdentifier", + "src": "3249:8:61" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "3236:3:61", + "nodeType": "YulIdentifier", + "src": "3236:3:61" + }, + "nativeSrc": "3236:22:61", + "nodeType": "YulFunctionCall", + "src": "3236:22:61" + }, + "variableNames": [ + { + "name": "exponent", + "nativeSrc": "3224:8:61", + "nodeType": "YulIdentifier", + "src": "3224:8:61" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "exponent", + "nativeSrc": "3009:8:61", + "nodeType": "YulIdentifier", + "src": "3009:8:61" + }, + { + "name": "power_1", + "nativeSrc": "3019:7:61", + "nodeType": "YulIdentifier", + "src": "3019:7:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "3006:2:61", + "nodeType": "YulIdentifier", + "src": "3006:2:61" + }, + "nativeSrc": "3006:21:61", + "nodeType": "YulFunctionCall", + "src": "3006:21:61" + }, + "nativeSrc": "2998:270:61", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "3028:3:61", + "nodeType": "YulBlock", + "src": "3028:3:61", + "statements": [] + }, + "pre": { + "nativeSrc": "3002:3:61", + "nodeType": "YulBlock", + "src": "3002:3:61", + "statements": [] + }, + "src": "2998:270:61" + } + ] + }, + "name": "checked_exp_helper", + "nativeSrc": "2858:416:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "_base", + "nativeSrc": "2886:5:61", + "nodeType": "YulTypedName", + "src": "2886:5:61", + "type": "" + }, + { + "name": "exponent", + "nativeSrc": "2893:8:61", + "nodeType": "YulTypedName", + "src": "2893:8:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "power", + "nativeSrc": "2906:5:61", + "nodeType": "YulTypedName", + "src": "2906:5:61", + "type": "" + }, + { + "name": "base", + "nativeSrc": "2913:4:61", + "nodeType": "YulTypedName", + "src": "2913:4:61", + "type": "" + } + ], + "src": "2858:416:61" + }, + { + "body": { + "nativeSrc": "3338:747:61", + "nodeType": "YulBlock", + "src": "3338:747:61", + "statements": [ + { + "body": { + "nativeSrc": "3376:52:61", + "nodeType": "YulBlock", + "src": "3376:52:61", + "statements": [ + { + "nativeSrc": "3390:10:61", + "nodeType": "YulAssignment", + "src": "3390:10:61", + "value": { + "kind": "number", + "nativeSrc": "3399:1:61", + "nodeType": "YulLiteral", + "src": "3399:1:61", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "power", + "nativeSrc": "3390:5:61", + "nodeType": "YulIdentifier", + "src": "3390:5:61" + } + ] + }, + { + "nativeSrc": "3413:5:61", + "nodeType": "YulLeave", + "src": "3413:5:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "exponent", + "nativeSrc": "3358:8:61", + "nodeType": "YulIdentifier", + "src": "3358:8:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "3351:6:61", + "nodeType": "YulIdentifier", + "src": "3351:6:61" + }, + "nativeSrc": "3351:16:61", + "nodeType": "YulFunctionCall", + "src": "3351:16:61" + }, + "nativeSrc": "3348:80:61", + "nodeType": "YulIf", + "src": "3348:80:61" + }, + { + "body": { + "nativeSrc": "3461:52:61", + "nodeType": "YulBlock", + "src": "3461:52:61", + "statements": [ + { + "nativeSrc": "3475:10:61", + "nodeType": "YulAssignment", + "src": "3475:10:61", + "value": { + "kind": "number", + "nativeSrc": "3484:1:61", + "nodeType": "YulLiteral", + "src": "3484:1:61", + "type": "", + "value": "0" + }, + "variableNames": [ + { + "name": "power", + "nativeSrc": "3475:5:61", + "nodeType": "YulIdentifier", + "src": "3475:5:61" + } + ] + }, + { + "nativeSrc": "3498:5:61", + "nodeType": "YulLeave", + "src": "3498:5:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "base", + "nativeSrc": "3447:4:61", + "nodeType": "YulIdentifier", + "src": "3447:4:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "3440:6:61", + "nodeType": "YulIdentifier", + "src": "3440:6:61" + }, + "nativeSrc": "3440:12:61", + "nodeType": "YulFunctionCall", + "src": "3440:12:61" + }, + "nativeSrc": "3437:76:61", + "nodeType": "YulIf", + "src": "3437:76:61" + }, + { + "cases": [ + { + "body": { + "nativeSrc": "3549:52:61", + "nodeType": "YulBlock", + "src": "3549:52:61", + "statements": [ + { + "nativeSrc": "3563:10:61", + "nodeType": "YulAssignment", + "src": "3563:10:61", + "value": { + "kind": "number", + "nativeSrc": "3572:1:61", + "nodeType": "YulLiteral", + "src": "3572:1:61", + "type": "", + "value": "1" + }, + "variableNames": [ + { + "name": "power", + "nativeSrc": "3563:5:61", + "nodeType": "YulIdentifier", + "src": "3563:5:61" + } + ] + }, + { + "nativeSrc": "3586:5:61", + "nodeType": "YulLeave", + "src": "3586:5:61" + } + ] + }, + "nativeSrc": "3542:59:61", + "nodeType": "YulCase", + "src": "3542:59:61", + "value": { + "kind": "number", + "nativeSrc": "3547:1:61", + "nodeType": "YulLiteral", + "src": "3547:1:61", + "type": "", + "value": "1" + } + }, + { + "body": { + "nativeSrc": "3617:123:61", + "nodeType": "YulBlock", + "src": "3617:123:61", + "statements": [ + { + "body": { + "nativeSrc": "3652:22:61", + "nodeType": "YulBlock", + "src": "3652:22:61", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nativeSrc": "3654:16:61", + "nodeType": "YulIdentifier", + "src": "3654:16:61" + }, + "nativeSrc": "3654:18:61", + "nodeType": "YulFunctionCall", + "src": "3654:18:61" + }, + "nativeSrc": "3654:18:61", + "nodeType": "YulExpressionStatement", + "src": "3654:18:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "exponent", + "nativeSrc": "3637:8:61", + "nodeType": "YulIdentifier", + "src": "3637:8:61" + }, + { + "kind": "number", + "nativeSrc": "3647:3:61", + "nodeType": "YulLiteral", + "src": "3647:3:61", + "type": "", + "value": "255" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "3634:2:61", + "nodeType": "YulIdentifier", + "src": "3634:2:61" + }, + "nativeSrc": "3634:17:61", + "nodeType": "YulFunctionCall", + "src": "3634:17:61" + }, + "nativeSrc": "3631:43:61", + "nodeType": "YulIf", + "src": "3631:43:61" + }, + { + "nativeSrc": "3687:25:61", + "nodeType": "YulAssignment", + "src": "3687:25:61", + "value": { + "arguments": [ + { + "name": "exponent", + "nativeSrc": "3700:8:61", + "nodeType": "YulIdentifier", + "src": "3700:8:61" + }, + { + "kind": "number", + "nativeSrc": "3710:1:61", + "nodeType": "YulLiteral", + "src": "3710:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "3696:3:61", + "nodeType": "YulIdentifier", + "src": "3696:3:61" + }, + "nativeSrc": "3696:16:61", + "nodeType": "YulFunctionCall", + "src": "3696:16:61" + }, + "variableNames": [ + { + "name": "power", + "nativeSrc": "3687:5:61", + "nodeType": "YulIdentifier", + "src": "3687:5:61" + } + ] + }, + { + "nativeSrc": "3725:5:61", + "nodeType": "YulLeave", + "src": "3725:5:61" + } + ] + }, + "nativeSrc": "3610:130:61", + "nodeType": "YulCase", + "src": "3610:130:61", + "value": { + "kind": "number", + "nativeSrc": "3615:1:61", + "nodeType": "YulLiteral", + "src": "3615:1:61", + "type": "", + "value": "2" + } + } + ], + "expression": { + "name": "base", + "nativeSrc": "3529:4:61", + "nodeType": "YulIdentifier", + "src": "3529:4:61" + }, + "nativeSrc": "3522:218:61", + "nodeType": "YulSwitch", + "src": "3522:218:61" + }, + { + "body": { + "nativeSrc": "3838:70:61", + "nodeType": "YulBlock", + "src": "3838:70:61", + "statements": [ + { + "nativeSrc": "3852:28:61", + "nodeType": "YulAssignment", + "src": "3852:28:61", + "value": { + "arguments": [ + { + "name": "base", + "nativeSrc": "3865:4:61", + "nodeType": "YulIdentifier", + "src": "3865:4:61" + }, + { + "name": "exponent", + "nativeSrc": "3871:8:61", + "nodeType": "YulIdentifier", + "src": "3871:8:61" + } + ], + "functionName": { + "name": "exp", + "nativeSrc": "3861:3:61", + "nodeType": "YulIdentifier", + "src": "3861:3:61" + }, + "nativeSrc": "3861:19:61", + "nodeType": "YulFunctionCall", + "src": "3861:19:61" + }, + "variableNames": [ + { + "name": "power", + "nativeSrc": "3852:5:61", + "nodeType": "YulIdentifier", + "src": "3852:5:61" + } + ] + }, + { + "nativeSrc": "3893:5:61", + "nodeType": "YulLeave", + "src": "3893:5:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "base", + "nativeSrc": "3762:4:61", + "nodeType": "YulIdentifier", + "src": "3762:4:61" + }, + { + "kind": "number", + "nativeSrc": "3768:2:61", + "nodeType": "YulLiteral", + "src": "3768:2:61", + "type": "", + "value": "11" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "3759:2:61", + "nodeType": "YulIdentifier", + "src": "3759:2:61" + }, + "nativeSrc": "3759:12:61", + "nodeType": "YulFunctionCall", + "src": "3759:12:61" + }, + { + "arguments": [ + { + "name": "exponent", + "nativeSrc": "3776:8:61", + "nodeType": "YulIdentifier", + "src": "3776:8:61" + }, + { + "kind": "number", + "nativeSrc": "3786:2:61", + "nodeType": "YulLiteral", + "src": "3786:2:61", + "type": "", + "value": "78" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "3773:2:61", + "nodeType": "YulIdentifier", + "src": "3773:2:61" + }, + "nativeSrc": "3773:16:61", + "nodeType": "YulFunctionCall", + "src": "3773:16:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "3755:3:61", + "nodeType": "YulIdentifier", + "src": "3755:3:61" + }, + "nativeSrc": "3755:35:61", + "nodeType": "YulFunctionCall", + "src": "3755:35:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "base", + "nativeSrc": "3799:4:61", + "nodeType": "YulIdentifier", + "src": "3799:4:61" + }, + { + "kind": "number", + "nativeSrc": "3805:3:61", + "nodeType": "YulLiteral", + "src": "3805:3:61", + "type": "", + "value": "307" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "3796:2:61", + "nodeType": "YulIdentifier", + "src": "3796:2:61" + }, + "nativeSrc": "3796:13:61", + "nodeType": "YulFunctionCall", + "src": "3796:13:61" + }, + { + "arguments": [ + { + "name": "exponent", + "nativeSrc": "3814:8:61", + "nodeType": "YulIdentifier", + "src": "3814:8:61" + }, + { + "kind": "number", + "nativeSrc": "3824:2:61", + "nodeType": "YulLiteral", + "src": "3824:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "3811:2:61", + "nodeType": "YulIdentifier", + "src": "3811:2:61" + }, + "nativeSrc": "3811:16:61", + "nodeType": "YulFunctionCall", + "src": "3811:16:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "3792:3:61", + "nodeType": "YulIdentifier", + "src": "3792:3:61" + }, + "nativeSrc": "3792:36:61", + "nodeType": "YulFunctionCall", + "src": "3792:36:61" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "3752:2:61", + "nodeType": "YulIdentifier", + "src": "3752:2:61" + }, + "nativeSrc": "3752:77:61", + "nodeType": "YulFunctionCall", + "src": "3752:77:61" + }, + "nativeSrc": "3749:159:61", + "nodeType": "YulIf", + "src": "3749:159:61" + }, + { + "nativeSrc": "3917:57:61", + "nodeType": "YulVariableDeclaration", + "src": "3917:57:61", + "value": { + "arguments": [ + { + "name": "base", + "nativeSrc": "3959:4:61", + "nodeType": "YulIdentifier", + "src": "3959:4:61" + }, + { + "name": "exponent", + "nativeSrc": "3965:8:61", + "nodeType": "YulIdentifier", + "src": "3965:8:61" + } + ], + "functionName": { + "name": "checked_exp_helper", + "nativeSrc": "3940:18:61", + "nodeType": "YulIdentifier", + "src": "3940:18:61" + }, + "nativeSrc": "3940:34:61", + "nodeType": "YulFunctionCall", + "src": "3940:34:61" + }, + "variables": [ + { + "name": "power_1", + "nativeSrc": "3921:7:61", + "nodeType": "YulTypedName", + "src": "3921:7:61", + "type": "" + }, + { + "name": "base_1", + "nativeSrc": "3930:6:61", + "nodeType": "YulTypedName", + "src": "3930:6:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "4019:22:61", + "nodeType": "YulBlock", + "src": "4019:22:61", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nativeSrc": "4021:16:61", + "nodeType": "YulIdentifier", + "src": "4021:16:61" + }, + "nativeSrc": "4021:18:61", + "nodeType": "YulFunctionCall", + "src": "4021:18:61" + }, + "nativeSrc": "4021:18:61", + "nodeType": "YulExpressionStatement", + "src": "4021:18:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "power_1", + "nativeSrc": "3989:7:61", + "nodeType": "YulIdentifier", + "src": "3989:7:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4006:1:61", + "nodeType": "YulLiteral", + "src": "4006:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "4002:3:61", + "nodeType": "YulIdentifier", + "src": "4002:3:61" + }, + "nativeSrc": "4002:6:61", + "nodeType": "YulFunctionCall", + "src": "4002:6:61" + }, + { + "name": "base_1", + "nativeSrc": "4010:6:61", + "nodeType": "YulIdentifier", + "src": "4010:6:61" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "3998:3:61", + "nodeType": "YulIdentifier", + "src": "3998:3:61" + }, + "nativeSrc": "3998:19:61", + "nodeType": "YulFunctionCall", + "src": "3998:19:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "3986:2:61", + "nodeType": "YulIdentifier", + "src": "3986:2:61" + }, + "nativeSrc": "3986:32:61", + "nodeType": "YulFunctionCall", + "src": "3986:32:61" + }, + "nativeSrc": "3983:58:61", + "nodeType": "YulIf", + "src": "3983:58:61" + }, + { + "nativeSrc": "4050:29:61", + "nodeType": "YulAssignment", + "src": "4050:29:61", + "value": { + "arguments": [ + { + "name": "power_1", + "nativeSrc": "4063:7:61", + "nodeType": "YulIdentifier", + "src": "4063:7:61" + }, + { + "name": "base_1", + "nativeSrc": "4072:6:61", + "nodeType": "YulIdentifier", + "src": "4072:6:61" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "4059:3:61", + "nodeType": "YulIdentifier", + "src": "4059:3:61" + }, + "nativeSrc": "4059:20:61", + "nodeType": "YulFunctionCall", + "src": "4059:20:61" + }, + "variableNames": [ + { + "name": "power", + "nativeSrc": "4050:5:61", + "nodeType": "YulIdentifier", + "src": "4050:5:61" + } + ] + } + ] + }, + "name": "checked_exp_unsigned", + "nativeSrc": "3279:806:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "base", + "nativeSrc": "3309:4:61", + "nodeType": "YulTypedName", + "src": "3309:4:61", + "type": "" + }, + { + "name": "exponent", + "nativeSrc": "3315:8:61", + "nodeType": "YulTypedName", + "src": "3315:8:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "power", + "nativeSrc": "3328:5:61", + "nodeType": "YulTypedName", + "src": "3328:5:61", + "type": "" + } + ], + "src": "3279:806:61" + }, + { + "body": { + "nativeSrc": "4158:72:61", + "nodeType": "YulBlock", + "src": "4158:72:61", + "statements": [ + { + "nativeSrc": "4168:56:61", + "nodeType": "YulAssignment", + "src": "4168:56:61", + "value": { + "arguments": [ + { + "name": "base", + "nativeSrc": "4198:4:61", + "nodeType": "YulIdentifier", + "src": "4198:4:61" + }, + { + "arguments": [ + { + "name": "exponent", + "nativeSrc": "4208:8:61", + "nodeType": "YulIdentifier", + "src": "4208:8:61" + }, + { + "kind": "number", + "nativeSrc": "4218:4:61", + "nodeType": "YulLiteral", + "src": "4218:4:61", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "4204:3:61", + "nodeType": "YulIdentifier", + "src": "4204:3:61" + }, + "nativeSrc": "4204:19:61", + "nodeType": "YulFunctionCall", + "src": "4204:19:61" + } + ], + "functionName": { + "name": "checked_exp_unsigned", + "nativeSrc": "4177:20:61", + "nodeType": "YulIdentifier", + "src": "4177:20:61" + }, + "nativeSrc": "4177:47:61", + "nodeType": "YulFunctionCall", + "src": "4177:47:61" + }, + "variableNames": [ + { + "name": "power", + "nativeSrc": "4168:5:61", + "nodeType": "YulIdentifier", + "src": "4168:5:61" + } + ] + } + ] + }, + "name": "checked_exp_t_uint256_t_uint8", + "nativeSrc": "4090:140:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "base", + "nativeSrc": "4129:4:61", + "nodeType": "YulTypedName", + "src": "4129:4:61", + "type": "" + }, + { + "name": "exponent", + "nativeSrc": "4135:8:61", + "nodeType": "YulTypedName", + "src": "4135:8:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "power", + "nativeSrc": "4148:5:61", + "nodeType": "YulTypedName", + "src": "4148:5:61", + "type": "" + } + ], + "src": "4090:140:61" + }, + { + "body": { + "nativeSrc": "4287:116:61", + "nodeType": "YulBlock", + "src": "4287:116:61", + "statements": [ + { + "nativeSrc": "4297:20:61", + "nodeType": "YulAssignment", + "src": "4297:20:61", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "4312:1:61", + "nodeType": "YulIdentifier", + "src": "4312:1:61" + }, + { + "name": "y", + "nativeSrc": "4315:1:61", + "nodeType": "YulIdentifier", + "src": "4315:1:61" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "4308:3:61", + "nodeType": "YulIdentifier", + "src": "4308:3:61" + }, + "nativeSrc": "4308:9:61", + "nodeType": "YulFunctionCall", + "src": "4308:9:61" + }, + "variableNames": [ + { + "name": "product", + "nativeSrc": "4297:7:61", + "nodeType": "YulIdentifier", + "src": "4297:7:61" + } + ] + }, + { + "body": { + "nativeSrc": "4375:22:61", + "nodeType": "YulBlock", + "src": "4375:22:61", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nativeSrc": "4377:16:61", + "nodeType": "YulIdentifier", + "src": "4377:16:61" + }, + "nativeSrc": "4377:18:61", + "nodeType": "YulFunctionCall", + "src": "4377:18:61" + }, + "nativeSrc": "4377:18:61", + "nodeType": "YulExpressionStatement", + "src": "4377:18:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "x", + "nativeSrc": "4346:1:61", + "nodeType": "YulIdentifier", + "src": "4346:1:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "4339:6:61", + "nodeType": "YulIdentifier", + "src": "4339:6:61" + }, + "nativeSrc": "4339:9:61", + "nodeType": "YulFunctionCall", + "src": "4339:9:61" + }, + { + "arguments": [ + { + "name": "y", + "nativeSrc": "4353:1:61", + "nodeType": "YulIdentifier", + "src": "4353:1:61" + }, + { + "arguments": [ + { + "name": "product", + "nativeSrc": "4360:7:61", + "nodeType": "YulIdentifier", + "src": "4360:7:61" + }, + { + "name": "x", + "nativeSrc": "4369:1:61", + "nodeType": "YulIdentifier", + "src": "4369:1:61" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "4356:3:61", + "nodeType": "YulIdentifier", + "src": "4356:3:61" + }, + "nativeSrc": "4356:15:61", + "nodeType": "YulFunctionCall", + "src": "4356:15:61" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "4350:2:61", + "nodeType": "YulIdentifier", + "src": "4350:2:61" + }, + "nativeSrc": "4350:22:61", + "nodeType": "YulFunctionCall", + "src": "4350:22:61" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "4336:2:61", + "nodeType": "YulIdentifier", + "src": "4336:2:61" + }, + "nativeSrc": "4336:37:61", + "nodeType": "YulFunctionCall", + "src": "4336:37:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "4329:6:61", + "nodeType": "YulIdentifier", + "src": "4329:6:61" + }, + "nativeSrc": "4329:45:61", + "nodeType": "YulFunctionCall", + "src": "4329:45:61" + }, + "nativeSrc": "4326:71:61", + "nodeType": "YulIf", + "src": "4326:71:61" + } + ] + }, + "name": "checked_mul_t_uint256", + "nativeSrc": "4235:168:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nativeSrc": "4266:1:61", + "nodeType": "YulTypedName", + "src": "4266:1:61", + "type": "" + }, + { + "name": "y", + "nativeSrc": "4269:1:61", + "nodeType": "YulTypedName", + "src": "4269:1:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "product", + "nativeSrc": "4275:7:61", + "nodeType": "YulTypedName", + "src": "4275:7:61", + "type": "" + } + ], + "src": "4235:168:61" + }, + { + "body": { + "nativeSrc": "4509:102:61", + "nodeType": "YulBlock", + "src": "4509:102:61", + "statements": [ + { + "nativeSrc": "4519:26:61", + "nodeType": "YulAssignment", + "src": "4519:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4531:9:61", + "nodeType": "YulIdentifier", + "src": "4531:9:61" + }, + { + "kind": "number", + "nativeSrc": "4542:2:61", + "nodeType": "YulLiteral", + "src": "4542:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4527:3:61", + "nodeType": "YulIdentifier", + "src": "4527:3:61" + }, + "nativeSrc": "4527:18:61", + "nodeType": "YulFunctionCall", + "src": "4527:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "4519:4:61", + "nodeType": "YulIdentifier", + "src": "4519:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4561:9:61", + "nodeType": "YulIdentifier", + "src": "4561:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "4576:6:61", + "nodeType": "YulIdentifier", + "src": "4576:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4592:3:61", + "nodeType": "YulLiteral", + "src": "4592:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "4597:1:61", + "nodeType": "YulLiteral", + "src": "4597:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "4588:3:61", + "nodeType": "YulIdentifier", + "src": "4588:3:61" + }, + "nativeSrc": "4588:11:61", + "nodeType": "YulFunctionCall", + "src": "4588:11:61" + }, + { + "kind": "number", + "nativeSrc": "4601:1:61", + "nodeType": "YulLiteral", + "src": "4601:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "4584:3:61", + "nodeType": "YulIdentifier", + "src": "4584:3:61" + }, + "nativeSrc": "4584:19:61", + "nodeType": "YulFunctionCall", + "src": "4584:19:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "4572:3:61", + "nodeType": "YulIdentifier", + "src": "4572:3:61" + }, + "nativeSrc": "4572:32:61", + "nodeType": "YulFunctionCall", + "src": "4572:32:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4554:6:61", + "nodeType": "YulIdentifier", + "src": "4554:6:61" + }, + "nativeSrc": "4554:51:61", + "nodeType": "YulFunctionCall", + "src": "4554:51:61" + }, + "nativeSrc": "4554:51:61", + "nodeType": "YulExpressionStatement", + "src": "4554:51:61" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nativeSrc": "4408:203:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "4478:9:61", + "nodeType": "YulTypedName", + "src": "4478:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "4489:6:61", + "nodeType": "YulTypedName", + "src": "4489:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "4500:4:61", + "nodeType": "YulTypedName", + "src": "4500:4:61", + "type": "" + } + ], + "src": "4408:203:61" + }, + { + "body": { + "nativeSrc": "4664:77:61", + "nodeType": "YulBlock", + "src": "4664:77:61", + "statements": [ + { + "nativeSrc": "4674:16:61", + "nodeType": "YulAssignment", + "src": "4674:16:61", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "4685:1:61", + "nodeType": "YulIdentifier", + "src": "4685:1:61" + }, + { + "name": "y", + "nativeSrc": "4688:1:61", + "nodeType": "YulIdentifier", + "src": "4688:1:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4681:3:61", + "nodeType": "YulIdentifier", + "src": "4681:3:61" + }, + "nativeSrc": "4681:9:61", + "nodeType": "YulFunctionCall", + "src": "4681:9:61" + }, + "variableNames": [ + { + "name": "sum", + "nativeSrc": "4674:3:61", + "nodeType": "YulIdentifier", + "src": "4674:3:61" + } + ] + }, + { + "body": { + "nativeSrc": "4713:22:61", + "nodeType": "YulBlock", + "src": "4713:22:61", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nativeSrc": "4715:16:61", + "nodeType": "YulIdentifier", + "src": "4715:16:61" + }, + "nativeSrc": "4715:18:61", + "nodeType": "YulFunctionCall", + "src": "4715:18:61" + }, + "nativeSrc": "4715:18:61", + "nodeType": "YulExpressionStatement", + "src": "4715:18:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nativeSrc": "4705:1:61", + "nodeType": "YulIdentifier", + "src": "4705:1:61" + }, + { + "name": "sum", + "nativeSrc": "4708:3:61", + "nodeType": "YulIdentifier", + "src": "4708:3:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "4702:2:61", + "nodeType": "YulIdentifier", + "src": "4702:2:61" + }, + "nativeSrc": "4702:10:61", + "nodeType": "YulFunctionCall", + "src": "4702:10:61" + }, + "nativeSrc": "4699:36:61", + "nodeType": "YulIf", + "src": "4699:36:61" + } + ] + }, + "name": "checked_add_t_uint256", + "nativeSrc": "4616:125:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nativeSrc": "4647:1:61", + "nodeType": "YulTypedName", + "src": "4647:1:61", + "type": "" + }, + { + "name": "y", + "nativeSrc": "4650:1:61", + "nodeType": "YulTypedName", + "src": "4650:1:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nativeSrc": "4656:3:61", + "nodeType": "YulTypedName", + "src": "4656:3:61", + "type": "" + } + ], + "src": "4616:125:61" + }, + { + "body": { + "nativeSrc": "4903:188:61", + "nodeType": "YulBlock", + "src": "4903:188:61", + "statements": [ + { + "nativeSrc": "4913:26:61", + "nodeType": "YulAssignment", + "src": "4913:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4925:9:61", + "nodeType": "YulIdentifier", + "src": "4925:9:61" + }, + { + "kind": "number", + "nativeSrc": "4936:2:61", + "nodeType": "YulLiteral", + "src": "4936:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4921:3:61", + "nodeType": "YulIdentifier", + "src": "4921:3:61" + }, + "nativeSrc": "4921:18:61", + "nodeType": "YulFunctionCall", + "src": "4921:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "4913:4:61", + "nodeType": "YulIdentifier", + "src": "4913:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4955:9:61", + "nodeType": "YulIdentifier", + "src": "4955:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "4970:6:61", + "nodeType": "YulIdentifier", + "src": "4970:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4986:3:61", + "nodeType": "YulLiteral", + "src": "4986:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "4991:1:61", + "nodeType": "YulLiteral", + "src": "4991:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "4982:3:61", + "nodeType": "YulIdentifier", + "src": "4982:3:61" + }, + "nativeSrc": "4982:11:61", + "nodeType": "YulFunctionCall", + "src": "4982:11:61" + }, + { + "kind": "number", + "nativeSrc": "4995:1:61", + "nodeType": "YulLiteral", + "src": "4995:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "4978:3:61", + "nodeType": "YulIdentifier", + "src": "4978:3:61" + }, + "nativeSrc": "4978:19:61", + "nodeType": "YulFunctionCall", + "src": "4978:19:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "4966:3:61", + "nodeType": "YulIdentifier", + "src": "4966:3:61" + }, + "nativeSrc": "4966:32:61", + "nodeType": "YulFunctionCall", + "src": "4966:32:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4948:6:61", + "nodeType": "YulIdentifier", + "src": "4948:6:61" + }, + "nativeSrc": "4948:51:61", + "nodeType": "YulFunctionCall", + "src": "4948:51:61" + }, + "nativeSrc": "4948:51:61", + "nodeType": "YulExpressionStatement", + "src": "4948:51:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5019:9:61", + "nodeType": "YulIdentifier", + "src": "5019:9:61" + }, + { + "kind": "number", + "nativeSrc": "5030:2:61", + "nodeType": "YulLiteral", + "src": "5030:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5015:3:61", + "nodeType": "YulIdentifier", + "src": "5015:3:61" + }, + "nativeSrc": "5015:18:61", + "nodeType": "YulFunctionCall", + "src": "5015:18:61" + }, + { + "name": "value1", + "nativeSrc": "5035:6:61", + "nodeType": "YulIdentifier", + "src": "5035:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5008:6:61", + "nodeType": "YulIdentifier", + "src": "5008:6:61" + }, + "nativeSrc": "5008:34:61", + "nodeType": "YulFunctionCall", + "src": "5008:34:61" + }, + "nativeSrc": "5008:34:61", + "nodeType": "YulExpressionStatement", + "src": "5008:34:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5062:9:61", + "nodeType": "YulIdentifier", + "src": "5062:9:61" + }, + { + "kind": "number", + "nativeSrc": "5073:2:61", + "nodeType": "YulLiteral", + "src": "5073:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5058:3:61", + "nodeType": "YulIdentifier", + "src": "5058:3:61" + }, + "nativeSrc": "5058:18:61", + "nodeType": "YulFunctionCall", + "src": "5058:18:61" + }, + { + "name": "value2", + "nativeSrc": "5078:6:61", + "nodeType": "YulIdentifier", + "src": "5078:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5051:6:61", + "nodeType": "YulIdentifier", + "src": "5051:6:61" + }, + "nativeSrc": "5051:34:61", + "nodeType": "YulFunctionCall", + "src": "5051:34:61" + }, + "nativeSrc": "5051:34:61", + "nodeType": "YulExpressionStatement", + "src": "5051:34:61" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed", + "nativeSrc": "4746:345:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "4856:9:61", + "nodeType": "YulTypedName", + "src": "4856:9:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "4867:6:61", + "nodeType": "YulTypedName", + "src": "4867:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "4875:6:61", + "nodeType": "YulTypedName", + "src": "4875:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "4883:6:61", + "nodeType": "YulTypedName", + "src": "4883:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "4894:4:61", + "nodeType": "YulTypedName", + "src": "4894:4:61", + "type": "" + } + ], + "src": "4746:345:61" + }, + { + "body": { + "nativeSrc": "5197:76:61", + "nodeType": "YulBlock", + "src": "5197:76:61", + "statements": [ + { + "nativeSrc": "5207:26:61", + "nodeType": "YulAssignment", + "src": "5207:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5219:9:61", + "nodeType": "YulIdentifier", + "src": "5219:9:61" + }, + { + "kind": "number", + "nativeSrc": "5230:2:61", + "nodeType": "YulLiteral", + "src": "5230:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5215:3:61", + "nodeType": "YulIdentifier", + "src": "5215:3:61" + }, + "nativeSrc": "5215:18:61", + "nodeType": "YulFunctionCall", + "src": "5215:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "5207:4:61", + "nodeType": "YulIdentifier", + "src": "5207:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5249:9:61", + "nodeType": "YulIdentifier", + "src": "5249:9:61" + }, + { + "name": "value0", + "nativeSrc": "5260:6:61", + "nodeType": "YulIdentifier", + "src": "5260:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "5242:6:61", + "nodeType": "YulIdentifier", + "src": "5242:6:61" + }, + "nativeSrc": "5242:25:61", + "nodeType": "YulFunctionCall", + "src": "5242:25:61" + }, + "nativeSrc": "5242:25:61", + "nodeType": "YulExpressionStatement", + "src": "5242:25:61" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nativeSrc": "5096:177:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "5166:9:61", + "nodeType": "YulTypedName", + "src": "5166:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "5177:6:61", + "nodeType": "YulTypedName", + "src": "5177:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "5188:4:61", + "nodeType": "YulTypedName", + "src": "5188:4:61", + "type": "" + } + ], + "src": "5096:177:61" + } + ] + }, + "contents": "{\n { }\n function panic_error_0x41()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function array_dataslot_string_storage(ptr) -> data\n {\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n }\n function clean_up_bytearray_end_slots_string_storage(array, len, startIndex)\n {\n if gt(len, 31)\n {\n let _1 := 0\n mstore(0, array)\n let data := keccak256(0, 0x20)\n let deleteStart := add(data, shr(5, add(startIndex, 31)))\n if lt(startIndex, 0x20) { deleteStart := data }\n let _2 := add(data, shr(5, add(len, 31)))\n let start := deleteStart\n for { } lt(start, _2) { start := add(start, 1) }\n { sstore(start, _1) }\n }\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used\n {\n used := or(and(data, not(shr(shl(3, len), not(0)))), shl(1, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src)\n {\n let newLen := mload(src)\n if gt(newLen, sub(shl(64, 1), 1)) { panic_error_0x41() }\n clean_up_bytearray_end_slots_string_storage(slot, extract_byte_array_length(sload(slot)), newLen)\n let srcOffset := 0\n let srcOffset_1 := 0x20\n srcOffset := 0x20\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(31))\n let dstPtr := array_dataslot_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, srcOffset_1) }\n {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, srcOffset_1)\n }\n if lt(loopEnd, newLen)\n {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, and(lastValue, not(shr(and(shl(3, newLen), 248), not(0)))))\n }\n sstore(slot, add(shl(1, newLen), 1))\n }\n default {\n let value := 0\n if newLen\n {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n function panic_error_0x11()\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n function checked_exp_helper(_base, exponent) -> power, base\n {\n let power_1 := 1\n power := 1\n base := _base\n for { } gt(exponent, power_1) { }\n {\n if gt(base, div(not(0), base)) { panic_error_0x11() }\n if and(exponent, power_1) { power := mul(power, base) }\n base := mul(base, base)\n exponent := shr(power_1, exponent)\n }\n }\n function checked_exp_unsigned(base, exponent) -> power\n {\n if iszero(exponent)\n {\n power := 1\n leave\n }\n if iszero(base)\n {\n power := 0\n leave\n }\n switch base\n case 1 {\n power := 1\n leave\n }\n case 2 {\n if gt(exponent, 255) { panic_error_0x11() }\n power := shl(exponent, 1)\n leave\n }\n if or(and(lt(base, 11), lt(exponent, 78)), and(lt(base, 307), lt(exponent, 32)))\n {\n power := exp(base, exponent)\n leave\n }\n let power_1, base_1 := checked_exp_helper(base, exponent)\n if gt(power_1, div(not(0), base_1)) { panic_error_0x11() }\n power := mul(power_1, base_1)\n }\n function checked_exp_t_uint256_t_uint8(base, exponent) -> power\n {\n power := checked_exp_unsigned(base, and(exponent, 0xff))\n }\n function checked_mul_t_uint256(x, y) -> product\n {\n product := mul(x, y)\n if iszero(or(iszero(x), eq(y, div(product, x)))) { panic_error_0x11() }\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum) { panic_error_0x11() }\n }\n function abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n}", + "id": 61, + "language": "Yul", + "name": "#utility.yul" + } + ], + "linkReferences": {}, + "object": "60806040523480156200001157600080fd5b5060405180604001604052806007815260200166139d5b1b1554d160ca1b81525060405180604001604052806004815260200163139554d160e21b8152508160039081620000609190620002d0565b5060046200006f8282620002d0565b505050620000a93362000087620000af60201b60201c565b6200009490600a620004b1565b620000a390620f4240620004c9565b620000b4565b620004f9565b601290565b6001600160a01b038216620000e45760405163ec442f0560e01b8152600060048201526024015b60405180910390fd5b620000f260008383620000f6565b5050565b6001600160a01b03831662000125578060026000828254620001199190620004e3565b90915550620001999050565b6001600160a01b038316600090815260208190526040902054818110156200017a5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401620000db565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216620001b757600280548290039055620001d6565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200021c91815260200190565b60405180910390a3505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200025457607f821691505b6020821081036200027557634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620002cb576000816000526020600020601f850160051c81016020861015620002a65750805b601f850160051c820191505b81811015620002c757828155600101620002b2565b5050505b505050565b81516001600160401b03811115620002ec57620002ec62000229565b6200030481620002fd84546200023f565b846200027b565b602080601f8311600181146200033c5760008415620003235750858301515b600019600386901b1c1916600185901b178555620002c7565b600085815260208120601f198616915b828110156200036d578886015182559484019460019091019084016200034c565b50858210156200038c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003f3578160001904821115620003d757620003d76200039c565b80851615620003e557918102915b93841c9390800290620003b7565b509250929050565b6000826200040c57506001620004ab565b816200041b57506000620004ab565b81600181146200043457600281146200043f576200045f565b6001915050620004ab565b60ff8411156200045357620004536200039c565b50506001821b620004ab565b5060208310610133831016604e8410600b841016171562000484575081810a620004ab565b620004908383620003b2565b8060001904821115620004a757620004a76200039c565b0290505b92915050565b6000620004c260ff841683620003fb565b9392505050565b8082028115828204841417620004ab57620004ab6200039c565b80820180821115620004ab57620004ab6200039c565b61071180620005096000396000f3fe608060405234801561001057600080fd5b50600436106100835760003560e01c806306fdde0314610088578063095ea7b3146100a657806318160ddd146100c957806323b872dd146100db578063313ce567146100ee57806370a08231146100fd57806395d89b4114610126578063a9059cbb1461012e578063dd62ed3e14610141575b600080fd5b610090610154565b60405161009d9190610525565b60405180910390f35b6100b96100b4366004610590565b6101e6565b604051901515815260200161009d565b6002545b60405190815260200161009d565b6100b96100e93660046105ba565b610200565b6040516012815260200161009d565b6100cd61010b3660046105f6565b6001600160a01b031660009081526020819052604090205490565b610090610224565b6100b961013c366004610590565b610233565b6100cd61014f366004610618565b610241565b6060600380546101639061064b565b80601f016020809104026020016040519081016040528092919081815260200182805461018f9061064b565b80156101dc5780601f106101b1576101008083540402835291602001916101dc565b820191906000526020600020905b8154815290600101906020018083116101bf57829003601f168201915b5050505050905090565b6000336101f481858561026c565b60019150505b92915050565b60003361020e85828561027e565b6102198585856102da565b506001949350505050565b6060600480546101639061064b565b6000336101f48185856102da565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6102798383836001610339565b505050565b600061028a8484610241565b905060001981146102d457818110156102c557828183604051637dc7a0d960e11b81526004016102bc93929190610685565b60405180910390fd5b6102d484848484036000610339565b50505050565b6001600160a01b038316610304576000604051634b637e8f60e11b81526004016102bc91906106a6565b6001600160a01b03821661032e57600060405163ec442f0560e01b81526004016102bc91906106a6565b61027983838361040e565b6001600160a01b03841661036357600060405163e602df0560e01b81526004016102bc91906106a6565b6001600160a01b03831661038d576000604051634a1406b160e11b81526004016102bc91906106a6565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156102d457826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161040091815260200190565b60405180910390a350505050565b6001600160a01b03831661043957806002600082825461042e91906106ba565b909155506104989050565b6001600160a01b038316600090815260208190526040902054818110156104795783818360405163391434e360e21b81526004016102bc93929190610685565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166104b4576002805482900390556104d3565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161051891815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561055357858101830151858201604001528201610537565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461058b57600080fd5b919050565b600080604083850312156105a357600080fd5b6105ac83610574565b946020939093013593505050565b6000806000606084860312156105cf57600080fd5b6105d884610574565b92506105e660208501610574565b9150604084013590509250925092565b60006020828403121561060857600080fd5b61061182610574565b9392505050565b6000806040838503121561062b57600080fd5b61063483610574565b915061064260208401610574565b90509250929050565b600181811c9082168061065f57607f821691505b60208210810361067f57634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b039390931683526020830191909152604082015260600190565b6001600160a01b0391909116815260200190565b808201808211156101fa57634e487b7160e01b600052601160045260246000fdfea2646970667358221220cc4ccc4ee3f389333f59a16adec6364f02a4499f2847f9bf7ab33883520c640c64736f6c63430008180033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x7 DUP2 MSTORE PUSH1 0x20 ADD PUSH7 0x139D5B1B1554D1 PUSH1 0xCA SHL DUP2 MSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH4 0x139554D1 PUSH1 0xE2 SHL DUP2 MSTORE POP DUP2 PUSH1 0x3 SWAP1 DUP2 PUSH3 0x60 SWAP2 SWAP1 PUSH3 0x2D0 JUMP JUMPDEST POP PUSH1 0x4 PUSH3 0x6F DUP3 DUP3 PUSH3 0x2D0 JUMP JUMPDEST POP POP POP PUSH3 0xA9 CALLER PUSH3 0x87 PUSH3 0xAF PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST PUSH3 0x94 SWAP1 PUSH1 0xA PUSH3 0x4B1 JUMP JUMPDEST PUSH3 0xA3 SWAP1 PUSH3 0xF4240 PUSH3 0x4C9 JUMP JUMPDEST PUSH3 0xB4 JUMP JUMPDEST PUSH3 0x4F9 JUMP JUMPDEST PUSH1 0x12 SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0xE4 JUMPI PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x0 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH3 0xF2 PUSH1 0x0 DUP4 DUP4 PUSH3 0xF6 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH3 0x125 JUMPI DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH3 0x119 SWAP2 SWAP1 PUSH3 0x4E3 JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH3 0x199 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH3 0x17A JUMPI PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0x64 ADD PUSH3 0xDB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH3 0x1B7 JUMPI PUSH1 0x2 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH3 0x1D6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH3 0x21C SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH3 0x254 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH3 0x275 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH3 0x2CB JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP2 ADD PUSH1 0x20 DUP7 LT ISZERO PUSH3 0x2A6 JUMPI POP DUP1 JUMPDEST PUSH1 0x1F DUP6 ADD PUSH1 0x5 SHR DUP3 ADD SWAP2 POP JUMPDEST DUP2 DUP2 LT ISZERO PUSH3 0x2C7 JUMPI DUP3 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x2B2 JUMP JUMPDEST POP POP POP JUMPDEST POP POP POP JUMP JUMPDEST DUP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT ISZERO PUSH3 0x2EC JUMPI PUSH3 0x2EC PUSH3 0x229 JUMP JUMPDEST PUSH3 0x304 DUP2 PUSH3 0x2FD DUP5 SLOAD PUSH3 0x23F JUMP JUMPDEST DUP5 PUSH3 0x27B JUMP JUMPDEST PUSH1 0x20 DUP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH3 0x33C JUMPI PUSH1 0x0 DUP5 ISZERO PUSH3 0x323 JUMPI POP DUP6 DUP4 ADD MLOAD JUMPDEST PUSH1 0x0 NOT PUSH1 0x3 DUP7 SWAP1 SHL SHR NOT AND PUSH1 0x1 DUP6 SWAP1 SHL OR DUP6 SSTORE PUSH3 0x2C7 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 PUSH1 0x1F NOT DUP7 AND SWAP2 JUMPDEST DUP3 DUP2 LT ISZERO PUSH3 0x36D JUMPI DUP9 DUP7 ADD MLOAD DUP3 SSTORE SWAP5 DUP5 ADD SWAP5 PUSH1 0x1 SWAP1 SWAP2 ADD SWAP1 DUP5 ADD PUSH3 0x34C JUMP JUMPDEST POP DUP6 DUP3 LT ISZERO PUSH3 0x38C JUMPI DUP8 DUP6 ADD MLOAD PUSH1 0x0 NOT PUSH1 0x3 DUP9 SWAP1 SHL PUSH1 0xF8 AND SHR NOT AND DUP2 SSTORE JUMPDEST POP POP POP POP POP PUSH1 0x1 SWAP1 DUP2 SHL ADD SWAP1 SSTORE POP JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x1 DUP2 DUP2 JUMPDEST DUP1 DUP6 GT ISZERO PUSH3 0x3F3 JUMPI DUP2 PUSH1 0x0 NOT DIV DUP3 GT ISZERO PUSH3 0x3D7 JUMPI PUSH3 0x3D7 PUSH3 0x39C JUMP JUMPDEST DUP1 DUP6 AND ISZERO PUSH3 0x3E5 JUMPI SWAP2 DUP2 MUL SWAP2 JUMPDEST SWAP4 DUP5 SHR SWAP4 SWAP1 DUP1 MUL SWAP1 PUSH3 0x3B7 JUMP JUMPDEST POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 PUSH3 0x40C JUMPI POP PUSH1 0x1 PUSH3 0x4AB JUMP JUMPDEST DUP2 PUSH3 0x41B JUMPI POP PUSH1 0x0 PUSH3 0x4AB JUMP JUMPDEST DUP2 PUSH1 0x1 DUP2 EQ PUSH3 0x434 JUMPI PUSH1 0x2 DUP2 EQ PUSH3 0x43F JUMPI PUSH3 0x45F JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP PUSH3 0x4AB JUMP JUMPDEST PUSH1 0xFF DUP5 GT ISZERO PUSH3 0x453 JUMPI PUSH3 0x453 PUSH3 0x39C JUMP JUMPDEST POP POP PUSH1 0x1 DUP3 SHL PUSH3 0x4AB JUMP JUMPDEST POP PUSH1 0x20 DUP4 LT PUSH2 0x133 DUP4 LT AND PUSH1 0x4E DUP5 LT PUSH1 0xB DUP5 LT AND OR ISZERO PUSH3 0x484 JUMPI POP DUP2 DUP2 EXP PUSH3 0x4AB JUMP JUMPDEST PUSH3 0x490 DUP4 DUP4 PUSH3 0x3B2 JUMP JUMPDEST DUP1 PUSH1 0x0 NOT DIV DUP3 GT ISZERO PUSH3 0x4A7 JUMPI PUSH3 0x4A7 PUSH3 0x39C JUMP JUMPDEST MUL SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH3 0x4C2 PUSH1 0xFF DUP5 AND DUP4 PUSH3 0x3FB JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 DUP3 MUL DUP2 ISZERO DUP3 DUP3 DIV DUP5 EQ OR PUSH3 0x4AB JUMPI PUSH3 0x4AB PUSH3 0x39C JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH3 0x4AB JUMPI PUSH3 0x4AB PUSH3 0x39C JUMP JUMPDEST PUSH2 0x711 DUP1 PUSH3 0x509 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x83 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x88 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xA6 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xDB JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0xEE JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0xFD JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x126 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x12E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x141 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x90 PUSH2 0x154 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x9D SWAP2 SWAP1 PUSH2 0x525 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB9 PUSH2 0xB4 CALLDATASIZE PUSH1 0x4 PUSH2 0x590 JUMP JUMPDEST PUSH2 0x1E6 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x9D JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x9D JUMP JUMPDEST PUSH2 0xB9 PUSH2 0xE9 CALLDATASIZE PUSH1 0x4 PUSH2 0x5BA JUMP JUMPDEST PUSH2 0x200 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x9D JUMP JUMPDEST PUSH2 0xCD PUSH2 0x10B CALLDATASIZE PUSH1 0x4 PUSH2 0x5F6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x90 PUSH2 0x224 JUMP JUMPDEST PUSH2 0xB9 PUSH2 0x13C CALLDATASIZE PUSH1 0x4 PUSH2 0x590 JUMP JUMPDEST PUSH2 0x233 JUMP JUMPDEST PUSH2 0xCD PUSH2 0x14F CALLDATASIZE PUSH1 0x4 PUSH2 0x618 JUMP JUMPDEST PUSH2 0x241 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x163 SWAP1 PUSH2 0x64B JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x18F SWAP1 PUSH2 0x64B JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1DC JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1B1 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1DC JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1BF JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x1F4 DUP2 DUP6 DUP6 PUSH2 0x26C JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x20E DUP6 DUP3 DUP6 PUSH2 0x27E JUMP JUMPDEST PUSH2 0x219 DUP6 DUP6 DUP6 PUSH2 0x2DA JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x163 SWAP1 PUSH2 0x64B JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x1F4 DUP2 DUP6 DUP6 PUSH2 0x2DA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x279 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x339 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28A DUP5 DUP5 PUSH2 0x241 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 NOT DUP2 EQ PUSH2 0x2D4 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x2C5 JUMPI DUP3 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BC SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x685 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2D4 DUP5 DUP5 DUP5 DUP5 SUB PUSH1 0x0 PUSH2 0x339 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x304 JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BC SWAP2 SWAP1 PUSH2 0x6A6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x32E JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BC SWAP2 SWAP1 PUSH2 0x6A6 JUMP JUMPDEST PUSH2 0x279 DUP4 DUP4 DUP4 PUSH2 0x40E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x363 JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BC SWAP2 SWAP1 PUSH2 0x6A6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x38D JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BC SWAP2 SWAP1 PUSH2 0x6A6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP3 SWAP1 SSTORE DUP1 ISZERO PUSH2 0x2D4 JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD PUSH2 0x400 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x439 JUMPI DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x42E SWAP2 SWAP1 PUSH2 0x6BA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x498 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x479 JUMPI DUP4 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BC SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x685 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x4B4 JUMPI PUSH1 0x2 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH2 0x4D3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0x518 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x553 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x537 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x58B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5AC DUP4 PUSH2 0x574 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5D8 DUP5 PUSH2 0x574 JUMP JUMPDEST SWAP3 POP PUSH2 0x5E6 PUSH1 0x20 DUP6 ADD PUSH2 0x574 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x608 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x611 DUP3 PUSH2 0x574 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x62B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x634 DUP4 PUSH2 0x574 JUMP JUMPDEST SWAP2 POP PUSH2 0x642 PUSH1 0x20 DUP5 ADD PUSH2 0x574 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x65F JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x67F JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x1FA JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCC 0x4C 0xCC 0x4E 0xE3 RETURN DUP10 CALLER EXTCODEHASH MSIZE LOG1 PUSH11 0xDEC6364F02A4499F2847F9 0xBF PUSH27 0xB33883520C640C64736F6C63430008180033000000000000000000 ", + "sourceMap": "182:135:60:-:0;;;214:101;;;;;;;;;;1601:113:25;;;;;;;;;;;;;-1:-1:-1;;;1601:113:25;;;;;;;;;;;;;;;;-1:-1:-1;;;1601:113:25;;;1675:5;1667;:13;;;;;;:::i;:::-;-1:-1:-1;1690:7:25;:17;1700:7;1690;:17;:::i;:::-;;1601:113;;263:45:60::1;269:10;297;:8;;;:10;;:::i;:::-;291:16;::::0;:2:::1;:16;:::i;:::-;281:26;::::0;:7:::1;:26;:::i;:::-;263:5;:45::i;:::-;182:135:::0;;2707:82:25;2780:2;;2707:82::o;7458:208::-;-1:-1:-1;;;;;7528:21:25;;7524:91;;7572:32;;-1:-1:-1;;;7572:32:25;;7601:1;7572:32;;;4554:51:61;4527:18;;7572:32:25;;;;;;;;7524:91;7624:35;7640:1;7644:7;7653:5;7624:7;:35::i;:::-;7458:208;;:::o;6008:1107::-;-1:-1:-1;;;;;6097:18:25;;6093:540;;6249:5;6233:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;6093:540:25;;-1:-1:-1;6093:540:25;;-1:-1:-1;;;;;6307:15:25;;6285:19;6307:15;;;;;;;;;;;6340:19;;;6336:115;;;6386:50;;-1:-1:-1;;;6386:50:25;;-1:-1:-1;;;;;4966:32:61;;6386:50:25;;;4948:51:61;5015:18;;;5008:34;;;5058:18;;;5051:34;;;4921:18;;6386:50:25;4746:345:61;6336:115:25;-1:-1:-1;;;;;6571:15:25;;:9;:15;;;;;;;;;;6589:19;;;;6571:37;;6093:540;-1:-1:-1;;;;;6647:16:25;;6643:425;;6810:12;:21;;;;;;;6643:425;;;-1:-1:-1;;;;;7021:13:25;;:9;:13;;;;;;;;;;:22;;;;;;6643:425;7098:2;-1:-1:-1;;;;;7083:25:25;7092:4;-1:-1:-1;;;;;7083:25:25;;7102:5;7083:25;;;;5242::61;;5230:2;5215:18;;5096:177;7083:25:25;;;;;;;;6008:1107;;;:::o;14:127:61:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:380;225:1;221:12;;;;268;;;289:61;;343:4;335:6;331:17;321:27;;289:61;396:2;388:6;385:14;365:18;362:38;359:161;;442:10;437:3;433:20;430:1;423:31;477:4;474:1;467:15;505:4;502:1;495:15;359:161;;146:380;;;:::o;657:543::-;759:2;754:3;751:11;748:446;;;795:1;819:5;816:1;809:16;863:4;860:1;850:18;933:2;921:10;917:19;914:1;910:27;904:4;900:38;969:4;957:10;954:20;951:47;;;-1:-1:-1;992:4:61;951:47;1047:2;1042:3;1038:12;1035:1;1031:20;1025:4;1021:31;1011:41;;1102:82;1120:2;1113:5;1110:13;1102:82;;;1165:17;;;1146:1;1135:13;1102:82;;;1106:3;;;748:446;657:543;;;:::o;1376:1345::-;1496:10;;-1:-1:-1;;;;;1518:30:61;;1515:56;;;1551:18;;:::i;:::-;1580:97;1670:6;1630:38;1662:4;1656:11;1630:38;:::i;:::-;1624:4;1580:97;:::i;:::-;1732:4;;1789:2;1778:14;;1806:1;1801:663;;;;2508:1;2525:6;2522:89;;;-1:-1:-1;2577:19:61;;;2571:26;2522:89;-1:-1:-1;;1333:1:61;1329:11;;;1325:24;1321:29;1311:40;1357:1;1353:11;;;1308:57;2624:81;;1771:944;;1801:663;604:1;597:14;;;641:4;628:18;;-1:-1:-1;;1837:20:61;;;1955:236;1969:7;1966:1;1963:14;1955:236;;;2058:19;;;2052:26;2037:42;;2150:27;;;;2118:1;2106:14;;;;1985:19;;1955:236;;;1959:3;2219:6;2210:7;2207:19;2204:201;;;2280:19;;;2274:26;-1:-1:-1;;2363:1:61;2359:14;;;2375:3;2355:24;2351:37;2347:42;2332:58;2317:74;;2204:201;-1:-1:-1;;;;;2451:1:61;2435:14;;;2431:22;2418:36;;-1:-1:-1;1376:1345:61:o;2726:127::-;2787:10;2782:3;2778:20;2775:1;2768:31;2818:4;2815:1;2808:15;2842:4;2839:1;2832:15;2858:416;2947:1;2984:5;2947:1;2998:270;3019:7;3009:8;3006:21;2998:270;;;3078:4;3074:1;3070:6;3066:17;3060:4;3057:27;3054:53;;;3087:18;;:::i;:::-;3137:7;3127:8;3123:22;3120:55;;;3157:16;;;;3120:55;3236:22;;;;3196:15;;;;2998:270;;;3002:3;2858:416;;;;;:::o;3279:806::-;3328:5;3358:8;3348:80;;-1:-1:-1;3399:1:61;3413:5;;3348:80;3447:4;3437:76;;-1:-1:-1;3484:1:61;3498:5;;3437:76;3529:4;3547:1;3542:59;;;;3615:1;3610:130;;;;3522:218;;3542:59;3572:1;3563:10;;3586:5;;;3610:130;3647:3;3637:8;3634:17;3631:43;;;3654:18;;:::i;:::-;-1:-1:-1;;3710:1:61;3696:16;;3725:5;;3522:218;;3824:2;3814:8;3811:16;3805:3;3799:4;3796:13;3792:36;3786:2;3776:8;3773:16;3768:2;3762:4;3759:12;3755:35;3752:77;3749:159;;;-1:-1:-1;3861:19:61;;;3893:5;;3749:159;3940:34;3965:8;3959:4;3940:34;:::i;:::-;4010:6;4006:1;4002:6;3998:19;3989:7;3986:32;3983:58;;;4021:18;;:::i;:::-;4059:20;;-1:-1:-1;3279:806:61;;;;;:::o;4090:140::-;4148:5;4177:47;4218:4;4208:8;4204:19;4198:4;4177:47;:::i;:::-;4168:56;4090:140;-1:-1:-1;;;4090:140:61:o;4235:168::-;4308:9;;;4339;;4356:15;;;4350:22;;4336:37;4326:71;;4377:18;;:::i;4616:125::-;4681:9;;;4702:10;;;4699:36;;;4715:18;;:::i;5096:177::-;182:135:60;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@_approve_4326": { + "entryPoint": 620, + "id": 4326, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_approve_4386": { + "entryPoint": 825, + "id": 4386, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@_msgSender_5493": { + "entryPoint": null, + "id": 5493, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@_spendAllowance_4434": { + "entryPoint": 638, + "id": 4434, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_transfer_4165": { + "entryPoint": 730, + "id": 4165, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@_update_4242": { + "entryPoint": 1038, + "id": 4242, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@allowance_4062": { + "entryPoint": 577, + "id": 4062, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@approve_4086": { + "entryPoint": 486, + "id": 4086, + "parameterSlots": 2, + "returnSlots": 1 + }, + "@balanceOf_4021": { + "entryPoint": null, + "id": 4021, + "parameterSlots": 1, + "returnSlots": 1 + }, + "@decimals_3999": { + "entryPoint": null, + "id": 3999, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@name_3981": { + "entryPoint": 340, + "id": 3981, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@symbol_3990": { + "entryPoint": 548, + "id": 3990, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@totalSupply_4008": { + "entryPoint": null, + "id": 4008, + "parameterSlots": 0, + "returnSlots": 1 + }, + "@transferFrom_4118": { + "entryPoint": 512, + "id": 4118, + "parameterSlots": 3, + "returnSlots": 1 + }, + "@transfer_4045": { + "entryPoint": 563, + "id": 4045, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_address": { + "entryPoint": 1396, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address": { + "entryPoint": 1526, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_address": { + "entryPoint": 1560, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_addresst_addresst_uint256": { + "entryPoint": 1466, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_addresst_uint256": { + "entryPoint": 1424, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": 1702, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": 1669, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": 1317, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed": { + "entryPoint": null, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_add_t_uint256": { + "entryPoint": 1722, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "extract_byte_array_length": { + "entryPoint": 1611, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + } + }, + "generatedSources": [ + { + "ast": { + "nativeSrc": "0:3523:61", + "nodeType": "YulBlock", + "src": "0:3523:61", + "statements": [ + { + "nativeSrc": "6:3:61", + "nodeType": "YulBlock", + "src": "6:3:61", + "statements": [] + }, + { + "body": { + "nativeSrc": "135:427:61", + "nodeType": "YulBlock", + "src": "135:427:61", + "statements": [ + { + "nativeSrc": "145:12:61", + "nodeType": "YulVariableDeclaration", + "src": "145:12:61", + "value": { + "kind": "number", + "nativeSrc": "155:2:61", + "nodeType": "YulLiteral", + "src": "155:2:61", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "_1", + "nativeSrc": "149:2:61", + "nodeType": "YulTypedName", + "src": "149:2:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "173:9:61", + "nodeType": "YulIdentifier", + "src": "173:9:61" + }, + { + "kind": "number", + "nativeSrc": "184:2:61", + "nodeType": "YulLiteral", + "src": "184:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "166:6:61", + "nodeType": "YulIdentifier", + "src": "166:6:61" + }, + "nativeSrc": "166:21:61", + "nodeType": "YulFunctionCall", + "src": "166:21:61" + }, + "nativeSrc": "166:21:61", + "nodeType": "YulExpressionStatement", + "src": "166:21:61" + }, + { + "nativeSrc": "196:27:61", + "nodeType": "YulVariableDeclaration", + "src": "196:27:61", + "value": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "216:6:61", + "nodeType": "YulIdentifier", + "src": "216:6:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "210:5:61", + "nodeType": "YulIdentifier", + "src": "210:5:61" + }, + "nativeSrc": "210:13:61", + "nodeType": "YulFunctionCall", + "src": "210:13:61" + }, + "variables": [ + { + "name": "length", + "nativeSrc": "200:6:61", + "nodeType": "YulTypedName", + "src": "200:6:61", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "243:9:61", + "nodeType": "YulIdentifier", + "src": "243:9:61" + }, + { + "kind": "number", + "nativeSrc": "254:2:61", + "nodeType": "YulLiteral", + "src": "254:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "239:3:61", + "nodeType": "YulIdentifier", + "src": "239:3:61" + }, + "nativeSrc": "239:18:61", + "nodeType": "YulFunctionCall", + "src": "239:18:61" + }, + { + "name": "length", + "nativeSrc": "259:6:61", + "nodeType": "YulIdentifier", + "src": "259:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "232:6:61", + "nodeType": "YulIdentifier", + "src": "232:6:61" + }, + "nativeSrc": "232:34:61", + "nodeType": "YulFunctionCall", + "src": "232:34:61" + }, + "nativeSrc": "232:34:61", + "nodeType": "YulExpressionStatement", + "src": "232:34:61" + }, + { + "nativeSrc": "275:10:61", + "nodeType": "YulVariableDeclaration", + "src": "275:10:61", + "value": { + "kind": "number", + "nativeSrc": "284:1:61", + "nodeType": "YulLiteral", + "src": "284:1:61", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "279:1:61", + "nodeType": "YulTypedName", + "src": "279:1:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "344:90:61", + "nodeType": "YulBlock", + "src": "344:90:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "373:9:61", + "nodeType": "YulIdentifier", + "src": "373:9:61" + }, + { + "name": "i", + "nativeSrc": "384:1:61", + "nodeType": "YulIdentifier", + "src": "384:1:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "369:3:61", + "nodeType": "YulIdentifier", + "src": "369:3:61" + }, + "nativeSrc": "369:17:61", + "nodeType": "YulFunctionCall", + "src": "369:17:61" + }, + { + "kind": "number", + "nativeSrc": "388:2:61", + "nodeType": "YulLiteral", + "src": "388:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "365:3:61", + "nodeType": "YulIdentifier", + "src": "365:3:61" + }, + "nativeSrc": "365:26:61", + "nodeType": "YulFunctionCall", + "src": "365:26:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "407:6:61", + "nodeType": "YulIdentifier", + "src": "407:6:61" + }, + { + "name": "i", + "nativeSrc": "415:1:61", + "nodeType": "YulIdentifier", + "src": "415:1:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "403:3:61", + "nodeType": "YulIdentifier", + "src": "403:3:61" + }, + "nativeSrc": "403:14:61", + "nodeType": "YulFunctionCall", + "src": "403:14:61" + }, + { + "name": "_1", + "nativeSrc": "419:2:61", + "nodeType": "YulIdentifier", + "src": "419:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "399:3:61", + "nodeType": "YulIdentifier", + "src": "399:3:61" + }, + "nativeSrc": "399:23:61", + "nodeType": "YulFunctionCall", + "src": "399:23:61" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "393:5:61", + "nodeType": "YulIdentifier", + "src": "393:5:61" + }, + "nativeSrc": "393:30:61", + "nodeType": "YulFunctionCall", + "src": "393:30:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "358:6:61", + "nodeType": "YulIdentifier", + "src": "358:6:61" + }, + "nativeSrc": "358:66:61", + "nodeType": "YulFunctionCall", + "src": "358:66:61" + }, + "nativeSrc": "358:66:61", + "nodeType": "YulExpressionStatement", + "src": "358:66:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "305:1:61", + "nodeType": "YulIdentifier", + "src": "305:1:61" + }, + { + "name": "length", + "nativeSrc": "308:6:61", + "nodeType": "YulIdentifier", + "src": "308:6:61" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "302:2:61", + "nodeType": "YulIdentifier", + "src": "302:2:61" + }, + "nativeSrc": "302:13:61", + "nodeType": "YulFunctionCall", + "src": "302:13:61" + }, + "nativeSrc": "294:140:61", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "316:19:61", + "nodeType": "YulBlock", + "src": "316:19:61", + "statements": [ + { + "nativeSrc": "318:15:61", + "nodeType": "YulAssignment", + "src": "318:15:61", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "327:1:61", + "nodeType": "YulIdentifier", + "src": "327:1:61" + }, + { + "name": "_1", + "nativeSrc": "330:2:61", + "nodeType": "YulIdentifier", + "src": "330:2:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "323:3:61", + "nodeType": "YulIdentifier", + "src": "323:3:61" + }, + "nativeSrc": "323:10:61", + "nodeType": "YulFunctionCall", + "src": "323:10:61" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "318:1:61", + "nodeType": "YulIdentifier", + "src": "318:1:61" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "298:3:61", + "nodeType": "YulBlock", + "src": "298:3:61", + "statements": [] + }, + "src": "294:140:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "458:9:61", + "nodeType": "YulIdentifier", + "src": "458:9:61" + }, + { + "name": "length", + "nativeSrc": "469:6:61", + "nodeType": "YulIdentifier", + "src": "469:6:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "454:3:61", + "nodeType": "YulIdentifier", + "src": "454:3:61" + }, + "nativeSrc": "454:22:61", + "nodeType": "YulFunctionCall", + "src": "454:22:61" + }, + { + "kind": "number", + "nativeSrc": "478:2:61", + "nodeType": "YulLiteral", + "src": "478:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "450:3:61", + "nodeType": "YulIdentifier", + "src": "450:3:61" + }, + "nativeSrc": "450:31:61", + "nodeType": "YulFunctionCall", + "src": "450:31:61" + }, + { + "kind": "number", + "nativeSrc": "483:1:61", + "nodeType": "YulLiteral", + "src": "483:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "443:6:61", + "nodeType": "YulIdentifier", + "src": "443:6:61" + }, + "nativeSrc": "443:42:61", + "nodeType": "YulFunctionCall", + "src": "443:42:61" + }, + "nativeSrc": "443:42:61", + "nodeType": "YulExpressionStatement", + "src": "443:42:61" + }, + { + "nativeSrc": "494:62:61", + "nodeType": "YulAssignment", + "src": "494:62:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "510:9:61", + "nodeType": "YulIdentifier", + "src": "510:9:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "length", + "nativeSrc": "529:6:61", + "nodeType": "YulIdentifier", + "src": "529:6:61" + }, + { + "kind": "number", + "nativeSrc": "537:2:61", + "nodeType": "YulLiteral", + "src": "537:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "525:3:61", + "nodeType": "YulIdentifier", + "src": "525:3:61" + }, + "nativeSrc": "525:15:61", + "nodeType": "YulFunctionCall", + "src": "525:15:61" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "546:2:61", + "nodeType": "YulLiteral", + "src": "546:2:61", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "542:3:61", + "nodeType": "YulIdentifier", + "src": "542:3:61" + }, + "nativeSrc": "542:7:61", + "nodeType": "YulFunctionCall", + "src": "542:7:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "521:3:61", + "nodeType": "YulIdentifier", + "src": "521:3:61" + }, + "nativeSrc": "521:29:61", + "nodeType": "YulFunctionCall", + "src": "521:29:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "506:3:61", + "nodeType": "YulIdentifier", + "src": "506:3:61" + }, + "nativeSrc": "506:45:61", + "nodeType": "YulFunctionCall", + "src": "506:45:61" + }, + { + "kind": "number", + "nativeSrc": "553:2:61", + "nodeType": "YulLiteral", + "src": "553:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "502:3:61", + "nodeType": "YulIdentifier", + "src": "502:3:61" + }, + "nativeSrc": "502:54:61", + "nodeType": "YulFunctionCall", + "src": "502:54:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "494:4:61", + "nodeType": "YulIdentifier", + "src": "494:4:61" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed", + "nativeSrc": "14:548:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "104:9:61", + "nodeType": "YulTypedName", + "src": "104:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "115:6:61", + "nodeType": "YulTypedName", + "src": "115:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "126:4:61", + "nodeType": "YulTypedName", + "src": "126:4:61", + "type": "" + } + ], + "src": "14:548:61" + }, + { + "body": { + "nativeSrc": "616:124:61", + "nodeType": "YulBlock", + "src": "616:124:61", + "statements": [ + { + "nativeSrc": "626:29:61", + "nodeType": "YulAssignment", + "src": "626:29:61", + "value": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "648:6:61", + "nodeType": "YulIdentifier", + "src": "648:6:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "635:12:61", + "nodeType": "YulIdentifier", + "src": "635:12:61" + }, + "nativeSrc": "635:20:61", + "nodeType": "YulFunctionCall", + "src": "635:20:61" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "626:5:61", + "nodeType": "YulIdentifier", + "src": "626:5:61" + } + ] + }, + { + "body": { + "nativeSrc": "718:16:61", + "nodeType": "YulBlock", + "src": "718:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "727:1:61", + "nodeType": "YulLiteral", + "src": "727:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "730:1:61", + "nodeType": "YulLiteral", + "src": "730:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "720:6:61", + "nodeType": "YulIdentifier", + "src": "720:6:61" + }, + "nativeSrc": "720:12:61", + "nodeType": "YulFunctionCall", + "src": "720:12:61" + }, + "nativeSrc": "720:12:61", + "nodeType": "YulExpressionStatement", + "src": "720:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "677:5:61", + "nodeType": "YulIdentifier", + "src": "677:5:61" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "688:5:61", + "nodeType": "YulIdentifier", + "src": "688:5:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "703:3:61", + "nodeType": "YulLiteral", + "src": "703:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "708:1:61", + "nodeType": "YulLiteral", + "src": "708:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "699:3:61", + "nodeType": "YulIdentifier", + "src": "699:3:61" + }, + "nativeSrc": "699:11:61", + "nodeType": "YulFunctionCall", + "src": "699:11:61" + }, + { + "kind": "number", + "nativeSrc": "712:1:61", + "nodeType": "YulLiteral", + "src": "712:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "695:3:61", + "nodeType": "YulIdentifier", + "src": "695:3:61" + }, + "nativeSrc": "695:19:61", + "nodeType": "YulFunctionCall", + "src": "695:19:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "684:3:61", + "nodeType": "YulIdentifier", + "src": "684:3:61" + }, + "nativeSrc": "684:31:61", + "nodeType": "YulFunctionCall", + "src": "684:31:61" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "674:2:61", + "nodeType": "YulIdentifier", + "src": "674:2:61" + }, + "nativeSrc": "674:42:61", + "nodeType": "YulFunctionCall", + "src": "674:42:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "667:6:61", + "nodeType": "YulIdentifier", + "src": "667:6:61" + }, + "nativeSrc": "667:50:61", + "nodeType": "YulFunctionCall", + "src": "667:50:61" + }, + "nativeSrc": "664:70:61", + "nodeType": "YulIf", + "src": "664:70:61" + } + ] + }, + "name": "abi_decode_address", + "nativeSrc": "567:173:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nativeSrc": "595:6:61", + "nodeType": "YulTypedName", + "src": "595:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nativeSrc": "606:5:61", + "nodeType": "YulTypedName", + "src": "606:5:61", + "type": "" + } + ], + "src": "567:173:61" + }, + { + "body": { + "nativeSrc": "832:167:61", + "nodeType": "YulBlock", + "src": "832:167:61", + "statements": [ + { + "body": { + "nativeSrc": "878:16:61", + "nodeType": "YulBlock", + "src": "878:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "887:1:61", + "nodeType": "YulLiteral", + "src": "887:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "890:1:61", + "nodeType": "YulLiteral", + "src": "890:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "880:6:61", + "nodeType": "YulIdentifier", + "src": "880:6:61" + }, + "nativeSrc": "880:12:61", + "nodeType": "YulFunctionCall", + "src": "880:12:61" + }, + "nativeSrc": "880:12:61", + "nodeType": "YulExpressionStatement", + "src": "880:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "853:7:61", + "nodeType": "YulIdentifier", + "src": "853:7:61" + }, + { + "name": "headStart", + "nativeSrc": "862:9:61", + "nodeType": "YulIdentifier", + "src": "862:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "849:3:61", + "nodeType": "YulIdentifier", + "src": "849:3:61" + }, + "nativeSrc": "849:23:61", + "nodeType": "YulFunctionCall", + "src": "849:23:61" + }, + { + "kind": "number", + "nativeSrc": "874:2:61", + "nodeType": "YulLiteral", + "src": "874:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "845:3:61", + "nodeType": "YulIdentifier", + "src": "845:3:61" + }, + "nativeSrc": "845:32:61", + "nodeType": "YulFunctionCall", + "src": "845:32:61" + }, + "nativeSrc": "842:52:61", + "nodeType": "YulIf", + "src": "842:52:61" + }, + { + "nativeSrc": "903:39:61", + "nodeType": "YulAssignment", + "src": "903:39:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "932:9:61", + "nodeType": "YulIdentifier", + "src": "932:9:61" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "913:18:61", + "nodeType": "YulIdentifier", + "src": "913:18:61" + }, + "nativeSrc": "913:29:61", + "nodeType": "YulFunctionCall", + "src": "913:29:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "903:6:61", + "nodeType": "YulIdentifier", + "src": "903:6:61" + } + ] + }, + { + "nativeSrc": "951:42:61", + "nodeType": "YulAssignment", + "src": "951:42:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "978:9:61", + "nodeType": "YulIdentifier", + "src": "978:9:61" + }, + { + "kind": "number", + "nativeSrc": "989:2:61", + "nodeType": "YulLiteral", + "src": "989:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "974:3:61", + "nodeType": "YulIdentifier", + "src": "974:3:61" + }, + "nativeSrc": "974:18:61", + "nodeType": "YulFunctionCall", + "src": "974:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "961:12:61", + "nodeType": "YulIdentifier", + "src": "961:12:61" + }, + "nativeSrc": "961:32:61", + "nodeType": "YulFunctionCall", + "src": "961:32:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "951:6:61", + "nodeType": "YulIdentifier", + "src": "951:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_uint256", + "nativeSrc": "745:254:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "790:9:61", + "nodeType": "YulTypedName", + "src": "790:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "801:7:61", + "nodeType": "YulTypedName", + "src": "801:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "813:6:61", + "nodeType": "YulTypedName", + "src": "813:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "821:6:61", + "nodeType": "YulTypedName", + "src": "821:6:61", + "type": "" + } + ], + "src": "745:254:61" + }, + { + "body": { + "nativeSrc": "1099:92:61", + "nodeType": "YulBlock", + "src": "1099:92:61", + "statements": [ + { + "nativeSrc": "1109:26:61", + "nodeType": "YulAssignment", + "src": "1109:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1121:9:61", + "nodeType": "YulIdentifier", + "src": "1121:9:61" + }, + { + "kind": "number", + "nativeSrc": "1132:2:61", + "nodeType": "YulLiteral", + "src": "1132:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1117:3:61", + "nodeType": "YulIdentifier", + "src": "1117:3:61" + }, + "nativeSrc": "1117:18:61", + "nodeType": "YulFunctionCall", + "src": "1117:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "1109:4:61", + "nodeType": "YulIdentifier", + "src": "1109:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1151:9:61", + "nodeType": "YulIdentifier", + "src": "1151:9:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "1176:6:61", + "nodeType": "YulIdentifier", + "src": "1176:6:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "1169:6:61", + "nodeType": "YulIdentifier", + "src": "1169:6:61" + }, + "nativeSrc": "1169:14:61", + "nodeType": "YulFunctionCall", + "src": "1169:14:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "1162:6:61", + "nodeType": "YulIdentifier", + "src": "1162:6:61" + }, + "nativeSrc": "1162:22:61", + "nodeType": "YulFunctionCall", + "src": "1162:22:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1144:6:61", + "nodeType": "YulIdentifier", + "src": "1144:6:61" + }, + "nativeSrc": "1144:41:61", + "nodeType": "YulFunctionCall", + "src": "1144:41:61" + }, + "nativeSrc": "1144:41:61", + "nodeType": "YulExpressionStatement", + "src": "1144:41:61" + } + ] + }, + "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed", + "nativeSrc": "1004:187:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "1068:9:61", + "nodeType": "YulTypedName", + "src": "1068:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "1079:6:61", + "nodeType": "YulTypedName", + "src": "1079:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "1090:4:61", + "nodeType": "YulTypedName", + "src": "1090:4:61", + "type": "" + } + ], + "src": "1004:187:61" + }, + { + "body": { + "nativeSrc": "1297:76:61", + "nodeType": "YulBlock", + "src": "1297:76:61", + "statements": [ + { + "nativeSrc": "1307:26:61", + "nodeType": "YulAssignment", + "src": "1307:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1319:9:61", + "nodeType": "YulIdentifier", + "src": "1319:9:61" + }, + { + "kind": "number", + "nativeSrc": "1330:2:61", + "nodeType": "YulLiteral", + "src": "1330:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1315:3:61", + "nodeType": "YulIdentifier", + "src": "1315:3:61" + }, + "nativeSrc": "1315:18:61", + "nodeType": "YulFunctionCall", + "src": "1315:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "1307:4:61", + "nodeType": "YulIdentifier", + "src": "1307:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1349:9:61", + "nodeType": "YulIdentifier", + "src": "1349:9:61" + }, + { + "name": "value0", + "nativeSrc": "1360:6:61", + "nodeType": "YulIdentifier", + "src": "1360:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1342:6:61", + "nodeType": "YulIdentifier", + "src": "1342:6:61" + }, + "nativeSrc": "1342:25:61", + "nodeType": "YulFunctionCall", + "src": "1342:25:61" + }, + "nativeSrc": "1342:25:61", + "nodeType": "YulExpressionStatement", + "src": "1342:25:61" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nativeSrc": "1196:177:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "1266:9:61", + "nodeType": "YulTypedName", + "src": "1266:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "1277:6:61", + "nodeType": "YulTypedName", + "src": "1277:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "1288:4:61", + "nodeType": "YulTypedName", + "src": "1288:4:61", + "type": "" + } + ], + "src": "1196:177:61" + }, + { + "body": { + "nativeSrc": "1482:224:61", + "nodeType": "YulBlock", + "src": "1482:224:61", + "statements": [ + { + "body": { + "nativeSrc": "1528:16:61", + "nodeType": "YulBlock", + "src": "1528:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1537:1:61", + "nodeType": "YulLiteral", + "src": "1537:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1540:1:61", + "nodeType": "YulLiteral", + "src": "1540:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1530:6:61", + "nodeType": "YulIdentifier", + "src": "1530:6:61" + }, + "nativeSrc": "1530:12:61", + "nodeType": "YulFunctionCall", + "src": "1530:12:61" + }, + "nativeSrc": "1530:12:61", + "nodeType": "YulExpressionStatement", + "src": "1530:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "1503:7:61", + "nodeType": "YulIdentifier", + "src": "1503:7:61" + }, + { + "name": "headStart", + "nativeSrc": "1512:9:61", + "nodeType": "YulIdentifier", + "src": "1512:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "1499:3:61", + "nodeType": "YulIdentifier", + "src": "1499:3:61" + }, + "nativeSrc": "1499:23:61", + "nodeType": "YulFunctionCall", + "src": "1499:23:61" + }, + { + "kind": "number", + "nativeSrc": "1524:2:61", + "nodeType": "YulLiteral", + "src": "1524:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "1495:3:61", + "nodeType": "YulIdentifier", + "src": "1495:3:61" + }, + "nativeSrc": "1495:32:61", + "nodeType": "YulFunctionCall", + "src": "1495:32:61" + }, + "nativeSrc": "1492:52:61", + "nodeType": "YulIf", + "src": "1492:52:61" + }, + { + "nativeSrc": "1553:39:61", + "nodeType": "YulAssignment", + "src": "1553:39:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1582:9:61", + "nodeType": "YulIdentifier", + "src": "1582:9:61" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "1563:18:61", + "nodeType": "YulIdentifier", + "src": "1563:18:61" + }, + "nativeSrc": "1563:29:61", + "nodeType": "YulFunctionCall", + "src": "1563:29:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "1553:6:61", + "nodeType": "YulIdentifier", + "src": "1553:6:61" + } + ] + }, + { + "nativeSrc": "1601:48:61", + "nodeType": "YulAssignment", + "src": "1601:48:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1634:9:61", + "nodeType": "YulIdentifier", + "src": "1634:9:61" + }, + { + "kind": "number", + "nativeSrc": "1645:2:61", + "nodeType": "YulLiteral", + "src": "1645:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1630:3:61", + "nodeType": "YulIdentifier", + "src": "1630:3:61" + }, + "nativeSrc": "1630:18:61", + "nodeType": "YulFunctionCall", + "src": "1630:18:61" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "1611:18:61", + "nodeType": "YulIdentifier", + "src": "1611:18:61" + }, + "nativeSrc": "1611:38:61", + "nodeType": "YulFunctionCall", + "src": "1611:38:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "1601:6:61", + "nodeType": "YulIdentifier", + "src": "1601:6:61" + } + ] + }, + { + "nativeSrc": "1658:42:61", + "nodeType": "YulAssignment", + "src": "1658:42:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1685:9:61", + "nodeType": "YulIdentifier", + "src": "1685:9:61" + }, + { + "kind": "number", + "nativeSrc": "1696:2:61", + "nodeType": "YulLiteral", + "src": "1696:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1681:3:61", + "nodeType": "YulIdentifier", + "src": "1681:3:61" + }, + "nativeSrc": "1681:18:61", + "nodeType": "YulFunctionCall", + "src": "1681:18:61" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "1668:12:61", + "nodeType": "YulIdentifier", + "src": "1668:12:61" + }, + "nativeSrc": "1668:32:61", + "nodeType": "YulFunctionCall", + "src": "1668:32:61" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "1658:6:61", + "nodeType": "YulIdentifier", + "src": "1658:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_uint256", + "nativeSrc": "1378:328:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "1432:9:61", + "nodeType": "YulTypedName", + "src": "1432:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "1443:7:61", + "nodeType": "YulTypedName", + "src": "1443:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "1455:6:61", + "nodeType": "YulTypedName", + "src": "1455:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "1463:6:61", + "nodeType": "YulTypedName", + "src": "1463:6:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "1471:6:61", + "nodeType": "YulTypedName", + "src": "1471:6:61", + "type": "" + } + ], + "src": "1378:328:61" + }, + { + "body": { + "nativeSrc": "1808:87:61", + "nodeType": "YulBlock", + "src": "1808:87:61", + "statements": [ + { + "nativeSrc": "1818:26:61", + "nodeType": "YulAssignment", + "src": "1818:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1830:9:61", + "nodeType": "YulIdentifier", + "src": "1830:9:61" + }, + { + "kind": "number", + "nativeSrc": "1841:2:61", + "nodeType": "YulLiteral", + "src": "1841:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1826:3:61", + "nodeType": "YulIdentifier", + "src": "1826:3:61" + }, + "nativeSrc": "1826:18:61", + "nodeType": "YulFunctionCall", + "src": "1826:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "1818:4:61", + "nodeType": "YulIdentifier", + "src": "1818:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1860:9:61", + "nodeType": "YulIdentifier", + "src": "1860:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "1875:6:61", + "nodeType": "YulIdentifier", + "src": "1875:6:61" + }, + { + "kind": "number", + "nativeSrc": "1883:4:61", + "nodeType": "YulLiteral", + "src": "1883:4:61", + "type": "", + "value": "0xff" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1871:3:61", + "nodeType": "YulIdentifier", + "src": "1871:3:61" + }, + "nativeSrc": "1871:17:61", + "nodeType": "YulFunctionCall", + "src": "1871:17:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1853:6:61", + "nodeType": "YulIdentifier", + "src": "1853:6:61" + }, + "nativeSrc": "1853:36:61", + "nodeType": "YulFunctionCall", + "src": "1853:36:61" + }, + "nativeSrc": "1853:36:61", + "nodeType": "YulExpressionStatement", + "src": "1853:36:61" + } + ] + }, + "name": "abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed", + "nativeSrc": "1711:184:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "1777:9:61", + "nodeType": "YulTypedName", + "src": "1777:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "1788:6:61", + "nodeType": "YulTypedName", + "src": "1788:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "1799:4:61", + "nodeType": "YulTypedName", + "src": "1799:4:61", + "type": "" + } + ], + "src": "1711:184:61" + }, + { + "body": { + "nativeSrc": "1970:116:61", + "nodeType": "YulBlock", + "src": "1970:116:61", + "statements": [ + { + "body": { + "nativeSrc": "2016:16:61", + "nodeType": "YulBlock", + "src": "2016:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2025:1:61", + "nodeType": "YulLiteral", + "src": "2025:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2028:1:61", + "nodeType": "YulLiteral", + "src": "2028:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2018:6:61", + "nodeType": "YulIdentifier", + "src": "2018:6:61" + }, + "nativeSrc": "2018:12:61", + "nodeType": "YulFunctionCall", + "src": "2018:12:61" + }, + "nativeSrc": "2018:12:61", + "nodeType": "YulExpressionStatement", + "src": "2018:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "1991:7:61", + "nodeType": "YulIdentifier", + "src": "1991:7:61" + }, + { + "name": "headStart", + "nativeSrc": "2000:9:61", + "nodeType": "YulIdentifier", + "src": "2000:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "1987:3:61", + "nodeType": "YulIdentifier", + "src": "1987:3:61" + }, + "nativeSrc": "1987:23:61", + "nodeType": "YulFunctionCall", + "src": "1987:23:61" + }, + { + "kind": "number", + "nativeSrc": "2012:2:61", + "nodeType": "YulLiteral", + "src": "2012:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "1983:3:61", + "nodeType": "YulIdentifier", + "src": "1983:3:61" + }, + "nativeSrc": "1983:32:61", + "nodeType": "YulFunctionCall", + "src": "1983:32:61" + }, + "nativeSrc": "1980:52:61", + "nodeType": "YulIf", + "src": "1980:52:61" + }, + { + "nativeSrc": "2041:39:61", + "nodeType": "YulAssignment", + "src": "2041:39:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2070:9:61", + "nodeType": "YulIdentifier", + "src": "2070:9:61" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "2051:18:61", + "nodeType": "YulIdentifier", + "src": "2051:18:61" + }, + "nativeSrc": "2051:29:61", + "nodeType": "YulFunctionCall", + "src": "2051:29:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "2041:6:61", + "nodeType": "YulIdentifier", + "src": "2041:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nativeSrc": "1900:186:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "1936:9:61", + "nodeType": "YulTypedName", + "src": "1936:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "1947:7:61", + "nodeType": "YulTypedName", + "src": "1947:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "1959:6:61", + "nodeType": "YulTypedName", + "src": "1959:6:61", + "type": "" + } + ], + "src": "1900:186:61" + }, + { + "body": { + "nativeSrc": "2178:173:61", + "nodeType": "YulBlock", + "src": "2178:173:61", + "statements": [ + { + "body": { + "nativeSrc": "2224:16:61", + "nodeType": "YulBlock", + "src": "2224:16:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2233:1:61", + "nodeType": "YulLiteral", + "src": "2233:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2236:1:61", + "nodeType": "YulLiteral", + "src": "2236:1:61", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2226:6:61", + "nodeType": "YulIdentifier", + "src": "2226:6:61" + }, + "nativeSrc": "2226:12:61", + "nodeType": "YulFunctionCall", + "src": "2226:12:61" + }, + "nativeSrc": "2226:12:61", + "nodeType": "YulExpressionStatement", + "src": "2226:12:61" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "2199:7:61", + "nodeType": "YulIdentifier", + "src": "2199:7:61" + }, + { + "name": "headStart", + "nativeSrc": "2208:9:61", + "nodeType": "YulIdentifier", + "src": "2208:9:61" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "2195:3:61", + "nodeType": "YulIdentifier", + "src": "2195:3:61" + }, + "nativeSrc": "2195:23:61", + "nodeType": "YulFunctionCall", + "src": "2195:23:61" + }, + { + "kind": "number", + "nativeSrc": "2220:2:61", + "nodeType": "YulLiteral", + "src": "2220:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "2191:3:61", + "nodeType": "YulIdentifier", + "src": "2191:3:61" + }, + "nativeSrc": "2191:32:61", + "nodeType": "YulFunctionCall", + "src": "2191:32:61" + }, + "nativeSrc": "2188:52:61", + "nodeType": "YulIf", + "src": "2188:52:61" + }, + { + "nativeSrc": "2249:39:61", + "nodeType": "YulAssignment", + "src": "2249:39:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2278:9:61", + "nodeType": "YulIdentifier", + "src": "2278:9:61" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "2259:18:61", + "nodeType": "YulIdentifier", + "src": "2259:18:61" + }, + "nativeSrc": "2259:29:61", + "nodeType": "YulFunctionCall", + "src": "2259:29:61" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "2249:6:61", + "nodeType": "YulIdentifier", + "src": "2249:6:61" + } + ] + }, + { + "nativeSrc": "2297:48:61", + "nodeType": "YulAssignment", + "src": "2297:48:61", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2330:9:61", + "nodeType": "YulIdentifier", + "src": "2330:9:61" + }, + { + "kind": "number", + "nativeSrc": "2341:2:61", + "nodeType": "YulLiteral", + "src": "2341:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2326:3:61", + "nodeType": "YulIdentifier", + "src": "2326:3:61" + }, + "nativeSrc": "2326:18:61", + "nodeType": "YulFunctionCall", + "src": "2326:18:61" + } + ], + "functionName": { + "name": "abi_decode_address", + "nativeSrc": "2307:18:61", + "nodeType": "YulIdentifier", + "src": "2307:18:61" + }, + "nativeSrc": "2307:38:61", + "nodeType": "YulFunctionCall", + "src": "2307:38:61" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "2297:6:61", + "nodeType": "YulIdentifier", + "src": "2297:6:61" + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_address", + "nativeSrc": "2091:260:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "2136:9:61", + "nodeType": "YulTypedName", + "src": "2136:9:61", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "2147:7:61", + "nodeType": "YulTypedName", + "src": "2147:7:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "2159:6:61", + "nodeType": "YulTypedName", + "src": "2159:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "2167:6:61", + "nodeType": "YulTypedName", + "src": "2167:6:61", + "type": "" + } + ], + "src": "2091:260:61" + }, + { + "body": { + "nativeSrc": "2411:325:61", + "nodeType": "YulBlock", + "src": "2411:325:61", + "statements": [ + { + "nativeSrc": "2421:22:61", + "nodeType": "YulAssignment", + "src": "2421:22:61", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2435:1:61", + "nodeType": "YulLiteral", + "src": "2435:1:61", + "type": "", + "value": "1" + }, + { + "name": "data", + "nativeSrc": "2438:4:61", + "nodeType": "YulIdentifier", + "src": "2438:4:61" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "2431:3:61", + "nodeType": "YulIdentifier", + "src": "2431:3:61" + }, + "nativeSrc": "2431:12:61", + "nodeType": "YulFunctionCall", + "src": "2431:12:61" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "2421:6:61", + "nodeType": "YulIdentifier", + "src": "2421:6:61" + } + ] + }, + { + "nativeSrc": "2452:38:61", + "nodeType": "YulVariableDeclaration", + "src": "2452:38:61", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "2482:4:61", + "nodeType": "YulIdentifier", + "src": "2482:4:61" + }, + { + "kind": "number", + "nativeSrc": "2488:1:61", + "nodeType": "YulLiteral", + "src": "2488:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "2478:3:61", + "nodeType": "YulIdentifier", + "src": "2478:3:61" + }, + "nativeSrc": "2478:12:61", + "nodeType": "YulFunctionCall", + "src": "2478:12:61" + }, + "variables": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "2456:18:61", + "nodeType": "YulTypedName", + "src": "2456:18:61", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "2529:31:61", + "nodeType": "YulBlock", + "src": "2529:31:61", + "statements": [ + { + "nativeSrc": "2531:27:61", + "nodeType": "YulAssignment", + "src": "2531:27:61", + "value": { + "arguments": [ + { + "name": "length", + "nativeSrc": "2545:6:61", + "nodeType": "YulIdentifier", + "src": "2545:6:61" + }, + { + "kind": "number", + "nativeSrc": "2553:4:61", + "nodeType": "YulLiteral", + "src": "2553:4:61", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "2541:3:61", + "nodeType": "YulIdentifier", + "src": "2541:3:61" + }, + "nativeSrc": "2541:17:61", + "nodeType": "YulFunctionCall", + "src": "2541:17:61" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "2531:6:61", + "nodeType": "YulIdentifier", + "src": "2531:6:61" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "2509:18:61", + "nodeType": "YulIdentifier", + "src": "2509:18:61" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "2502:6:61", + "nodeType": "YulIdentifier", + "src": "2502:6:61" + }, + "nativeSrc": "2502:26:61", + "nodeType": "YulFunctionCall", + "src": "2502:26:61" + }, + "nativeSrc": "2499:61:61", + "nodeType": "YulIf", + "src": "2499:61:61" + }, + { + "body": { + "nativeSrc": "2619:111:61", + "nodeType": "YulBlock", + "src": "2619:111:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2640:1:61", + "nodeType": "YulLiteral", + "src": "2640:1:61", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2647:3:61", + "nodeType": "YulLiteral", + "src": "2647:3:61", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "2652:10:61", + "nodeType": "YulLiteral", + "src": "2652:10:61", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "2643:3:61", + "nodeType": "YulIdentifier", + "src": "2643:3:61" + }, + "nativeSrc": "2643:20:61", + "nodeType": "YulFunctionCall", + "src": "2643:20:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2633:6:61", + "nodeType": "YulIdentifier", + "src": "2633:6:61" + }, + "nativeSrc": "2633:31:61", + "nodeType": "YulFunctionCall", + "src": "2633:31:61" + }, + "nativeSrc": "2633:31:61", + "nodeType": "YulExpressionStatement", + "src": "2633:31:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2684:1:61", + "nodeType": "YulLiteral", + "src": "2684:1:61", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "2687:4:61", + "nodeType": "YulLiteral", + "src": "2687:4:61", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2677:6:61", + "nodeType": "YulIdentifier", + "src": "2677:6:61" + }, + "nativeSrc": "2677:15:61", + "nodeType": "YulFunctionCall", + "src": "2677:15:61" + }, + "nativeSrc": "2677:15:61", + "nodeType": "YulExpressionStatement", + "src": "2677:15:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2712:1:61", + "nodeType": "YulLiteral", + "src": "2712:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2715:4:61", + "nodeType": "YulLiteral", + "src": "2715:4:61", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2705:6:61", + "nodeType": "YulIdentifier", + "src": "2705:6:61" + }, + "nativeSrc": "2705:15:61", + "nodeType": "YulFunctionCall", + "src": "2705:15:61" + }, + "nativeSrc": "2705:15:61", + "nodeType": "YulExpressionStatement", + "src": "2705:15:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "2575:18:61", + "nodeType": "YulIdentifier", + "src": "2575:18:61" + }, + { + "arguments": [ + { + "name": "length", + "nativeSrc": "2598:6:61", + "nodeType": "YulIdentifier", + "src": "2598:6:61" + }, + { + "kind": "number", + "nativeSrc": "2606:2:61", + "nodeType": "YulLiteral", + "src": "2606:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "2595:2:61", + "nodeType": "YulIdentifier", + "src": "2595:2:61" + }, + "nativeSrc": "2595:14:61", + "nodeType": "YulFunctionCall", + "src": "2595:14:61" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "2572:2:61", + "nodeType": "YulIdentifier", + "src": "2572:2:61" + }, + "nativeSrc": "2572:38:61", + "nodeType": "YulFunctionCall", + "src": "2572:38:61" + }, + "nativeSrc": "2569:161:61", + "nodeType": "YulIf", + "src": "2569:161:61" + } + ] + }, + "name": "extract_byte_array_length", + "nativeSrc": "2356:380:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nativeSrc": "2391:4:61", + "nodeType": "YulTypedName", + "src": "2391:4:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nativeSrc": "2400:6:61", + "nodeType": "YulTypedName", + "src": "2400:6:61", + "type": "" + } + ], + "src": "2356:380:61" + }, + { + "body": { + "nativeSrc": "2898:188:61", + "nodeType": "YulBlock", + "src": "2898:188:61", + "statements": [ + { + "nativeSrc": "2908:26:61", + "nodeType": "YulAssignment", + "src": "2908:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2920:9:61", + "nodeType": "YulIdentifier", + "src": "2920:9:61" + }, + { + "kind": "number", + "nativeSrc": "2931:2:61", + "nodeType": "YulLiteral", + "src": "2931:2:61", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2916:3:61", + "nodeType": "YulIdentifier", + "src": "2916:3:61" + }, + "nativeSrc": "2916:18:61", + "nodeType": "YulFunctionCall", + "src": "2916:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "2908:4:61", + "nodeType": "YulIdentifier", + "src": "2908:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2950:9:61", + "nodeType": "YulIdentifier", + "src": "2950:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "2965:6:61", + "nodeType": "YulIdentifier", + "src": "2965:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2981:3:61", + "nodeType": "YulLiteral", + "src": "2981:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "2986:1:61", + "nodeType": "YulLiteral", + "src": "2986:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "2977:3:61", + "nodeType": "YulIdentifier", + "src": "2977:3:61" + }, + "nativeSrc": "2977:11:61", + "nodeType": "YulFunctionCall", + "src": "2977:11:61" + }, + { + "kind": "number", + "nativeSrc": "2990:1:61", + "nodeType": "YulLiteral", + "src": "2990:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "2973:3:61", + "nodeType": "YulIdentifier", + "src": "2973:3:61" + }, + "nativeSrc": "2973:19:61", + "nodeType": "YulFunctionCall", + "src": "2973:19:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "2961:3:61", + "nodeType": "YulIdentifier", + "src": "2961:3:61" + }, + "nativeSrc": "2961:32:61", + "nodeType": "YulFunctionCall", + "src": "2961:32:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2943:6:61", + "nodeType": "YulIdentifier", + "src": "2943:6:61" + }, + "nativeSrc": "2943:51:61", + "nodeType": "YulFunctionCall", + "src": "2943:51:61" + }, + "nativeSrc": "2943:51:61", + "nodeType": "YulExpressionStatement", + "src": "2943:51:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3014:9:61", + "nodeType": "YulIdentifier", + "src": "3014:9:61" + }, + { + "kind": "number", + "nativeSrc": "3025:2:61", + "nodeType": "YulLiteral", + "src": "3025:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3010:3:61", + "nodeType": "YulIdentifier", + "src": "3010:3:61" + }, + "nativeSrc": "3010:18:61", + "nodeType": "YulFunctionCall", + "src": "3010:18:61" + }, + { + "name": "value1", + "nativeSrc": "3030:6:61", + "nodeType": "YulIdentifier", + "src": "3030:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3003:6:61", + "nodeType": "YulIdentifier", + "src": "3003:6:61" + }, + "nativeSrc": "3003:34:61", + "nodeType": "YulFunctionCall", + "src": "3003:34:61" + }, + "nativeSrc": "3003:34:61", + "nodeType": "YulExpressionStatement", + "src": "3003:34:61" + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3057:9:61", + "nodeType": "YulIdentifier", + "src": "3057:9:61" + }, + { + "kind": "number", + "nativeSrc": "3068:2:61", + "nodeType": "YulLiteral", + "src": "3068:2:61", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3053:3:61", + "nodeType": "YulIdentifier", + "src": "3053:3:61" + }, + "nativeSrc": "3053:18:61", + "nodeType": "YulFunctionCall", + "src": "3053:18:61" + }, + { + "name": "value2", + "nativeSrc": "3073:6:61", + "nodeType": "YulIdentifier", + "src": "3073:6:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3046:6:61", + "nodeType": "YulIdentifier", + "src": "3046:6:61" + }, + "nativeSrc": "3046:34:61", + "nodeType": "YulFunctionCall", + "src": "3046:34:61" + }, + "nativeSrc": "3046:34:61", + "nodeType": "YulExpressionStatement", + "src": "3046:34:61" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed", + "nativeSrc": "2741:345:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "2851:9:61", + "nodeType": "YulTypedName", + "src": "2851:9:61", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "2862:6:61", + "nodeType": "YulTypedName", + "src": "2862:6:61", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "2870:6:61", + "nodeType": "YulTypedName", + "src": "2870:6:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "2878:6:61", + "nodeType": "YulTypedName", + "src": "2878:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "2889:4:61", + "nodeType": "YulTypedName", + "src": "2889:4:61", + "type": "" + } + ], + "src": "2741:345:61" + }, + { + "body": { + "nativeSrc": "3192:102:61", + "nodeType": "YulBlock", + "src": "3192:102:61", + "statements": [ + { + "nativeSrc": "3202:26:61", + "nodeType": "YulAssignment", + "src": "3202:26:61", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3214:9:61", + "nodeType": "YulIdentifier", + "src": "3214:9:61" + }, + { + "kind": "number", + "nativeSrc": "3225:2:61", + "nodeType": "YulLiteral", + "src": "3225:2:61", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3210:3:61", + "nodeType": "YulIdentifier", + "src": "3210:3:61" + }, + "nativeSrc": "3210:18:61", + "nodeType": "YulFunctionCall", + "src": "3210:18:61" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "3202:4:61", + "nodeType": "YulIdentifier", + "src": "3202:4:61" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3244:9:61", + "nodeType": "YulIdentifier", + "src": "3244:9:61" + }, + { + "arguments": [ + { + "name": "value0", + "nativeSrc": "3259:6:61", + "nodeType": "YulIdentifier", + "src": "3259:6:61" + }, + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3275:3:61", + "nodeType": "YulLiteral", + "src": "3275:3:61", + "type": "", + "value": "160" + }, + { + "kind": "number", + "nativeSrc": "3280:1:61", + "nodeType": "YulLiteral", + "src": "3280:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "3271:3:61", + "nodeType": "YulIdentifier", + "src": "3271:3:61" + }, + "nativeSrc": "3271:11:61", + "nodeType": "YulFunctionCall", + "src": "3271:11:61" + }, + { + "kind": "number", + "nativeSrc": "3284:1:61", + "nodeType": "YulLiteral", + "src": "3284:1:61", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "3267:3:61", + "nodeType": "YulIdentifier", + "src": "3267:3:61" + }, + "nativeSrc": "3267:19:61", + "nodeType": "YulFunctionCall", + "src": "3267:19:61" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "3255:3:61", + "nodeType": "YulIdentifier", + "src": "3255:3:61" + }, + "nativeSrc": "3255:32:61", + "nodeType": "YulFunctionCall", + "src": "3255:32:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3237:6:61", + "nodeType": "YulIdentifier", + "src": "3237:6:61" + }, + "nativeSrc": "3237:51:61", + "nodeType": "YulFunctionCall", + "src": "3237:51:61" + }, + "nativeSrc": "3237:51:61", + "nodeType": "YulExpressionStatement", + "src": "3237:51:61" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nativeSrc": "3091:203:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "3161:9:61", + "nodeType": "YulTypedName", + "src": "3161:9:61", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "3172:6:61", + "nodeType": "YulTypedName", + "src": "3172:6:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "3183:4:61", + "nodeType": "YulTypedName", + "src": "3183:4:61", + "type": "" + } + ], + "src": "3091:203:61" + }, + { + "body": { + "nativeSrc": "3347:174:61", + "nodeType": "YulBlock", + "src": "3347:174:61", + "statements": [ + { + "nativeSrc": "3357:16:61", + "nodeType": "YulAssignment", + "src": "3357:16:61", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "3368:1:61", + "nodeType": "YulIdentifier", + "src": "3368:1:61" + }, + { + "name": "y", + "nativeSrc": "3371:1:61", + "nodeType": "YulIdentifier", + "src": "3371:1:61" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3364:3:61", + "nodeType": "YulIdentifier", + "src": "3364:3:61" + }, + "nativeSrc": "3364:9:61", + "nodeType": "YulFunctionCall", + "src": "3364:9:61" + }, + "variableNames": [ + { + "name": "sum", + "nativeSrc": "3357:3:61", + "nodeType": "YulIdentifier", + "src": "3357:3:61" + } + ] + }, + { + "body": { + "nativeSrc": "3404:111:61", + "nodeType": "YulBlock", + "src": "3404:111:61", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3425:1:61", + "nodeType": "YulLiteral", + "src": "3425:1:61", + "type": "", + "value": "0" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3432:3:61", + "nodeType": "YulLiteral", + "src": "3432:3:61", + "type": "", + "value": "224" + }, + { + "kind": "number", + "nativeSrc": "3437:10:61", + "nodeType": "YulLiteral", + "src": "3437:10:61", + "type": "", + "value": "0x4e487b71" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "3428:3:61", + "nodeType": "YulIdentifier", + "src": "3428:3:61" + }, + "nativeSrc": "3428:20:61", + "nodeType": "YulFunctionCall", + "src": "3428:20:61" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3418:6:61", + "nodeType": "YulIdentifier", + "src": "3418:6:61" + }, + "nativeSrc": "3418:31:61", + "nodeType": "YulFunctionCall", + "src": "3418:31:61" + }, + "nativeSrc": "3418:31:61", + "nodeType": "YulExpressionStatement", + "src": "3418:31:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3469:1:61", + "nodeType": "YulLiteral", + "src": "3469:1:61", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "3472:4:61", + "nodeType": "YulLiteral", + "src": "3472:4:61", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3462:6:61", + "nodeType": "YulIdentifier", + "src": "3462:6:61" + }, + "nativeSrc": "3462:15:61", + "nodeType": "YulFunctionCall", + "src": "3462:15:61" + }, + "nativeSrc": "3462:15:61", + "nodeType": "YulExpressionStatement", + "src": "3462:15:61" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "3497:1:61", + "nodeType": "YulLiteral", + "src": "3497:1:61", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "3500:4:61", + "nodeType": "YulLiteral", + "src": "3500:4:61", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "3490:6:61", + "nodeType": "YulIdentifier", + "src": "3490:6:61" + }, + "nativeSrc": "3490:15:61", + "nodeType": "YulFunctionCall", + "src": "3490:15:61" + }, + "nativeSrc": "3490:15:61", + "nodeType": "YulExpressionStatement", + "src": "3490:15:61" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nativeSrc": "3388:1:61", + "nodeType": "YulIdentifier", + "src": "3388:1:61" + }, + { + "name": "sum", + "nativeSrc": "3391:3:61", + "nodeType": "YulIdentifier", + "src": "3391:3:61" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "3385:2:61", + "nodeType": "YulIdentifier", + "src": "3385:2:61" + }, + "nativeSrc": "3385:10:61", + "nodeType": "YulFunctionCall", + "src": "3385:10:61" + }, + "nativeSrc": "3382:133:61", + "nodeType": "YulIf", + "src": "3382:133:61" + } + ] + }, + "name": "checked_add_t_uint256", + "nativeSrc": "3299:222:61", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nativeSrc": "3330:1:61", + "nodeType": "YulTypedName", + "src": "3330:1:61", + "type": "" + }, + { + "name": "y", + "nativeSrc": "3333:1:61", + "nodeType": "YulTypedName", + "src": "3333:1:61", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nativeSrc": "3339:3:61", + "nodeType": "YulTypedName", + "src": "3339:3:61", + "type": "" + } + ], + "src": "3299:222:61" + } + ] + }, + "contents": "{\n { }\n function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n {\n let _1 := 32\n mstore(headStart, 32)\n let length := mload(value0)\n mstore(add(headStart, 32), length)\n let i := 0\n for { } lt(i, length) { i := add(i, _1) }\n {\n mstore(add(add(headStart, i), 64), mload(add(add(value0, i), _1)))\n }\n mstore(add(add(headStart, length), 64), 0)\n tail := add(add(headStart, and(add(length, 31), not(31))), 64)\n }\n function abi_decode_address(offset) -> value\n {\n value := calldataload(offset)\n if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n }\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := calldataload(add(headStart, 32))\n }\n function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, iszero(iszero(value0)))\n }\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, value0)\n }\n function abi_decode_tuple_t_addresst_addresst_uint256(headStart, dataEnd) -> value0, value1, value2\n {\n if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n value2 := calldataload(add(headStart, 64))\n }\n function abi_encode_tuple_t_uint8__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, 0xff))\n }\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n {\n if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n }\n function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1\n {\n if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n value0 := abi_decode_address(headStart)\n value1 := abi_decode_address(add(headStart, 32))\n }\n function extract_byte_array_length(data) -> length\n {\n length := shr(1, data)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n if eq(outOfPlaceEncoding, lt(length, 32))\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n }\n function abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed(headStart, value2, value1, value0) -> tail\n {\n tail := add(headStart, 96)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n mstore(add(headStart, 32), value1)\n mstore(add(headStart, 64), value2)\n }\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n {\n tail := add(headStart, 32)\n mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n }\n function checked_add_t_uint256(x, y) -> sum\n {\n sum := add(x, y)\n if gt(x, sum)\n {\n mstore(0, shl(224, 0x4e487b71))\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n }\n}", + "id": 61, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": {}, + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50600436106100835760003560e01c806306fdde0314610088578063095ea7b3146100a657806318160ddd146100c957806323b872dd146100db578063313ce567146100ee57806370a08231146100fd57806395d89b4114610126578063a9059cbb1461012e578063dd62ed3e14610141575b600080fd5b610090610154565b60405161009d9190610525565b60405180910390f35b6100b96100b4366004610590565b6101e6565b604051901515815260200161009d565b6002545b60405190815260200161009d565b6100b96100e93660046105ba565b610200565b6040516012815260200161009d565b6100cd61010b3660046105f6565b6001600160a01b031660009081526020819052604090205490565b610090610224565b6100b961013c366004610590565b610233565b6100cd61014f366004610618565b610241565b6060600380546101639061064b565b80601f016020809104026020016040519081016040528092919081815260200182805461018f9061064b565b80156101dc5780601f106101b1576101008083540402835291602001916101dc565b820191906000526020600020905b8154815290600101906020018083116101bf57829003601f168201915b5050505050905090565b6000336101f481858561026c565b60019150505b92915050565b60003361020e85828561027e565b6102198585856102da565b506001949350505050565b6060600480546101639061064b565b6000336101f48185856102da565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6102798383836001610339565b505050565b600061028a8484610241565b905060001981146102d457818110156102c557828183604051637dc7a0d960e11b81526004016102bc93929190610685565b60405180910390fd5b6102d484848484036000610339565b50505050565b6001600160a01b038316610304576000604051634b637e8f60e11b81526004016102bc91906106a6565b6001600160a01b03821661032e57600060405163ec442f0560e01b81526004016102bc91906106a6565b61027983838361040e565b6001600160a01b03841661036357600060405163e602df0560e01b81526004016102bc91906106a6565b6001600160a01b03831661038d576000604051634a1406b160e11b81526004016102bc91906106a6565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156102d457826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161040091815260200190565b60405180910390a350505050565b6001600160a01b03831661043957806002600082825461042e91906106ba565b909155506104989050565b6001600160a01b038316600090815260208190526040902054818110156104795783818360405163391434e360e21b81526004016102bc93929190610685565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b0382166104b4576002805482900390556104d3565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161051891815260200190565b60405180910390a3505050565b60006020808352835180602085015260005b8181101561055357858101830151858201604001528201610537565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461058b57600080fd5b919050565b600080604083850312156105a357600080fd5b6105ac83610574565b946020939093013593505050565b6000806000606084860312156105cf57600080fd5b6105d884610574565b92506105e660208501610574565b9150604084013590509250925092565b60006020828403121561060857600080fd5b61061182610574565b9392505050565b6000806040838503121561062b57600080fd5b61063483610574565b915061064260208401610574565b90509250929050565b600181811c9082168061065f57607f821691505b60208210810361067f57634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b039390931683526020830191909152604082015260600190565b6001600160a01b0391909116815260200190565b808201808211156101fa57634e487b7160e01b600052601160045260246000fdfea2646970667358221220cc4ccc4ee3f389333f59a16adec6364f02a4499f2847f9bf7ab33883520c640c64736f6c63430008180033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x83 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x88 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0xA6 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0xC9 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0xDB JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0xEE JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0xFD JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x126 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x12E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x141 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x90 PUSH2 0x154 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x9D SWAP2 SWAP1 PUSH2 0x525 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xB9 PUSH2 0xB4 CALLDATASIZE PUSH1 0x4 PUSH2 0x590 JUMP JUMPDEST PUSH2 0x1E6 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x9D JUMP JUMPDEST PUSH1 0x2 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x9D JUMP JUMPDEST PUSH2 0xB9 PUSH2 0xE9 CALLDATASIZE PUSH1 0x4 PUSH2 0x5BA JUMP JUMPDEST PUSH2 0x200 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x12 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x9D JUMP JUMPDEST PUSH2 0xCD PUSH2 0x10B CALLDATASIZE PUSH1 0x4 PUSH2 0x5F6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x90 PUSH2 0x224 JUMP JUMPDEST PUSH2 0xB9 PUSH2 0x13C CALLDATASIZE PUSH1 0x4 PUSH2 0x590 JUMP JUMPDEST PUSH2 0x233 JUMP JUMPDEST PUSH2 0xCD PUSH2 0x14F CALLDATASIZE PUSH1 0x4 PUSH2 0x618 JUMP JUMPDEST PUSH2 0x241 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x3 DUP1 SLOAD PUSH2 0x163 SWAP1 PUSH2 0x64B JUMP JUMPDEST DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP1 SLOAD PUSH2 0x18F SWAP1 PUSH2 0x64B JUMP JUMPDEST DUP1 ISZERO PUSH2 0x1DC JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1B1 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x1DC JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x1BF JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x1F4 DUP2 DUP6 DUP6 PUSH2 0x26C JUMP JUMPDEST PUSH1 0x1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x20E DUP6 DUP3 DUP6 PUSH2 0x27E JUMP JUMPDEST PUSH2 0x219 DUP6 DUP6 DUP6 PUSH2 0x2DA JUMP JUMPDEST POP PUSH1 0x1 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x4 DUP1 SLOAD PUSH2 0x163 SWAP1 PUSH2 0x64B JUMP JUMPDEST PUSH1 0x0 CALLER PUSH2 0x1F4 DUP2 DUP6 DUP6 PUSH2 0x2DA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH2 0x279 DUP4 DUP4 DUP4 PUSH1 0x1 PUSH2 0x339 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x28A DUP5 DUP5 PUSH2 0x241 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 NOT DUP2 EQ PUSH2 0x2D4 JUMPI DUP2 DUP2 LT ISZERO PUSH2 0x2C5 JUMPI DUP3 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BC SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x685 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2D4 DUP5 DUP5 DUP5 DUP5 SUB PUSH1 0x0 PUSH2 0x339 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x304 JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0x4B637E8F PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BC SWAP2 SWAP1 PUSH2 0x6A6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x32E JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0xEC442F05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BC SWAP2 SWAP1 PUSH2 0x6A6 JUMP JUMPDEST PUSH2 0x279 DUP4 DUP4 DUP4 PUSH2 0x40E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x363 JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0xE602DF05 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BC SWAP2 SWAP1 PUSH2 0x6A6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x38D JUMPI PUSH1 0x0 PUSH1 0x40 MLOAD PUSH4 0x4A1406B1 PUSH1 0xE1 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BC SWAP2 SWAP1 PUSH2 0x6A6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP8 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 DUP3 SWAP1 SSTORE DUP1 ISZERO PUSH2 0x2D4 JUMPI DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 DUP5 PUSH1 0x40 MLOAD PUSH2 0x400 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x439 JUMPI DUP1 PUSH1 0x2 PUSH1 0x0 DUP3 DUP3 SLOAD PUSH2 0x42E SWAP2 SWAP1 PUSH2 0x6BA JUMP JUMPDEST SWAP1 SWAP2 SSTORE POP PUSH2 0x498 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 DUP2 LT ISZERO PUSH2 0x479 JUMPI DUP4 DUP2 DUP4 PUSH1 0x40 MLOAD PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2BC SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x685 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP3 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x4B4 JUMPI PUSH1 0x2 DUP1 SLOAD DUP3 SWAP1 SUB SWAP1 SSTORE PUSH2 0x4D3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF DUP4 PUSH1 0x40 MLOAD PUSH2 0x518 SWAP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP1 DUP4 MSTORE DUP4 MLOAD DUP1 PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x0 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x553 JUMPI DUP6 DUP2 ADD DUP4 ADD MLOAD DUP6 DUP3 ADD PUSH1 0x40 ADD MSTORE DUP3 ADD PUSH2 0x537 JUMP JUMPDEST POP PUSH1 0x0 PUSH1 0x40 DUP3 DUP7 ADD ADD MSTORE PUSH1 0x40 PUSH1 0x1F NOT PUSH1 0x1F DUP4 ADD AND DUP6 ADD ADD SWAP3 POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0x58B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x5A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5AC DUP4 PUSH2 0x574 JUMP JUMPDEST SWAP5 PUSH1 0x20 SWAP4 SWAP1 SWAP4 ADD CALLDATALOAD SWAP4 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x5CF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x5D8 DUP5 PUSH2 0x574 JUMP JUMPDEST SWAP3 POP PUSH2 0x5E6 PUSH1 0x20 DUP6 ADD PUSH2 0x574 JUMP JUMPDEST SWAP2 POP PUSH1 0x40 DUP5 ADD CALLDATALOAD SWAP1 POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x608 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x611 DUP3 PUSH2 0x574 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x62B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x634 DUP4 PUSH2 0x574 JUMP JUMPDEST SWAP2 POP PUSH2 0x642 PUSH1 0x20 DUP5 ADD PUSH2 0x574 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 DUP2 DUP2 SHR SWAP1 DUP3 AND DUP1 PUSH2 0x65F JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x67F JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP4 SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST DUP1 DUP3 ADD DUP1 DUP3 GT ISZERO PUSH2 0x1FA JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCC 0x4C 0xCC 0x4E 0xE3 RETURN DUP10 CALLER EXTCODEHASH MSIZE LOG1 PUSH11 0xDEC6364F02A4499F2847F9 0xBF PUSH27 0xB33883520C640C64736F6C63430008180033000000000000000000 ", + "sourceMap": "182:135:60:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1779:89:25;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3998:186;;;;;;:::i;:::-;;:::i;:::-;;;1169:14:61;;1162:22;1144:41;;1132:2;1117:18;3998:186:25;1004:187:61;2849:97:25;2927:12;;2849:97;;;1342:25:61;;;1330:2;1315:18;2849:97:25;1196:177:61;4776:244:25;;;;;;:::i;:::-;;:::i;2707:82::-;;;2780:2;1853:36:61;;1841:2;1826:18;2707:82:25;1711:184:61;3004:116:25;;;;;;:::i;:::-;-1:-1:-1;;;;;3095:18:25;3069:7;3095:18;;;;;;;;;;;;3004:116;1981:93;;;:::i;3315:178::-;;;;;;:::i;:::-;;:::i;3551:140::-;;;;;;:::i;:::-;;:::i;1779:89::-;1824:13;1856:5;1849:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1779:89;:::o;3998:186::-;4071:4;735:10:35;4125:31:25;735:10:35;4141:7:25;4150:5;4125:8;:31::i;:::-;4173:4;4166:11;;;3998:186;;;;;:::o;4776:244::-;4863:4;735:10:35;4919:37:25;4935:4;735:10:35;4950:5:25;4919:15;:37::i;:::-;4966:26;4976:4;4982:2;4986:5;4966:9;:26::i;:::-;-1:-1:-1;5009:4:25;;4776:244;-1:-1:-1;;;;4776:244:25:o;1981:93::-;2028:13;2060:7;2053:14;;;;;:::i;3315:178::-;3384:4;735:10:35;3438:27:25;735:10:35;3455:2:25;3459:5;3438:9;:27::i;3551:140::-;-1:-1:-1;;;;;3657:18:25;;;3631:7;3657:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3551:140::o;8726:128::-;8810:37;8819:5;8826:7;8835:5;8842:4;8810:8;:37::i;:::-;8726:128;;;:::o;10415:477::-;10514:24;10541:25;10551:5;10558:7;10541:9;:25::i;:::-;10514:52;;-1:-1:-1;;10580:16:25;:37;10576:310;;10656:5;10637:16;:24;10633:130;;;10715:7;10724:16;10742:5;10688:60;;-1:-1:-1;;;10688:60:25;;;;;;;;;;:::i;:::-;;;;;;;;10633:130;10804:57;10813:5;10820:7;10848:5;10829:16;:24;10855:5;10804:8;:57::i;:::-;10504:388;10415:477;;;:::o;5393:300::-;-1:-1:-1;;;;;5476:18:25;;5472:86;;5544:1;5517:30;;-1:-1:-1;;;5517:30:25;;;;;;;;:::i;5472:86::-;-1:-1:-1;;;;;5571:16:25;;5567:86;;5639:1;5610:32;;-1:-1:-1;;;5610:32:25;;;;;;;;:::i;5567:86::-;5662:24;5670:4;5676:2;5680:5;5662:7;:24::i;9701:432::-;-1:-1:-1;;;;;9813:19:25;;9809:89;;9884:1;9855:32;;-1:-1:-1;;;9855:32:25;;;;;;;;:::i;9809:89::-;-1:-1:-1;;;;;9911:21:25;;9907:90;;9983:1;9955:31;;-1:-1:-1;;;9955:31:25;;;;;;;;:::i;9907:90::-;-1:-1:-1;;;;;10006:18:25;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;:35;;;10051:76;;;;10101:7;-1:-1:-1;;;;;10085:31:25;10094:5;-1:-1:-1;;;;;10085:31:25;;10110:5;10085:31;;;;1342:25:61;;1330:2;1315:18;;1196:177;10085:31:25;;;;;;;;9701:432;;;;:::o;6008:1107::-;-1:-1:-1;;;;;6097:18:25;;6093:540;;6249:5;6233:12;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;6093:540:25;;-1:-1:-1;6093:540:25;;-1:-1:-1;;;;;6307:15:25;;6285:19;6307:15;;;;;;;;;;;6340:19;;;6336:115;;;6411:4;6417:11;6430:5;6386:50;;-1:-1:-1;;;6386:50:25;;;;;;;;;;:::i;6336:115::-;-1:-1:-1;;;;;6571:15:25;;:9;:15;;;;;;;;;;6589:19;;;;6571:37;;6093:540;-1:-1:-1;;;;;6647:16:25;;6643:425;;6810:12;:21;;;;;;;6643:425;;;-1:-1:-1;;;;;7021:13:25;;:9;:13;;;;;;;;;;:22;;;;;;6643:425;7098:2;-1:-1:-1;;;;;7083:25:25;7092:4;-1:-1:-1;;;;;7083:25:25;;7102:5;7083:25;;;;1342::61;;1330:2;1315:18;;1196:177;7083:25:25;;;;;;;;6008:1107;;;:::o;14:548:61:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:173::-;635:20;;-1:-1:-1;;;;;684:31:61;;674:42;;664:70;;730:1;727;720:12;664:70;567:173;;;:::o;745:254::-;813:6;821;874:2;862:9;853:7;849:23;845:32;842:52;;;890:1;887;880:12;842:52;913:29;932:9;913:29;:::i;:::-;903:39;989:2;974:18;;;;961:32;;-1:-1:-1;;;745:254:61:o;1378:328::-;1455:6;1463;1471;1524:2;1512:9;1503:7;1499:23;1495:32;1492:52;;;1540:1;1537;1530:12;1492:52;1563:29;1582:9;1563:29;:::i;:::-;1553:39;;1611:38;1645:2;1634:9;1630:18;1611:38;:::i;:::-;1601:48;;1696:2;1685:9;1681:18;1668:32;1658:42;;1378:328;;;;;:::o;1900:186::-;1959:6;2012:2;2000:9;1991:7;1987:23;1983:32;1980:52;;;2028:1;2025;2018:12;1980:52;2051:29;2070:9;2051:29;:::i;:::-;2041:39;1900:186;-1:-1:-1;;;1900:186:61:o;2091:260::-;2159:6;2167;2220:2;2208:9;2199:7;2195:23;2191:32;2188:52;;;2236:1;2233;2226:12;2188:52;2259:29;2278:9;2259:29;:::i;:::-;2249:39;;2307:38;2341:2;2330:9;2326:18;2307:38;:::i;:::-;2297:48;;2091:260;;;;;:::o;2356:380::-;2435:1;2431:12;;;;2478;;;2499:61;;2553:4;2545:6;2541:17;2531:27;;2499:61;2606:2;2598:6;2595:14;2575:18;2572:38;2569:161;;2652:10;2647:3;2643:20;2640:1;2633:31;2687:4;2684:1;2677:15;2715:4;2712:1;2705:15;2569:161;;2356:380;;;:::o;2741:345::-;-1:-1:-1;;;;;2961:32:61;;;;2943:51;;3025:2;3010:18;;3003:34;;;;3068:2;3053:18;;3046:34;2931:2;2916:18;;2741:345::o;3091:203::-;-1:-1:-1;;;;;3255:32:61;;;;3237:51;;3225:2;3210:18;;3091:203::o;3299:222::-;3364:9;;;3385:10;;;3382:133;;;3437:10;3432:3;3428:20;3425:1;3418:31;3472:4;3469:1;3462:15;3500:4;3497:1;3490:15" + }, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "decimals()": "313ce567", + "name()": "06fdde03", + "symbol()": "95d89b41", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.24+commit.e11b9ed9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"allowance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientAllowance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"needed\",\"type\":\"uint256\"}],\"name\":\"ERC20InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"approver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidApprover\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"}],\"name\":\"ERC20InvalidReceiver\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSender\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"ERC20InvalidSpender\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"ERC20InsufficientAllowance(address,uint256,uint256)\":[{\"details\":\"Indicates a failure with the `spender`\\u2019s `allowance`. Used in transfers.\",\"params\":{\"allowance\":\"Amount of tokens a `spender` is allowed to operate with.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}],\"ERC20InsufficientBalance(address,uint256,uint256)\":[{\"details\":\"Indicates an error related to the current `balance` of a `sender`. Used in transfers.\",\"params\":{\"balance\":\"Current balance for the interacting account.\",\"needed\":\"Minimum amount required to perform a transfer.\",\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidApprover(address)\":[{\"details\":\"Indicates a failure with the `approver` of a token to be approved. Used in approvals.\",\"params\":{\"approver\":\"Address initiating an approval operation.\"}}],\"ERC20InvalidReceiver(address)\":[{\"details\":\"Indicates a failure with the token `receiver`. Used in transfers.\",\"params\":{\"receiver\":\"Address to which tokens are being transferred.\"}}],\"ERC20InvalidSender(address)\":[{\"details\":\"Indicates a failure with the token `sender`. Used in transfers.\",\"params\":{\"sender\":\"Address whose tokens are being transferred.\"}}],\"ERC20InvalidSpender(address)\":[{\"details\":\"Indicates a failure with the `spender` to be approved. Used in approvals.\",\"params\":{\"spender\":\"Address that may be allowed to operate on tokens without being their owner.\"}}]},\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. NOTE: If `value` is the maximum `uint256`, the allowance is not updated on `transferFrom`. This is semantically equivalent to an infinite approval. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the default value returned by this function, unless it's overridden. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `to` cannot be the zero address. - the caller must have a balance of at least `value`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Skips emitting an {Approval} event indicating an allowance update. This is not required by the ERC. See {xref-ERC20-_approve-address-address-uint256-bool-}[_approve]. NOTE: Does not update the allowance if the current allowance is the maximum `uint256`. Requirements: - `from` and `to` cannot be the zero address. - `from` must have a balance of at least `value`. - the caller must have allowance for ``from``'s tokens of at least `value`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/NullUSD.sol\":\"NullUSD\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xbf61ab2ae1d575a17ea58fbb99ca232baddcc4e0eeea180e84cbc74b0c348b31\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4e0968705bad99747a8e5288aa008678c2be2f471f919dce3925a3cc4f1dee09\",\"dweb:/ipfs/QmbAFnCQfo4tw6ssfQSjhA5LzwHWNNryXN8bX7ty8jiqqn\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"contracts/test/NullUSD.sol\":{\"keccak256\":\"0x12ef9b970ecfc88bab7d90a137675d8411d72fe21bea3296175a8a30deea5fb2\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://6dc23e2f48957ed7f2ce7f42343ca0a6139dbfdcad56b129019c66d64e2be32c\",\"dweb:/ipfs/Qmam1c5xZQLGs9w81VsDZzLLgXLz9WWmxQn5EZVM4nRfZx\"]}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 3943, + "contract": "contracts/test/NullUSD.sol:NullUSD", + "label": "_balances", + "offset": 0, + "slot": "0", + "type": "t_mapping(t_address,t_uint256)" + }, + { + "astId": 3949, + "contract": "contracts/test/NullUSD.sol:NullUSD", + "label": "_allowances", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_address,t_mapping(t_address,t_uint256))" + }, + { + "astId": 3951, + "contract": "contracts/test/NullUSD.sol:NullUSD", + "label": "_totalSupply", + "offset": 0, + "slot": "2", + "type": "t_uint256" + }, + { + "astId": 3953, + "contract": "contracts/test/NullUSD.sol:NullUSD", + "label": "_name", + "offset": 0, + "slot": "3", + "type": "t_string_storage" + }, + { + "astId": 3955, + "contract": "contracts/test/NullUSD.sol:NullUSD", + "label": "_symbol", + "offset": 0, + "slot": "4", + "type": "t_string_storage" + } + ], + "types": { + "t_address": { + "encoding": "inplace", + "label": "address", + "numberOfBytes": "20" + }, + "t_mapping(t_address,t_mapping(t_address,t_uint256))": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => mapping(address => uint256))", + "numberOfBytes": "32", + "value": "t_mapping(t_address,t_uint256)" + }, + "t_mapping(t_address,t_uint256)": { + "encoding": "mapping", + "key": "t_address", + "label": "mapping(address => uint256)", + "numberOfBytes": "32", + "value": "t_uint256" + }, + "t_string_storage": { + "encoding": "bytes", + "label": "string", + "numberOfBytes": "32" + }, + "t_uint256": { + "encoding": "inplace", + "label": "uint256", + "numberOfBytes": "32" + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/ignition/deployments/chain-501/deployed_addresses.json b/ignition/deployments/chain-501/deployed_addresses.json index b7cd895..5a11fa6 100644 --- a/ignition/deployments/chain-501/deployed_addresses.json +++ b/ignition/deployments/chain-501/deployed_addresses.json @@ -15,5 +15,10 @@ "CancellationModule#BookingTokenProxy": "0xe55E387F5474a012D1b048155E25ea78C7DBfBBC", "CancellationModule#ManagerProxy": "0xE5B2f76C778D082b07BDd7D51FFe83E3E055B47F", "CancellationModule#BookingTokenV2Impl": "0xBf6b064c6799833C1f8261C3Fb819fFA3C740F8D", - "CancellationModule#CMAccount": "0xaA573b3942168bC5222C7aa11c6708D7f64Af374" + "CancellationModule#CMAccount": "0xaA573b3942168bC5222C7aa11c6708D7f64Af374", + "RefactorCancellationModule#BookingTokenProxy": "0xe55E387F5474a012D1b048155E25ea78C7DBfBBC", + "RefactorCancellationModule#ManagerProxy": "0xE5B2f76C778D082b07BDd7D51FFe83E3E055B47F", + "RefactorCancellationModule#BookingTokenImpl": "0x80c5D0Eb1567649e9827218672cd56a772A8B97B", + "RefactorCancellationModule#BookingTokenOperator": "0x9C4c78DbeaC83188Da9236cc3DfB06e86BE5d50c", + "RefactorCancellationModule#CMAccount": "0x7E5Aacf1aA5efA994d979D7a68DEa256aD1b5D87" } diff --git a/ignition/deployments/chain-501/journal.jsonl b/ignition/deployments/chain-501/journal.jsonl index dbef5a4..f9610a2 100644 --- a/ignition/deployments/chain-501/journal.jsonl +++ b/ignition/deployments/chain-501/journal.jsonl @@ -83,4 +83,56 @@ {"futureId":"CancellationModule#NewCMAccountImpl","networkInteraction":{"data":"0x09766da2000000000000000000000000aa573b3942168bc5222c7aa11c6708d7f64af374","id":1,"to":"0xE5B2f76C778D082b07BDd7D51FFe83E3E055B47F","type":"ONCHAIN_INTERACTION","value":{"_kind":"bigint","value":"0"}},"type":"NETWORK_INTERACTION_REQUEST"} {"futureId":"CancellationModule#NewCMAccountImpl","networkInteractionId":1,"nonce":61,"transaction":{"fees":{"maxFeePerGas":{"_kind":"bigint","value":"400000000000"},"maxPriorityFeePerGas":{"_kind":"bigint","value":"0"}},"hash":"0x4dacf626367dea0cb120a8d2096ce7aa9b09893d1514c7e840295e691f37c060"},"type":"TRANSACTION_SEND"} {"futureId":"CancellationModule#NewCMAccountImpl","hash":"0x4dacf626367dea0cb120a8d2096ce7aa9b09893d1514c7e840295e691f37c060","networkInteractionId":1,"receipt":{"blockHash":"0x2c91597362fd022fa5e6017d559958ab7f7887d474910942735ff53058ba1b8f","blockNumber":587961,"logs":[{"address":"0xE5B2f76C778D082b07BDd7D51FFe83E3E055B47F","data":"0x","logIndex":0,"topics":["0xecd599290ada9c149ae0fb600bc6ada3c103a716eadb877b5341b7d298b62d93","0x000000000000000000000000a51fd8a967b9de646270ec4ded2f53812f469a17","0x000000000000000000000000aa573b3942168bc5222c7aa11c6708d7f64af374"]}],"status":"SUCCESS"},"type":"TRANSACTION_CONFIRM"} -{"futureId":"CancellationModule#NewCMAccountImpl","result":{"type":"SUCCESS"},"type":"CALL_EXECUTION_STATE_COMPLETE"} \ No newline at end of file +{"futureId":"CancellationModule#NewCMAccountImpl","result":{"type":"SUCCESS"},"type":"CALL_EXECUTION_STATE_COMPLETE"} +{"artifactId":"RefactorCancellationModule#BookingTokenImpl","constructorArgs":[],"contractName":"BookingToken","dependencies":[],"from":"0xfe77dce375c3814f15f8035bcac1a791d3dcdf21","futureId":"RefactorCancellationModule#BookingTokenImpl","futureType":"NAMED_ARTIFACT_CONTRACT_DEPLOYMENT","libraries":{},"strategy":"basic","strategyConfig":{},"type":"DEPLOYMENT_EXECUTION_STATE_INITIALIZE","value":{"_kind":"bigint","value":"0"}} +{"futureId":"RefactorCancellationModule#BookingTokenImpl","networkInteraction":{"data":"0x60a06040523060805234801561001457600080fd5b506080516149da61003e6000396000818161224b0152818161227401526123be01526149da6000f3fe60806040526004361061024e5760003560e01c80624fdd3c1461025357806301ffc9a71461028a57806306fdde03146102ba578063081812fc146102dc578063095ea7b3146103095780630e75c1a81461032b57806312b357b51461034e57806318160ddd1461036e5780631c54f0f71461038357806323b872dd14610396578063248a9ca3146103b65780632a119380146103d65780632d3a6329146103f65780632edf5e2c146104165780632f2ff15d146104385780632f745c591461045857806336568abe146104785780633c15b31c1461049857806341431908146104c557806342842e0e146104e55780634f1ef286146105055780634f6ccce714610518578063516a82b81461053857806352d1902d1461055857806354fd4d501461056d5780636352211e1461059a57806370a08231146105ba57806374aa2048146105da57806374fe60e9146105fa57806391d148541461061a57806391da124c1461063a57806395d89b411461065a57806396591edd1461066f578063a0f07c7414610682578063a217fddf14610697578063a22cb465146106ac578063a9bc55a2146106cc578063ad3cb1cc14610700578063b191d09214610731578063b88d4fde14610751578063bb520b4714610771578063be667188146107a5578063bfb26c06146107c5578063c0c53b8b146107da578063c162d7da146107fa578063c87b56dd1461080f578063d547741f1461082f578063db2b26821461084f578063e5a6725c1461086f578063e985e9c51461088f578063f72c0d8b146108af578063f7e45f09146108d1575b600080fd5b34801561025f57600080fd5b5061027361026e366004613eed565b6108f1565b604051610281929190613f06565b60405180910390f35b34801561029657600080fd5b506102aa6102a5366004613f33565b61092e565b6040519015158152602001610281565b3480156102c657600080fd5b506102cf61093f565b6040516102819190613fa0565b3480156102e857600080fd5b506102fc6102f7366004613eed565b6109e0565b6040516102819190613fb3565b34801561031557600080fd5b50610329610324366004613fdc565b6109f5565b005b34801561033757600080fd5b50610340610a04565b604051908152602001610281565b34801561035a57600080fd5b506102aa610369366004614008565b610a19565b34801561037a57600080fd5b50610340610a8f565b610329610391366004614025565b610a9a565b3480156103a257600080fd5b506103296103b1366004614047565b610b9c565b3480156103c257600080fd5b506103406103d1366004613eed565b610bb5565b3480156103e257600080fd5b506103296103f136600461409f565b610bd5565b34801561040257600080fd5b506102aa610411366004613eed565b610c8a565b34801561042257600080fd5b5061034060008051602061496583398151915281565b34801561044457600080fd5b506103296104533660046140db565b610cb0565b34801561046457600080fd5b50610340610473366004613fdc565b610cd2565b34801561048457600080fd5b506103296104933660046140db565b610d34565b3480156104a457600080fd5b506104b86104b3366004613eed565b610d67565b604051610281919061413f565b3480156104d157600080fd5b506103296104e0366004614008565b610d8a565b3480156104f157600080fd5b50610329610500366004614047565b610dc2565b6103296105133660046141f4565b610ddd565b34801561052457600080fd5b50610340610533366004613eed565b610df8565b34801561054457600080fd5b50610329610553366004613eed565b610e59565b34801561056457600080fd5b50610340610e86565b34801561057957600080fd5b50604080516001815260006020820181905291810191909152606001610281565b3480156105a657600080fd5b506102fc6105b5366004613eed565b610ea3565b3480156105c657600080fd5b506103406105d5366004614008565b610eae565b3480156105e657600080fd5b506103296105f5366004614243565b610f06565b34801561060657600080fd5b5061032961061536600461409f565b610fb3565b34801561062657600080fd5b506102aa6106353660046140db565b61105f565b34801561064657600080fd5b50610329610655366004614289565b611095565b34801561066657600080fd5b506102cf611152565b61032961067d366004613eed565b61116f565b34801561068e57600080fd5b506102fc600081565b3480156106a357600080fd5b50610340600081565b3480156106b857600080fd5b506103296106c73660046142f0565b611329565b3480156106d857600080fd5b506106ec6106e7366004613eed565b611334565b60405161028198979695949392919061431e565b34801561070c57600080fd5b506102cf604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561073d57600080fd5b506102fc61074c366004613eed565b6113ba565b34801561075d57600080fd5b5061032961076c366004614363565b6113e6565b34801561077d57600080fd5b5061079161078c366004613eed565b6113fe565b6040516102819897969594939291906143ce565b3480156107b157600080fd5b506103296107c0366004614025565b61147a565b3480156107d157600080fd5b506102fc600181565b3480156107e657600080fd5b506103296107f5366004614426565b61152d565b34801561080657600080fd5b506102fc6116cc565b34801561081b57600080fd5b506102cf61082a366004613eed565b6116e7565b34801561083b57600080fd5b5061032961084a3660046140db565b6116f2565b34801561085b57600080fd5b5061032961086a366004614471565b61170e565b34801561087b57600080fd5b5061032961088a366004613eed565b611861565b34801561089b57600080fd5b506102aa6108aa366004614504565b611969565b3480156108bb57600080fd5b5061034060008051602061492583398151915281565b3480156108dd57600080fd5b506103296108ec366004614243565b6119a8565b60008060006108fe611a55565b6000948552600390810160205260409094209384015460049094015493946001600160a01b039094169392505050565b600061093982611a79565b92915050565b6060600061094b611a9e565b905080600001805461095c90614532565b80601f016020809104026020016040519081016040528092919081815260200182805461098890614532565b80156109d55780601f106109aa576101008083540402835291602001916109d5565b820191906000526020600020905b8154815290600101906020018083116109b857829003601f168201915b505050505091505090565b60006109eb82611ac2565b5061093982611afa565b610a00828233611b23565b5050565b600080610a0f611a55565b6002015492915050565b6000610a236116cc565b6001600160a01b03166312b357b5836040518263ffffffff1660e01b8152600401610a4e9190613fb3565b602060405180830381865afa158015610a6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610939919061456c565b600080610a0f611b30565b33610aa481611b54565b6000610aaf84611ac2565b90506000610abb611a55565b905060036000868152600480840160205260409091205460ff1690811115610ae557610ae561410b565b14610b25576000858152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c92889260ff9091169101614589565b60405180910390fd5b60008581526003820160205260408120600101546001600160a01b031690610b4e828888611b7c565b600088815260038501602090815260408083206004908101548189019093529220805460ff19169092179091559091506001600160a01b0316610b92818387611ce4565b5050505050505050565b610ba581611d92565b610bb0838383611f46565b505050565b600080610bc0611fb7565b60009384526020525050604090206001015490565b33610bdf81611b54565b6000610bea85611ac2565b90506000610bf6611a55565b905060036000878152600480840160205260409091205460ff1690811115610c2057610c2061410b565b14610c57576000868152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c92899260ff9091169101614589565b60008681526003820160205260409020600101546001600160a01b0316610c818382898989611fdb565b50505050505050565b600080610c95611a55565b60009384526003016020525050604090206006015460ff1690565b610cb982610bb5565b610cc28161211d565b610ccc8383612127565b50505050565b600080610cdd611b30565b9050610ce884610eae565b8310610d0b57838360405163295f44f760e21b8152600401610b1c9291906145a6565b6001600160a01b0384166000908152602091825260408082208583529092522054905092915050565b6001600160a01b0381163314610d5d5760405163334bd91960e11b815260040160405180910390fd5b610bb082826121c8565b600080610d72611a55565b60009384526004016020525050604090205460ff1690565b6000610d958161211d565b6000610d9f611a55565b80546001600160a01b0319166001600160a01b0394909416939093179092555050565b610bb0838383604051806020016040528060008152506113e6565b610de5612240565b610dee826122e7565b610a0082826122ff565b600080610e03611b30565b9050610e0d610a8f565b8310610e315760008360405163295f44f760e21b8152600401610b1c9291906145a6565b806002018381548110610e4657610e466145bf565b9060005260206000200154915050919050565b600080516020614965833981519152610e718161211d565b6000610e7b611a55565b600201929092555050565b6000610e906123b3565b5060008051602061494583398151915290565b600061093982611ac2565b600080610eb9611a9e565b90506001600160a01b038316610ee55760006040516322718ad960e21b8152600401610b1c9190613fb3565b6001600160a01b039092166000908152600390920160205250604090205490565b33610f1081611b54565b6000610f1b86611ac2565b90506000610f27611a55565b905060036000888152600480840160205260409091205460ff1690811115610f5157610f5161410b565b14610f88576000878152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c928a9260ff9091169101614589565b60008781526003820160205260409020600101546001600160a01b0316610b9283828a8a8a8a6123fc565b33610fbd81611b54565b6000610fc885611ac2565b90506000610fd4611a55565b905060036000878152600480840160205260409091205460ff1690811115610ffe57610ffe61410b565b14611035576000868152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c92899260ff9091169101614589565b60008681526003820160205260409020600101546001600160a01b0316610c818382898989612635565b60008061106a611fb7565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b600260006110a1612793565b8054909150600160401b900460ff16806110c8575080546001600160401b03808416911610155b156110e65760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160481b0319166001600160401b03831617600160401b17815560006111108161211d565b61111a85856127b7565b50805460ff60401b191681556040516000805160206148e5833981519152906111449084906145d5565b60405180910390a150505050565b6060600061115e611a9e565b905080600101805461095c90614532565b6111776127c9565b3361118181611b54565b600061118b611a55565b600084815260038083016020908152604092839020835160e08101855281546001600160a01b03908116808352600184015482169483019490945260028301549582019590955292810154606084015260048101549093166080830152600583015460a083015260069092015460ff16151560c08201529192503314611238578051604051632663a9c560e11b81526001600160a01b039091166004820152336024820152604401610b1c565b80604001514211156112655783816040015160405163293d73b760e11b8152600401610b1c9291906145e9565b600061127085610ea3565b905081602001516001600160a01b0316816001600160a01b0316146112af57602082015160405163103d145960e31b8152610b1c918791600401613f06565b6112be826020015133876127ff565b6112d5826080015183606001518460200151611ce4565b6000858152600484016020526040808220805460ff1916600317905551339187917fa751fb02c318279a22135a408663ae08ea45eafa950a4351c14ae543cbb950409190a35050505061132661289b565b50565b610a003383836128ac565b600080600080600080600080600061134a612951565b60009a8b5260205250506040909720600281015460039091015461ffff600160c81b830481169a600160d81b840482169a50600160e81b90930481169850808216975062010000820481169650600160201b820481169550600160301b820481169450600160401b909104169150565b6000806113c5611a55565b6000938452600301602052505060409020600401546001600160a01b031690565b6113f1848484610b9c565b610ccc3385858585612975565b6000806000806000806000806000611414612951565b60009a8b52602052505060409097206002810154815460019092015460ff600160c01b80840482169c949b506001600160a01b038084169b5084169950820481169750600160c81b820416955063ffffffff600160a01b91829004811695509104169150565b3361148481611b54565b600061148f84611ac2565b9050600061149b611a55565b905060036000868152600480840160205260409091205460ff16908111156114c5576114c561410b565b146114fc576000858152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c92889260ff9091169101614589565b60008581526003820160205260409020600101546001600160a01b031661152583828888612a8c565b505050505050565b6000611537612793565b805490915060ff600160401b82041615906001600160401b031660008115801561155e5750825b90506000826001600160401b0316600114801561157a5750303b155b905081158015611588575080155b156115a65760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b031916600117855583156115cf57845460ff60401b1916600160401b1785555b6116196040518060400160405280600c81526020016b2137b7b5b4b733aa37b5b2b760a11b815250604051806040016040528060048152602001630545249560e41b8152506127b7565b611621612c6a565b611629612c6a565b611631612c6a565b611639612c6a565b611644600088612127565b5061165d60008051602061492583398151915287612127565b506000611668611a55565b80546001600160a01b0319166001600160a01b038b16178155603c600290910155508315610b9257845460ff60401b191685556040516000805160206148e5833981519152906116ba906001906145d5565b60405180910390a15050505050505050565b6000806116d7611a55565b546001600160a01b031692915050565b606061093982612c72565b6116fb82610bb5565b6117048161211d565b610ccc83836121c8565b3361171881611b54565b61172188611b54565b600061172b611a55565b600281015490915061173d814261460d565b8811611760578781604051630999f7d760e41b8152600401610b1c9291906145e9565b60008511801561177a57506001600160a01b038616600114155b1561179b57604051638fe757e760e01b815260048101869052602401610b1c565b600182018054600091826117ae83614620565b9190505590506117be3382612d92565b6117c8818b612dac565b6117d8818c338c8c8c8c8c612e0a565b6000818152600484016020908152604091829020805460ff1916600117905581518b81529081018a90526001600160a01b0389811682840152606082018990528715156080830152915133928e169184917f1424af4f4cb40d8a1a2d00b2324cb122ba73eac426f98b62c33ff31ca045f0679160a0908290030190a45050505050505050505050565b600061186b611a55565b6000838152600382016020908152604080832060048501909252909120549192509060ff1660028160048111156118a4576118a461410b565b14806118c1575060038160048111156118bf576118bf61410b565b145b806118dd575060048160048111156118db576118db61410b565b145b156118ff57838160405163e4e3b53b60e01b8152600401610b1c929190614589565b8160020154421115611940576000848152600484016020526040808220805460ff1916600217905551859160008051602061490583398151915291a2610ccc565b815460405163d4cde2af60e01b8152610b1c9186916001600160a01b0390911690600401613f06565b600080611974611a9e565b6001600160a01b03948516600090815260059190910160209081526040808320959096168252939093525050205460ff1690565b336119b281611b54565b60006119bd86611ac2565b905060006119c9611a55565b905060036000888152600480840160205260409091205460ff16908111156119f3576119f361410b565b14611a2a576000878152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c928a9260ff9091169101614589565b60008781526003820160205260409020600101546001600160a01b0316610b9283828a8a8a8a612edc565b7f9db9d405bf15683ce835607b1f0b423dc1484d44bb9d5af64a483fa4afd8290090565b60006001600160e01b03198216637965db0b60e01b14806109395750610939826131e6565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930090565b600080611ace8361320b565b90506001600160a01b03811661093957604051637e27328960e01b815260048101849052602401610b1c565b600080611b05611a9e565b6000938452600401602052505060409020546001600160a01b031690565b610bb08383836001613234565b7f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed0090565b611b5d81610a19565b6113265780604051638014575360e01b8152600401610b1c9190613fb3565b6000336001600160a01b03851614611baa57604051636c83fb1b60e01b815260048101849052602401610b1c565b6000611bb4612951565b600085815260209190915260409020905060016002820154600160c01b900460ff166004811115611be757611be761410b565b14611c1a57838160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b80548314611c4157805460405163cc45283760e01b8152610b1c9186918690600401614639565b6001810154600160c01b900460ff16611c705760405163c84052f960e01b815260048101859052602401610b1c565b6001810154600160c81b900460ff16611c995760018101805460ff60c81b1916600160c81b1790555b60028101805460ff60c01b1916600160c21b17905560405184907f17c3690813e5ff9135b87fd91848109978b23db8e471498d18886560da7f286790600090a25490505b9392505050565b6001600160a01b038316611d2957813414611d16573482604051630145611560e21b8152600401610b1c9291906145e9565b610bb06001600160a01b0382163461333e565b6000196001600160a01b03841601611d5c573415610bb0576040516347d6729960e01b8152346004820152602401610b1c565b3415611d7d576040516347d6729960e01b8152346004820152602401610b1c565b610bb06001600160a01b0384163383856133d7565b6000611d9c611a55565b600083815260048201602052604081205491925060ff9091169080611dc085613431565b90925090506001826004811115611dd957611dd961410b565b03611e3a576000611de986611ac2565b60008781526003870160205260409020600101549091506001600160a01b039081169083163314611e2857611e2382828960636001612635565b611e37565b611e3782828960636001611fdb565b50505b6003836004811115611e4e57611e4e61410b565b1480611e6b57506002836004811115611e6957611e6961410b565b145b80611e8757506000836004811115611e8557611e8561410b565b145b15611e93575050505050565b6004836004811115611ea757611ea761410b565b03611ec957848360405163e4e3b53b60e01b8152600401610b1c929190614589565b600085815260038501602052604090206002810154421115611f1d576000868152600486016020526040808220805460ff1916600217905551879160008051602061490583398151915291a2505050505050565b805460405163d4cde2af60e01b8152610b1c9188916001600160a01b0390911690600401613f06565b6001600160a01b038216611f70576000604051633250574960e11b8152600401610b1c9190613fb3565b6000611f7d838333613485565b9050836001600160a01b0316816001600160a01b031614610ccc578382826040516364283d7b60e01b8152600401610b1c9392919061464f565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b8484611fe7828261349a565b6000611ff1612951565b600087815260209190915260409020905060016002820154600160c01b900460ff1660048111156120245761202461410b565b1461205757858160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b60028101546001600160a01b0316331461208757604051631186fdbd60e31b815260048101879052602401610b1c565b6003808201805461ffff878116600160401b0261ffff60401b19918a16600160301b029190911663ffffffff60301b199092169190911717905560028201805460ff60c01b1916600160c01b830217905550857f48e256ce3da490e3bbba80f056bb54ec3d7264f8ad7d152b77bf8c2eca3db5a5868660405161210b929190614672565b60405180910390a25050505050505050565b61132681336134da565b600080612132611fb7565b905061213e848461105f565b6121be576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556121743390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610939565b6000915050610939565b6000806121d3611fb7565b90506121df848461105f565b156121be576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610939565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806122c757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166122bb600080516020614945833981519152546001600160a01b031690565b6001600160a01b031614155b156122e55760405163703e46dd60e11b815260040160405180910390fd5b565b600080516020614925833981519152610a008161211d565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612359575060408051601f3d908101601f1916820190925261235691810190614687565b60015b6123785781604051634c9c8ce360e01b8152600401610b1c9190613fb3565b60008051602061494583398151915281146123a957604051632a87526960e21b815260048101829052602401610b1c565b610bb08383613505565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146122e55760405163703e46dd60e11b815260040160405180910390fd5b8585612408828261349a565b6000612412612951565b600088815260209190915260409020905060016002820154600160c01b900460ff1660048111156124455761244561410b565b1461247857868160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b858155600281018054336001600160a01b0319909116811790915560018201805461ffff60c01b19166001600160a01b038c81168414600160c01b0260ff60c81b191691909117908b16909214600160c81b029190911780825560038301805465ffffffff000019166201000061ffff8a81169190910261ffff60201b191691909117600160201b91891691909102179055600160a01b900463ffffffff16906014612523836146a0565b82546101009290920a63ffffffff8181021990931691831602179091556002830154600184015484546040516001600160a01b0380851696508316948d946000805160206148c5833981519152946125a39493600160c01b820460ff90811694600160c81b840490911693600160a01b93849004821693900416906146c3565b60405180910390a4600281015460038201546040518992600080516020614985833981519152926126229261ffff600160c81b8404811693600160d81b8104821693600160e81b90910482169281831692620100008304811692600160201b8104821692600160301b8204831692600160401b9092049091169061431e565b60405180910390a2505050505050505050565b8484612641828261349a565b600061264b612951565b600087815260209190915260409020905060016002820154600160c01b900460ff16600481111561267e5761267e61410b565b146126b157858160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b60028101546001600160a01b031633036126e157604051633060d8f760e21b815260048101879052602401610b1c565b60028101805460038301805461ffff88811661ffff19909216919091179091558716600160e81b0260ff60c01b191666ffff00000000ff60c01b1990911617600160c11b17808255600160a01b900463ffffffff16906014612742836146a0565b91906101000a81548163ffffffff021916908363ffffffff16021790555050857fab78ba855f2fdb28beb212a9b3f41a33cda034729848cd452f0cc96528c23a80868660405161210b929190614672565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b6127bf61355b565b610a008282613580565b60006127d36135ae565b8054909150600119016127f957604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b6001600160a01b038216612829576000604051633250574960e11b8152600401610b1c9190613fb3565b600061283783836000613485565b90506001600160a01b03811661286357604051637e27328960e01b815260048101839052602401610b1c565b836001600160a01b0316816001600160a01b031614610ccc578382826040516364283d7b60e01b8152600401610b1c9392919061464f565b60006128a56135ae565b6001905550565b60006128b6611a9e565b90506001600160a01b0383166128e15782604051630b61174360e31b8152600401610b1c9190613fb3565b6001600160a01b038481166000818152600584016020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b7f0b8fb32ffc7043fda9e0ee2bcb4236acf95ab448752c73eff6cc7f2640ff850090565b6001600160a01b0383163b15612a8557604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906129b79088908890879087906004016146ef565b6020604051808303816000875af19250505080156129f2575060408051601f3d908101601f191682019092526129ef9181019061472c565b60015b612a52573d808015612a20576040519150601f19603f3d011682016040523d82523d6000602084013e612a25565b606091505b508051600003612a4a5783604051633250574960e11b8152600401610b1c9190613fb3565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b146115255783604051633250574960e11b8152600401610b1c9190613fb3565b5050505050565b8383612a98828261349a565b6000612aa2612951565b600086815260209190915260409020905060016002820154600160c01b900460ff166004811115612ad557612ad561410b565b14612b0857848160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b80548414612b2f57805460405163cc45283760e01b8152610b1c9187918790600401614639565b6001600160a01b0387163303612b595760018101805460ff60c01b1916600160c01b179055612b6f565b60018101805460ff60c81b1916600160c81b1790555b6002810154600182015482546040516001600160a01b0380851694908416938a936000805160206148c583398151915293612bda93919260ff600160c01b8204811693600160c81b83049091169263ffffffff600160a01b93849004811693909204909116906146c3565b60405180910390a460028101546003820154604051879260008051602061498583398151915292612c599261ffff600160c81b8404811693600160d81b8104821693600160e81b90910482169281831692620100008304811692600160201b8104821692600160301b8204831692600160401b9092049091169061431e565b60405180910390a250505050505050565b6122e561355b565b60606000612c7e6135d2565b9050612c8983611ac2565b5060008381526020829052604081208054612ca390614532565b80601f0160208091040260200160405190810160405280929190818152602001828054612ccf90614532565b8015612d1c5780601f10612cf157610100808354040283529160200191612d1c565b820191906000526020600020905b815481529060010190602001808311612cff57829003601f168201915b505050505090506000612d3a60408051602081019091526000815290565b90508051600003612d4d57509392505050565b815115612d80578082604051602001612d67929190614749565b6040516020818303038152906040529350505050919050565b612d89856135f6565b95945050505050565b610a0082826040518060200160405280600081525061366a565b6000612db66135d2565b6000848152602082905260409020909150612dd183826147c0565b506040518381527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a1505050565b6000612e14611a55565b6040805160e0810182526001600160a01b039a8b168152988a166020808b019182528a8301998a5260608b01988952968b1660808b0190815260a08b0196875294151560c08b0190815260009c8d5260039384019097529a20975188546001600160a01b0319908116918b1691909117895599516001890180548c16918b169190911790559551600288015550925193850193909355905160048401805490961694169390931790935591516005830155516006909101805460ff1916911515919091179055565b8585612ee8828261349a565b6000612ef2612951565b600088815260209190915260409020905060046002820154600160c01b900460ff166004811115612f2557612f2561410b565b1480612f50575060016002820154600160c01b900460ff166004811115612f4e57612f4e61410b565b145b15612f8357868160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b60006002820154600160c01b900460ff166004811115612fa557612fa561410b565b03612fbf576001810180546001600160a01b031916331790555b338160020160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550858160000181905550886001600160a01b0316336001600160a01b0316148160010160186101000a81548160ff021916908315150217905550876001600160a01b0316336001600160a01b0316148160010160196101000a81548160ff021916908315150217905550848160020160196101000a81548161ffff021916908361ffff1602179055508381600201601b6101000a81548161ffff021916908361ffff160217905550600081600201601d6101000a81548161ffff021916908361ffff16021790555060008160030160006101000a81548161ffff021916908361ffff16021790555060008160030160026101000a81548161ffff021916908361ffff16021790555060008160030160046101000a81548161ffff021916908361ffff16021790555060008160030160066101000a81548161ffff021916908361ffff16021790555060008160030160086101000a81548161ffff021916908361ffff16021790555060018160020160186101000a81548160ff021916908360048111156131765761317661410b565b02179055506002810154600182015482546040516001600160a01b0380851694908416938c936000805160206148c5833981519152936125a393919260ff600160c01b8204811693600160c81b83049091169263ffffffff600160a01b93849004811693909204909116906146c3565b60006001600160e01b03198216632483248360e11b1480610939575061093982613682565b600080613216611a9e565b6000938452600201602052505060409020546001600160a01b031690565b600061323e611a9e565b9050818061325457506001600160a01b03831615155b1561330d57600061326485611ac2565b90506001600160a01b038416158015906132905750836001600160a01b0316816001600160a01b031614155b80156132a357506132a18185611969565b155b156132c3578360405163a9fbf51f60e01b8152600401610b1c9190613fb3565b821561330b5784866001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b600093845260040160205250506040902080546001600160a01b0319166001600160a01b0392909216919091179055565b8047101561336357478160405163cf47918160e01b8152600401610b1c9291906145e9565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146133b0576040519150601f19603f3d011682016040523d82523d6000602084013e6133b5565b606091505b5050905080610bb05760405163d6bda27560e01b815260040160405180910390fd5b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ccc9085906136a7565b60008061343c612951565b60008481526020919091526040902060020154600160c01b900460ff16613461612951565b600094855260205260409093206002015492936001600160a01b0390931692915050565b600061349284848461370f565b949350505050565b336001600160a01b038316148015906134bc5750336001600160a01b03821614155b15610a0057604051634793d28160e01b815260040160405180910390fd5b6134e4828261105f565b610a0057808260405163e2517d3f60e01b8152600401610b1c9291906145a6565b61350e8261379d565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561355357610bb082826137f9565b610a00613866565b613563613885565b6122e557604051631afcd79f60e31b815260040160405180910390fd5b61358861355b565b6000613592611a9e565b90508061359f84826147c0565b5060018101610ccc83826147c0565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b7f0542a41881ee128a365a727b282c86fa859579490b9bb45aab8503648c8e790090565b606061360182611ac2565b50600061361960408051602081019091526000815290565b905060008151116136395760405180602001604052806000815250611cdd565b806136438461389f565b604051602001613654929190614749565b6040516020818303038152906040529392505050565b6136748383613931565b610bb0336000858585612975565b60006001600160e01b0319821663780e9d6360e01b1480610939575061093982613996565b600080602060008451602086016000885af1806136ca576040513d6000823e3d81fd5b50506000513d915081156136e25780600114156136ef565b6001600160a01b0384163b155b15610ccc5783604051635274afe760e01b8152600401610b1c9190613fb3565b60008061371d8585856139e6565b90506001600160a01b03811661373b5761373684613aed565b61375e565b846001600160a01b0316816001600160a01b03161461375e5761375e8185613b26565b6001600160a01b03851661377a5761377584613bbf565b613492565b846001600160a01b0316816001600160a01b031614613492576134928585613c88565b806001600160a01b03163b6000036137ca5780604051634c9c8ce360e01b8152600401610b1c9190613fb3565b60008051602061494583398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051613816919061487f565b600060405180830381855af49150503d8060008114613851576040519150601f19603f3d011682016040523d82523d6000602084013e613856565b606091505b5091509150612d89858383613ce0565b34156122e55760405163b398979f60e01b815260040160405180910390fd5b600061388f612793565b54600160401b900460ff16919050565b606060006138ac83613d33565b60010190506000816001600160401b038111156138cb576138cb614152565b6040519080825280601f01601f1916602001820160405280156138f5576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846138ff57509392505050565b6001600160a01b03821661395b576000604051633250574960e11b8152600401610b1c9190613fb3565b600061396983836000613485565b90506001600160a01b03811615610bb05760006040516339e3563760e11b8152600401610b1c9190613fb3565b60006001600160e01b031982166380ac58cd60e01b14806139c757506001600160e01b03198216635b5e139f60e01b145b8061093957506301ffc9a760e01b6001600160e01b0319831614610939565b6000806139f1611a9e565b905060006139fe8561320b565b90506001600160a01b03841615613a1a57613a1a818587613e09565b6001600160a01b03811615613a5a57613a37600086600080613234565b6001600160a01b0381166000908152600383016020526040902080546000190190555b6001600160a01b03861615613a8b576001600160a01b03861660009081526003830160205260409020805460010190555b600085815260028301602052604080822080546001600160a01b0319166001600160a01b038a811691821790925591518893918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a495945050505050565b6000613af7611b30565b600281018054600085815260039093016020908152604084208290556001820183559183529120019190915550565b6000613b30611b30565b90506000613b3d84610eae565b60008481526001840160209081526040808320546001600160a01b03891684529186905290912091925090818314613b97576000838152602082815260408083205485845281842081905583526001870190915290208290555b6000948552600190930160209081526040808620869055928552929092528220919091555050565b6000613bc9611b30565b6002810154909150600090613be09060019061489b565b6000848152600384016020526040812054600285018054939450909284908110613c0c57613c0c6145bf565b9060005260206000200154905080846002018381548110613c2f57613c2f6145bf565b600091825260208083209091019290925582815260038601909152604080822084905586825281205560028401805480613c6b57613c6b6148ae565b600190038181906000526020600020016000905590555050505050565b6000613c92611b30565b905060006001613ca185610eae565b613cab919061489b565b6001600160a01b0390941660009081526020838152604080832087845282528083208690559482526001909301909252502055565b606082613cf557613cf082613e5f565b611cdd565b8151158015613d0c57506001600160a01b0384163b155b15613d2c5783604051639996b31560e01b8152600401610b1c9190613fb3565b5080611cdd565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310613d725772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b8310613d9c576904ee2d6d415b85acef8160201b830492506020015b662386f26fc100008310613dba57662386f26fc10000830492506010015b6305f5e1008310613dd2576305f5e100830492506008015b6127108310613de657612710830492506004015b60648310613df8576064830492506002015b600a83106109395760010192915050565b613e14838383613e88565b610bb0576001600160a01b038316613e4257604051637e27328960e01b815260048101829052602401610b1c565b818160405163177e802f60e01b8152600401610b1c9291906145a6565b805115613e6f5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b60006001600160a01b038316158015906134925750826001600160a01b0316846001600160a01b03161480613ec25750613ec28484611969565b806134925750826001600160a01b0316613edb83611afa565b6001600160a01b031614949350505050565b600060208284031215613eff57600080fd5b5035919050565b9182526001600160a01b0316602082015260400190565b6001600160e01b03198116811461132657600080fd5b600060208284031215613f4557600080fd5b8135611cdd81613f1d565b60005b83811015613f6b578181015183820152602001613f53565b50506000910152565b60008151808452613f8c816020860160208601613f50565b601f01601f19169290920160200192915050565b602081526000611cdd6020830184613f74565b6001600160a01b0391909116815260200190565b6001600160a01b038116811461132657600080fd5b60008060408385031215613fef57600080fd5b8235613ffa81613fc7565b946020939093013593505050565b60006020828403121561401a57600080fd5b8135611cdd81613fc7565b6000806040838503121561403857600080fd5b50508035926020909101359150565b60008060006060848603121561405c57600080fd5b833561406781613fc7565b9250602084013561407781613fc7565b929592945050506040919091013590565b803561ffff8116811461409a57600080fd5b919050565b6000806000606084860312156140b457600080fd5b833592506140c460208501614088565b91506140d260408501614088565b90509250925092565b600080604083850312156140ee57600080fd5b82359150602083013561410081613fc7565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b6005811061132657634e487b7160e01b600052602160045260246000fd5b6020810161414c83614121565b91905290565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261417957600080fd5b81356001600160401b038082111561419357614193614152565b604051601f8301601f19908116603f011681019082821181831017156141bb576141bb614152565b816040528381528660208588010111156141d457600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561420757600080fd5b823561421281613fc7565b915060208301356001600160401b0381111561422d57600080fd5b61423985828601614168565b9150509250929050565b6000806000806080858703121561425957600080fd5b843593506020850135925061427060408601614088565b915061427e60608601614088565b905092959194509250565b6000806040838503121561429c57600080fd5b82356001600160401b03808211156142b357600080fd5b6142bf86838701614168565b935060208501359150808211156142d557600080fd5b5061423985828601614168565b801515811461132657600080fd5b6000806040838503121561430357600080fd5b823561430e81613fc7565b91506020830135614100816142e2565b61ffff98891681529688166020880152948716604087015292861660608601529085166080850152841660a0840152831660c083015290911660e08201526101000190565b6000806000806080858703121561437957600080fd5b843561438481613fc7565b9350602085013561439481613fc7565b92506040850135915060608501356001600160401b038111156143b657600080fd5b6143c287828801614168565b91505092959194509250565b61010081016143dc8a614121565b98815260208101979097526001600160a01b0395861660408801529390941660608601529015156080850152151560a084015263ffffffff91821660c08401521660e09091015290565b60008060006060848603121561443b57600080fd5b833561444681613fc7565b9250602084013561445681613fc7565b9150604084013561446681613fc7565b809150509250925092565b600080600080600080600060e0888a03121561448c57600080fd5b873561449781613fc7565b965060208801356001600160401b038111156144b257600080fd5b6144be8a828b01614168565b965050604088013594506060880135935060808801356144dd81613fc7565b925060a0880135915060c08801356144f4816142e2565b8091505092959891949750929550565b6000806040838503121561451757600080fd5b823561452281613fc7565b9150602083013561410081613fc7565b600181811c9082168061454657607f821691505b60208210810361456657634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561457e57600080fd5b8151611cdd816142e2565b8281526040810161459983614121565b8260208301529392505050565b6001600160a01b03929092168252602082015260400190565b634e487b7160e01b600052603260045260246000fd5b6001600160401b0391909116815260200190565b918252602082015260400190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610939576109396145f7565b600060018201614632576146326145f7565b5060010190565b9283526020830191909152604082015260600190565b6001600160a01b0393841681526020810192909252909116604082015260600190565b61ffff92831681529116602082015260400190565b60006020828403121561469957600080fd5b5051919050565b600063ffffffff8083168181036146b9576146b96145f7565b6001019392505050565b9485529215156020850152901515604084015263ffffffff908116606084015216608082015260a00190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061472290830184613f74565b9695505050505050565b60006020828403121561473e57600080fd5b8151611cdd81613f1d565b6000835161475b818460208801613f50565b83519083019061476f818360208801613f50565b01949350505050565b601f821115610bb0576000816000526020600020601f850160051c810160208610156147a15750805b601f850160051c820191505b81811015611525578281556001016147ad565b81516001600160401b038111156147d9576147d9614152565b6147ed816147e78454614532565b84614778565b602080601f831160018114614822576000841561480a5750858301515b600019600386901b1c1916600185901b178555611525565b600085815260208120601f198616915b8281101561485157888601518255948401946001909101908401614832565b508582101561486f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008251614891818460208701613f50565b9190910192915050565b81810381811115610939576109396145f7565b634e487b7160e01b600052603160045260246000fdfe6aafaf6639750382d6dc665bc6a3c73d54e2076a8739a69c860a2314032eb981c7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2c47ab59d5c41a0220b594ece6f7e87863b07f8b33579130f3a59b31d8f7b6eed189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc3ae8648b97d3fd425d26286fc6bb1d50724a93a6a5763921dd2b90405a83b4a4ade2ce8b39037f5140109f53fef47c0491427b8b785ab83d35aa2931295cb790a26469706673582212205ff1ab7ed04f3284c48eefd9c84ebe5b019c0853e20741ae588d1e84fa8d725b64736f6c63430008180033","id":1,"type":"ONCHAIN_INTERACTION","value":{"_kind":"bigint","value":"0"}},"type":"NETWORK_INTERACTION_REQUEST"} +{"futureId":"RefactorCancellationModule#BookingTokenImpl","networkInteractionId":1,"nonce":344,"transaction":{"fees":{"maxFeePerGas":{"_kind":"bigint","value":"400000000000"},"maxPriorityFeePerGas":{"_kind":"bigint","value":"0"}},"hash":"0x914cfcdd583910bb2a62c48806aa2f7c8fe43fb31401a63627abd4aef4777476"},"type":"TRANSACTION_SEND"} +{"artifactId":"RefactorCancellationModule#BookingTokenOperator","constructorArgs":[],"contractName":"BookingTokenOperator","dependencies":[],"from":"0xfe77dce375c3814f15f8035bcac1a791d3dcdf21","futureId":"RefactorCancellationModule#BookingTokenOperator","futureType":"NAMED_ARTIFACT_LIBRARY_DEPLOYMENT","libraries":{},"strategy":"basic","strategyConfig":{},"type":"DEPLOYMENT_EXECUTION_STATE_INITIALIZE","value":{"_kind":"bigint","value":"0"}} +{"futureId":"RefactorCancellationModule#BookingTokenOperator","networkInteraction":{"data":"0x610e1d61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100a35760003560e01c806307e47316146100a857806321b87f3a146100ca578063348e06dd146100ea578063793dddac1461010a5780637adf63b71461012a578063a0f07c741461014a578063b54e72d814610168578063bfb26c0614610188578063c7bffa9614610190578063e4c22569146101b0578063fd13a43e146101d0575b600080fd5b8180156100b457600080fd5b506100c86100c33660046109e7565b6101f0565b005b8180156100d657600080fd5b506100c86100e5366004610a36565b610257565b8180156100f657600080fd5b506100c8610105366004610a36565b6103f9565b81801561011657600080fd5b506100c86101253660046109e7565b61045e565b81801561013657600080fd5b506100c8610145366004610a76565b61048e565b610152600081565b60405161015f9190610ac0565b60405180910390f35b81801561017457600080fd5b506100c8610183366004610ad4565b6106d6565b610152600181565b81801561019c57600080fd5b506100c86101ab366004610b2d565b610741565b8180156101bc57600080fd5b506100c86101cb366004610b7f565b610797565b8180156101dc57600080fd5b506100c86101eb366004610ad4565b61080b565b6040516254232760e71b81526001600160a01b03851690632a1193809061021f90869086908690600401610c93565b600060405180830381600087803b15801561023957600080fd5b505af115801561024d573d6000803e3d6000fd5b5050505050505050565b6040516358c8e84960e11b8152600481018390526000906001600160a01b0385169063b191d09290602401602060405180830381865afa15801561029f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102c39190610cad565b90506001600160a01b03811661033a57604051631c54f0f760e01b81526001600160a01b03851690631c54f0f79084906103039087908390600401610cd1565b6000604051808303818588803b15801561031c57600080fd5b505af1158015610330573d6000803e3d6000fd5b50505050506103f3565b6000196001600160a01b038216016103b157604051631c54f0f760e01b81526001600160a01b03851690631c54f0f79061037a9086908690600401610cd1565b600060405180830381600087803b15801561039457600080fd5b505af11580156103a8573d6000803e3d6000fd5b505050506103f3565b6103c56001600160a01b038216858461083d565b604051631c54f0f760e01b81526001600160a01b03851690631c54f0f79061021f9086908690600401610cd1565b50505050565b6040516317ccce3160e31b81526001600160a01b0384169063be667188906104279085908590600401610cd1565b600060405180830381600087803b15801561044157600080fd5b505af1158015610455573d6000803e3d6000fd5b50505050505050565b6040516374fe60e960e01b81526001600160a01b038516906374fe60e99061021f90869086908690600401610c93565b6040516213f74f60e21b81526004810184905260009081906001600160a01b03871690624fdd3c906024016040805180830381865afa1580156104d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f99190610cdf565b91509150838214610533576040516330cb9c4160e01b81526004810186905260248101839052604481018590526064015b60405180910390fd5b826001600160a01b0316816001600160a01b03161461057f5760405163107f801560e21b8152600481018690526001600160a01b0380831660248301528416604482015260640161052a565b6001600160a01b0381166105ee576040516396591edd60e01b8152600481018690526001600160a01b038716906396591edd9084906024016000604051808303818588803b1580156105d057600080fd5b505af11580156105e4573d6000803e3d6000fd5b50505050506106ce565b6000196001600160a01b0382160161065f576040516396591edd60e01b8152600481018690526001600160a01b038716906396591edd90602401600060405180830381600087803b15801561064257600080fd5b505af1158015610656573d6000803e3d6000fd5b505050506106ce565b6106736001600160a01b038216878461083d565b6040516396591edd60e01b8152600481018690526001600160a01b038716906396591edd90602401600060405180830381600087803b1580156106b557600080fd5b505af11580156106c9573d6000803e3d6000fd5b505050505b505050505050565b60405163f7e45f0960e01b81526001600160a01b0386169063f7e45f0990610708908790879087908790600401610d0f565b600060405180830381600087803b15801561072257600080fd5b505af1158015610736573d6000803e3d6000fd5b505050505050505050565b6040516339699c9760e21b8152600481018290526001600160a01b0383169063e5a6725c90602401600060405180830381600087803b15801561078357600080fd5b505af11580156106ce573d6000803e3d6000fd5b604051636d95934160e11b81526001600160a01b0389169063db2b2682906107cf908a908a908a908a908a908a908a90600401610d31565b600060405180830381600087803b1580156107e957600080fd5b505af11580156107fd573d6000803e3d6000fd5b505050505050505050505050565b604051630e95440960e31b81526001600160a01b038616906374aa204890610708908790879087908790600401610d0f565b6000836001600160a01b031663095ea7b38484604051602401610861929190610dce565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050905061089a8482610901565b6103f3576108f784856001600160a01b031663095ea7b38660006040516024016108c5929190610dce565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050610950565b6103f38482610950565b6000806000806020600086516020880160008a5af192503d91506000519050828015610946575081156109375780600114610946565b6000866001600160a01b03163b115b9695505050505050565b600080602060008451602086016000885af180610973576040513d6000823e3d81fd5b50506000513d9150811561098b578060011415610998565b6001600160a01b0384163b155b156103f35783604051635274afe760e01b815260040161052a9190610ac0565b6001600160a01b03811681146109cd57600080fd5b50565b803561ffff811681146109e257600080fd5b919050565b600080600080608085870312156109fd57600080fd5b8435610a08816109b8565b935060208501359250610a1d604086016109d0565b9150610a2b606086016109d0565b905092959194509250565b600080600060608486031215610a4b57600080fd5b8335610a56816109b8565b95602085013595506040909401359392505050565b80356109e2816109b8565b60008060008060808587031215610a8c57600080fd5b8435610a97816109b8565b935060208501359250604085013591506060850135610ab5816109b8565b939692955090935050565b6001600160a01b0391909116815260200190565b600080600080600060a08688031215610aec57600080fd5b8535610af7816109b8565b94506020860135935060408601359250610b13606087016109d0565b9150610b21608087016109d0565b90509295509295909350565b60008060408385031215610b4057600080fd5b8235610b4b816109b8565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b803580151581146109e257600080fd5b600080600080600080600080610100898b031215610b9c57600080fd5b8835610ba7816109b8565b97506020890135610bb7816109b8565b965060408901356001600160401b0380821115610bd357600080fd5b818b0191508b601f830112610be757600080fd5b813581811115610bf957610bf9610b59565b604051601f8201601f19908116603f01168101908382118183101715610c2157610c21610b59565b816040528281528e6020848701011115610c3a57600080fd5b82602086016020830137600060208483010152809a5050505050506060890135945060808901359350610c6f60a08a01610a6b565b925060c08901359150610c8460e08a01610b6f565b90509295985092959890939650565b92835261ffff918216602084015216604082015260600190565b600060208284031215610cbf57600080fd5b8151610cca816109b8565b9392505050565b918252602082015260400190565b60008060408385031215610cf257600080fd5b825191506020830151610d04816109b8565b809150509250929050565b938452602084019290925261ffff908116604084015216606082015260800190565b60018060a01b03881681526000602060e0602084015288518060e085015260005b81811015610d6f578a810183015185820161010001528201610d52565b506101009150600082828601015281601f19601f83011685010192505050866040830152856060830152610dae60808301866001600160a01b03169052565b8360a0830152610dc260c083018415159052565b98975050505050505050565b6001600160a01b0392909216825260208201526040019056fea264697066735822122084540fefd928b98a6276d315bd50a8a3f0275ecdfc9709a3251b9e5780a0e80b64736f6c63430008180033","id":1,"type":"ONCHAIN_INTERACTION","value":{"_kind":"bigint","value":"0"}},"type":"NETWORK_INTERACTION_REQUEST"} +{"futureId":"RefactorCancellationModule#BookingTokenOperator","networkInteractionId":1,"nonce":345,"transaction":{"fees":{"maxFeePerGas":{"_kind":"bigint","value":"400000000000"},"maxPriorityFeePerGas":{"_kind":"bigint","value":"0"}},"hash":"0x32ac8c01cb669e3a796c05743280f796bb2318dc1e6996020baae64cb71e1927"},"type":"TRANSACTION_SEND"} +{"artifactId":"RefactorCancellationModule#BookingTokenProxy","contractAddress":"0xe55E387F5474a012D1b048155E25ea78C7DBfBBC","contractName":"BookingToken","dependencies":[],"futureId":"RefactorCancellationModule#BookingTokenProxy","futureType":"NAMED_ARTIFACT_CONTRACT_AT","strategy":"basic","strategyConfig":{},"type":"CONTRACT_AT_EXECUTION_STATE_INITIALIZE"} +{"artifactId":"RefactorCancellationModule#ManagerProxy","contractAddress":"0xE5B2f76C778D082b07BDd7D51FFe83E3E055B47F","contractName":"CMAccountManager","dependencies":[],"futureId":"RefactorCancellationModule#ManagerProxy","futureType":"NAMED_ARTIFACT_CONTRACT_AT","strategy":"basic","strategyConfig":{},"type":"CONTRACT_AT_EXECUTION_STATE_INITIALIZE"} +{"futureId":"RefactorCancellationModule#BookingTokenImpl","hash":"0x914cfcdd583910bb2a62c48806aa2f7c8fe43fb31401a63627abd4aef4777476","networkInteractionId":1,"receipt":{"blockHash":"0x3ea212a6b171c0af42f0879fb68e50c91bd2ece2d6cc8175279d6589692d2a1a","blockNumber":626230,"contractAddress":"0x67d6f53200cbd280c76DB4E8ECb516d1b2120e7f","logs":[],"status":"SUCCESS"},"type":"TRANSACTION_CONFIRM"} +{"futureId":"RefactorCancellationModule#BookingTokenImpl","result":{"address":"0x67d6f53200cbd280c76DB4E8ECb516d1b2120e7f","type":"SUCCESS"},"type":"DEPLOYMENT_EXECUTION_STATE_COMPLETE"} +{"futureId":"RefactorCancellationModule#BookingTokenOperator","hash":"0x32ac8c01cb669e3a796c05743280f796bb2318dc1e6996020baae64cb71e1927","networkInteractionId":1,"receipt":{"blockHash":"0x4f18f97b8c4b33d84683450fcfa710b2f3114d05333c02c97a46ccb8eb82c89b","blockNumber":626231,"contractAddress":"0xABB4B54578F94652225949501F88C1bb8C8c75d0","logs":[],"status":"SUCCESS"},"type":"TRANSACTION_CONFIRM"} +{"futureId":"RefactorCancellationModule#BookingTokenOperator","result":{"address":"0xABB4B54578F94652225949501F88C1bb8C8c75d0","type":"SUCCESS"},"type":"DEPLOYMENT_EXECUTION_STATE_COMPLETE"} +{"args":["0x67d6f53200cbd280c76DB4E8ECb516d1b2120e7f","0x"],"artifactId":"RefactorCancellationModule#BookingTokenProxy","contractAddress":"0xe55E387F5474a012D1b048155E25ea78C7DBfBBC","dependencies":["RefactorCancellationModule#BookingTokenProxy","RefactorCancellationModule#BookingTokenImpl"],"from":"0xfe77dce375c3814f15f8035bcac1a791d3dcdf21","functionName":"upgradeToAndCall","futureId":"RefactorCancellationModule#BookingTokenProxy.upgradeToAndCall","strategy":"basic","strategyConfig":{},"type":"CALL_EXECUTION_STATE_INITIALIZE","value":{"_kind":"bigint","value":"0"}} +{"futureId":"RefactorCancellationModule#BookingTokenProxy.upgradeToAndCall","networkInteraction":{"data":"0x4f1ef28600000000000000000000000067d6f53200cbd280c76db4e8ecb516d1b2120e7f00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000","id":1,"to":"0xe55E387F5474a012D1b048155E25ea78C7DBfBBC","type":"ONCHAIN_INTERACTION","value":{"_kind":"bigint","value":"0"}},"type":"NETWORK_INTERACTION_REQUEST"} +{"artifactId":"RefactorCancellationModule#CMAccount","constructorArgs":[],"contractName":"CMAccount","dependencies":["RefactorCancellationModule#BookingTokenOperator"],"from":"0xfe77dce375c3814f15f8035bcac1a791d3dcdf21","futureId":"RefactorCancellationModule#CMAccount","futureType":"NAMED_ARTIFACT_CONTRACT_DEPLOYMENT","libraries":{"BookingTokenOperator":"0xABB4B54578F94652225949501F88C1bb8C8c75d0"},"strategy":"basic","strategyConfig":{},"type":"DEPLOYMENT_EXECUTION_STATE_INITIALIZE","value":{"_kind":"bigint","value":"0"}} +{"futureId":"RefactorCancellationModule#CMAccount","networkInteraction":{"data":"0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516155896200010460003960008181612f7001528181612f99015261330301526155896000f3fe60806040526004361061039d5760003560e01c806301ffc9a7146103a957806308564c19146103de5780630ede80d614610400578063136f50ca14610430578063150b7a021461045257806318274da4146104965780631aca6376146104b65780631c54f0f7146104d85780631c5db99e146104f857806320606b701461051857806321b9b9291461053a578063241bbbfc14610568578063248a9ca31461057d5780632a1193801461059d5780632f2ff15d146105bd578063319d13f3146105dd57806333746274146105fd57806333e1a2231461061f57806336568abe1461063f578063383aba871461065f57806339e4c7051461068157806341bf7c69146106a157806342072bbd146106c1578063432cf639146106d65780634781ae53146106f65780634f1ef286146107165780634f3f46391461072957806351889d6b1461074b57806352d1902d1461076b5780635c988994146107805780635e07f869146107a057806363e86cc8146107c0578063647d8f6d146107e2578063658db0af146108025780636d69fcaf146108255780636fc22cd11461084557806374aa20481461086557806374fe60e9146108855780637512e55b146108a557806376319190146108c55780637eec56c7146108e5578063852b3ccb14610908578063857cdbb81461092a57806385f438c1146109575780638c20f574146109795780638f69347d146109995780639010d07c146109b957806391d14854146109d9578063930659eb146109f95780639db5dbe414610a29578063a217fddf14610a49578063a31aa03914610a5e578063a3246ad314610a7e578063a7d022f814610aab578063ad3cb1cc14610acb578063b512463514610afc578063be66718814610b1c578063c162d7da14610b3c578063c39409e114610b51578063c6640e6814610b66578063c7b5914f14610b86578063ca15c87314610ba6578063ccde65dc14610bc6578063cd9ef91414610be6578063d09445c214610c06578063d3c7c2c714610c28578063d547741f14610c3d578063da47d85614610c5d578063e0b78add14610c8a578063e26a61bb14610caa578063e5a6725c14610cca578063e7bfce9a14610cea578063e96cf7ad14610d0a578063ea79d07a14610d1f578063eb5ea27314610d34578063ebc20d2014610d54578063ed24911d14610d74578063ee3b641f14610d89578063f3fef3a314610da9578063f51acaea14610dc9578063f72c0d8b14610de9578063f7e45f0914610e0b57600080fd5b366103a457005b600080fd5b3480156103b557600080fd5b506103c96103c4366004614431565b610e2b565b60405190151581526020015b60405180910390f35b3480156103ea57600080fd5b506103f3610e56565b6040516103d59190614505565b34801561040c57600080fd5b506104226000805160206154f483398151915281565b6040519081526020016103d5565b34801561043c57600080fd5b50610445610f80565b6040516103d59190614518565b34801561045e57600080fd5b5061047d61046d366004614634565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020016103d5565b3480156104a257600080fd5b506104226104b136600461469f565b610fa0565b3480156104c257600080fd5b506104d66104d13660046146d3565b610fae565b005b3480156104e457600080fd5b506104d66104f3366004614714565b61105b565b34801561050457600080fd5b506104d66105133660046147d4565b6110ff565b34801561052457600080fd5b5061042260008051602061551483398151915281565b34801561054657600080fd5b5061055a610555366004614808565b6111b7565b6040516103d59291906148a3565b34801561057457600080fd5b506103c9611380565b34801561058957600080fd5b506104226105983660046148bc565b611398565b3480156105a957600080fd5b506104d66105b83660046148ec565b6113b8565b3480156105c957600080fd5b506104d66105d8366004614928565b61145e565b3480156105e957600080fd5b506103f36105f836600461469f565b611480565b34801561060957600080fd5b506104226000805160206154b483398151915281565b34801561062b57600080fd5b506104d661063a366004614958565b61148e565b34801561064b57600080fd5b506104d661065a366004614928565b61164a565b34801561066b57600080fd5b5061042260008051602061541483398151915281565b34801561068d57600080fd5b506104d661069c3660046147d4565b61167d565b3480156106ad57600080fd5b506104d66106bc3660046149c0565b611723565b3480156106cd57600080fd5b5061044561179b565b3480156106e257600080fd5b506104d66106f1366004614a12565b6117b2565b34801561070257600080fd5b50610422610711366004614a87565b611823565b6104d6610724366004614af5565b6118a5565b34801561073557600080fd5b5061073e6118c4565b6040516103d59190614b44565b34801561075757600080fd5b506104d6610766366004614b58565b6118e2565b34801561077757600080fd5b50610422611995565b34801561078c57600080fd5b506104d661079b3660046148bc565b6119b2565b3480156107ac57600080fd5b506103f36107bb3660046148bc565b6119f0565b3480156107cc57600080fd5b5061042260008051602061543483398151915281565b3480156107ee57600080fd5b506104d66107fd366004614808565b611af8565b34801561080e57600080fd5b50610817611cfa565b6040516103d5929190614b84565b34801561083157600080fd5b506104d6610840366004614b92565b611d1c565b34801561085157600080fd5b506104d6610860366004614714565b611d3d565b34801561087157600080fd5b506104d6610880366004614baf565b611d5f565b34801561089157600080fd5b506104d66108a03660046148ec565b611e17565b3480156108b157600080fd5b506104d66108c0366004614bf5565b611e51565b3480156108d157600080fd5b506104d66108e0366004614b92565b611ec0565b3480156108f157600080fd5b506108fa611ee1565b6040516103d5929190614ccc565b34801561091457600080fd5b5061042260008051602061553483398151915281565b34801561093657600080fd5b5061094a610945366004614b92565b6120a6565b6040516103d59190614d3e565b34801561096357600080fd5b506104226000805160206154d483398151915281565b34801561098557600080fd5b506104d6610994366004614bf5565b61218b565b3480156109a557600080fd5b506103c96109b43660046148bc565b6121fa565b3480156109c557600080fd5b5061073e6109d4366004614714565b61222b565b3480156109e557600080fd5b506103c96109f4366004614928565b612259565b348015610a0557600080fd5b50610a19610a14366004614d51565b61228f565b6040516103d59493929190614d7f565b348015610a3557600080fd5b506104d6610a443660046146d3565b6122e6565b348015610a5557600080fd5b50610422600081565b348015610a6a57600080fd5b506104d6610a79366004614d9a565b612339565b348015610a8a57600080fd5b50610a9e610a993660046148bc565b61235a565b6040516103d59190614db7565b348015610ab757600080fd5b506104d6610ac6366004614df8565b612387565b348015610ad757600080fd5b5061094a604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610b0857600080fd5b506103c9610b1736600461469f565b6123f8565b348015610b2857600080fd5b506104d6610b37366004614714565b612406565b348015610b4857600080fd5b5061073e612440565b348015610b5d57600080fd5b5061042261245b565b348015610b7257600080fd5b506104d6610b81366004614b92565b612470565b348015610b9257600080fd5b50610422610ba1366004614a87565b61250b565b348015610bb257600080fd5b50610422610bc13660046148bc565b612547565b348015610bd257600080fd5b506104d6610be1366004614af5565b61256c565b348015610bf257600080fd5b506104d6610c01366004614e3e565b61258e565b348015610c1257600080fd5b5061042260008051602061549483398151915281565b348015610c3457600080fd5b50610a9e612646565b348015610c4957600080fd5b506104d6610c58366004614928565b612660565b348015610c6957600080fd5b50610c7d610c783660046148bc565b61267c565b6040516103d59190614e77565b348015610c9657600080fd5b506103c9610ca5366004614b92565b6127a5565b348015610cb657600080fd5b506104d6610cc5366004614e8a565b6127bf565b348015610cd657600080fd5b506104d6610ce53660046148bc565b61285d565b348015610cf657600080fd5b506104d6610d05366004614b92565b6128e9565b348015610d1657600080fd5b5061042261290a565b348015610d2b57600080fd5b50610a9e61291f565b348015610d4057600080fd5b50610422610d4f3660046148bc565b612939565b348015610d6057600080fd5b506104d6610d6f366004614f1d565b612964565b348015610d8057600080fd5b506104226129d1565b348015610d9557600080fd5b50610817610da4366004614b92565b6129dc565b348015610db557600080fd5b506104d6610dc4366004614b58565b612a17565b348015610dd557600080fd5b506104d6610de436600461469f565b612a9f565b348015610df557600080fd5b5061042260008051602061545483398151915281565b348015610e1757600080fd5b506104d6610e26366004614baf565b612b0a565b60006001600160e01b03198216635a05180f60e01b1480610e505750610e5082612b44565b92915050565b60606000610e62610f80565b9050600081516001600160401b03811115610e7f57610e7f614571565b604051908082528060200260200182016040528015610eb257816020015b6060815260200190600190039081610e9d5790505b50905060005b8251811015610f7957610ec9612440565b6001600160a01b0316635a81a626848381518110610ee957610ee9614f76565b60200260200101516040518263ffffffff1660e01b8152600401610f0f91815260200190565b600060405180830381865afa158015610f2c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f549190810190614f8c565b828281518110610f6657610f66614f76565b6020908102919091010152600101610eb8565b5092915050565b60606000610f8c612b79565b9050610f9a81600901612b9d565b91505090565b6000610e50610d4f83612baa565b6000805160206154d4833981519152610fc681612c20565b6001600160a01b038316610fed57604051633a954ecd60e21b815260040160405180910390fd5b604051632142170760e11b81523060048201526001600160a01b038481166024830152604482018490528516906342842e0e90606401600060405180830381600087803b15801561103d57600080fd5b505af1158015611051573d6000803e3d6000fd5b5050505050505050565b60008051602061553483398151915261107381612c20565b73ABB4B54578F94652225949501F88C1bb8C8c75d06321b87f3a6110956118c4565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018690526044810185905260640160006040518083038186803b1580156110e257600080fd5b505af41580156110f6573d6000803e3d6000fd5b50505050505050565b60008051602061549483398151915261111781612c20565b60005b82518110156111b257600061114784838151811061113a5761113a614f76565b6020026020010151612baa565b905061115281612c2a565b83828151811061116457611164614f76565b60200260200101516040516111799190614ff9565b604051908190038120907f50cc5f9d56177aa0de269c136f2d2ffd45d7b66c82f0a82f8f840db54d9801f890600090a25060010161111a565b505050565b6000806001600160a01b038a1630146111ee5789604051637b7d696f60e01b81526004016111e59190614b44565b60405180910390fd5b6111f6612440565b6001600160a01b03166312b357b58a6040518263ffffffff1660e01b81526004016112219190614b44565b602060405180830381865afa15801561123e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112629190615015565b6112815788604051633f2c64af60e01b81526004016111e59190614b44565b8342106112a457604051636453b2e560e01b8152600481018590526024016111e5565b6112b48a8a8a8a8a8a8a8a612c68565b91506112bf826127a5565b6112de578160405163248d101d60e11b81526004016111e59190614b44565b60006112e8612c94565b6001600160a01b03808516600090815260208381526040808320938e1683529290522060018101549192509088101561133b5760018101546040516307c83fcf60e41b81526111e5918a91600401614b84565b80548911611360578054604051632256490160e11b81526111e5918b91600401614b84565b600181015461136f9089615048565b925050509850989650505050505050565b60008061138b612b79565b6003015460ff1692915050565b6000806113a3612cb8565b60009384526020525050604090206001015490565b6000805160206155348339815191526113d081612c20565b73ABB4B54578F94652225949501F88C1bb8C8c75d06307e473166113f26118c4565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024810187905261ffff80871660448301528516606482015260840160006040518083038186803b15801561144a57600080fd5b505af4158015611051573d6000803e3d6000fd5b61146782611398565b61147081612c20565b61147a8383612cdc565b50505050565b6060610e506107bb83612baa565b6000611498612d1e565b805490915060ff600160401b82041615906001600160401b03166000811580156114bf5750825b90506000826001600160401b031660011480156114db5750303b155b9050811580156114e9575080155b156115075760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b0319166001178555831561153057845460ff60401b1916600160401b1785555b611538612d42565b611540612d42565b611548612d4c565b611553600088612cdc565b5061156c60008051602061549483398151915288612cdc565b506115856000805160206154b483398151915288612cdc565b5061159e60008051602061545483398151915287612cdc565b5060006115a9612de6565b80546001600160a01b03808e166001600160a01b0319928316178355600183018054918e1691909216179055600281018a90559050678ac7230489e80000620151806115f58282612e0a565b505050831561163e57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b6001600160a01b03811633146116735760405163334bd91960e11b815260040160405180910390fd5b6111b28282612e2d565b60008051602061549483398151915261169581612c20565b60005b82518110156111b25760006116b884838151811061113a5761113a614f76565b90506116c381612e66565b8382815181106116d5576116d5614f76565b60200260200101516040516116ea9190614ff9565b604051908190038120907f0edb7a081e6ff720ad9e97b837c352ef0548c4d09ec421b9b930b1e0c708e39e90600090a250600101611698565b60008051602061549483398151915261173b81612c20565b61174d61174784612baa565b83612ea4565b8260405161175b9190614ff9565b604051908190038120838252907fdd6c54a4503e1d8a1e75d73648f77d8fe66234b437ce30e20edd51563116ec41906020015b60405180910390a2505050565b606060006117a7612b79565b9050610f9a81612b9d565b6000805160206154948339815191526117ca81612c20565b6117de6117d686612baa565b858486612ecd565b846040516117ec9190614ff9565b604051908190038120907f763f2f41e0c407dd0a7067f44e5468a0db74da9fdb6cd1cb20c7b6dae937527990600090a25050505050565b604080516000805160206154f483398151915260208201526001600160a01b03808a16928201929092528188166060820152908616608082015260a0810185905260c0810184905260e081018390526101008101829052600090610120015b604051602081830303815290604052805190602001209050979650505050505050565b6118ad612f65565b6118b682612ff3565b6118c08282613136565b5050565b6000806118cf612de6565b600101546001600160a01b031692915050565b6000805160206154b48339815191526118fa81612c20565b611903826131ea565b61191b60008051602061543483398151915284612cdc565b5061193460008051602061553483398151915284612cdc565b5061194d60008051602061541483398151915284612cdc565b506040516001600160a01b038416907fdb3e11ba26e83d528bf96a2167061674c1ce7777c61376d852d172594a87399490600090a26111b26001600160a01b0384168361325f565b600061199f6132f8565b5060008051602061547483398151915290565b6119ba613341565b6000805160206154148339815191526119d281612c20565b6119db826131ea565b6119e482613377565b506119ed6134a4565b50565b606060006119fc612b79565b9050611a0883826134b5565b806002016000848152602001908152602001600020600201805480602002602001604051908101604052809291908181526020016000905b82821015611aec578382906000526020600020018054611a5f9061505b565b80601f0160208091040260200160405190810160405280929190818152602001828054611a8b9061505b565b8015611ad85780601f10611aad57610100808354040283529160200191611ad8565b820191906000526020600020905b815481529060010190602001808311611abb57829003601f168201915b505050505081526020019060010190611a40565b50505050915050919050565b611b00613341565b600080611b138a8a8a8a8a8a8a8a6111b7565b91509150611b258289898989896134df565b6000612710611b32612440565b6001600160a01b0316633c5559386040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b939190615095565b611b9d90846150ae565b611ba791906150c5565b90506000611bb58284615048565b90508a6001600160a01b03168c6001600160a01b031614611bf7576000611bda612c94565b905083816001016000828254611bf091906150e7565b9091555050505b611c7382611c03612440565b6001600160a01b0316630470d3ac6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6491906150fa565b6001600160a01b03169061325f565b611c866001600160a01b038c168261325f565b604080516001600160a01b0386811682528c811660208301529181018b9052606081018a90526080810183905260a08101849052818d16918e16907f4ebd6343a4ae90ea9a2add4327d0439de765f4b8bbb691caaf0875ef36c54e819060c00160405180910390a3505050506110516134a4565b6000806000611d0761354a565b90508060020154816003015492509250509091565b600080516020615494833981519152611d3481612c20565b6118c08261356e565b6000805160206154b4833981519152611d5581612c20565b6111b283836135e4565b600080516020615534833981519152611d7781612c20565b73ABB4B54578F94652225949501F88C1bb8C8c75d063fd13a43e611d996118c4565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018890526044810187905261ffff80871660648301528516608482015260a40160006040518083038186803b158015611df857600080fd5b505af4158015611e0c573d6000803e3d6000fd5b505050505050505050565b600080516020615534833981519152611e2f81612c20565b73ABB4B54578F94652225949501F88C1bb8C8c75d063793dddac6113f26118c4565b600080516020615494833981519152611e6981612c20565b611e7b611e7584612baa565b8361363e565b82604051611e899190614ff9565b60405180910390207f498a5f4e6f3921f63e6863032989bdb7bb41e5cf5cbde5437c7322c5c8dc46bf8360405161178e9190614d3e565b600080516020615494833981519152611ed881612c20565b6118c082613682565b6060806000611eee61179b565b9050600081516001600160401b03811115611f0b57611f0b614571565b604051908082528060200260200182016040528015611f3e57816020015b6060815260200190600190039081611f295790505b509050600082516001600160401b03811115611f5c57611f5c614571565b604051908082528060200260200182016040528015611f9557816020015b611f82614332565b815260200190600190039081611f7a5790505b50905060005b835181101561209b57611fac612440565b6001600160a01b0316635a81a626858381518110611fcc57611fcc614f76565b60200260200101516040518263ffffffff1660e01b8152600401611ff291815260200190565b600060405180830381865afa15801561200f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526120379190810190614f8c565b83828151811061204957612049614f76565b602002602001018190525061207684828151811061206957612069614f76565b602002602001015161267c565b82828151811061208857612088614f76565b6020908102919091010152600101611f9b565b509094909350915050565b606060006120b2612b79565b90506120c160068201846136f8565b6120e0578260405163ba650b5f60e01b81526004016111e59190614b44565b6001600160a01b0383166000908152600882016020526040902080546121059061505b565b80601f01602080910402602001604051908101604052809291908181526020018280546121319061505b565b801561217e5780601f106121535761010080835404028352916020019161217e565b820191906000526020600020905b81548152906001019060200180831161216157829003601f168201915b5050505050915050919050565b6000805160206154948339815191526121a381612c20565b6121b56121af84612baa565b8361370d565b826040516121c39190614ff9565b60405180910390207fba851faec9e30a9961f0adb49fe025cda6c8d7d0fb9bad99f89c37d0570232648360405161178e9190614d3e565b600080612205612b79565b905061221183826134b5565b600092835260020160205250604090206001015460ff1690565b60008061223661383c565b60008581526020829052604090209091506122519084613860565b949350505050565b600080612264612cb8565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b600080600080600061229f612c94565b6001600160a01b0397881660009081526020918252604080822098909916815296905250505092909120805460018201546002830154600390930154919590945091925090565b6000805160206154d48339815191526122fe81612c20565b6001600160a01b03831661232557604051633a954ecd60e21b815260040160405180910390fd5b61147a6001600160a01b038516848461386c565b60008051602061549483398151915261235181612c20565b6118c0826138c4565b6060600061236661383c565b600084815260208290526040902090915061238090612b9d565b9392505050565b60008051602061549483398151915261239f81612c20565b6123b16123ab84612baa565b8361391b565b826040516123bf9190614ff9565b6040519081900381208315158252907f23960b931eb4b63e2e47d040f51cc0de6eef2e865639eb674fbb1890ece3a0ab9060200161178e565b6000610e506109b483612baa565b60008051602061553483398151915261241e81612c20565b73ABB4B54578F94652225949501F88C1bb8C8c75d063348e06dd6110956118c4565b60008061244b612de6565b546001600160a01b031692915050565b600080612466612de6565b6002015492915050565b6000805160206154b483398151915261248881612c20565b6124a060008051602061543483398151915283612e2d565b506124b960008051602061553483398151915283612e2d565b506124d260008051602061541483398151915283612e2d565b506040516001600160a01b038316907fd124523a9cfa28c5dd01826c4fa56192ec7d56859943082e0ca46c3b9dc6291390600090a25050565b60006125156129d1565b61252489898989898989611823565b60405161190160f01b602082015260228101929092526042820152606201611882565b60008061255261383c565b600084815260208290526040902090915061238090613955565b60008051602061549483398151915261258481612c20565b6111b2838361395f565b612596613341565b6000805160206155348339815191526125ae81612c20565b73ABB4B54578F94652225949501F88C1bb8C8c75d0637adf63b76125d06118c4565b6040516001600160e01b031960e084901b1681526001600160a01b0391821660048201526024810188905260448101879052908516606482015260840160006040518083038186803b15801561262557600080fd5b505af4158015612639573d6000803e3d6000fd5b50505050506111b26134a4565b60606000612652612b79565b9050610f9a60048201612b9d565b61266982611398565b61267281612c20565b61147a8383612e2d565b612684614332565b600061268e612b79565b905061269a83826134b5565b6000838152600280830160209081526040808420815160608101835281548152600182015460ff161515818501529381018054835181860281018601855281815295969295938701949192909184015b828210156127965783829060005260206000200180546127099061505b565b80601f01602080910402602001604051908101604052809291908181526020018280546127359061505b565b80156127825780601f1061275757610100808354040283529160200191612782565b820191906000526020600020905b81548152906001019060200180831161276557829003601f168201915b5050505050815260200190600101906126ea565b50505091525090949350505050565b6000610e5060008051602061543483398151915283612259565b6000805160206155348339815191526127d781612c20565b73ABB4B54578F94652225949501F88C1bb8C8c75d063e4c225696127f96118c4565b8a8a8a8a8a8a8a6040518963ffffffff1660e01b8152600401612823989796959493929190615117565b60006040518083038186803b15801561283b57600080fd5b505af415801561284f573d6000803e3d6000fd5b505050505050505050505050565b60008051602061553483398151915261287581612c20565b73ABB4B54578F94652225949501F88C1bb8C8c75d063c7bffa966128976118c4565b846040518363ffffffff1660e01b81526004016128b59291906148a3565b60006040518083038186803b1580156128cd57600080fd5b505af41580156128e1573d6000803e3d6000fd5b505050505050565b60008051602061549483398151915261290181612c20565b6118c0826139fb565b600080612915612c94565b6001015492915050565b6060600061292b612b79565b9050610f9a81600601612b9d565b600080612944612b79565b905061295083826134b5565b600092835260020160205250604090205490565b60008051602061549483398151915261297c81612c20565b61298e61298884612baa565b83613a94565b8260405161299c9190614ff9565b604051908190038120907fd52aef6010d6b6303240865274298b7c5784b14ebf9df788047b34c69c53137190600090a2505050565b600080612466612c94565b60008060006129e961354a565b6001600160a01b03909416600090815260208581526040808320546001909701909152902054939492505050565b612a1f613341565b6000805160206154d4833981519152612a3781612c20565b612a40826131ea565b612a536001600160a01b0384168361325f565b826001600160a01b03167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a942436483604051612a8e91815260200190565b60405180910390a2506118c06134a4565b600080516020615494833981519152612ab781612c20565b612ac8612ac383612baa565b613ad2565b81604051612ad69190614ff9565b604051908190038120907f52f6e0779195109314dfb8cf301d33491c63f136afac4c5d4f35aa934b25481390600090a25050565b600080516020615534833981519152612b2281612c20565b73ABB4B54578F94652225949501F88C1bb8C8c75d063b54e72d8611d996118c4565b60006001600160e01b03198216637965db0b60e01b1480610e5057506301ffc9a760e01b6001600160e01b0319831614610e50565b7ff2856e5e1b7689dcde1bb551fd115c3cad8d243ea609d47a46b4d22ee58d300090565b6060600061238083613b3b565b6000612bb4612440565b6001600160a01b031663352af39a836040518263ffffffff1660e01b8152600401612bdf9190614d3e565b602060405180830381865afa158015612bfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e509190615095565b6119ed8133613b97565b6000612c34612b79565b90506000612c456009830184613bc2565b9050806111b257604051631a1e056960e01b8152600481018490526024016111e5565b600080612c7a8a8a8a8a8a8a8a61250b565b9050612c868184613bce565b9a9950505050505050505050565b7f175f7e400d42af44d9ebd24e9efee8a2c4ed78ddf46a83e51a493ae382c8760090565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b600080612ce761383c565b90506000612cf58585613bf8565b90508015612251576000858152602083905260409020612d159085613c99565b50949350505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b612d4a613cae565b565b612d54613cae565b6000612d5e612c94565b604051909150612dc690600080516020615514833981519152907f964f47ba1d5dc0d1184a60039dba40abb2d0eee53398392e97308cb5f4a12f94907fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6904690602001614d7f565b60408051601f198184030181529190528051602090910120600290910155565b7f0c7b73796c7cc89b9f849b9056a93200eba741881e57a1b03b9bedb2c0e0710090565b612e12613cae565b6000612e1c61354a565b600281019390935550600390910155565b600080612e3861383c565b90506000612e468585613cd3565b90508015612251576000858152602083905260409020612d159085613d4b565b6000612e70612b79565b90506000612e816009830184613d60565b9050806111b257604051637eae59f160e11b8152600481018490526024016111e5565b6000612eae612b79565b9050612eba83826134b5565b6000928352600201602052604090912055565b6000612ed7612b79565b90506000612ee58287613bc2565b905080612f07576040516221e3bb60e31b8152600481018790526024016111e5565b60408051606081018252868152841515602080830191825282840188815260008b81526002888101845295902084518155925160018401805460ff191691151591909117905551805193949293611e0c938501929190910190614355565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480612fd557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612fc9613d6c565b6001600160a01b031614155b15612d4a5760405163703e46dd60e11b815260040160405180910390fd5b60008051602061545483398151915261300b81612c20565b6000613015612440565b6001600160a01b0316639d825bc56040518163ffffffff1660e01b8152600401602060405180830381865afa158015613052573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061307691906150fa565b90506000613082613d6c565b9050836001600160a01b0316816001600160a01b0316036130ba5780846040516382afabc160e01b81526004016111e5929190615175565b816001600160a01b0316846001600160a01b0316146130f057818460405163699a021f60e11b81526004016111e5929190615175565b836001600160a01b0316816001600160a01b03167fa3d484f827e1c900ce24494bfdb214bcbad08472a9f0571fb5beac779a682db460405160405180910390a350505050565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015613190575060408051601f3d908101601f1916820190925261318d91810190615095565b60015b6131af5781604051634c9c8ce360e01b81526004016111e59190614b44565b60008051602061547483398151915281146131e057604051632a87526960e21b8152600481018290526024016111e5565b6111b28383613d88565b60006131f461245b565b9050600061320061290a565b9050818110156111b25760006132168284615048565b905060006132248247615048565b905080851115613258576040516344c8760560e11b81526004810182905260248101839052604481018690526064016111e5565b5050505050565b8047101561328457478160405163cf47918160e01b81526004016111e5929190614b84565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146132d1576040519150601f19603f3d011682016040523d82523d6000602084013e6132d6565b606091505b50509050806111b25760405163d6bda27560e01b815260040160405180910390fd5b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612d4a5760405163703e46dd60e11b815260040160405180910390fd5b600061334b613dde565b80549091506001190161337157604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b600061338161354a565b905080600201548211156133b057806002015482604051631728bc5b60e31b81526004016111e5929190614b84565b60038101543360009081526020839052604090205442916133d0916150e7565b8111156133f85733600090815260018301602090815260408083208390559084905290208190555b600282015433600090815260018401602052604090205461341a9085906150e7565b11156134415781600201548360405163d54b188760e01b81526004016111e5929190614b84565b336000908152600183016020526040812080548592906134629084906150e7565b909155506134729050338461325f565b60405183815233907fb9ec638398bbdcd0844ca414d8ce760939fa88b9258b9764b3fc6c12ea2605c29060200161178e565b60006134ae613dde565b6001905550565b6134bf8183613e02565b6118c057604051631e96f6ed60e21b8152600481018390526024016111e5565b60006134e9612c94565b604080516080810182529687526020808801968752878201958652606088019485526001600160a01b03998a166000908152928152818320989099168252969097525093909420915182555160018201559151600283015551600390910155565b7f99a652063088b6badaeb0c7f680676baf720654b4f86f50167944489af637d0090565b6000613578612b79565b905060006135896004830184613c99565b9050806135ab5782604051632872fbf960e11b81526004016111e59190614b44565b6040516001600160a01b038416907fa317c10673baf4f03b3c1041bd5ddbb537d0333a86fec3607c75f9dbb630f48f90600090a2505050565b60006135ee61354a565b60028101849055600381018390556040519091507f8d4925b196ae6b935035a27ed36c6bd9c7a8fbddc7a3f55f493aa8e230be373e906136319085908590614b84565b60405180910390a1505050565b6000613648612b79565b905061365483826134b5565b60008381526002808301602090815260408320909101805460018101825590835291200161147a83826151ec565b600061368c612b79565b9050600061369d6004830184613d4b565b9050806136bf5782604051631532e67160e21b81526004016111e59190614b44565b6040516001600160a01b038416907f85a3e72f8dd6db3794f93109c3c5f5b79d6112f6979431c45f98b26134b42af290600090a2505050565b6000612380836001600160a01b038416613e0a565b6000613717612b79565b905061372383826134b5565b600083815260028083016020526040822001905b815481101561325857836040516020016137519190614ff9565b6040516020818303038152906040528051906020012082828154811061377957613779614f76565b9060005260206000200160405160200161379391906152a5565b604051602081830303815290604052805190602001200361383457815482906137be90600190615048565b815481106137ce576137ce614f76565b906000526020600020018282815481106137ea576137ea614f76565b906000526020600020019081613800919061531b565b5081805480613811576138116153e7565b60019003818190600052602060002001600061382d91906143ab565b9055613258565b600101613737565b7fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200090565b60006123808383613e22565b6111b283846001600160a01b031663a9059cbb85856040516024016138929291906148a3565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613e4c565b60006138ce612b79565b60038101805460ff19168415159081179091556040519081529091507fe93ceb76efb130156c6aa39fa4ac986b3f683b6da926496fca3f95ea7fe715e39060200160405180910390a15050565b6000613925612b79565b905061393183826134b5565b60009283526002016020526040909120600101805460ff1916911515919091179055565b6000610e50825490565b6000613969612b79565b9050600061397a6006830185613c99565b90508061399c5783604051631a6107e360e31b81526004016111e59190614b44565b6001600160a01b038416600090815260088301602052604090206139c084826151ec565b506040516001600160a01b038516907f928ec246afda323bc23c2815ca3f516e9fc6a7b7179772235c221e132545fe8290600090a250505050565b6000613a05612b79565b90506000613a166006830184613d4b565b905080613a38578260405163ba650b5f60e01b81526004016111e59190614b44565b6001600160a01b03831660009081526008830160205260408120613a5b916143ab565b6040516001600160a01b038416907fc5a9b8041ef11732e7dd7043167d8c22db5c7ea99dcd38dce401effacf8a29bf90600090a2505050565b6000613a9e612b79565b9050613aaa83826134b5565b6000838152600280830160209081526040909220845161147a93919092019190850190614355565b6000613adc612b79565b90506000613aea8284613d60565b905080613b0d57604051631e96f6ed60e21b8152600481018490526024016111e5565b600083815260028084016020526040822082815560018101805460ff191690559190613258908301826143e5565b606081600001805480602002602001604051908101604052809291908181526020018280548015613b8b57602002820191906000526020600020905b815481526020019060010190808311613b77575b50505050509050919050565b613ba18282612259565b6118c057808260405163e2517d3f60e01b81526004016111e59291906148a3565b60006123808383613eb4565b600080600080613bde8686613efe565b925092509250613bee8282613f4b565b5090949350505050565b600080613c03612cb8565b9050613c0f8484612259565b613c8f576000848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055613c453390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610e50565b6000915050610e50565b6000612380836001600160a01b038416613eb4565b613cb6614004565b612d4a57604051631afcd79f60e31b815260040160405180910390fd5b600080613cde612cb8565b9050613cea8484612259565b15613c8f576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610e50565b6000612380836001600160a01b03841661401e565b6000612380838361401e565b600080516020615474833981519152546001600160a01b031690565b613d9182614107565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115613dd6576111b28282614163565b6118c06141d9565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b600061238083835b60009081526001919091016020526040902054151590565b6000826000018281548110613e3957613e39614f76565b9060005260206000200154905092915050565b600080602060008451602086016000885af180613e6f576040513d6000823e3d81fd5b50506000513d91508115613e87578060011415613e94565b6001600160a01b0384163b155b1561147a5783604051635274afe760e01b81526004016111e59190614b44565b6000613ec08383613e0a565b613ef657508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610e50565b506000610e50565b60008060008351604103613f385760208401516040850151606086015160001a613f2a888285856141f8565b955095509550505050613f44565b50508151600091506002905b9250925092565b6000826003811115613f5f57613f5f6153fd565b03613f68575050565b6001826003811115613f7c57613f7c6153fd565b03613f9a5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115613fae57613fae6153fd565b03613fcf5760405163fce698f760e01b8152600481018290526024016111e5565b6003826003811115613fe357613fe36153fd565b036118c0576040516335e2f38360e21b8152600481018290526024016111e5565b600061400e612d1e565b54600160401b900460ff16919050565b60008181526001830160205260408120548015613c8f576000614042600183615048565b855490915060009061405690600190615048565b90508082146140bb57600086600001828154811061407657614076614f76565b906000526020600020015490508087600001848154811061409957614099614f76565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806140cc576140cc6153e7565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610e50565b806001600160a01b03163b6000036141345780604051634c9c8ce360e01b81526004016111e59190614b44565b60008051602061547483398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516141809190614ff9565b600060405180830381855af49150503d80600081146141bb576040519150601f19603f3d011682016040523d82523d6000602084013e6141c0565b606091505b50915091506141d08583836142bd565b95945050505050565b3415612d4a5760405163b398979f60e01b815260040160405180910390fd5b600080806fa2a8918ca85bafe22016d0b997e4df60600160ff1b0384111561422957506000915060039050826142b3565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561427d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166142a9575060009250600191508290506142b3565b9250600091508190505b9450945094915050565b6060826142d2576142cd82614309565b612380565b81511580156142e957506001600160a01b0384163b155b15610f795783604051639996b31560e01b81526004016111e59190614b44565b8051156143195780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b604051806060016040528060008152602001600015158152602001606081525090565b82805482825590600052602060002090810192821561439b579160200282015b8281111561439b578251829061438b90826151ec565b5091602001919060010190614375565b506143a79291506143ff565b5090565b5080546143b79061505b565b6000825580601f106143c7575050565b601f0160209004906000526020600020908101906119ed919061441c565b50805460008255906000526020600020908101906119ed91905b808211156143a757600061441382826143ab565b506001016143ff565b5b808211156143a7576000815560010161441d565b60006020828403121561444357600080fd5b81356001600160e01b03198116811461238057600080fd5b60005b8381101561447657818101518382015260200161445e565b50506000910152565b6000815180845261449781602086016020860161445b565b601f01601f19169290920160200192915050565b60008282518085526020808601955060208260051b8401016020860160005b848110156144f857601f198684030189526144e683835161447f565b988401989250908301906001016144ca565b5090979650505050505050565b60208152600061238060208301846144ab565b6020808252825182820181905260009190848201906040850190845b8181101561455057835183529284019291840191600101614534565b50909695505050505050565b6001600160a01b03811681146119ed57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156145af576145af614571565b604052919050565b60006001600160401b038211156145d0576145d0614571565b50601f01601f191660200190565b600082601f8301126145ef57600080fd5b81356146026145fd826145b7565b614587565b81815284602083860101111561461757600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561464a57600080fd5b84356146558161455c565b935060208501356146658161455c565b92506040850135915060608501356001600160401b0381111561468757600080fd5b614693878288016145de565b91505092959194509250565b6000602082840312156146b157600080fd5b81356001600160401b038111156146c757600080fd5b612251848285016145de565b6000806000606084860312156146e857600080fd5b83356146f38161455c565b925060208401356147038161455c565b929592945050506040919091013590565b6000806040838503121561472757600080fd5b50508035926020909101359150565b600082601f83011261474757600080fd5b813560206001600160401b038083111561476357614763614571565b8260051b614772838201614587565b938452858101830193838101908886111561478c57600080fd5b84880192505b858310156147c8578235848111156147aa5760008081fd5b6147b88a87838c01016145de565b8352509184019190840190614792565b98975050505050505050565b6000602082840312156147e657600080fd5b81356001600160401b038111156147fc57600080fd5b61225184828501614736565b600080600080600080600080610100898b03121561482557600080fd5b88356148308161455c565b975060208901356148408161455c565b965060408901356148508161455c565b9550606089013594506080890135935060a0890135925060c0890135915060e08901356001600160401b0381111561488757600080fd5b6148938b828c016145de565b9150509295985092959890939650565b6001600160a01b03929092168252602082015260400190565b6000602082840312156148ce57600080fd5b5035919050565b803561ffff811681146148e757600080fd5b919050565b60008060006060848603121561490157600080fd5b83359250614911602085016148d5565b915061491f604085016148d5565b90509250925092565b6000806040838503121561493b57600080fd5b82359150602083013561494d8161455c565b809150509250929050565b600080600080600060a0868803121561497057600080fd5b853561497b8161455c565b9450602086013561498b8161455c565b93506040860135925060608601356149a28161455c565b915060808601356149b28161455c565b809150509295509295909350565b600080604083850312156149d357600080fd5b82356001600160401b038111156149e957600080fd5b6149f5858286016145de565b95602094909401359450505050565b80151581146119ed57600080fd5b60008060008060808587031215614a2857600080fd5b84356001600160401b0380821115614a3f57600080fd5b614a4b888389016145de565b95506020870135945060408701359150614a6482614a04565b90925060608601359080821115614a7a57600080fd5b5061469387828801614736565b600080600080600080600060e0888a031215614aa257600080fd5b8735614aad8161455c565b96506020880135614abd8161455c565b95506040880135614acd8161455c565b969995985095966060810135965060808101359560a0820135955060c0909101359350915050565b60008060408385031215614b0857600080fd5b8235614b138161455c565b915060208301356001600160401b03811115614b2e57600080fd5b614b3a858286016145de565b9150509250929050565b6001600160a01b0391909116815260200190565b60008060408385031215614b6b57600080fd5b8235614b768161455c565b946020939093013593505050565b918252602082015260400190565b600060208284031215614ba457600080fd5b81356123808161455c565b60008060008060808587031215614bc557600080fd5b8435935060208501359250614bdc604086016148d5565b9150614bea606086016148d5565b905092959194509250565b60008060408385031215614c0857600080fd5b82356001600160401b0380821115614c1f57600080fd5b614c2b868387016145de565b93506020850135915080821115614c4157600080fd5b50614b3a858286016145de565b600060608301825184526020808401511515602086015260408401516060604087015282815180855260808801915060808160051b890101945060208301925060005b81811015614cbf57607f19898703018352614cad86855161447f565b95509284019291840191600101614c91565b5093979650505050505050565b604081526000614cdf60408301856144ab565b6020838203818501528185518084528284019150828160051b85010183880160005b83811015614d2f57601f19878403018552614d1d838351614c4e565b94860194925090850190600101614d01565b50909998505050505050505050565b602081526000612380602083018461447f565b60008060408385031215614d6457600080fd5b8235614d6f8161455c565b9150602083013561494d8161455c565b93845260208401929092526040830152606082015260800190565b600060208284031215614dac57600080fd5b813561238081614a04565b6020808252825182820181905260009190848201906040850190845b818110156145505783516001600160a01b031683529284019291840191600101614dd3565b60008060408385031215614e0b57600080fd5b82356001600160401b03811115614e2157600080fd5b614e2d858286016145de565b925050602083013561494d81614a04565b600080600060608486031215614e5357600080fd5b83359250602084013591506040840135614e6c8161455c565b809150509250925092565b6020815260006123806020830184614c4e565b600080600080600080600060e0888a031215614ea557600080fd5b8735614eb08161455c565b965060208801356001600160401b03811115614ecb57600080fd5b614ed78a828b016145de565b96505060408801359450606088013593506080880135614ef68161455c565b925060a0880135915060c0880135614f0d81614a04565b8091505092959891949750929550565b60008060408385031215614f3057600080fd5b82356001600160401b0380821115614f4757600080fd5b614f53868387016145de565b93506020850135915080821115614f6957600080fd5b50614b3a85828601614736565b634e487b7160e01b600052603260045260246000fd5b600060208284031215614f9e57600080fd5b81516001600160401b03811115614fb457600080fd5b8201601f81018413614fc557600080fd5b8051614fd36145fd826145b7565b818152856020838501011115614fe857600080fd5b6141d082602083016020860161445b565b6000825161500b81846020870161445b565b9190910192915050565b60006020828403121561502757600080fd5b815161238081614a04565b634e487b7160e01b600052601160045260246000fd5b81810381811115610e5057610e50615032565b600181811c9082168061506f57607f821691505b60208210810361508f57634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156150a757600080fd5b5051919050565b8082028115828204841417610e5057610e50615032565b6000826150e257634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610e5057610e50615032565b60006020828403121561510c57600080fd5b81516123808161455c565b6001600160a01b0389811682528881166020830152610100604083018190526000916151458483018b61447f565b6060850199909952608084019790975250509290931660a083015260c082015290151560e0909101529392505050565b6001600160a01b0392831681529116602082015260400190565b601f8211156111b2576000816000526020600020601f850160051c810160208610156151b85750805b601f850160051c820191505b818110156128e1578281556001016151c4565b600019600383901b1c191660019190911b1790565b81516001600160401b0381111561520557615205614571565b61521981615213845461505b565b8461518f565b602080601f83116001811461524857600084156152365750858301515b61524085826151d7565b8655506128e1565b600085815260208120601f198616915b8281101561527757888601518255948401946001909101908401615258565b50858210156152955787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008083546152b38161505b565b600182811680156152cb57600181146152e05761530f565b60ff198416875282151583028701945061530f565b8760005260208060002060005b858110156153065781548a8201529084019082016152ed565b50505082870194505b50929695505050505050565b818103615326575050565b615330825461505b565b6001600160401b0381111561534757615347614571565b61535581615213845461505b565b6000601f82116001811461538357600083156153715750848201545b61537b84826151d7565b855550613258565b600085815260209020601f19841690600086815260209020845b838110156153bd578286015482556001958601959091019060200161539d565b50858310156152955793015460001960f8600387901b161c19169092555050600190811b01905550565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fdfee562760eaa817d85ec1bf58364c4d65adb65d99d113c6785ef9aa66567076c954c1d97560aef1d9626af2ccff8a6ac6e245c44c307e795e9c16f7211c611a315189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc9a95e87c5af084bf5db8491c3a6515da9dd6da39b24b0eb0af08d7b9cd808d91c6ae66da7afbd0becbe49ddf95a9256901d87f1bb5e3d43236030e5e4a585b6d10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e487b38f131334165ac2b361f08966c9fcff3a953fa7d9d9c2861b7f0b50445bcbc2f8787176b8ac6bf7215b4adcc1e069bf4ab82d9ab1df05a57a91d425935b6e3acdf00ba9ef08b5f2c22768276611b9af078bf6c24fa36b34ec5e9f2eb061faa26469706673582212200540b09191ebd8a1004327f6309ecd4316849f0d987f7010a72aeade96f57e0164736f6c63430008180033","id":1,"type":"ONCHAIN_INTERACTION","value":{"_kind":"bigint","value":"0"}},"type":"NETWORK_INTERACTION_REQUEST"} +{"futureId":"RefactorCancellationModule#CMAccount","networkInteractionId":1,"nonce":346,"transaction":{"fees":{"maxFeePerGas":{"_kind":"bigint","value":"400000000000"},"maxPriorityFeePerGas":{"_kind":"bigint","value":"0"}},"hash":"0x483d7d55a28ece736d0d547ed8d6f9bc02883ae5102a23d6a1437a616277ece7"},"type":"TRANSACTION_SEND"} +{"futureId":"RefactorCancellationModule#CMAccount","hash":"0x483d7d55a28ece736d0d547ed8d6f9bc02883ae5102a23d6a1437a616277ece7","networkInteractionId":1,"receipt":{"blockHash":"0x096b5eed65fa9e0641a7f8aa21fff112fc0875d4acc2fa67ce1a38e91e96b78f","blockNumber":626232,"contractAddress":"0x6735B8731908AD9c865Fe57CCC6fE655c929D15A","logs":[{"address":"0x6735B8731908AD9c865Fe57CCC6fE655c929D15A","data":"0x000000000000000000000000000000000000000000000000ffffffffffffffff","logIndex":0,"topics":["0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2"]}],"status":"SUCCESS"},"type":"TRANSACTION_CONFIRM"} +{"futureId":"RefactorCancellationModule#CMAccount","result":{"address":"0x6735B8731908AD9c865Fe57CCC6fE655c929D15A","type":"SUCCESS"},"type":"DEPLOYMENT_EXECUTION_STATE_COMPLETE"} +{"futureId":"RefactorCancellationModule#BookingTokenProxy.upgradeToAndCall","type":"WIPE_APPLY"} +{"futureId":"RefactorCancellationModule#CMAccount","type":"WIPE_APPLY"} +{"futureId":"RefactorCancellationModule#ManagerProxy","type":"WIPE_APPLY"} +{"futureId":"RefactorCancellationModule#BookingTokenProxy","type":"WIPE_APPLY"} +{"futureId":"RefactorCancellationModule#BookingTokenOperator","type":"WIPE_APPLY"} +{"futureId":"RefactorCancellationModule#BookingTokenImpl","type":"WIPE_APPLY"} +{"artifactId":"RefactorCancellationModule#BookingTokenImpl","constructorArgs":[],"contractName":"BookingToken","dependencies":[],"from":"0x9d639f3345a83aa01412dcd010af9ab82190cc4f","futureId":"RefactorCancellationModule#BookingTokenImpl","futureType":"NAMED_ARTIFACT_CONTRACT_DEPLOYMENT","libraries":{},"strategy":"basic","strategyConfig":{},"type":"DEPLOYMENT_EXECUTION_STATE_INITIALIZE","value":{"_kind":"bigint","value":"0"}} +{"futureId":"RefactorCancellationModule#BookingTokenImpl","networkInteraction":{"data":"0x60a06040523060805234801561001457600080fd5b506080516149da61003e6000396000818161224b0152818161227401526123be01526149da6000f3fe60806040526004361061024e5760003560e01c80624fdd3c1461025357806301ffc9a71461028a57806306fdde03146102ba578063081812fc146102dc578063095ea7b3146103095780630e75c1a81461032b57806312b357b51461034e57806318160ddd1461036e5780631c54f0f71461038357806323b872dd14610396578063248a9ca3146103b65780632a119380146103d65780632d3a6329146103f65780632edf5e2c146104165780632f2ff15d146104385780632f745c591461045857806336568abe146104785780633c15b31c1461049857806341431908146104c557806342842e0e146104e55780634f1ef286146105055780634f6ccce714610518578063516a82b81461053857806352d1902d1461055857806354fd4d501461056d5780636352211e1461059a57806370a08231146105ba57806374aa2048146105da57806374fe60e9146105fa57806391d148541461061a57806391da124c1461063a57806395d89b411461065a57806396591edd1461066f578063a0f07c7414610682578063a217fddf14610697578063a22cb465146106ac578063a9bc55a2146106cc578063ad3cb1cc14610700578063b191d09214610731578063b88d4fde14610751578063bb520b4714610771578063be667188146107a5578063bfb26c06146107c5578063c0c53b8b146107da578063c162d7da146107fa578063c87b56dd1461080f578063d547741f1461082f578063db2b26821461084f578063e5a6725c1461086f578063e985e9c51461088f578063f72c0d8b146108af578063f7e45f09146108d1575b600080fd5b34801561025f57600080fd5b5061027361026e366004613eed565b6108f1565b604051610281929190613f06565b60405180910390f35b34801561029657600080fd5b506102aa6102a5366004613f33565b61092e565b6040519015158152602001610281565b3480156102c657600080fd5b506102cf61093f565b6040516102819190613fa0565b3480156102e857600080fd5b506102fc6102f7366004613eed565b6109e0565b6040516102819190613fb3565b34801561031557600080fd5b50610329610324366004613fdc565b6109f5565b005b34801561033757600080fd5b50610340610a04565b604051908152602001610281565b34801561035a57600080fd5b506102aa610369366004614008565b610a19565b34801561037a57600080fd5b50610340610a8f565b610329610391366004614025565b610a9a565b3480156103a257600080fd5b506103296103b1366004614047565b610b9c565b3480156103c257600080fd5b506103406103d1366004613eed565b610bb5565b3480156103e257600080fd5b506103296103f136600461409f565b610bd5565b34801561040257600080fd5b506102aa610411366004613eed565b610c8a565b34801561042257600080fd5b5061034060008051602061496583398151915281565b34801561044457600080fd5b506103296104533660046140db565b610cb0565b34801561046457600080fd5b50610340610473366004613fdc565b610cd2565b34801561048457600080fd5b506103296104933660046140db565b610d34565b3480156104a457600080fd5b506104b86104b3366004613eed565b610d67565b604051610281919061413f565b3480156104d157600080fd5b506103296104e0366004614008565b610d8a565b3480156104f157600080fd5b50610329610500366004614047565b610dc2565b6103296105133660046141f4565b610ddd565b34801561052457600080fd5b50610340610533366004613eed565b610df8565b34801561054457600080fd5b50610329610553366004613eed565b610e59565b34801561056457600080fd5b50610340610e86565b34801561057957600080fd5b50604080516001815260006020820181905291810191909152606001610281565b3480156105a657600080fd5b506102fc6105b5366004613eed565b610ea3565b3480156105c657600080fd5b506103406105d5366004614008565b610eae565b3480156105e657600080fd5b506103296105f5366004614243565b610f06565b34801561060657600080fd5b5061032961061536600461409f565b610fb3565b34801561062657600080fd5b506102aa6106353660046140db565b61105f565b34801561064657600080fd5b50610329610655366004614289565b611095565b34801561066657600080fd5b506102cf611152565b61032961067d366004613eed565b61116f565b34801561068e57600080fd5b506102fc600081565b3480156106a357600080fd5b50610340600081565b3480156106b857600080fd5b506103296106c73660046142f0565b611329565b3480156106d857600080fd5b506106ec6106e7366004613eed565b611334565b60405161028198979695949392919061431e565b34801561070c57600080fd5b506102cf604051806040016040528060058152602001640352e302e360dc1b81525081565b34801561073d57600080fd5b506102fc61074c366004613eed565b6113ba565b34801561075d57600080fd5b5061032961076c366004614363565b6113e6565b34801561077d57600080fd5b5061079161078c366004613eed565b6113fe565b6040516102819897969594939291906143ce565b3480156107b157600080fd5b506103296107c0366004614025565b61147a565b3480156107d157600080fd5b506102fc600181565b3480156107e657600080fd5b506103296107f5366004614426565b61152d565b34801561080657600080fd5b506102fc6116cc565b34801561081b57600080fd5b506102cf61082a366004613eed565b6116e7565b34801561083b57600080fd5b5061032961084a3660046140db565b6116f2565b34801561085b57600080fd5b5061032961086a366004614471565b61170e565b34801561087b57600080fd5b5061032961088a366004613eed565b611861565b34801561089b57600080fd5b506102aa6108aa366004614504565b611969565b3480156108bb57600080fd5b5061034060008051602061492583398151915281565b3480156108dd57600080fd5b506103296108ec366004614243565b6119a8565b60008060006108fe611a55565b6000948552600390810160205260409094209384015460049094015493946001600160a01b039094169392505050565b600061093982611a79565b92915050565b6060600061094b611a9e565b905080600001805461095c90614532565b80601f016020809104026020016040519081016040528092919081815260200182805461098890614532565b80156109d55780601f106109aa576101008083540402835291602001916109d5565b820191906000526020600020905b8154815290600101906020018083116109b857829003601f168201915b505050505091505090565b60006109eb82611ac2565b5061093982611afa565b610a00828233611b23565b5050565b600080610a0f611a55565b6002015492915050565b6000610a236116cc565b6001600160a01b03166312b357b5836040518263ffffffff1660e01b8152600401610a4e9190613fb3565b602060405180830381865afa158015610a6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610939919061456c565b600080610a0f611b30565b33610aa481611b54565b6000610aaf84611ac2565b90506000610abb611a55565b905060036000868152600480840160205260409091205460ff1690811115610ae557610ae561410b565b14610b25576000858152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c92889260ff9091169101614589565b60405180910390fd5b60008581526003820160205260408120600101546001600160a01b031690610b4e828888611b7c565b600088815260038501602090815260408083206004908101548189019093529220805460ff19169092179091559091506001600160a01b0316610b92818387611ce4565b5050505050505050565b610ba581611d92565b610bb0838383611f46565b505050565b600080610bc0611fb7565b60009384526020525050604090206001015490565b33610bdf81611b54565b6000610bea85611ac2565b90506000610bf6611a55565b905060036000878152600480840160205260409091205460ff1690811115610c2057610c2061410b565b14610c57576000868152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c92899260ff9091169101614589565b60008681526003820160205260409020600101546001600160a01b0316610c818382898989611fdb565b50505050505050565b600080610c95611a55565b60009384526003016020525050604090206006015460ff1690565b610cb982610bb5565b610cc28161211d565b610ccc8383612127565b50505050565b600080610cdd611b30565b9050610ce884610eae565b8310610d0b57838360405163295f44f760e21b8152600401610b1c9291906145a6565b6001600160a01b0384166000908152602091825260408082208583529092522054905092915050565b6001600160a01b0381163314610d5d5760405163334bd91960e11b815260040160405180910390fd5b610bb082826121c8565b600080610d72611a55565b60009384526004016020525050604090205460ff1690565b6000610d958161211d565b6000610d9f611a55565b80546001600160a01b0319166001600160a01b0394909416939093179092555050565b610bb0838383604051806020016040528060008152506113e6565b610de5612240565b610dee826122e7565b610a0082826122ff565b600080610e03611b30565b9050610e0d610a8f565b8310610e315760008360405163295f44f760e21b8152600401610b1c9291906145a6565b806002018381548110610e4657610e466145bf565b9060005260206000200154915050919050565b600080516020614965833981519152610e718161211d565b6000610e7b611a55565b600201929092555050565b6000610e906123b3565b5060008051602061494583398151915290565b600061093982611ac2565b600080610eb9611a9e565b90506001600160a01b038316610ee55760006040516322718ad960e21b8152600401610b1c9190613fb3565b6001600160a01b039092166000908152600390920160205250604090205490565b33610f1081611b54565b6000610f1b86611ac2565b90506000610f27611a55565b905060036000888152600480840160205260409091205460ff1690811115610f5157610f5161410b565b14610f88576000878152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c928a9260ff9091169101614589565b60008781526003820160205260409020600101546001600160a01b0316610b9283828a8a8a8a6123fc565b33610fbd81611b54565b6000610fc885611ac2565b90506000610fd4611a55565b905060036000878152600480840160205260409091205460ff1690811115610ffe57610ffe61410b565b14611035576000868152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c92899260ff9091169101614589565b60008681526003820160205260409020600101546001600160a01b0316610c818382898989612635565b60008061106a611fb7565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b600260006110a1612793565b8054909150600160401b900460ff16806110c8575080546001600160401b03808416911610155b156110e65760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160481b0319166001600160401b03831617600160401b17815560006111108161211d565b61111a85856127b7565b50805460ff60401b191681556040516000805160206148e5833981519152906111449084906145d5565b60405180910390a150505050565b6060600061115e611a9e565b905080600101805461095c90614532565b6111776127c9565b3361118181611b54565b600061118b611a55565b600084815260038083016020908152604092839020835160e08101855281546001600160a01b03908116808352600184015482169483019490945260028301549582019590955292810154606084015260048101549093166080830152600583015460a083015260069092015460ff16151560c08201529192503314611238578051604051632663a9c560e11b81526001600160a01b039091166004820152336024820152604401610b1c565b80604001514211156112655783816040015160405163293d73b760e11b8152600401610b1c9291906145e9565b600061127085610ea3565b905081602001516001600160a01b0316816001600160a01b0316146112af57602082015160405163103d145960e31b8152610b1c918791600401613f06565b6112be826020015133876127ff565b6112d5826080015183606001518460200151611ce4565b6000858152600484016020526040808220805460ff1916600317905551339187917fa751fb02c318279a22135a408663ae08ea45eafa950a4351c14ae543cbb950409190a35050505061132661289b565b50565b610a003383836128ac565b600080600080600080600080600061134a612951565b60009a8b5260205250506040909720600281015460039091015461ffff600160c81b830481169a600160d81b840482169a50600160e81b90930481169850808216975062010000820481169650600160201b820481169550600160301b820481169450600160401b909104169150565b6000806113c5611a55565b6000938452600301602052505060409020600401546001600160a01b031690565b6113f1848484610b9c565b610ccc3385858585612975565b6000806000806000806000806000611414612951565b60009a8b52602052505060409097206002810154815460019092015460ff600160c01b80840482169c949b506001600160a01b038084169b5084169950820481169750600160c81b820416955063ffffffff600160a01b91829004811695509104169150565b3361148481611b54565b600061148f84611ac2565b9050600061149b611a55565b905060036000868152600480840160205260409091205460ff16908111156114c5576114c561410b565b146114fc576000858152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c92889260ff9091169101614589565b60008581526003820160205260409020600101546001600160a01b031661152583828888612a8c565b505050505050565b6000611537612793565b805490915060ff600160401b82041615906001600160401b031660008115801561155e5750825b90506000826001600160401b0316600114801561157a5750303b155b905081158015611588575080155b156115a65760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b031916600117855583156115cf57845460ff60401b1916600160401b1785555b6116196040518060400160405280600c81526020016b2137b7b5b4b733aa37b5b2b760a11b815250604051806040016040528060048152602001630545249560e41b8152506127b7565b611621612c6a565b611629612c6a565b611631612c6a565b611639612c6a565b611644600088612127565b5061165d60008051602061492583398151915287612127565b506000611668611a55565b80546001600160a01b0319166001600160a01b038b16178155603c600290910155508315610b9257845460ff60401b191685556040516000805160206148e5833981519152906116ba906001906145d5565b60405180910390a15050505050505050565b6000806116d7611a55565b546001600160a01b031692915050565b606061093982612c72565b6116fb82610bb5565b6117048161211d565b610ccc83836121c8565b3361171881611b54565b61172188611b54565b600061172b611a55565b600281015490915061173d814261460d565b8811611760578781604051630999f7d760e41b8152600401610b1c9291906145e9565b60008511801561177a57506001600160a01b038616600114155b1561179b57604051638fe757e760e01b815260048101869052602401610b1c565b600182018054600091826117ae83614620565b9190505590506117be3382612d92565b6117c8818b612dac565b6117d8818c338c8c8c8c8c612e0a565b6000818152600484016020908152604091829020805460ff1916600117905581518b81529081018a90526001600160a01b0389811682840152606082018990528715156080830152915133928e169184917f1424af4f4cb40d8a1a2d00b2324cb122ba73eac426f98b62c33ff31ca045f0679160a0908290030190a45050505050505050505050565b600061186b611a55565b6000838152600382016020908152604080832060048501909252909120549192509060ff1660028160048111156118a4576118a461410b565b14806118c1575060038160048111156118bf576118bf61410b565b145b806118dd575060048160048111156118db576118db61410b565b145b156118ff57838160405163e4e3b53b60e01b8152600401610b1c929190614589565b8160020154421115611940576000848152600484016020526040808220805460ff1916600217905551859160008051602061490583398151915291a2610ccc565b815460405163d4cde2af60e01b8152610b1c9186916001600160a01b0390911690600401613f06565b600080611974611a9e565b6001600160a01b03948516600090815260059190910160209081526040808320959096168252939093525050205460ff1690565b336119b281611b54565b60006119bd86611ac2565b905060006119c9611a55565b905060036000888152600480840160205260409091205460ff16908111156119f3576119f361410b565b14611a2a576000878152600480830160205260409182902054915163e4e3b53b60e01b8152610b1c928a9260ff9091169101614589565b60008781526003820160205260409020600101546001600160a01b0316610b9283828a8a8a8a612edc565b7f9db9d405bf15683ce835607b1f0b423dc1484d44bb9d5af64a483fa4afd8290090565b60006001600160e01b03198216637965db0b60e01b14806109395750610939826131e6565b7f80bb2b638cc20bc4d0a60d66940f3ab4a00c1d7b313497ca82fb0b4ab007930090565b600080611ace8361320b565b90506001600160a01b03811661093957604051637e27328960e01b815260048101849052602401610b1c565b600080611b05611a9e565b6000938452600401602052505060409020546001600160a01b031690565b610bb08383836001613234565b7f645e039705490088daad89bae25049a34f4a9072d398537b1ab2425f24cbed0090565b611b5d81610a19565b6113265780604051638014575360e01b8152600401610b1c9190613fb3565b6000336001600160a01b03851614611baa57604051636c83fb1b60e01b815260048101849052602401610b1c565b6000611bb4612951565b600085815260209190915260409020905060016002820154600160c01b900460ff166004811115611be757611be761410b565b14611c1a57838160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b80548314611c4157805460405163cc45283760e01b8152610b1c9186918690600401614639565b6001810154600160c01b900460ff16611c705760405163c84052f960e01b815260048101859052602401610b1c565b6001810154600160c81b900460ff16611c995760018101805460ff60c81b1916600160c81b1790555b60028101805460ff60c01b1916600160c21b17905560405184907f17c3690813e5ff9135b87fd91848109978b23db8e471498d18886560da7f286790600090a25490505b9392505050565b6001600160a01b038316611d2957813414611d16573482604051630145611560e21b8152600401610b1c9291906145e9565b610bb06001600160a01b0382163461333e565b6000196001600160a01b03841601611d5c573415610bb0576040516347d6729960e01b8152346004820152602401610b1c565b3415611d7d576040516347d6729960e01b8152346004820152602401610b1c565b610bb06001600160a01b0384163383856133d7565b6000611d9c611a55565b600083815260048201602052604081205491925060ff9091169080611dc085613431565b90925090506001826004811115611dd957611dd961410b565b03611e3a576000611de986611ac2565b60008781526003870160205260409020600101549091506001600160a01b039081169083163314611e2857611e2382828960636001612635565b611e37565b611e3782828960636001611fdb565b50505b6003836004811115611e4e57611e4e61410b565b1480611e6b57506002836004811115611e6957611e6961410b565b145b80611e8757506000836004811115611e8557611e8561410b565b145b15611e93575050505050565b6004836004811115611ea757611ea761410b565b03611ec957848360405163e4e3b53b60e01b8152600401610b1c929190614589565b600085815260038501602052604090206002810154421115611f1d576000868152600486016020526040808220805460ff1916600217905551879160008051602061490583398151915291a2505050505050565b805460405163d4cde2af60e01b8152610b1c9188916001600160a01b0390911690600401613f06565b6001600160a01b038216611f70576000604051633250574960e11b8152600401610b1c9190613fb3565b6000611f7d838333613485565b9050836001600160a01b0316816001600160a01b031614610ccc578382826040516364283d7b60e01b8152600401610b1c9392919061464f565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b8484611fe7828261349a565b6000611ff1612951565b600087815260209190915260409020905060016002820154600160c01b900460ff1660048111156120245761202461410b565b1461205757858160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b60028101546001600160a01b0316331461208757604051631186fdbd60e31b815260048101879052602401610b1c565b6003808201805461ffff878116600160401b0261ffff60401b19918a16600160301b029190911663ffffffff60301b199092169190911717905560028201805460ff60c01b1916600160c01b830217905550857f48e256ce3da490e3bbba80f056bb54ec3d7264f8ad7d152b77bf8c2eca3db5a5868660405161210b929190614672565b60405180910390a25050505050505050565b61132681336134da565b600080612132611fb7565b905061213e848461105f565b6121be576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556121743390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610939565b6000915050610939565b6000806121d3611fb7565b90506121df848461105f565b156121be576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610939565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806122c757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166122bb600080516020614945833981519152546001600160a01b031690565b6001600160a01b031614155b156122e55760405163703e46dd60e11b815260040160405180910390fd5b565b600080516020614925833981519152610a008161211d565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612359575060408051601f3d908101601f1916820190925261235691810190614687565b60015b6123785781604051634c9c8ce360e01b8152600401610b1c9190613fb3565b60008051602061494583398151915281146123a957604051632a87526960e21b815260048101829052602401610b1c565b610bb08383613505565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146122e55760405163703e46dd60e11b815260040160405180910390fd5b8585612408828261349a565b6000612412612951565b600088815260209190915260409020905060016002820154600160c01b900460ff1660048111156124455761244561410b565b1461247857868160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b858155600281018054336001600160a01b0319909116811790915560018201805461ffff60c01b19166001600160a01b038c81168414600160c01b0260ff60c81b191691909117908b16909214600160c81b029190911780825560038301805465ffffffff000019166201000061ffff8a81169190910261ffff60201b191691909117600160201b91891691909102179055600160a01b900463ffffffff16906014612523836146a0565b82546101009290920a63ffffffff8181021990931691831602179091556002830154600184015484546040516001600160a01b0380851696508316948d946000805160206148c5833981519152946125a39493600160c01b820460ff90811694600160c81b840490911693600160a01b93849004821693900416906146c3565b60405180910390a4600281015460038201546040518992600080516020614985833981519152926126229261ffff600160c81b8404811693600160d81b8104821693600160e81b90910482169281831692620100008304811692600160201b8104821692600160301b8204831692600160401b9092049091169061431e565b60405180910390a2505050505050505050565b8484612641828261349a565b600061264b612951565b600087815260209190915260409020905060016002820154600160c01b900460ff16600481111561267e5761267e61410b565b146126b157858160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b60028101546001600160a01b031633036126e157604051633060d8f760e21b815260048101879052602401610b1c565b60028101805460038301805461ffff88811661ffff19909216919091179091558716600160e81b0260ff60c01b191666ffff00000000ff60c01b1990911617600160c11b17808255600160a01b900463ffffffff16906014612742836146a0565b91906101000a81548163ffffffff021916908363ffffffff16021790555050857fab78ba855f2fdb28beb212a9b3f41a33cda034729848cd452f0cc96528c23a80868660405161210b929190614672565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b6127bf61355b565b610a008282613580565b60006127d36135ae565b8054909150600119016127f957604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b6001600160a01b038216612829576000604051633250574960e11b8152600401610b1c9190613fb3565b600061283783836000613485565b90506001600160a01b03811661286357604051637e27328960e01b815260048101839052602401610b1c565b836001600160a01b0316816001600160a01b031614610ccc578382826040516364283d7b60e01b8152600401610b1c9392919061464f565b60006128a56135ae565b6001905550565b60006128b6611a9e565b90506001600160a01b0383166128e15782604051630b61174360e31b8152600401610b1c9190613fb3565b6001600160a01b038481166000818152600584016020908152604080832094881680845294825291829020805460ff191687151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a350505050565b7f0b8fb32ffc7043fda9e0ee2bcb4236acf95ab448752c73eff6cc7f2640ff850090565b6001600160a01b0383163b15612a8557604051630a85bd0160e11b81526001600160a01b0384169063150b7a02906129b79088908890879087906004016146ef565b6020604051808303816000875af19250505080156129f2575060408051601f3d908101601f191682019092526129ef9181019061472c565b60015b612a52573d808015612a20576040519150601f19603f3d011682016040523d82523d6000602084013e612a25565b606091505b508051600003612a4a5783604051633250574960e11b8152600401610b1c9190613fb3565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b146115255783604051633250574960e11b8152600401610b1c9190613fb3565b5050505050565b8383612a98828261349a565b6000612aa2612951565b600086815260209190915260409020905060016002820154600160c01b900460ff166004811115612ad557612ad561410b565b14612b0857848160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b80548414612b2f57805460405163cc45283760e01b8152610b1c9187918790600401614639565b6001600160a01b0387163303612b595760018101805460ff60c01b1916600160c01b179055612b6f565b60018101805460ff60c81b1916600160c81b1790555b6002810154600182015482546040516001600160a01b0380851694908416938a936000805160206148c583398151915293612bda93919260ff600160c01b8204811693600160c81b83049091169263ffffffff600160a01b93849004811693909204909116906146c3565b60405180910390a460028101546003820154604051879260008051602061498583398151915292612c599261ffff600160c81b8404811693600160d81b8104821693600160e81b90910482169281831692620100008304811692600160201b8104821692600160301b8204831692600160401b9092049091169061431e565b60405180910390a250505050505050565b6122e561355b565b60606000612c7e6135d2565b9050612c8983611ac2565b5060008381526020829052604081208054612ca390614532565b80601f0160208091040260200160405190810160405280929190818152602001828054612ccf90614532565b8015612d1c5780601f10612cf157610100808354040283529160200191612d1c565b820191906000526020600020905b815481529060010190602001808311612cff57829003601f168201915b505050505090506000612d3a60408051602081019091526000815290565b90508051600003612d4d57509392505050565b815115612d80578082604051602001612d67929190614749565b6040516020818303038152906040529350505050919050565b612d89856135f6565b95945050505050565b610a0082826040518060200160405280600081525061366a565b6000612db66135d2565b6000848152602082905260409020909150612dd183826147c0565b506040518381527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a1505050565b6000612e14611a55565b6040805160e0810182526001600160a01b039a8b168152988a166020808b019182528a8301998a5260608b01988952968b1660808b0190815260a08b0196875294151560c08b0190815260009c8d5260039384019097529a20975188546001600160a01b0319908116918b1691909117895599516001890180548c16918b169190911790559551600288015550925193850193909355905160048401805490961694169390931790935591516005830155516006909101805460ff1916911515919091179055565b8585612ee8828261349a565b6000612ef2612951565b600088815260209190915260409020905060046002820154600160c01b900460ff166004811115612f2557612f2561410b565b1480612f50575060016002820154600160c01b900460ff166004811115612f4e57612f4e61410b565b145b15612f8357868160020160189054906101000a900460ff1660405163d5d8eacb60e01b8152600401610b1c929190614589565b60006002820154600160c01b900460ff166004811115612fa557612fa561410b565b03612fbf576001810180546001600160a01b031916331790555b338160020160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550858160000181905550886001600160a01b0316336001600160a01b0316148160010160186101000a81548160ff021916908315150217905550876001600160a01b0316336001600160a01b0316148160010160196101000a81548160ff021916908315150217905550848160020160196101000a81548161ffff021916908361ffff1602179055508381600201601b6101000a81548161ffff021916908361ffff160217905550600081600201601d6101000a81548161ffff021916908361ffff16021790555060008160030160006101000a81548161ffff021916908361ffff16021790555060008160030160026101000a81548161ffff021916908361ffff16021790555060008160030160046101000a81548161ffff021916908361ffff16021790555060008160030160066101000a81548161ffff021916908361ffff16021790555060008160030160086101000a81548161ffff021916908361ffff16021790555060018160020160186101000a81548160ff021916908360048111156131765761317661410b565b02179055506002810154600182015482546040516001600160a01b0380851694908416938c936000805160206148c5833981519152936125a393919260ff600160c01b8204811693600160c81b83049091169263ffffffff600160a01b93849004811693909204909116906146c3565b60006001600160e01b03198216632483248360e11b1480610939575061093982613682565b600080613216611a9e565b6000938452600201602052505060409020546001600160a01b031690565b600061323e611a9e565b9050818061325457506001600160a01b03831615155b1561330d57600061326485611ac2565b90506001600160a01b038416158015906132905750836001600160a01b0316816001600160a01b031614155b80156132a357506132a18185611969565b155b156132c3578360405163a9fbf51f60e01b8152600401610b1c9190613fb3565b821561330b5784866001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b600093845260040160205250506040902080546001600160a01b0319166001600160a01b0392909216919091179055565b8047101561336357478160405163cf47918160e01b8152600401610b1c9291906145e9565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146133b0576040519150601f19603f3d011682016040523d82523d6000602084013e6133b5565b606091505b5050905080610bb05760405163d6bda27560e01b815260040160405180910390fd5b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ccc9085906136a7565b60008061343c612951565b60008481526020919091526040902060020154600160c01b900460ff16613461612951565b600094855260205260409093206002015492936001600160a01b0390931692915050565b600061349284848461370f565b949350505050565b336001600160a01b038316148015906134bc5750336001600160a01b03821614155b15610a0057604051634793d28160e01b815260040160405180910390fd5b6134e4828261105f565b610a0057808260405163e2517d3f60e01b8152600401610b1c9291906145a6565b61350e8261379d565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a280511561355357610bb082826137f9565b610a00613866565b613563613885565b6122e557604051631afcd79f60e31b815260040160405180910390fd5b61358861355b565b6000613592611a9e565b90508061359f84826147c0565b5060018101610ccc83826147c0565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b7f0542a41881ee128a365a727b282c86fa859579490b9bb45aab8503648c8e790090565b606061360182611ac2565b50600061361960408051602081019091526000815290565b905060008151116136395760405180602001604052806000815250611cdd565b806136438461389f565b604051602001613654929190614749565b6040516020818303038152906040529392505050565b6136748383613931565b610bb0336000858585612975565b60006001600160e01b0319821663780e9d6360e01b1480610939575061093982613996565b600080602060008451602086016000885af1806136ca576040513d6000823e3d81fd5b50506000513d915081156136e25780600114156136ef565b6001600160a01b0384163b155b15610ccc5783604051635274afe760e01b8152600401610b1c9190613fb3565b60008061371d8585856139e6565b90506001600160a01b03811661373b5761373684613aed565b61375e565b846001600160a01b0316816001600160a01b03161461375e5761375e8185613b26565b6001600160a01b03851661377a5761377584613bbf565b613492565b846001600160a01b0316816001600160a01b031614613492576134928585613c88565b806001600160a01b03163b6000036137ca5780604051634c9c8ce360e01b8152600401610b1c9190613fb3565b60008051602061494583398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051613816919061487f565b600060405180830381855af49150503d8060008114613851576040519150601f19603f3d011682016040523d82523d6000602084013e613856565b606091505b5091509150612d89858383613ce0565b34156122e55760405163b398979f60e01b815260040160405180910390fd5b600061388f612793565b54600160401b900460ff16919050565b606060006138ac83613d33565b60010190506000816001600160401b038111156138cb576138cb614152565b6040519080825280601f01601f1916602001820160405280156138f5576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846138ff57509392505050565b6001600160a01b03821661395b576000604051633250574960e11b8152600401610b1c9190613fb3565b600061396983836000613485565b90506001600160a01b03811615610bb05760006040516339e3563760e11b8152600401610b1c9190613fb3565b60006001600160e01b031982166380ac58cd60e01b14806139c757506001600160e01b03198216635b5e139f60e01b145b8061093957506301ffc9a760e01b6001600160e01b0319831614610939565b6000806139f1611a9e565b905060006139fe8561320b565b90506001600160a01b03841615613a1a57613a1a818587613e09565b6001600160a01b03811615613a5a57613a37600086600080613234565b6001600160a01b0381166000908152600383016020526040902080546000190190555b6001600160a01b03861615613a8b576001600160a01b03861660009081526003830160205260409020805460010190555b600085815260028301602052604080822080546001600160a01b0319166001600160a01b038a811691821790925591518893918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a495945050505050565b6000613af7611b30565b600281018054600085815260039093016020908152604084208290556001820183559183529120019190915550565b6000613b30611b30565b90506000613b3d84610eae565b60008481526001840160209081526040808320546001600160a01b03891684529186905290912091925090818314613b97576000838152602082815260408083205485845281842081905583526001870190915290208290555b6000948552600190930160209081526040808620869055928552929092528220919091555050565b6000613bc9611b30565b6002810154909150600090613be09060019061489b565b6000848152600384016020526040812054600285018054939450909284908110613c0c57613c0c6145bf565b9060005260206000200154905080846002018381548110613c2f57613c2f6145bf565b600091825260208083209091019290925582815260038601909152604080822084905586825281205560028401805480613c6b57613c6b6148ae565b600190038181906000526020600020016000905590555050505050565b6000613c92611b30565b905060006001613ca185610eae565b613cab919061489b565b6001600160a01b0390941660009081526020838152604080832087845282528083208690559482526001909301909252502055565b606082613cf557613cf082613e5f565b611cdd565b8151158015613d0c57506001600160a01b0384163b155b15613d2c5783604051639996b31560e01b8152600401610b1c9190613fb3565b5080611cdd565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310613d725772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b8310613d9c576904ee2d6d415b85acef8160201b830492506020015b662386f26fc100008310613dba57662386f26fc10000830492506010015b6305f5e1008310613dd2576305f5e100830492506008015b6127108310613de657612710830492506004015b60648310613df8576064830492506002015b600a83106109395760010192915050565b613e14838383613e88565b610bb0576001600160a01b038316613e4257604051637e27328960e01b815260048101829052602401610b1c565b818160405163177e802f60e01b8152600401610b1c9291906145a6565b805115613e6f5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b60006001600160a01b038316158015906134925750826001600160a01b0316846001600160a01b03161480613ec25750613ec28484611969565b806134925750826001600160a01b0316613edb83611afa565b6001600160a01b031614949350505050565b600060208284031215613eff57600080fd5b5035919050565b9182526001600160a01b0316602082015260400190565b6001600160e01b03198116811461132657600080fd5b600060208284031215613f4557600080fd5b8135611cdd81613f1d565b60005b83811015613f6b578181015183820152602001613f53565b50506000910152565b60008151808452613f8c816020860160208601613f50565b601f01601f19169290920160200192915050565b602081526000611cdd6020830184613f74565b6001600160a01b0391909116815260200190565b6001600160a01b038116811461132657600080fd5b60008060408385031215613fef57600080fd5b8235613ffa81613fc7565b946020939093013593505050565b60006020828403121561401a57600080fd5b8135611cdd81613fc7565b6000806040838503121561403857600080fd5b50508035926020909101359150565b60008060006060848603121561405c57600080fd5b833561406781613fc7565b9250602084013561407781613fc7565b929592945050506040919091013590565b803561ffff8116811461409a57600080fd5b919050565b6000806000606084860312156140b457600080fd5b833592506140c460208501614088565b91506140d260408501614088565b90509250925092565b600080604083850312156140ee57600080fd5b82359150602083013561410081613fc7565b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b6005811061132657634e487b7160e01b600052602160045260246000fd5b6020810161414c83614121565b91905290565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261417957600080fd5b81356001600160401b038082111561419357614193614152565b604051601f8301601f19908116603f011681019082821181831017156141bb576141bb614152565b816040528381528660208588010111156141d457600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561420757600080fd5b823561421281613fc7565b915060208301356001600160401b0381111561422d57600080fd5b61423985828601614168565b9150509250929050565b6000806000806080858703121561425957600080fd5b843593506020850135925061427060408601614088565b915061427e60608601614088565b905092959194509250565b6000806040838503121561429c57600080fd5b82356001600160401b03808211156142b357600080fd5b6142bf86838701614168565b935060208501359150808211156142d557600080fd5b5061423985828601614168565b801515811461132657600080fd5b6000806040838503121561430357600080fd5b823561430e81613fc7565b91506020830135614100816142e2565b61ffff98891681529688166020880152948716604087015292861660608601529085166080850152841660a0840152831660c083015290911660e08201526101000190565b6000806000806080858703121561437957600080fd5b843561438481613fc7565b9350602085013561439481613fc7565b92506040850135915060608501356001600160401b038111156143b657600080fd5b6143c287828801614168565b91505092959194509250565b61010081016143dc8a614121565b98815260208101979097526001600160a01b0395861660408801529390941660608601529015156080850152151560a084015263ffffffff91821660c08401521660e09091015290565b60008060006060848603121561443b57600080fd5b833561444681613fc7565b9250602084013561445681613fc7565b9150604084013561446681613fc7565b809150509250925092565b600080600080600080600060e0888a03121561448c57600080fd5b873561449781613fc7565b965060208801356001600160401b038111156144b257600080fd5b6144be8a828b01614168565b965050604088013594506060880135935060808801356144dd81613fc7565b925060a0880135915060c08801356144f4816142e2565b8091505092959891949750929550565b6000806040838503121561451757600080fd5b823561452281613fc7565b9150602083013561410081613fc7565b600181811c9082168061454657607f821691505b60208210810361456657634e487b7160e01b600052602260045260246000fd5b50919050565b60006020828403121561457e57600080fd5b8151611cdd816142e2565b8281526040810161459983614121565b8260208301529392505050565b6001600160a01b03929092168252602082015260400190565b634e487b7160e01b600052603260045260246000fd5b6001600160401b0391909116815260200190565b918252602082015260400190565b634e487b7160e01b600052601160045260246000fd5b80820180821115610939576109396145f7565b600060018201614632576146326145f7565b5060010190565b9283526020830191909152604082015260600190565b6001600160a01b0393841681526020810192909252909116604082015260600190565b61ffff92831681529116602082015260400190565b60006020828403121561469957600080fd5b5051919050565b600063ffffffff8083168181036146b9576146b96145f7565b6001019392505050565b9485529215156020850152901515604084015263ffffffff908116606084015216608082015260a00190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061472290830184613f74565b9695505050505050565b60006020828403121561473e57600080fd5b8151611cdd81613f1d565b6000835161475b818460208801613f50565b83519083019061476f818360208801613f50565b01949350505050565b601f821115610bb0576000816000526020600020601f850160051c810160208610156147a15750805b601f850160051c820191505b81811015611525578281556001016147ad565b81516001600160401b038111156147d9576147d9614152565b6147ed816147e78454614532565b84614778565b602080601f831160018114614822576000841561480a5750858301515b600019600386901b1c1916600185901b178555611525565b600085815260208120601f198616915b8281101561485157888601518255948401946001909101908401614832565b508582101561486f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008251614891818460208701613f50565b9190910192915050565b81810381811115610939576109396145f7565b634e487b7160e01b600052603160045260246000fdfe6aafaf6639750382d6dc665bc6a3c73d54e2076a8739a69c860a2314032eb981c7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2c47ab59d5c41a0220b594ece6f7e87863b07f8b33579130f3a59b31d8f7b6eed189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc3ae8648b97d3fd425d26286fc6bb1d50724a93a6a5763921dd2b90405a83b4a4ade2ce8b39037f5140109f53fef47c0491427b8b785ab83d35aa2931295cb790a26469706673582212205ff1ab7ed04f3284c48eefd9c84ebe5b019c0853e20741ae588d1e84fa8d725b64736f6c63430008180033","id":1,"type":"ONCHAIN_INTERACTION","value":{"_kind":"bigint","value":"0"}},"type":"NETWORK_INTERACTION_REQUEST"} +{"futureId":"RefactorCancellationModule#BookingTokenImpl","networkInteractionId":1,"nonce":66,"transaction":{"fees":{"maxFeePerGas":{"_kind":"bigint","value":"400000000000"},"maxPriorityFeePerGas":{"_kind":"bigint","value":"0"}},"hash":"0x9812f3c4c1deac73bd823655ba791d649af113013e21fd38011e283e121cb0f8"},"type":"TRANSACTION_SEND"} +{"artifactId":"RefactorCancellationModule#BookingTokenOperator","constructorArgs":[],"contractName":"BookingTokenOperator","dependencies":[],"from":"0x9d639f3345a83aa01412dcd010af9ab82190cc4f","futureId":"RefactorCancellationModule#BookingTokenOperator","futureType":"NAMED_ARTIFACT_LIBRARY_DEPLOYMENT","libraries":{},"strategy":"basic","strategyConfig":{},"type":"DEPLOYMENT_EXECUTION_STATE_INITIALIZE","value":{"_kind":"bigint","value":"0"}} +{"futureId":"RefactorCancellationModule#BookingTokenOperator","networkInteraction":{"data":"0x610e1d61003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100a35760003560e01c806307e47316146100a857806321b87f3a146100ca578063348e06dd146100ea578063793dddac1461010a5780637adf63b71461012a578063a0f07c741461014a578063b54e72d814610168578063bfb26c0614610188578063c7bffa9614610190578063e4c22569146101b0578063fd13a43e146101d0575b600080fd5b8180156100b457600080fd5b506100c86100c33660046109e7565b6101f0565b005b8180156100d657600080fd5b506100c86100e5366004610a36565b610257565b8180156100f657600080fd5b506100c8610105366004610a36565b6103f9565b81801561011657600080fd5b506100c86101253660046109e7565b61045e565b81801561013657600080fd5b506100c8610145366004610a76565b61048e565b610152600081565b60405161015f9190610ac0565b60405180910390f35b81801561017457600080fd5b506100c8610183366004610ad4565b6106d6565b610152600181565b81801561019c57600080fd5b506100c86101ab366004610b2d565b610741565b8180156101bc57600080fd5b506100c86101cb366004610b7f565b610797565b8180156101dc57600080fd5b506100c86101eb366004610ad4565b61080b565b6040516254232760e71b81526001600160a01b03851690632a1193809061021f90869086908690600401610c93565b600060405180830381600087803b15801561023957600080fd5b505af115801561024d573d6000803e3d6000fd5b5050505050505050565b6040516358c8e84960e11b8152600481018390526000906001600160a01b0385169063b191d09290602401602060405180830381865afa15801561029f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102c39190610cad565b90506001600160a01b03811661033a57604051631c54f0f760e01b81526001600160a01b03851690631c54f0f79084906103039087908390600401610cd1565b6000604051808303818588803b15801561031c57600080fd5b505af1158015610330573d6000803e3d6000fd5b50505050506103f3565b6000196001600160a01b038216016103b157604051631c54f0f760e01b81526001600160a01b03851690631c54f0f79061037a9086908690600401610cd1565b600060405180830381600087803b15801561039457600080fd5b505af11580156103a8573d6000803e3d6000fd5b505050506103f3565b6103c56001600160a01b038216858461083d565b604051631c54f0f760e01b81526001600160a01b03851690631c54f0f79061021f9086908690600401610cd1565b50505050565b6040516317ccce3160e31b81526001600160a01b0384169063be667188906104279085908590600401610cd1565b600060405180830381600087803b15801561044157600080fd5b505af1158015610455573d6000803e3d6000fd5b50505050505050565b6040516374fe60e960e01b81526001600160a01b038516906374fe60e99061021f90869086908690600401610c93565b6040516213f74f60e21b81526004810184905260009081906001600160a01b03871690624fdd3c906024016040805180830381865afa1580156104d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f99190610cdf565b91509150838214610533576040516330cb9c4160e01b81526004810186905260248101839052604481018590526064015b60405180910390fd5b826001600160a01b0316816001600160a01b03161461057f5760405163107f801560e21b8152600481018690526001600160a01b0380831660248301528416604482015260640161052a565b6001600160a01b0381166105ee576040516396591edd60e01b8152600481018690526001600160a01b038716906396591edd9084906024016000604051808303818588803b1580156105d057600080fd5b505af11580156105e4573d6000803e3d6000fd5b50505050506106ce565b6000196001600160a01b0382160161065f576040516396591edd60e01b8152600481018690526001600160a01b038716906396591edd90602401600060405180830381600087803b15801561064257600080fd5b505af1158015610656573d6000803e3d6000fd5b505050506106ce565b6106736001600160a01b038216878461083d565b6040516396591edd60e01b8152600481018690526001600160a01b038716906396591edd90602401600060405180830381600087803b1580156106b557600080fd5b505af11580156106c9573d6000803e3d6000fd5b505050505b505050505050565b60405163f7e45f0960e01b81526001600160a01b0386169063f7e45f0990610708908790879087908790600401610d0f565b600060405180830381600087803b15801561072257600080fd5b505af1158015610736573d6000803e3d6000fd5b505050505050505050565b6040516339699c9760e21b8152600481018290526001600160a01b0383169063e5a6725c90602401600060405180830381600087803b15801561078357600080fd5b505af11580156106ce573d6000803e3d6000fd5b604051636d95934160e11b81526001600160a01b0389169063db2b2682906107cf908a908a908a908a908a908a908a90600401610d31565b600060405180830381600087803b1580156107e957600080fd5b505af11580156107fd573d6000803e3d6000fd5b505050505050505050505050565b604051630e95440960e31b81526001600160a01b038616906374aa204890610708908790879087908790600401610d0f565b6000836001600160a01b031663095ea7b38484604051602401610861929190610dce565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050905061089a8482610901565b6103f3576108f784856001600160a01b031663095ea7b38660006040516024016108c5929190610dce565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050610950565b6103f38482610950565b6000806000806020600086516020880160008a5af192503d91506000519050828015610946575081156109375780600114610946565b6000866001600160a01b03163b115b9695505050505050565b600080602060008451602086016000885af180610973576040513d6000823e3d81fd5b50506000513d9150811561098b578060011415610998565b6001600160a01b0384163b155b156103f35783604051635274afe760e01b815260040161052a9190610ac0565b6001600160a01b03811681146109cd57600080fd5b50565b803561ffff811681146109e257600080fd5b919050565b600080600080608085870312156109fd57600080fd5b8435610a08816109b8565b935060208501359250610a1d604086016109d0565b9150610a2b606086016109d0565b905092959194509250565b600080600060608486031215610a4b57600080fd5b8335610a56816109b8565b95602085013595506040909401359392505050565b80356109e2816109b8565b60008060008060808587031215610a8c57600080fd5b8435610a97816109b8565b935060208501359250604085013591506060850135610ab5816109b8565b939692955090935050565b6001600160a01b0391909116815260200190565b600080600080600060a08688031215610aec57600080fd5b8535610af7816109b8565b94506020860135935060408601359250610b13606087016109d0565b9150610b21608087016109d0565b90509295509295909350565b60008060408385031215610b4057600080fd5b8235610b4b816109b8565b946020939093013593505050565b634e487b7160e01b600052604160045260246000fd5b803580151581146109e257600080fd5b600080600080600080600080610100898b031215610b9c57600080fd5b8835610ba7816109b8565b97506020890135610bb7816109b8565b965060408901356001600160401b0380821115610bd357600080fd5b818b0191508b601f830112610be757600080fd5b813581811115610bf957610bf9610b59565b604051601f8201601f19908116603f01168101908382118183101715610c2157610c21610b59565b816040528281528e6020848701011115610c3a57600080fd5b82602086016020830137600060208483010152809a5050505050506060890135945060808901359350610c6f60a08a01610a6b565b925060c08901359150610c8460e08a01610b6f565b90509295985092959890939650565b92835261ffff918216602084015216604082015260600190565b600060208284031215610cbf57600080fd5b8151610cca816109b8565b9392505050565b918252602082015260400190565b60008060408385031215610cf257600080fd5b825191506020830151610d04816109b8565b809150509250929050565b938452602084019290925261ffff908116604084015216606082015260800190565b60018060a01b03881681526000602060e0602084015288518060e085015260005b81811015610d6f578a810183015185820161010001528201610d52565b506101009150600082828601015281601f19601f83011685010192505050866040830152856060830152610dae60808301866001600160a01b03169052565b8360a0830152610dc260c083018415159052565b98975050505050505050565b6001600160a01b0392909216825260208201526040019056fea264697066735822122084540fefd928b98a6276d315bd50a8a3f0275ecdfc9709a3251b9e5780a0e80b64736f6c63430008180033","id":1,"type":"ONCHAIN_INTERACTION","value":{"_kind":"bigint","value":"0"}},"type":"NETWORK_INTERACTION_REQUEST"} +{"futureId":"RefactorCancellationModule#BookingTokenOperator","networkInteractionId":1,"nonce":67,"transaction":{"fees":{"maxFeePerGas":{"_kind":"bigint","value":"400000000000"},"maxPriorityFeePerGas":{"_kind":"bigint","value":"0"}},"hash":"0xccccdddd892f8497c97e8bbeb202bdbf601c63560ad407da01900fccd4cea8cc"},"type":"TRANSACTION_SEND"} +{"artifactId":"RefactorCancellationModule#BookingTokenProxy","contractAddress":"0xe55E387F5474a012D1b048155E25ea78C7DBfBBC","contractName":"BookingToken","dependencies":[],"futureId":"RefactorCancellationModule#BookingTokenProxy","futureType":"NAMED_ARTIFACT_CONTRACT_AT","strategy":"basic","strategyConfig":{},"type":"CONTRACT_AT_EXECUTION_STATE_INITIALIZE"} +{"artifactId":"RefactorCancellationModule#ManagerProxy","contractAddress":"0xE5B2f76C778D082b07BDd7D51FFe83E3E055B47F","contractName":"CMAccountManager","dependencies":[],"futureId":"RefactorCancellationModule#ManagerProxy","futureType":"NAMED_ARTIFACT_CONTRACT_AT","strategy":"basic","strategyConfig":{},"type":"CONTRACT_AT_EXECUTION_STATE_INITIALIZE"} +{"futureId":"RefactorCancellationModule#BookingTokenImpl","hash":"0x9812f3c4c1deac73bd823655ba791d649af113013e21fd38011e283e121cb0f8","networkInteractionId":1,"receipt":{"blockHash":"0x81c03e3f85220e7f3fc2a2bebb8ef906fa172bed22dcefbe7f2d6074cd60081d","blockNumber":626242,"contractAddress":"0x80c5D0Eb1567649e9827218672cd56a772A8B97B","logs":[],"status":"SUCCESS"},"type":"TRANSACTION_CONFIRM"} +{"futureId":"RefactorCancellationModule#BookingTokenImpl","result":{"address":"0x80c5D0Eb1567649e9827218672cd56a772A8B97B","type":"SUCCESS"},"type":"DEPLOYMENT_EXECUTION_STATE_COMPLETE"} +{"futureId":"RefactorCancellationModule#BookingTokenOperator","hash":"0xccccdddd892f8497c97e8bbeb202bdbf601c63560ad407da01900fccd4cea8cc","networkInteractionId":1,"receipt":{"blockHash":"0x808829db96e51b4822ba8009a0e18a7702f5b40ac22ed27f8cbdeade007fdf48","blockNumber":626243,"contractAddress":"0x9C4c78DbeaC83188Da9236cc3DfB06e86BE5d50c","logs":[],"status":"SUCCESS"},"type":"TRANSACTION_CONFIRM"} +{"futureId":"RefactorCancellationModule#BookingTokenOperator","result":{"address":"0x9C4c78DbeaC83188Da9236cc3DfB06e86BE5d50c","type":"SUCCESS"},"type":"DEPLOYMENT_EXECUTION_STATE_COMPLETE"} +{"args":["0x80c5D0Eb1567649e9827218672cd56a772A8B97B","0x"],"artifactId":"RefactorCancellationModule#BookingTokenProxy","contractAddress":"0xe55E387F5474a012D1b048155E25ea78C7DBfBBC","dependencies":["RefactorCancellationModule#BookingTokenProxy","RefactorCancellationModule#BookingTokenImpl"],"from":"0x9d639f3345a83aa01412dcd010af9ab82190cc4f","functionName":"upgradeToAndCall","futureId":"RefactorCancellationModule#BookingTokenProxy.upgradeToAndCall","strategy":"basic","strategyConfig":{},"type":"CALL_EXECUTION_STATE_INITIALIZE","value":{"_kind":"bigint","value":"0"}} +{"futureId":"RefactorCancellationModule#BookingTokenProxy.upgradeToAndCall","networkInteraction":{"data":"0x4f1ef28600000000000000000000000080c5d0eb1567649e9827218672cd56a772a8b97b00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000","id":1,"to":"0xe55E387F5474a012D1b048155E25ea78C7DBfBBC","type":"ONCHAIN_INTERACTION","value":{"_kind":"bigint","value":"0"}},"type":"NETWORK_INTERACTION_REQUEST"} +{"futureId":"RefactorCancellationModule#BookingTokenProxy.upgradeToAndCall","networkInteractionId":1,"nonce":68,"transaction":{"fees":{"maxFeePerGas":{"_kind":"bigint","value":"400000000000"},"maxPriorityFeePerGas":{"_kind":"bigint","value":"0"}},"hash":"0xc97a3521ff4db9747d6f0661b3c300fb0ff97a2ce4a72aa10627de2015d5bdcb"},"type":"TRANSACTION_SEND"} +{"artifactId":"RefactorCancellationModule#CMAccount","constructorArgs":[],"contractName":"CMAccount","dependencies":["RefactorCancellationModule#BookingTokenOperator"],"from":"0x9d639f3345a83aa01412dcd010af9ab82190cc4f","futureId":"RefactorCancellationModule#CMAccount","futureType":"NAMED_ARTIFACT_CONTRACT_DEPLOYMENT","libraries":{"BookingTokenOperator":"0x9C4c78DbeaC83188Da9236cc3DfB06e86BE5d50c"},"strategy":"basic","strategyConfig":{},"type":"DEPLOYMENT_EXECUTION_STATE_INITIALIZE","value":{"_kind":"bigint","value":"0"}} +{"futureId":"RefactorCancellationModule#CMAccount","networkInteraction":{"data":"0x60a0604052306080523480156200001557600080fd5b506200002062000026565b620000da565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000775760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516155896200010460003960008181612f7001528181612f99015261330301526155896000f3fe60806040526004361061039d5760003560e01c806301ffc9a7146103a957806308564c19146103de5780630ede80d614610400578063136f50ca14610430578063150b7a021461045257806318274da4146104965780631aca6376146104b65780631c54f0f7146104d85780631c5db99e146104f857806320606b701461051857806321b9b9291461053a578063241bbbfc14610568578063248a9ca31461057d5780632a1193801461059d5780632f2ff15d146105bd578063319d13f3146105dd57806333746274146105fd57806333e1a2231461061f57806336568abe1461063f578063383aba871461065f57806339e4c7051461068157806341bf7c69146106a157806342072bbd146106c1578063432cf639146106d65780634781ae53146106f65780634f1ef286146107165780634f3f46391461072957806351889d6b1461074b57806352d1902d1461076b5780635c988994146107805780635e07f869146107a057806363e86cc8146107c0578063647d8f6d146107e2578063658db0af146108025780636d69fcaf146108255780636fc22cd11461084557806374aa20481461086557806374fe60e9146108855780637512e55b146108a557806376319190146108c55780637eec56c7146108e5578063852b3ccb14610908578063857cdbb81461092a57806385f438c1146109575780638c20f574146109795780638f69347d146109995780639010d07c146109b957806391d14854146109d9578063930659eb146109f95780639db5dbe414610a29578063a217fddf14610a49578063a31aa03914610a5e578063a3246ad314610a7e578063a7d022f814610aab578063ad3cb1cc14610acb578063b512463514610afc578063be66718814610b1c578063c162d7da14610b3c578063c39409e114610b51578063c6640e6814610b66578063c7b5914f14610b86578063ca15c87314610ba6578063ccde65dc14610bc6578063cd9ef91414610be6578063d09445c214610c06578063d3c7c2c714610c28578063d547741f14610c3d578063da47d85614610c5d578063e0b78add14610c8a578063e26a61bb14610caa578063e5a6725c14610cca578063e7bfce9a14610cea578063e96cf7ad14610d0a578063ea79d07a14610d1f578063eb5ea27314610d34578063ebc20d2014610d54578063ed24911d14610d74578063ee3b641f14610d89578063f3fef3a314610da9578063f51acaea14610dc9578063f72c0d8b14610de9578063f7e45f0914610e0b57600080fd5b366103a457005b600080fd5b3480156103b557600080fd5b506103c96103c4366004614431565b610e2b565b60405190151581526020015b60405180910390f35b3480156103ea57600080fd5b506103f3610e56565b6040516103d59190614505565b34801561040c57600080fd5b506104226000805160206154f483398151915281565b6040519081526020016103d5565b34801561043c57600080fd5b50610445610f80565b6040516103d59190614518565b34801561045e57600080fd5b5061047d61046d366004614634565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020016103d5565b3480156104a257600080fd5b506104226104b136600461469f565b610fa0565b3480156104c257600080fd5b506104d66104d13660046146d3565b610fae565b005b3480156104e457600080fd5b506104d66104f3366004614714565b61105b565b34801561050457600080fd5b506104d66105133660046147d4565b6110ff565b34801561052457600080fd5b5061042260008051602061551483398151915281565b34801561054657600080fd5b5061055a610555366004614808565b6111b7565b6040516103d59291906148a3565b34801561057457600080fd5b506103c9611380565b34801561058957600080fd5b506104226105983660046148bc565b611398565b3480156105a957600080fd5b506104d66105b83660046148ec565b6113b8565b3480156105c957600080fd5b506104d66105d8366004614928565b61145e565b3480156105e957600080fd5b506103f36105f836600461469f565b611480565b34801561060957600080fd5b506104226000805160206154b483398151915281565b34801561062b57600080fd5b506104d661063a366004614958565b61148e565b34801561064b57600080fd5b506104d661065a366004614928565b61164a565b34801561066b57600080fd5b5061042260008051602061541483398151915281565b34801561068d57600080fd5b506104d661069c3660046147d4565b61167d565b3480156106ad57600080fd5b506104d66106bc3660046149c0565b611723565b3480156106cd57600080fd5b5061044561179b565b3480156106e257600080fd5b506104d66106f1366004614a12565b6117b2565b34801561070257600080fd5b50610422610711366004614a87565b611823565b6104d6610724366004614af5565b6118a5565b34801561073557600080fd5b5061073e6118c4565b6040516103d59190614b44565b34801561075757600080fd5b506104d6610766366004614b58565b6118e2565b34801561077757600080fd5b50610422611995565b34801561078c57600080fd5b506104d661079b3660046148bc565b6119b2565b3480156107ac57600080fd5b506103f36107bb3660046148bc565b6119f0565b3480156107cc57600080fd5b5061042260008051602061543483398151915281565b3480156107ee57600080fd5b506104d66107fd366004614808565b611af8565b34801561080e57600080fd5b50610817611cfa565b6040516103d5929190614b84565b34801561083157600080fd5b506104d6610840366004614b92565b611d1c565b34801561085157600080fd5b506104d6610860366004614714565b611d3d565b34801561087157600080fd5b506104d6610880366004614baf565b611d5f565b34801561089157600080fd5b506104d66108a03660046148ec565b611e17565b3480156108b157600080fd5b506104d66108c0366004614bf5565b611e51565b3480156108d157600080fd5b506104d66108e0366004614b92565b611ec0565b3480156108f157600080fd5b506108fa611ee1565b6040516103d5929190614ccc565b34801561091457600080fd5b5061042260008051602061553483398151915281565b34801561093657600080fd5b5061094a610945366004614b92565b6120a6565b6040516103d59190614d3e565b34801561096357600080fd5b506104226000805160206154d483398151915281565b34801561098557600080fd5b506104d6610994366004614bf5565b61218b565b3480156109a557600080fd5b506103c96109b43660046148bc565b6121fa565b3480156109c557600080fd5b5061073e6109d4366004614714565b61222b565b3480156109e557600080fd5b506103c96109f4366004614928565b612259565b348015610a0557600080fd5b50610a19610a14366004614d51565b61228f565b6040516103d59493929190614d7f565b348015610a3557600080fd5b506104d6610a443660046146d3565b6122e6565b348015610a5557600080fd5b50610422600081565b348015610a6a57600080fd5b506104d6610a79366004614d9a565b612339565b348015610a8a57600080fd5b50610a9e610a993660046148bc565b61235a565b6040516103d59190614db7565b348015610ab757600080fd5b506104d6610ac6366004614df8565b612387565b348015610ad757600080fd5b5061094a604051806040016040528060058152602001640352e302e360dc1b81525081565b348015610b0857600080fd5b506103c9610b1736600461469f565b6123f8565b348015610b2857600080fd5b506104d6610b37366004614714565b612406565b348015610b4857600080fd5b5061073e612440565b348015610b5d57600080fd5b5061042261245b565b348015610b7257600080fd5b506104d6610b81366004614b92565b612470565b348015610b9257600080fd5b50610422610ba1366004614a87565b61250b565b348015610bb257600080fd5b50610422610bc13660046148bc565b612547565b348015610bd257600080fd5b506104d6610be1366004614af5565b61256c565b348015610bf257600080fd5b506104d6610c01366004614e3e565b61258e565b348015610c1257600080fd5b5061042260008051602061549483398151915281565b348015610c3457600080fd5b50610a9e612646565b348015610c4957600080fd5b506104d6610c58366004614928565b612660565b348015610c6957600080fd5b50610c7d610c783660046148bc565b61267c565b6040516103d59190614e77565b348015610c9657600080fd5b506103c9610ca5366004614b92565b6127a5565b348015610cb657600080fd5b506104d6610cc5366004614e8a565b6127bf565b348015610cd657600080fd5b506104d6610ce53660046148bc565b61285d565b348015610cf657600080fd5b506104d6610d05366004614b92565b6128e9565b348015610d1657600080fd5b5061042261290a565b348015610d2b57600080fd5b50610a9e61291f565b348015610d4057600080fd5b50610422610d4f3660046148bc565b612939565b348015610d6057600080fd5b506104d6610d6f366004614f1d565b612964565b348015610d8057600080fd5b506104226129d1565b348015610d9557600080fd5b50610817610da4366004614b92565b6129dc565b348015610db557600080fd5b506104d6610dc4366004614b58565b612a17565b348015610dd557600080fd5b506104d6610de436600461469f565b612a9f565b348015610df557600080fd5b5061042260008051602061545483398151915281565b348015610e1757600080fd5b506104d6610e26366004614baf565b612b0a565b60006001600160e01b03198216635a05180f60e01b1480610e505750610e5082612b44565b92915050565b60606000610e62610f80565b9050600081516001600160401b03811115610e7f57610e7f614571565b604051908082528060200260200182016040528015610eb257816020015b6060815260200190600190039081610e9d5790505b50905060005b8251811015610f7957610ec9612440565b6001600160a01b0316635a81a626848381518110610ee957610ee9614f76565b60200260200101516040518263ffffffff1660e01b8152600401610f0f91815260200190565b600060405180830381865afa158015610f2c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610f549190810190614f8c565b828281518110610f6657610f66614f76565b6020908102919091010152600101610eb8565b5092915050565b60606000610f8c612b79565b9050610f9a81600901612b9d565b91505090565b6000610e50610d4f83612baa565b6000805160206154d4833981519152610fc681612c20565b6001600160a01b038316610fed57604051633a954ecd60e21b815260040160405180910390fd5b604051632142170760e11b81523060048201526001600160a01b038481166024830152604482018490528516906342842e0e90606401600060405180830381600087803b15801561103d57600080fd5b505af1158015611051573d6000803e3d6000fd5b5050505050505050565b60008051602061553483398151915261107381612c20565b739C4c78DbeaC83188Da9236cc3DfB06e86BE5d50c6321b87f3a6110956118c4565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018690526044810185905260640160006040518083038186803b1580156110e257600080fd5b505af41580156110f6573d6000803e3d6000fd5b50505050505050565b60008051602061549483398151915261111781612c20565b60005b82518110156111b257600061114784838151811061113a5761113a614f76565b6020026020010151612baa565b905061115281612c2a565b83828151811061116457611164614f76565b60200260200101516040516111799190614ff9565b604051908190038120907f50cc5f9d56177aa0de269c136f2d2ffd45d7b66c82f0a82f8f840db54d9801f890600090a25060010161111a565b505050565b6000806001600160a01b038a1630146111ee5789604051637b7d696f60e01b81526004016111e59190614b44565b60405180910390fd5b6111f6612440565b6001600160a01b03166312b357b58a6040518263ffffffff1660e01b81526004016112219190614b44565b602060405180830381865afa15801561123e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112629190615015565b6112815788604051633f2c64af60e01b81526004016111e59190614b44565b8342106112a457604051636453b2e560e01b8152600481018590526024016111e5565b6112b48a8a8a8a8a8a8a8a612c68565b91506112bf826127a5565b6112de578160405163248d101d60e11b81526004016111e59190614b44565b60006112e8612c94565b6001600160a01b03808516600090815260208381526040808320938e1683529290522060018101549192509088101561133b5760018101546040516307c83fcf60e41b81526111e5918a91600401614b84565b80548911611360578054604051632256490160e11b81526111e5918b91600401614b84565b600181015461136f9089615048565b925050509850989650505050505050565b60008061138b612b79565b6003015460ff1692915050565b6000806113a3612cb8565b60009384526020525050604090206001015490565b6000805160206155348339815191526113d081612c20565b739C4c78DbeaC83188Da9236cc3DfB06e86BE5d50c6307e473166113f26118c4565b6040516001600160e01b031960e084901b1681526001600160a01b0390911660048201526024810187905261ffff80871660448301528516606482015260840160006040518083038186803b15801561144a57600080fd5b505af4158015611051573d6000803e3d6000fd5b61146782611398565b61147081612c20565b61147a8383612cdc565b50505050565b6060610e506107bb83612baa565b6000611498612d1e565b805490915060ff600160401b82041615906001600160401b03166000811580156114bf5750825b90506000826001600160401b031660011480156114db5750303b155b9050811580156114e9575080155b156115075760405163f92ee8a960e01b815260040160405180910390fd5b84546001600160401b0319166001178555831561153057845460ff60401b1916600160401b1785555b611538612d42565b611540612d42565b611548612d4c565b611553600088612cdc565b5061156c60008051602061549483398151915288612cdc565b506115856000805160206154b483398151915288612cdc565b5061159e60008051602061545483398151915287612cdc565b5060006115a9612de6565b80546001600160a01b03808e166001600160a01b0319928316178355600183018054918e1691909216179055600281018a90559050678ac7230489e80000620151806115f58282612e0a565b505050831561163e57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b6001600160a01b03811633146116735760405163334bd91960e11b815260040160405180910390fd5b6111b28282612e2d565b60008051602061549483398151915261169581612c20565b60005b82518110156111b25760006116b884838151811061113a5761113a614f76565b90506116c381612e66565b8382815181106116d5576116d5614f76565b60200260200101516040516116ea9190614ff9565b604051908190038120907f0edb7a081e6ff720ad9e97b837c352ef0548c4d09ec421b9b930b1e0c708e39e90600090a250600101611698565b60008051602061549483398151915261173b81612c20565b61174d61174784612baa565b83612ea4565b8260405161175b9190614ff9565b604051908190038120838252907fdd6c54a4503e1d8a1e75d73648f77d8fe66234b437ce30e20edd51563116ec41906020015b60405180910390a2505050565b606060006117a7612b79565b9050610f9a81612b9d565b6000805160206154948339815191526117ca81612c20565b6117de6117d686612baa565b858486612ecd565b846040516117ec9190614ff9565b604051908190038120907f763f2f41e0c407dd0a7067f44e5468a0db74da9fdb6cd1cb20c7b6dae937527990600090a25050505050565b604080516000805160206154f483398151915260208201526001600160a01b03808a16928201929092528188166060820152908616608082015260a0810185905260c0810184905260e081018390526101008101829052600090610120015b604051602081830303815290604052805190602001209050979650505050505050565b6118ad612f65565b6118b682612ff3565b6118c08282613136565b5050565b6000806118cf612de6565b600101546001600160a01b031692915050565b6000805160206154b48339815191526118fa81612c20565b611903826131ea565b61191b60008051602061543483398151915284612cdc565b5061193460008051602061553483398151915284612cdc565b5061194d60008051602061541483398151915284612cdc565b506040516001600160a01b038416907fdb3e11ba26e83d528bf96a2167061674c1ce7777c61376d852d172594a87399490600090a26111b26001600160a01b0384168361325f565b600061199f6132f8565b5060008051602061547483398151915290565b6119ba613341565b6000805160206154148339815191526119d281612c20565b6119db826131ea565b6119e482613377565b506119ed6134a4565b50565b606060006119fc612b79565b9050611a0883826134b5565b806002016000848152602001908152602001600020600201805480602002602001604051908101604052809291908181526020016000905b82821015611aec578382906000526020600020018054611a5f9061505b565b80601f0160208091040260200160405190810160405280929190818152602001828054611a8b9061505b565b8015611ad85780601f10611aad57610100808354040283529160200191611ad8565b820191906000526020600020905b815481529060010190602001808311611abb57829003601f168201915b505050505081526020019060010190611a40565b50505050915050919050565b611b00613341565b600080611b138a8a8a8a8a8a8a8a6111b7565b91509150611b258289898989896134df565b6000612710611b32612440565b6001600160a01b0316633c5559386040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b939190615095565b611b9d90846150ae565b611ba791906150c5565b90506000611bb58284615048565b90508a6001600160a01b03168c6001600160a01b031614611bf7576000611bda612c94565b905083816001016000828254611bf091906150e7565b9091555050505b611c7382611c03612440565b6001600160a01b0316630470d3ac6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c40573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c6491906150fa565b6001600160a01b03169061325f565b611c866001600160a01b038c168261325f565b604080516001600160a01b0386811682528c811660208301529181018b9052606081018a90526080810183905260a08101849052818d16918e16907f4ebd6343a4ae90ea9a2add4327d0439de765f4b8bbb691caaf0875ef36c54e819060c00160405180910390a3505050506110516134a4565b6000806000611d0761354a565b90508060020154816003015492509250509091565b600080516020615494833981519152611d3481612c20565b6118c08261356e565b6000805160206154b4833981519152611d5581612c20565b6111b283836135e4565b600080516020615534833981519152611d7781612c20565b739C4c78DbeaC83188Da9236cc3DfB06e86BE5d50c63fd13a43e611d996118c4565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018890526044810187905261ffff80871660648301528516608482015260a40160006040518083038186803b158015611df857600080fd5b505af4158015611e0c573d6000803e3d6000fd5b505050505050505050565b600080516020615534833981519152611e2f81612c20565b739C4c78DbeaC83188Da9236cc3DfB06e86BE5d50c63793dddac6113f26118c4565b600080516020615494833981519152611e6981612c20565b611e7b611e7584612baa565b8361363e565b82604051611e899190614ff9565b60405180910390207f498a5f4e6f3921f63e6863032989bdb7bb41e5cf5cbde5437c7322c5c8dc46bf8360405161178e9190614d3e565b600080516020615494833981519152611ed881612c20565b6118c082613682565b6060806000611eee61179b565b9050600081516001600160401b03811115611f0b57611f0b614571565b604051908082528060200260200182016040528015611f3e57816020015b6060815260200190600190039081611f295790505b509050600082516001600160401b03811115611f5c57611f5c614571565b604051908082528060200260200182016040528015611f9557816020015b611f82614332565b815260200190600190039081611f7a5790505b50905060005b835181101561209b57611fac612440565b6001600160a01b0316635a81a626858381518110611fcc57611fcc614f76565b60200260200101516040518263ffffffff1660e01b8152600401611ff291815260200190565b600060405180830381865afa15801561200f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526120379190810190614f8c565b83828151811061204957612049614f76565b602002602001018190525061207684828151811061206957612069614f76565b602002602001015161267c565b82828151811061208857612088614f76565b6020908102919091010152600101611f9b565b509094909350915050565b606060006120b2612b79565b90506120c160068201846136f8565b6120e0578260405163ba650b5f60e01b81526004016111e59190614b44565b6001600160a01b0383166000908152600882016020526040902080546121059061505b565b80601f01602080910402602001604051908101604052809291908181526020018280546121319061505b565b801561217e5780601f106121535761010080835404028352916020019161217e565b820191906000526020600020905b81548152906001019060200180831161216157829003601f168201915b5050505050915050919050565b6000805160206154948339815191526121a381612c20565b6121b56121af84612baa565b8361370d565b826040516121c39190614ff9565b60405180910390207fba851faec9e30a9961f0adb49fe025cda6c8d7d0fb9bad99f89c37d0570232648360405161178e9190614d3e565b600080612205612b79565b905061221183826134b5565b600092835260020160205250604090206001015460ff1690565b60008061223661383c565b60008581526020829052604090209091506122519084613860565b949350505050565b600080612264612cb8565b6000948552602090815260408086206001600160a01b03959095168652939052505090205460ff1690565b600080600080600061229f612c94565b6001600160a01b0397881660009081526020918252604080822098909916815296905250505092909120805460018201546002830154600390930154919590945091925090565b6000805160206154d48339815191526122fe81612c20565b6001600160a01b03831661232557604051633a954ecd60e21b815260040160405180910390fd5b61147a6001600160a01b038516848461386c565b60008051602061549483398151915261235181612c20565b6118c0826138c4565b6060600061236661383c565b600084815260208290526040902090915061238090612b9d565b9392505050565b60008051602061549483398151915261239f81612c20565b6123b16123ab84612baa565b8361391b565b826040516123bf9190614ff9565b6040519081900381208315158252907f23960b931eb4b63e2e47d040f51cc0de6eef2e865639eb674fbb1890ece3a0ab9060200161178e565b6000610e506109b483612baa565b60008051602061553483398151915261241e81612c20565b739C4c78DbeaC83188Da9236cc3DfB06e86BE5d50c63348e06dd6110956118c4565b60008061244b612de6565b546001600160a01b031692915050565b600080612466612de6565b6002015492915050565b6000805160206154b483398151915261248881612c20565b6124a060008051602061543483398151915283612e2d565b506124b960008051602061553483398151915283612e2d565b506124d260008051602061541483398151915283612e2d565b506040516001600160a01b038316907fd124523a9cfa28c5dd01826c4fa56192ec7d56859943082e0ca46c3b9dc6291390600090a25050565b60006125156129d1565b61252489898989898989611823565b60405161190160f01b602082015260228101929092526042820152606201611882565b60008061255261383c565b600084815260208290526040902090915061238090613955565b60008051602061549483398151915261258481612c20565b6111b2838361395f565b612596613341565b6000805160206155348339815191526125ae81612c20565b739C4c78DbeaC83188Da9236cc3DfB06e86BE5d50c637adf63b76125d06118c4565b6040516001600160e01b031960e084901b1681526001600160a01b0391821660048201526024810188905260448101879052908516606482015260840160006040518083038186803b15801561262557600080fd5b505af4158015612639573d6000803e3d6000fd5b50505050506111b26134a4565b60606000612652612b79565b9050610f9a60048201612b9d565b61266982611398565b61267281612c20565b61147a8383612e2d565b612684614332565b600061268e612b79565b905061269a83826134b5565b6000838152600280830160209081526040808420815160608101835281548152600182015460ff161515818501529381018054835181860281018601855281815295969295938701949192909184015b828210156127965783829060005260206000200180546127099061505b565b80601f01602080910402602001604051908101604052809291908181526020018280546127359061505b565b80156127825780601f1061275757610100808354040283529160200191612782565b820191906000526020600020905b81548152906001019060200180831161276557829003601f168201915b5050505050815260200190600101906126ea565b50505091525090949350505050565b6000610e5060008051602061543483398151915283612259565b6000805160206155348339815191526127d781612c20565b739C4c78DbeaC83188Da9236cc3DfB06e86BE5d50c63e4c225696127f96118c4565b8a8a8a8a8a8a8a6040518963ffffffff1660e01b8152600401612823989796959493929190615117565b60006040518083038186803b15801561283b57600080fd5b505af415801561284f573d6000803e3d6000fd5b505050505050505050505050565b60008051602061553483398151915261287581612c20565b739C4c78DbeaC83188Da9236cc3DfB06e86BE5d50c63c7bffa966128976118c4565b846040518363ffffffff1660e01b81526004016128b59291906148a3565b60006040518083038186803b1580156128cd57600080fd5b505af41580156128e1573d6000803e3d6000fd5b505050505050565b60008051602061549483398151915261290181612c20565b6118c0826139fb565b600080612915612c94565b6001015492915050565b6060600061292b612b79565b9050610f9a81600601612b9d565b600080612944612b79565b905061295083826134b5565b600092835260020160205250604090205490565b60008051602061549483398151915261297c81612c20565b61298e61298884612baa565b83613a94565b8260405161299c9190614ff9565b604051908190038120907fd52aef6010d6b6303240865274298b7c5784b14ebf9df788047b34c69c53137190600090a2505050565b600080612466612c94565b60008060006129e961354a565b6001600160a01b03909416600090815260208581526040808320546001909701909152902054939492505050565b612a1f613341565b6000805160206154d4833981519152612a3781612c20565b612a40826131ea565b612a536001600160a01b0384168361325f565b826001600160a01b03167f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a942436483604051612a8e91815260200190565b60405180910390a2506118c06134a4565b600080516020615494833981519152612ab781612c20565b612ac8612ac383612baa565b613ad2565b81604051612ad69190614ff9565b604051908190038120907f52f6e0779195109314dfb8cf301d33491c63f136afac4c5d4f35aa934b25481390600090a25050565b600080516020615534833981519152612b2281612c20565b739C4c78DbeaC83188Da9236cc3DfB06e86BE5d50c63b54e72d8611d996118c4565b60006001600160e01b03198216637965db0b60e01b1480610e5057506301ffc9a760e01b6001600160e01b0319831614610e50565b7ff2856e5e1b7689dcde1bb551fd115c3cad8d243ea609d47a46b4d22ee58d300090565b6060600061238083613b3b565b6000612bb4612440565b6001600160a01b031663352af39a836040518263ffffffff1660e01b8152600401612bdf9190614d3e565b602060405180830381865afa158015612bfc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e509190615095565b6119ed8133613b97565b6000612c34612b79565b90506000612c456009830184613bc2565b9050806111b257604051631a1e056960e01b8152600481018490526024016111e5565b600080612c7a8a8a8a8a8a8a8a61250b565b9050612c868184613bce565b9a9950505050505050505050565b7f175f7e400d42af44d9ebd24e9efee8a2c4ed78ddf46a83e51a493ae382c8760090565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b600080612ce761383c565b90506000612cf58585613bf8565b90508015612251576000858152602083905260409020612d159085613c99565b50949350505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0090565b612d4a613cae565b565b612d54613cae565b6000612d5e612c94565b604051909150612dc690600080516020615514833981519152907f964f47ba1d5dc0d1184a60039dba40abb2d0eee53398392e97308cb5f4a12f94907fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6904690602001614d7f565b60408051601f198184030181529190528051602090910120600290910155565b7f0c7b73796c7cc89b9f849b9056a93200eba741881e57a1b03b9bedb2c0e0710090565b612e12613cae565b6000612e1c61354a565b600281019390935550600390910155565b600080612e3861383c565b90506000612e468585613cd3565b90508015612251576000858152602083905260409020612d159085613d4b565b6000612e70612b79565b90506000612e816009830184613d60565b9050806111b257604051637eae59f160e11b8152600481018490526024016111e5565b6000612eae612b79565b9050612eba83826134b5565b6000928352600201602052604090912055565b6000612ed7612b79565b90506000612ee58287613bc2565b905080612f07576040516221e3bb60e31b8152600481018790526024016111e5565b60408051606081018252868152841515602080830191825282840188815260008b81526002888101845295902084518155925160018401805460ff191691151591909117905551805193949293611e0c938501929190910190614355565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480612fd557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612fc9613d6c565b6001600160a01b031614155b15612d4a5760405163703e46dd60e11b815260040160405180910390fd5b60008051602061545483398151915261300b81612c20565b6000613015612440565b6001600160a01b0316639d825bc56040518163ffffffff1660e01b8152600401602060405180830381865afa158015613052573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061307691906150fa565b90506000613082613d6c565b9050836001600160a01b0316816001600160a01b0316036130ba5780846040516382afabc160e01b81526004016111e5929190615175565b816001600160a01b0316846001600160a01b0316146130f057818460405163699a021f60e11b81526004016111e5929190615175565b836001600160a01b0316816001600160a01b03167fa3d484f827e1c900ce24494bfdb214bcbad08472a9f0571fb5beac779a682db460405160405180910390a350505050565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015613190575060408051601f3d908101601f1916820190925261318d91810190615095565b60015b6131af5781604051634c9c8ce360e01b81526004016111e59190614b44565b60008051602061547483398151915281146131e057604051632a87526960e21b8152600481018290526024016111e5565b6111b28383613d88565b60006131f461245b565b9050600061320061290a565b9050818110156111b25760006132168284615048565b905060006132248247615048565b905080851115613258576040516344c8760560e11b81526004810182905260248101839052604481018690526064016111e5565b5050505050565b8047101561328457478160405163cf47918160e01b81526004016111e5929190614b84565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146132d1576040519150601f19603f3d011682016040523d82523d6000602084013e6132d6565b606091505b50509050806111b25760405163d6bda27560e01b815260040160405180910390fd5b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612d4a5760405163703e46dd60e11b815260040160405180910390fd5b600061334b613dde565b80549091506001190161337157604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b600061338161354a565b905080600201548211156133b057806002015482604051631728bc5b60e31b81526004016111e5929190614b84565b60038101543360009081526020839052604090205442916133d0916150e7565b8111156133f85733600090815260018301602090815260408083208390559084905290208190555b600282015433600090815260018401602052604090205461341a9085906150e7565b11156134415781600201548360405163d54b188760e01b81526004016111e5929190614b84565b336000908152600183016020526040812080548592906134629084906150e7565b909155506134729050338461325f565b60405183815233907fb9ec638398bbdcd0844ca414d8ce760939fa88b9258b9764b3fc6c12ea2605c29060200161178e565b60006134ae613dde565b6001905550565b6134bf8183613e02565b6118c057604051631e96f6ed60e21b8152600481018390526024016111e5565b60006134e9612c94565b604080516080810182529687526020808801968752878201958652606088019485526001600160a01b03998a166000908152928152818320989099168252969097525093909420915182555160018201559151600283015551600390910155565b7f99a652063088b6badaeb0c7f680676baf720654b4f86f50167944489af637d0090565b6000613578612b79565b905060006135896004830184613c99565b9050806135ab5782604051632872fbf960e11b81526004016111e59190614b44565b6040516001600160a01b038416907fa317c10673baf4f03b3c1041bd5ddbb537d0333a86fec3607c75f9dbb630f48f90600090a2505050565b60006135ee61354a565b60028101849055600381018390556040519091507f8d4925b196ae6b935035a27ed36c6bd9c7a8fbddc7a3f55f493aa8e230be373e906136319085908590614b84565b60405180910390a1505050565b6000613648612b79565b905061365483826134b5565b60008381526002808301602090815260408320909101805460018101825590835291200161147a83826151ec565b600061368c612b79565b9050600061369d6004830184613d4b565b9050806136bf5782604051631532e67160e21b81526004016111e59190614b44565b6040516001600160a01b038416907f85a3e72f8dd6db3794f93109c3c5f5b79d6112f6979431c45f98b26134b42af290600090a2505050565b6000612380836001600160a01b038416613e0a565b6000613717612b79565b905061372383826134b5565b600083815260028083016020526040822001905b815481101561325857836040516020016137519190614ff9565b6040516020818303038152906040528051906020012082828154811061377957613779614f76565b9060005260206000200160405160200161379391906152a5565b604051602081830303815290604052805190602001200361383457815482906137be90600190615048565b815481106137ce576137ce614f76565b906000526020600020018282815481106137ea576137ea614f76565b906000526020600020019081613800919061531b565b5081805480613811576138116153e7565b60019003818190600052602060002001600061382d91906143ab565b9055613258565b600101613737565b7fc1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200090565b60006123808383613e22565b6111b283846001600160a01b031663a9059cbb85856040516024016138929291906148a3565b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050613e4c565b60006138ce612b79565b60038101805460ff19168415159081179091556040519081529091507fe93ceb76efb130156c6aa39fa4ac986b3f683b6da926496fca3f95ea7fe715e39060200160405180910390a15050565b6000613925612b79565b905061393183826134b5565b60009283526002016020526040909120600101805460ff1916911515919091179055565b6000610e50825490565b6000613969612b79565b9050600061397a6006830185613c99565b90508061399c5783604051631a6107e360e31b81526004016111e59190614b44565b6001600160a01b038416600090815260088301602052604090206139c084826151ec565b506040516001600160a01b038516907f928ec246afda323bc23c2815ca3f516e9fc6a7b7179772235c221e132545fe8290600090a250505050565b6000613a05612b79565b90506000613a166006830184613d4b565b905080613a38578260405163ba650b5f60e01b81526004016111e59190614b44565b6001600160a01b03831660009081526008830160205260408120613a5b916143ab565b6040516001600160a01b038416907fc5a9b8041ef11732e7dd7043167d8c22db5c7ea99dcd38dce401effacf8a29bf90600090a2505050565b6000613a9e612b79565b9050613aaa83826134b5565b6000838152600280830160209081526040909220845161147a93919092019190850190614355565b6000613adc612b79565b90506000613aea8284613d60565b905080613b0d57604051631e96f6ed60e21b8152600481018490526024016111e5565b600083815260028084016020526040822082815560018101805460ff191690559190613258908301826143e5565b606081600001805480602002602001604051908101604052809291908181526020018280548015613b8b57602002820191906000526020600020905b815481526020019060010190808311613b77575b50505050509050919050565b613ba18282612259565b6118c057808260405163e2517d3f60e01b81526004016111e59291906148a3565b60006123808383613eb4565b600080600080613bde8686613efe565b925092509250613bee8282613f4b565b5090949350505050565b600080613c03612cb8565b9050613c0f8484612259565b613c8f576000848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055613c453390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610e50565b6000915050610e50565b6000612380836001600160a01b038416613eb4565b613cb6614004565b612d4a57604051631afcd79f60e31b815260040160405180910390fd5b600080613cde612cb8565b9050613cea8484612259565b15613c8f576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610e50565b6000612380836001600160a01b03841661401e565b6000612380838361401e565b600080516020615474833981519152546001600160a01b031690565b613d9182614107565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115613dd6576111b28282614163565b6118c06141d9565b7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0090565b600061238083835b60009081526001919091016020526040902054151590565b6000826000018281548110613e3957613e39614f76565b9060005260206000200154905092915050565b600080602060008451602086016000885af180613e6f576040513d6000823e3d81fd5b50506000513d91508115613e87578060011415613e94565b6001600160a01b0384163b155b1561147a5783604051635274afe760e01b81526004016111e59190614b44565b6000613ec08383613e0a565b613ef657508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610e50565b506000610e50565b60008060008351604103613f385760208401516040850151606086015160001a613f2a888285856141f8565b955095509550505050613f44565b50508151600091506002905b9250925092565b6000826003811115613f5f57613f5f6153fd565b03613f68575050565b6001826003811115613f7c57613f7c6153fd565b03613f9a5760405163f645eedf60e01b815260040160405180910390fd5b6002826003811115613fae57613fae6153fd565b03613fcf5760405163fce698f760e01b8152600481018290526024016111e5565b6003826003811115613fe357613fe36153fd565b036118c0576040516335e2f38360e21b8152600481018290526024016111e5565b600061400e612d1e565b54600160401b900460ff16919050565b60008181526001830160205260408120548015613c8f576000614042600183615048565b855490915060009061405690600190615048565b90508082146140bb57600086600001828154811061407657614076614f76565b906000526020600020015490508087600001848154811061409957614099614f76565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806140cc576140cc6153e7565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610e50565b806001600160a01b03163b6000036141345780604051634c9c8ce360e01b81526004016111e59190614b44565b60008051602061547483398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516141809190614ff9565b600060405180830381855af49150503d80600081146141bb576040519150601f19603f3d011682016040523d82523d6000602084013e6141c0565b606091505b50915091506141d08583836142bd565b95945050505050565b3415612d4a5760405163b398979f60e01b815260040160405180910390fd5b600080806fa2a8918ca85bafe22016d0b997e4df60600160ff1b0384111561422957506000915060039050826142b3565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801561427d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166142a9575060009250600191508290506142b3565b9250600091508190505b9450945094915050565b6060826142d2576142cd82614309565b612380565b81511580156142e957506001600160a01b0384163b155b15610f795783604051639996b31560e01b81526004016111e59190614b44565b8051156143195780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b604051806060016040528060008152602001600015158152602001606081525090565b82805482825590600052602060002090810192821561439b579160200282015b8281111561439b578251829061438b90826151ec565b5091602001919060010190614375565b506143a79291506143ff565b5090565b5080546143b79061505b565b6000825580601f106143c7575050565b601f0160209004906000526020600020908101906119ed919061441c565b50805460008255906000526020600020908101906119ed91905b808211156143a757600061441382826143ab565b506001016143ff565b5b808211156143a7576000815560010161441d565b60006020828403121561444357600080fd5b81356001600160e01b03198116811461238057600080fd5b60005b8381101561447657818101518382015260200161445e565b50506000910152565b6000815180845261449781602086016020860161445b565b601f01601f19169290920160200192915050565b60008282518085526020808601955060208260051b8401016020860160005b848110156144f857601f198684030189526144e683835161447f565b988401989250908301906001016144ca565b5090979650505050505050565b60208152600061238060208301846144ab565b6020808252825182820181905260009190848201906040850190845b8181101561455057835183529284019291840191600101614534565b50909695505050505050565b6001600160a01b03811681146119ed57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156145af576145af614571565b604052919050565b60006001600160401b038211156145d0576145d0614571565b50601f01601f191660200190565b600082601f8301126145ef57600080fd5b81356146026145fd826145b7565b614587565b81815284602083860101111561461757600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561464a57600080fd5b84356146558161455c565b935060208501356146658161455c565b92506040850135915060608501356001600160401b0381111561468757600080fd5b614693878288016145de565b91505092959194509250565b6000602082840312156146b157600080fd5b81356001600160401b038111156146c757600080fd5b612251848285016145de565b6000806000606084860312156146e857600080fd5b83356146f38161455c565b925060208401356147038161455c565b929592945050506040919091013590565b6000806040838503121561472757600080fd5b50508035926020909101359150565b600082601f83011261474757600080fd5b813560206001600160401b038083111561476357614763614571565b8260051b614772838201614587565b938452858101830193838101908886111561478c57600080fd5b84880192505b858310156147c8578235848111156147aa5760008081fd5b6147b88a87838c01016145de565b8352509184019190840190614792565b98975050505050505050565b6000602082840312156147e657600080fd5b81356001600160401b038111156147fc57600080fd5b61225184828501614736565b600080600080600080600080610100898b03121561482557600080fd5b88356148308161455c565b975060208901356148408161455c565b965060408901356148508161455c565b9550606089013594506080890135935060a0890135925060c0890135915060e08901356001600160401b0381111561488757600080fd5b6148938b828c016145de565b9150509295985092959890939650565b6001600160a01b03929092168252602082015260400190565b6000602082840312156148ce57600080fd5b5035919050565b803561ffff811681146148e757600080fd5b919050565b60008060006060848603121561490157600080fd5b83359250614911602085016148d5565b915061491f604085016148d5565b90509250925092565b6000806040838503121561493b57600080fd5b82359150602083013561494d8161455c565b809150509250929050565b600080600080600060a0868803121561497057600080fd5b853561497b8161455c565b9450602086013561498b8161455c565b93506040860135925060608601356149a28161455c565b915060808601356149b28161455c565b809150509295509295909350565b600080604083850312156149d357600080fd5b82356001600160401b038111156149e957600080fd5b6149f5858286016145de565b95602094909401359450505050565b80151581146119ed57600080fd5b60008060008060808587031215614a2857600080fd5b84356001600160401b0380821115614a3f57600080fd5b614a4b888389016145de565b95506020870135945060408701359150614a6482614a04565b90925060608601359080821115614a7a57600080fd5b5061469387828801614736565b600080600080600080600060e0888a031215614aa257600080fd5b8735614aad8161455c565b96506020880135614abd8161455c565b95506040880135614acd8161455c565b969995985095966060810135965060808101359560a0820135955060c0909101359350915050565b60008060408385031215614b0857600080fd5b8235614b138161455c565b915060208301356001600160401b03811115614b2e57600080fd5b614b3a858286016145de565b9150509250929050565b6001600160a01b0391909116815260200190565b60008060408385031215614b6b57600080fd5b8235614b768161455c565b946020939093013593505050565b918252602082015260400190565b600060208284031215614ba457600080fd5b81356123808161455c565b60008060008060808587031215614bc557600080fd5b8435935060208501359250614bdc604086016148d5565b9150614bea606086016148d5565b905092959194509250565b60008060408385031215614c0857600080fd5b82356001600160401b0380821115614c1f57600080fd5b614c2b868387016145de565b93506020850135915080821115614c4157600080fd5b50614b3a858286016145de565b600060608301825184526020808401511515602086015260408401516060604087015282815180855260808801915060808160051b890101945060208301925060005b81811015614cbf57607f19898703018352614cad86855161447f565b95509284019291840191600101614c91565b5093979650505050505050565b604081526000614cdf60408301856144ab565b6020838203818501528185518084528284019150828160051b85010183880160005b83811015614d2f57601f19878403018552614d1d838351614c4e565b94860194925090850190600101614d01565b50909998505050505050505050565b602081526000612380602083018461447f565b60008060408385031215614d6457600080fd5b8235614d6f8161455c565b9150602083013561494d8161455c565b93845260208401929092526040830152606082015260800190565b600060208284031215614dac57600080fd5b813561238081614a04565b6020808252825182820181905260009190848201906040850190845b818110156145505783516001600160a01b031683529284019291840191600101614dd3565b60008060408385031215614e0b57600080fd5b82356001600160401b03811115614e2157600080fd5b614e2d858286016145de565b925050602083013561494d81614a04565b600080600060608486031215614e5357600080fd5b83359250602084013591506040840135614e6c8161455c565b809150509250925092565b6020815260006123806020830184614c4e565b600080600080600080600060e0888a031215614ea557600080fd5b8735614eb08161455c565b965060208801356001600160401b03811115614ecb57600080fd5b614ed78a828b016145de565b96505060408801359450606088013593506080880135614ef68161455c565b925060a0880135915060c0880135614f0d81614a04565b8091505092959891949750929550565b60008060408385031215614f3057600080fd5b82356001600160401b0380821115614f4757600080fd5b614f53868387016145de565b93506020850135915080821115614f6957600080fd5b50614b3a85828601614736565b634e487b7160e01b600052603260045260246000fd5b600060208284031215614f9e57600080fd5b81516001600160401b03811115614fb457600080fd5b8201601f81018413614fc557600080fd5b8051614fd36145fd826145b7565b818152856020838501011115614fe857600080fd5b6141d082602083016020860161445b565b6000825161500b81846020870161445b565b9190910192915050565b60006020828403121561502757600080fd5b815161238081614a04565b634e487b7160e01b600052601160045260246000fd5b81810381811115610e5057610e50615032565b600181811c9082168061506f57607f821691505b60208210810361508f57634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156150a757600080fd5b5051919050565b8082028115828204841417610e5057610e50615032565b6000826150e257634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610e5057610e50615032565b60006020828403121561510c57600080fd5b81516123808161455c565b6001600160a01b0389811682528881166020830152610100604083018190526000916151458483018b61447f565b6060850199909952608084019790975250509290931660a083015260c082015290151560e0909101529392505050565b6001600160a01b0392831681529116602082015260400190565b601f8211156111b2576000816000526020600020601f850160051c810160208610156151b85750805b601f850160051c820191505b818110156128e1578281556001016151c4565b600019600383901b1c191660019190911b1790565b81516001600160401b0381111561520557615205614571565b61521981615213845461505b565b8461518f565b602080601f83116001811461524857600084156152365750858301515b61524085826151d7565b8655506128e1565b600085815260208120601f198616915b8281101561527757888601518255948401946001909101908401615258565b50858210156152955787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60008083546152b38161505b565b600182811680156152cb57600181146152e05761530f565b60ff198416875282151583028701945061530f565b8760005260208060002060005b858110156153065781548a8201529084019082016152ed565b50505082870194505b50929695505050505050565b818103615326575050565b615330825461505b565b6001600160401b0381111561534757615347614571565b61535581615213845461505b565b6000601f82116001811461538357600083156153715750848201545b61537b84826151d7565b855550613258565b600085815260209020601f19841690600086815260209020845b838110156153bd578286015482556001958601959091019060200161539d565b50858310156152955793015460001960f8600387901b161c19169092555050600190811b01905550565b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052602160045260246000fdfee562760eaa817d85ec1bf58364c4d65adb65d99d113c6785ef9aa66567076c954c1d97560aef1d9626af2ccff8a6ac6e245c44c307e795e9c16f7211c611a315189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc9a95e87c5af084bf5db8491c3a6515da9dd6da39b24b0eb0af08d7b9cd808d91c6ae66da7afbd0becbe49ddf95a9256901d87f1bb5e3d43236030e5e4a585b6d10dac8c06a04bec0b551627dad28bc00d6516b0caacd1c7b345fcdb5211334e487b38f131334165ac2b361f08966c9fcff3a953fa7d9d9c2861b7f0b50445bcbc2f8787176b8ac6bf7215b4adcc1e069bf4ab82d9ab1df05a57a91d425935b6e3acdf00ba9ef08b5f2c22768276611b9af078bf6c24fa36b34ec5e9f2eb061faa26469706673582212200540b09191ebd8a1004327f6309ecd4316849f0d987f7010a72aeade96f57e0164736f6c63430008180033","id":1,"type":"ONCHAIN_INTERACTION","value":{"_kind":"bigint","value":"0"}},"type":"NETWORK_INTERACTION_REQUEST"} +{"futureId":"RefactorCancellationModule#CMAccount","networkInteractionId":1,"nonce":69,"transaction":{"fees":{"maxFeePerGas":{"_kind":"bigint","value":"400000000000"},"maxPriorityFeePerGas":{"_kind":"bigint","value":"0"}},"hash":"0xcda0637a5a82f6f83acb216890bac2d090a7cf35d4627471489722c8b889bce5"},"type":"TRANSACTION_SEND"} +{"futureId":"RefactorCancellationModule#BookingTokenProxy.upgradeToAndCall","hash":"0xc97a3521ff4db9747d6f0661b3c300fb0ff97a2ce4a72aa10627de2015d5bdcb","networkInteractionId":1,"receipt":{"blockHash":"0x6f0afbe9a5af11747584e5ded380081140e6f222e5f379243d63b73aa8e17254","blockNumber":626244,"logs":[{"address":"0xe55E387F5474a012D1b048155E25ea78C7DBfBBC","data":"0x","logIndex":0,"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x00000000000000000000000080c5d0eb1567649e9827218672cd56a772a8b97b"]}],"status":"SUCCESS"},"type":"TRANSACTION_CONFIRM"} +{"futureId":"RefactorCancellationModule#BookingTokenProxy.upgradeToAndCall","result":{"type":"SUCCESS"},"type":"CALL_EXECUTION_STATE_COMPLETE"} +{"futureId":"RefactorCancellationModule#CMAccount","hash":"0xcda0637a5a82f6f83acb216890bac2d090a7cf35d4627471489722c8b889bce5","networkInteractionId":1,"receipt":{"blockHash":"0x0a2b7acf58ae2eb3260fecf4d5a1ab573a7aaff7c378d1b7a6b4ca52836986f9","blockNumber":626245,"contractAddress":"0x7E5Aacf1aA5efA994d979D7a68DEa256aD1b5D87","logs":[{"address":"0x7E5Aacf1aA5efA994d979D7a68DEa256aD1b5D87","data":"0x000000000000000000000000000000000000000000000000ffffffffffffffff","logIndex":0,"topics":["0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2"]}],"status":"SUCCESS"},"type":"TRANSACTION_CONFIRM"} +{"futureId":"RefactorCancellationModule#CMAccount","result":{"address":"0x7E5Aacf1aA5efA994d979D7a68DEa256aD1b5D87","type":"SUCCESS"},"type":"DEPLOYMENT_EXECUTION_STATE_COMPLETE"} +{"args":["0x7E5Aacf1aA5efA994d979D7a68DEa256aD1b5D87"],"artifactId":"RefactorCancellationModule#ManagerProxy","contractAddress":"0xE5B2f76C778D082b07BDd7D51FFe83E3E055B47F","dependencies":["RefactorCancellationModule#ManagerProxy","RefactorCancellationModule#CMAccount"],"from":"0x9d639f3345a83aa01412dcd010af9ab82190cc4f","functionName":"setAccountImplementation","futureId":"RefactorCancellationModule#NewCMAccountImpl","strategy":"basic","strategyConfig":{},"type":"CALL_EXECUTION_STATE_INITIALIZE","value":{"_kind":"bigint","value":"0"}} +{"futureId":"RefactorCancellationModule#NewCMAccountImpl","networkInteraction":{"data":"0x09766da20000000000000000000000007e5aacf1aa5efa994d979d7a68dea256ad1b5d87","id":1,"to":"0xE5B2f76C778D082b07BDd7D51FFe83E3E055B47F","type":"ONCHAIN_INTERACTION","value":{"_kind":"bigint","value":"0"}},"type":"NETWORK_INTERACTION_REQUEST"} +{"futureId":"RefactorCancellationModule#NewCMAccountImpl","networkInteractionId":1,"nonce":70,"transaction":{"fees":{"maxFeePerGas":{"_kind":"bigint","value":"400000000000"},"maxPriorityFeePerGas":{"_kind":"bigint","value":"0"}},"hash":"0xade45b4036961200cd2f299fb855546ff39053ab3cbe0d6e1b75a7bd9b74512c"},"type":"TRANSACTION_SEND"} +{"futureId":"RefactorCancellationModule#NewCMAccountImpl","hash":"0xade45b4036961200cd2f299fb855546ff39053ab3cbe0d6e1b75a7bd9b74512c","networkInteractionId":1,"receipt":{"blockHash":"0x5a29ddcb5ac7c8049212ae93461c75b6a2e88fdbd2f9a115f995d7c0dedc21d8","blockNumber":626246,"logs":[{"address":"0xE5B2f76C778D082b07BDd7D51FFe83E3E055B47F","data":"0x","logIndex":0,"topics":["0xecd599290ada9c149ae0fb600bc6ada3c103a716eadb877b5341b7d298b62d93","0x000000000000000000000000aa573b3942168bc5222c7aa11c6708d7f64af374","0x0000000000000000000000007e5aacf1aa5efa994d979d7a68dea256ad1b5d87"]}],"status":"SUCCESS"},"type":"TRANSACTION_CONFIRM"} +{"futureId":"RefactorCancellationModule#NewCMAccountImpl","result":{"type":"SUCCESS"},"type":"CALL_EXECUTION_STATE_COMPLETE"} \ No newline at end of file diff --git a/ignition/modules/05_columbus_refactor_cancellation.js b/ignition/modules/05_columbus_refactor_cancellation.js new file mode 100644 index 0000000..75b0f81 --- /dev/null +++ b/ignition/modules/05_columbus_refactor_cancellation.js @@ -0,0 +1,82 @@ +const { buildModule } = require("@nomicfoundation/hardhat-ignition/modules"); +const hre = require("hardhat"); + +function getAddressesForNetwork(hre) { + let addresses; + + if (hre.network.name === "columbus") { + console.log("Running on columbus"); + addresses = require("../deployments/chain-501/deployed_addresses.json"); + } else if (hre.network.name === "camino") { + console.log("Running on camino"); + addresses = require("../deployments/chain-500/deployed_addresses.json"); + } else if (hre.network.name === "localhost") { + console.log("Running on localhost"); + addresses = require("../deployments/chain-31337/deployed_addresses.json"); + } else { + throw new Error(`Unsupported network: ${hre.network.name}`); + } + + return addresses; +} + +// Upgrades for the BookingToken Cancellation support +const RefactorCancellationModule = buildModule("RefactorCancellationModule", (m) => { + // Exit if not columbus testnet + if (hre.network.name === "camino") { + console.log("ERROR: You shouldn't run this on Camino mainnet!"); + process.exit(1); + } + + // Use addresses from the deployment to get the managerProxy and bookingTokenProxy contracts + const addresses = getAddressesForNetwork(hre); + + const managerProxy = m.contractAt("CMAccountManager", addresses["CaminoMessengerModule#ManagerProxy"], { + id: "ManagerProxy", + }); + + const bookingTokenProxy = m.contractAt("BookingToken", addresses["CaminoMessengerModule#BookingTokenProxy"], { + id: "BookingTokenProxy", + }); + + // BookingTokenOperator is updated to support Cancellation. We need to deploy a + // new library for CMAccount implementation. + const bookingTokenOperator = m.library("BookingTokenOperator"); + + // Deploy a new CMAccount implementation with the new BookingTokenOperator + // library. There are also updates to the CMAccount impl contract to support + // cancellation functions like initiate/accept/reject cancellation. + // + // Note: There is also changes after refactoring that are ABI breaking changes + // only for the columbus testnet. + const newCMAccountImpl = m.contract("CMAccount", [], { + libraries: { BookingTokenOperator: bookingTokenOperator }, + }); + + // Set the new CMAccount implementation in the manager + m.call(managerProxy, "setAccountImplementation", [newCMAccountImpl], { + id: "NewCMAccountImpl", + }); + + /********************************************* + * Upgrade BookingToken to Refactor * + *********************************************/ + + // Deploy the BookingToken contract + const bookingToken = m.contract("BookingToken", [], { + id: "BookingTokenImpl", + }); + + // Disable this line below for columbus testnet as we already did it before. + // + // Encode the Reinitialize function call for BookingToken + //const reinitializeV2 = m.encodeFunctionCall(bookingToken, "reinitializeV2", ["BookingToken", "BToken"]); + //m.call(bookingTokenProxy, "upgradeToAndCall", [bookingToken, reinitializeV2]); + + // Upgrade the BookingToken contract + m.call(bookingTokenProxy, "upgradeToAndCall", [bookingToken, "0x"]); // TODO: Use the reinitializeV2 for mainnet! + + return { managerProxy, bookingTokenProxy, bookingTokenOperator, newCMAccountImpl }; +}); + +module.exports = RefactorCancellationModule; diff --git a/scripts/00_validate_01_BookingTokenRefactor.js b/scripts/00_validate_01_BookingTokenRefactor.js new file mode 100644 index 0000000..5678752 --- /dev/null +++ b/scripts/00_validate_01_BookingTokenRefactor.js @@ -0,0 +1,95 @@ +// Test for storage layout incompatibility +// +// First force import the network file for the OZ's upgrades: +// git checkout a53b8fc03973025f4ed10edb46aa4d2f0c3e76ee +// yarn hardhat run scripts/00_validate_01_force_import.js --network columbus +// +// That will create a file ./openzeppelin/unknown-501.json +// +// Then run the test: +// git checkout 1b5d14fca94a9129f517d8dd3e3d6eef47195d96 +// DEBUG=@openzeppelin:* yarn hardhat test scripts/00_validate_01_BookingTokenRefactor --network columbus + +const { ethers, upgrades } = require("hardhat"); + +function getAddressesForNetwork(hre) { + let addresses; + + if (hre.network.name === "columbus") { + console.log("Running on columbus"); + addresses = require("../ignition/deployments/chain-501/deployed_addresses.json"); + } else if (hre.network.name === "camino") { + console.log("Running on camino"); + addresses = require("../ignition/deployments/chain-500/deployed_addresses.json"); + } else if (hre.network.name === "localhost") { + console.log("Running on localhost"); + addresses = require("../ignition/deployments/chain-31337/deployed_addresses.json"); + } else { + throw new Error(`Unsupported network: ${hre.network.name}`); + } + + return addresses; +} + +describe("Upgrade Check", function () { + it("Should validate storage compatibility", async function () { + const addresses = getAddressesForNetwork(hre); + + // Address at run time on Columbus: 0xe55E387F5474a012D1b048155E25ea78C7DBfBBC + const NewBookingToken = await ethers.getContractFactory("BookingToken"); + + await upgrades.validateUpgrade(addresses["CaminoMessengerModule#BookingTokenProxy"], NewBookingToken); + }); +}); + +// [Note@2025-01-23] +// +// Output for BookingTokenV2 contract that was used before the refactoring at +// https://github.com/chain4travel/camino-messenger-contracts/pull/55 +// +// The output below compares the deployed BookingTokenV2 contract storage layout +// with the new BookingToken contract storage layout after the refactoring. +// +// It is showing the incompatible changes between the two as expected only related +// to cancellation. +// +// There are also some ABI changes. These are only acceptable because the contract +// is not deployed to mainnet yet and the production usage of the contract is +// minimal. +// +// ----------8<---------- +// Upgrade Check Running on columbus +// @openzeppelin:upgrades:core manifest file: .openzeppelin/unknown-501.json +// fallback file: .openzeppelin/unknown-501.json +0ms @openzeppelin:upgrades:core +// manifest file: .openzeppelin/unknown-501.json fallback file: +// .openzeppelin/unknown-501.json +240ms 1) Should validate storage compatibility +// +// +// 0 passing (1s) 1 failing +// +// 1) Upgrade Check Should validate storage compatibility: Error: New storage +// layout is incompatible +// +// BookingTokenV2: Deleted `_cancellationProposals` +// > Keep the variable even if unused +// +// contracts/booking-token/BookingTokenCancellable.sol:39: Replaced `_isCancellable` +// with `_proposals` of incompatible type +// +// contracts/booking-token/BookingToken.sol:138: Upgraded `_bookingStatus` to an +// incompatible type +// - In mapping(uint256 => enum BookingToken.BookingStatus) +// - Bad upgrade to enum BookingToken.BookingStatus +// - In enum BookingToken.BookingStatus +// - Replaced `Unspecified` with `UNSPECIFIED` +// - Replaced `Reserved` with `RESERVED` +// - Replaced `Expired` with `RESERVATION_EXPIRED` +// - Replaced `Bought` with `BOUGHT` +// - Replaced `Cancelled` with `CANCELLED` at assertStorageUpgradeSafe +// (node_modules/@openzeppelin/upgrades-core/src/storage/index.ts:35:11) at +// validateImpl +// (node_modules/@openzeppelin/hardhat-upgrades/src/utils/validate-impl.ts:48:31) +// at Proxy.validateUpgrade +// (node_modules/@openzeppelin/hardhat-upgrades/src/validate-upgrade.ts:51:9) +// at Context. (scripts/validate_01_BookingTokenRefactor.js:32:9) +// ---------->8---------- diff --git a/scripts/00_validate_01_force_import.js b/scripts/00_validate_01_force_import.js new file mode 100644 index 0000000..353a0bb --- /dev/null +++ b/scripts/00_validate_01_force_import.js @@ -0,0 +1,25 @@ +// Run with --network columbus on SHA a53b8fc03973025f4ed10edb46aa4d2f0c3e76ee +// Check 00_validate_01_BookingTokenRefactor.js for details +const { ethers, upgrades } = require("hardhat"); + +async function main() { + // Existing BookingToken proxy address on Columbus + const existingAddress = "0xe55E387F5474a012D1b048155E25ea78C7DBfBBC"; + + // Current version of the BookingToken contract + const OldBookingTokenV2 = await ethers.getContractFactory("BookingTokenV2"); + + // Force import the existing deployment from chain using the old BookingTokenV2 + const result = await upgrades.forceImport(existingAddress, OldBookingTokenV2, { kind: "uups" }); + + console.log(result); + + console.log(`Successfully force-imported contract at ${existingAddress}`); +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + });